This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
tymcom-x-tape [2018/03/25 02:08] jms [Putting TITO.SAV on disk using FILDDT] |
tymcom-x-tape [2018/04/24 07:59] jms [Putting TITO.SAV on disk using FILDDT] |
||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== Creating SIMH tape images ====== | ||
+ | ===== Creating a tape image for TITO ===== | ||
+ | |||
+ | When files are copied from TOPS-20 (36-bit byte size) with KERMIT, they are | ||
+ | stored in ANSI ASCII mode. | ||
+ | |||
+ | Joe wrote '' | ||
+ | they are ANSI ASCII binaries or DEC compatible core-dump binaries. | ||
+ | |||
+ | Linux% type36 | ||
+ | Usage: type36 [-s] [-a|-c|-d] filename [[-a|-c|-d] filename] | ||
+ | -a = ANSI ASCII mode, -c = Core dump mode, -d = doubleword mode | ||
+ | -s = input is in SIMH tape emulation format. | ||
+ | | ||
+ | Linux% type36 -a ../ | ||
+ | 36-bit dump of ../ | ||
+ | address | ||
+ | 000000|777775, | ||
+ | 000002| | ||
+ | 000004|777777, | ||
+ | 000006|777652, | ||
+ | 000010|200740, | ||
+ | |||
+ | This shows that the file is in *.SAV format. | ||
+ | |||
+ | IOWD 3,120: .JBSA=36564,, | ||
+ | IOWD 1,133: .JBCOR=36563,, | ||
+ | IOWD n,137: .JBVER=16,, | ||
+ | |||
+ | When a core image is saved to tape, TOPS-10 writes a 4-word dummy file (to | ||
+ | indicate there is no high-seg) and EOF before writing the SAV file, | ||
+ | |||
+ | Linux% ls -l 20bytes | ||
+ | -rw-r--r-- 1 jms jms 20 Mar 19 23:44 20bytes | ||
+ | | ||
+ | Linux% od -c 20bytes | ||
+ | 0000000 | ||
+ | 0000020 | ||
+ | 0000024 | ||
+ | |||
+ | Joe wrote '' | ||
+ | |||
+ | Linux% to-simh | ||
+ | Usage: to-simh [-a|-c|-d|-b 128] filename [filename...] | ||
+ | | ||
+ | Linux% to-simh -a 20bytes ../ | ||
+ | Reading from 20bytes - Words read (octal): | ||
+ | Reading from ../ | ||
+ | |||
+ | This builds a SIMH tape image. | ||
+ | |||
+ | Linux% type36 -s -c tito.tape | less | ||
+ | 36-bit dump of tito.tape as Core Dump (4x8-bit + 1x(4+4)-bit | ||
+ | address | ||
+ | --- block_size (0x14) = 20 bytes ( 4 words) leading | ||
+ | 000000| | ||
+ | 000002| | ||
+ | --- block_size (0x14) = 20 bytes ( 4 words) trailing | ||
+ | --EOF-- | ||
+ | --- block_size (0x280) = 640 bytes (128 words) leading | ||
+ | 000000|777775, | ||
+ | 000002| | ||
+ | 000004|777777, | ||
+ | 000006|777652, | ||
+ | 000010|200740, | ||
+ | 000012|402000, | ||
+ | |||
+ | Search for known plaintext. | ||
+ | |||
+ | /oper | ||
+ | 005660|222372, | ||
+ | 005662|462230, | ||
+ | 005664|202351, | ||
+ | 005666|777777, | ||
+ | 005670|222511, | ||
+ | 005672| | ||
+ | 005674| 21754, 21755|272771, | ||
+ | 005676| 21754, 21757| | ||
+ | 005700|245011, | ||
+ | 005702|576300, | ||
+ | 005704| | ||
+ | 005706| | ||
+ | 005710|426324, | ||
+ | 005712| 21770, 21771| | ||
+ | 005714|422132, | ||
+ | 005716|522032, | ||
+ | 005720|512232, | ||
+ | 005722|416510, | ||
+ | 005724|522032, | ||
+ | 005726|446510, | ||
+ | 005730|522130, | ||
+ | |||
+ | Jump to end of file. | ||
+ | |||
+ | 020340|254000, | ||
+ | --- block_size (0x1E5) = 485 bytes ( 97 words) trailing | ||
+ | --EOF-- | ||
+ | --EOF-- | ||
+ | |||
+ | ===== Creating TITO saveset tape images ===== | ||
+ | |||
+ | Attach the physical tape drive to the NetBSD system. | ||
+ | |||
+ | #!/bin/bash | ||
+ | reelid=${1?" | ||
+ | tape=/ | ||
+ | mkdir -p / | ||
+ | cd / | ||
+ | i=100 # First one is " | ||
+ | ss=0 # First saveset is " | ||
+ | while cp $tape file.$((++i)); | ||
+ | ls -l file.$i | ||
+ | [ -s file.$i ] || break | ||
+ | [ `wc -c < | ||
+ | mv -v file.$i ss$ss | ||
+ | done | ||
+ | |||
+ | Stop the bash job when the files are 0 bytes. | ||
+ | |||
+ | Create two saveset images. | ||
+ | |||
+ | to-simh -t ss2/* > ../ | ||
+ | to-simh -t ss3/* > ../ | ||
+ | |||
+ | |||
+ | ====== Patching the raw disk image ====== | ||
+ | |||
+ | ===== Putting TITO.SAV on disk using FILDDT ===== | ||
+ | |||
+ | This operation was performed by using Van Dyke's SecureCRT terminal emulator and a Cygwin window on a Windows machine. | ||
+ | |||
+ | 0. '' | ||
+ | 1. Create '' | ||
+ | .r filddt | ||
+ | File: tito.sav | ||
+ | $$a $$h 0$n | ||
+ | Edit the saved file, removing extra lines. Then add " | ||
+ | |||
+ | 2. Edit REFSTR.MAC, copying and pasting the code that creates CRASH.SAV to create TITO00.SAV | ||
+ | Set the file size using '' | ||
+ | |||
+ | 3. Rebuild monitor, copy it to '' | ||
+ | |||
+ | 4. Exit the TYMCOM-X simh, attach '' | ||
+ | .^E | ||
+ | sim> attach rp2 tymb00.dsk | ||
+ | sim> go | ||
+ | |||
+ | 5. Patch the raw disk unit. (Load symbols to get a writeable symbol table) | ||
+ | .r filddt | ||
+ | File: sys:mon14/s | ||
+ | File: rpa2:/u/p | ||
+ | |||
+ | 6. Track down the data pages for (SYS).UFD (RIB address at 1023). | ||
+ | $$A | ||
+ | 1450000< | ||
+ | 1450051/ | ||
+ | $$6t 1440000< | ||
+ | TITO00.SAV | ||
+ | |||
+ | 7. Display the RIB. First data page pointer is at 15051, it points to page 16. | ||
+ | 0,,15000/ | ||
+ | 15000< | ||
+ | 15051/ | ||
+ | |||
+ | 8. Define '' | ||
+ | 16000/ | ||
+ | |||
+ | 9. Use terminal' | ||
+ | |||
+ | Transfer to simh's console is about 61 characters per second; 127 minutes to transfer TITO with DDT loaded (457K). | ||
+ | |||
+ | 10. Update word count in RIB to be last word plus 1. | ||
+ | 15010/ 20342 (40232 with DDT loaded) | ||
+ | |||
+ | 11. Enable Receive ASCII and store in '' | ||
+ | 16000< | ||
+ | |||
+ | 12. End Receive ASCII and on local machine (Cygwin) execute the following to verify the transfer: | ||
+ | cygwin% perl -pi.bak -e ' | ||
+ | cygwin% diff tito.txt tito2.txt | ||
+ | |||
+ | 13. Exit FILDDT and '' | ||
+ | ^Z | ||
+ | !^E | ||
+ | sim> detach rp2 | ||
+ | | ||
+ | 14. Create a respawn point via '' | ||
+ | |||
+ | 15. Boot TYMCOM-X in production mode. Due to Y2K8 problem, must use date from 28 years ago. | ||
+ | (Hit Enter twice r Control-Z L to get logged in, then '' | ||
+ | |||
+ | | ||
+ | |||
+ | To automatically login, login over shut. | ||
+ | X14, hardware *B*, KS-4257, base 6760, X14-P035/ | ||
+ | | ||
+ | End of ONCE; starting null job | ||
+ | | ||
+ | Hi there! | ||
+ | Remember to set date,time 27-SEP-1989 00: | ||
+ | ! | ||
+ | !set date 04 09 1990 ;28 years in the past | ||
+ | !set time 2041 | ||
+ | Date/time is now 09-Apr-1989 22:41:00 Monday | ||
+ | --- System is SHUT --- | ||
+ | | ||
+ | !r tito00 | ||
+ | TITO (V16.3) HERE AT 14:37 19-MAR-90 | ||
+ | SYSTEM X14-P035/ | ||
+ | DEVICE: mta0 | ||
+ | TRACKS: 9 | ||
+ | DENSITY(1600, | ||
+ | TAPE NOT WRITE PROTECTED | ||
+ | *rewind | ||
+ | *^E | ||
+ | sim> attach tu0 saveset1.tape | ||
+ | sim> go | ||
+ | *dir all | ||
+ | INPUT TAPE POS RANGE: 301-e | ||
+ | CONTINUE ON DEVICE: ^E | ||
+ | sim> | ||
+ | sim>go | ||
+ | mta0 | ||
+ | INPUT TAPE POS RANGE: | ||
+ | LOGICAL END OF TAPE REACHED | ||
+ | *exit | ||
+ | |||
+ | It takes about 30 seconds to restore each tape (as long as output has been suppressed with Control-O). | ||
+ | |||
+ | ===== Creating the front-end file ===== | ||
+ | |||
+ | |||
+ | !gfd ks2020 | ||
+ | !run ksfefs | ||
+ | Name of file containing bootstrap program {(SYS)BOOTS.DMP} : (sys)boots.dmp | ||
+ | Name of file containing microcode {(SYS)MCODE} : (sys)mcode | ||
+ | Name of file containing pre-boot program: {(SYS)KSBLOD.DMP} : (sys)ksblod.dmp | ||
+ | Structure to write on {DSKB} : dskb | ||
+ | DSKB0: | ||
+ | Writing (SYS)BOOTS.DMP to page 13 14 | ||
+ | Writing (SYS)MCODE to page 15 16 17 18 19 20 21 22 23 24 25 26 | ||
+ | Writing (SYS)KSBLOD.DMP to page 27 | ||
+ | Writing 8080 directory to page 12 | ||
+ | Duplicating BOOTS in page 3 4 5 | ||
+ | Done. | ||
+ | |||
+ | The '' | ||
+ | Copied monitor, refreshed, and re-transferred '' | ||
+ | |||
+ | !run ksfefs | ||
+ | Name of file containing bootstrap program {(SYS)BOOTS.DMP} : (sys)boots.dmp | ||
+ | Name of file containing microcode {(SYS)MCODE} : (sys)mcode | ||
+ | Name of file containing pre-boot program: {(SYS)KSBLOD.DMP} : (sys)ksblod.dmp | ||
+ | Structure to write on {DSKB} : dskb | ||
+ | DSKB0: | ||
+ | Writing (SYS)BOOTS.DMP to page 286 287 | ||
+ | Writing (SYS)MCODE to page 288 289 290 291 292 293 294 295 296 297 298 299 | ||
+ | Writing (SYS)KSBLOD.DMP to page 300 | ||
+ | Writing 8080 directory to page 285 | ||
+ | Duplicating BOOTS in page 3 4 5 | ||
+ | Done. | ||
+ | |||
+ | At this point, '' | ||
+ | |||
+ | ===== Copying MON14.SAV to the disk ===== | ||
+ | |||
+ | Since we don't have KERMIT or other file transfer program on TYMCOM-X, do it with '' | ||
+ | |||
+ | On TOPS-10, start a Receive ASCII operation and display the whole monitor in octal. | ||
+ | |||
+ | .r filddt | ||
+ | File: mon14.sav/d | ||
+ | $$a $$h 0$n | ||
+ | 0/ | ||
+ | 1/ | ||
+ | ... | ||
+ | 245643/ | ||
+ | 245644/ | ||
+ | |||
+ | Edit the saved text to remove the first lines, and change "/" | ||
+ | |||
+ | Set the terminal emulator to delay 17 milliseconds between characters for the Send ASCII operation. | ||
+ | |||
+ | !run (mpl)filddt | ||
+ | File: (sys)system.sav/ | ||
+ | $$a $$h | ||
+ | 0/ | ||
+ | 1/ | ||
+ | ... | ||
+ | 245643/ | ||
+ | 245644/ | ||
+ | ^Z | ||
+ | |||
+ | Exit the TYMCOM-X simh job and start fresh (to get the implied zeroing of memory). | ||
+ | |||
+ | ^E | ||
+ | sim>quit | ||
+ | Linux% ./pdp10 x14-prod.ini | ||
+ | PDP-10 simulator V4.0-0 Current | ||
+ | BOOTS: | ||
+ | | ||
+ | LOADING (SYS)SYSTEM.SAV | ||
+ | X14, hardware *B*, KS-4257, base 6760, X14-P035/ | ||
+ | | ||
+ | Highest memory address is 3,,777777 | ||
+ | | ||
+ | Checking all units on disk controller - reading UNIT ID from HOME pages. | ||
+ | | ||
+ | | ||
+ | | ||
+ | 1024K of memory online. | ||
+ | X14, hardware *B*, KS-4257, base 6760, X14-P035/ | ||
+ | | ||
+ | End of ONCE; starting null job | ||
+ | INITIA starting DSKCLN on TTY0 | ||
+ | | ||
+ | Hi there! | ||
+ | proj code: | ||
+ | | ||
+ | date not set, type date as mm-dd-yyyy 04-12-1990 | ||
+ | type time as hh:mm 15:53 | ||
+ | | ||
+ | .systat | ||
+ | SYSTEM SHUT | ||
+ | | ||
+ | TYMSHARE X14-P035/ | ||
+ | Null time = 36:13, Idle = 100% (Idle time per MIN. = 100%) | ||
+ | 2 jobs in use out of 31. 1 detached | ||
+ | | ||
+ | JOB TYMNET | ||
+ | | ||
+ | | ||
+ | + means TYMSHARE inhouse user | ||
+ | | ||
+ | Users=2 Det=1 [1,1], Queues: RUN=1 DIO=0 TIO=1 IO=0 SPC=0 | ||
+ | 2046 Physical pages available (MONITOR = 282P, User Area = 1764P) | ||
+ | Virt. memory used (TPU/TPA): 48/1764 = 3% | ||
+ | |||
+ | At this point, the systems programmer is expected to use the '' | ||
+ | |||
+ | Use DDT to get the address of JBTLIC (GETTAB table for job license). | ||
+ | |||
+ | ^E | ||
+ | sim> | ||
+ | sim> | ||
+ | sim>go | ||
+ | !pjob | ||
+ | Frame 2 TTY10 OPER[1,21] at X14 | ||
+ | | ||
+ | !r ddt | ||
+ | DDT | ||
+ | dskclr 2,$x | ||
+ | DDT | ||
+ | ^C | ||
+ | |||
+ | Use '' | ||
+ | |||
+ | Success! | ||
+ | ==== Other pages ==== | ||
+ | |||
+ | [[tymcom-x|Overview]] page, [[tymcom-x-simh|SIMH Setup]] page, [[tymcom-x-startup|TYMCOM-X Startup]] page, [[tymcom-x-tape|TITO on disk]] page, [[tymcom-x-status|Status]] page. | ||