From a5feaf281558b857508020245c162be3f756f977 Mon Sep 17 00:00:00 2001 From: John Forecast Date: Thu, 14 Dec 2017 16:44:01 -0800 Subject: [PATCH] CDC1700: Release 3 - Add 1752 Drum support. Allow shared subroutines across interrupt levels. - Document and add sample scripts for customizing MSOS5. --- .gitattributes | 1 + CDC1700/CDC1700-Customization.txt | 189 ++ CDC1700/CDC1700-Diagnostics.txt | 4 +- CDC1700/CDC1700-MSOS.txt | 8 +- CDC1700/CDC1700.txt | 30 +- CDC1700/cdc1700_cd.c | 17 +- CDC1700/cdc1700_cpu.c | 46 +- CDC1700/cdc1700_dc.c | 6 +- CDC1700/cdc1700_defs.h | 186 +- CDC1700/cdc1700_dev1.c | 174 +- CDC1700/cdc1700_dis.c | 324 +- CDC1700/cdc1700_dp.c | 2 +- CDC1700/cdc1700_drm.c | 967 ++++++ CDC1700/cdc1700_io.c | 8 +- CDC1700/cdc1700_iofw.c | 37 +- CDC1700/cdc1700_lp.c | 92 +- CDC1700/cdc1700_mt.c | 387 ++- CDC1700/cdc1700_rtc.c | 7 +- CDC1700/cdc1700_sys.c | 16 +- .../customization/custom1/msosCustom1.simh | 126 + .../customization/custom2/msosCustom2.simh | 149 + CDC1700/customization/custom2/sysdat.asm | 2922 +++++++++++++++++ CDC1700/customization/custom2/sysdat.tap | Bin 0 -> 257144 bytes .../customization/custom3/msosCustom3.simh | 150 + CDC1700/customization/custom3/sysdat.asm | 2817 ++++++++++++++++ CDC1700/customization/custom3/sysdat.tap | Bin 0 -> 247904 bytes .../customization/custom4/msosCustom4.simh | 151 + CDC1700/customization/custom4/sysdat.asm | 2503 ++++++++++++++ CDC1700/customization/custom4/sysdat.tap | Bin 0 -> 220272 bytes .../customization/custom5/msosCustom5.simh | 152 + CDC1700/customization/custom5/sysdat.asm | 2497 ++++++++++++++ CDC1700/customization/custom5/sysdat.tap | Bin 0 -> 219744 bytes CDC1700/msosInstall.simh | 12 +- CDC1700/msosRun.simh | 7 +- CDC1700/msosVerify.simh | 51 + Visual Studio Projects/CDC1700.vcproj | 4 + descrip.mms | 2 +- makefile | 3 +- 38 files changed, 13577 insertions(+), 470 deletions(-) create mode 100644 CDC1700/CDC1700-Customization.txt create mode 100644 CDC1700/cdc1700_drm.c create mode 100644 CDC1700/customization/custom1/msosCustom1.simh create mode 100644 CDC1700/customization/custom2/msosCustom2.simh create mode 100644 CDC1700/customization/custom2/sysdat.asm create mode 100644 CDC1700/customization/custom2/sysdat.tap create mode 100644 CDC1700/customization/custom3/msosCustom3.simh create mode 100644 CDC1700/customization/custom3/sysdat.asm create mode 100644 CDC1700/customization/custom3/sysdat.tap create mode 100644 CDC1700/customization/custom4/msosCustom4.simh create mode 100644 CDC1700/customization/custom4/sysdat.asm create mode 100644 CDC1700/customization/custom4/sysdat.tap create mode 100644 CDC1700/customization/custom5/msosCustom5.simh create mode 100644 CDC1700/customization/custom5/sysdat.asm create mode 100644 CDC1700/customization/custom5/sysdat.tap create mode 100644 CDC1700/msosVerify.simh diff --git a/.gitattributes b/.gitattributes index 8656dffb..ed3ba613 100644 --- a/.gitattributes +++ b/.gitattributes @@ -7,5 +7,6 @@ *.bin binary *.imd binary *.rim binary +*.tap binary sim_rev.h export-subst diff --git a/CDC1700/CDC1700-Customization.txt b/CDC1700/CDC1700-Customization.txt new file mode 100644 index 00000000..06661909 --- /dev/null +++ b/CDC1700/CDC1700-Customization.txt @@ -0,0 +1,189 @@ +Customizing MSOS 5 For the CDC 1700 Simulator +============================================= + +1. Overview + + Each MSOS 5 customer was provided with at least 2 sets of distribution +materials for MSOS 5 (on punched cards or magnetic tape): + + 1. A full distribution of all possible system modules for all supported + hardware confugurations (the Fortran library on the other hand is + tailored for a particular installation). + + 2. A distribution tailored for a specific installation. It only contains + device drivers for a specific configuration and may or may not include + modules from the Fortran run-time library. + +Unfortunately none of the full distribution kits have survived so we will +have to make use of a tailored distribution. This means that we will only be +able to remove device drivers and make small modifications to a running system. + + System customization consists of making modifications to 1 or 2 +source-level components: + + 1. The system skeleton which describes which is read by the initializer and + defines which components should be loaded into the system image and + specifies which components should be loaded on the library disk. The + skeleton is also able to define global values by the system. + + 2. SYSDAT. This an assembler source file which describes the peripheral + configuration including interrupts and equipment addresses. Optional + components, such as file manager, may have dedicated sections of SYSDAT. + +The system skeleton may be extracted and edited by an application called SKED. +This is a very primitive line editor but, fortunately, most of the changes are +in SYSDAT. SYSDAT is usually provided as the last file present on a tailored +magtape distribution. Unfortunately I have been unable to use MSOS tools to +extract a useable version from a magtape so I wrote Unix tools to manipulate +magtape containers and compress/decompress COSY format files (rawtap & cosy). +Each customization builds on the previous version to change setting and/or +change MSOS drivers. Each customization is driven by a simh script, takes an +existing installation tape (typically MSOS5_SL136.tap) and generates a new +installation tape (MSOS5-Install.trap). When SYSDAT needs to be modified, a +sysdat.asm file is present which needs to be converted to fixed size (80 +characters) records and written to a magtape container: + + dd if=sysdat.asm of=sysdat.asm.blk cbs=80 conv=block + rawtap -c sysdat.tap -r 80 sysdat.asm.blk + +To perform a customization, a running installation generated by +msosInstall.simh is required. If necessary, create sysdat.tap as described +above (customizations 2 - 5) and run the simulator: + + cdc1700 msosCustomX.simh + +where X is 1 to 5 depending on which customization is required. +does not need to be specified if it is MSOS5_SL136.tap in the current +directory. The script will run through the customization steps and generate a +new install tape (MSOS5-Install.tap). msosInstall.simh can be used with this +tape to create a customized system. + +Each customization directory includes msosCustomX.simh as well as sysdat.asm +and sysdat.tap (customization 1 does not require sysdat changes so it only +contains msosCustom1.simh. + + +2. Customization 1 + + This customization changes the creation date of the OS which is +output to the console when the system boots. The changes are in-line in +msosCustom1.simh. SYSMON, SYSDAY and SYSYER modified by SKED. The values are +the month, day and year in ASCII (high byte first). + + +3. Customization 2 + + This customization also changes the name of the system from "EXXON +DEVELOPMENT SYSTEM" to "SIMH DEVELOPMENT SYSTEM". Note that the SYSDAT module +name still includes "EXXON DEVELOPMENT SYSTEM" since there is no way to delete +a module and include a new one, only the ability to replace an existing module +is available. + + +4. Customization 3 + + The default installation from MSOS5_SL136.tap sets up all four disk +drives as well as the drum for file storage. I have been unable to find a +method for initializing the disk space for anything other than the the +library disk (CDD0/CDD1). This customization changes the file manager +configuration to only use the library disk for storage. This change gets rid +of one of the verification errors. + + +5. Customization 4 + + This customization gets rid of the 1743-2 Asynch communications +controller drive. There is no documentation for this device and it appears to +be used for the TIMESHARE option for which there are no good tapes available. + + +6. Customization 5 + + This customization adds support for a 10336 real-time clock which +interrupts at ~60Hz. After all of the above modifications, an example run of +the system: + +MSOS 5.0--PSR LEVEL 120 04/19/17 + + +SET PROGRAM PROTECT + + +SIMH DEVELOPMENT SYSTEM + + +65K MODE + + +CHECKING FILES - OK + + +ENTER DATE/TIME MMDDYYHHMM + +0508891516 +DATE: 08 MAY 89 TIME: 1516:00 +MI +*BATCH +J +*JOB +J +*K,L4 +J +*LULIST + E10 + LOG1A + SYSID + SYSYER + SYSDAY + SYSMON + + +E *E + + +MSOS 5.0 LOGICAL UNIT LISTING FOR SIMH DEVELOPMENT SYSTEM 04/19/17 +LU. EQUIPMENT DESCRIPTION READ/WRITE CLASS CODE EQ NO +01. SOFTWARE CORE ALLOCATOR READ/WRITE NO CLASS CODE EQ 00 +02. SOFTWARE DUMMY ALTERNATE DEVICE READ/WRITE NO CLASS CODE EQ 00 +03. SOFTWARE DUMMY ALTERNATE DEVICE READ/WRITE NO CLASS CODE EQ 00 +04. 1711 TELETYPEWRITER READ/WRITE TELETYPE EQ 01 +05. COSY UNIT READ/WRITE MAGNETIC TAPE EQ 00 +06. 1732-3/616-92 MAG TAPE READ/WRITE MAGNETIC TAPE EQ 07 +07. PSEUDO TAPE UNIT READ/WRITE MAGNETIC TAPE EQ 00 +08. 1733-2/856-4 DISK UNIT (4.5M) READ/WRITE MASS STORAGE EQ 03 +09. 1742-120 LINE PRINTER WRITE ONLY LINE PRINTER EQ 04 +10. 1732-3/616-92 MAG TAPE READ/WRITE MAGNETIC TAPE EQ 07 +11. 1728/430 CARD READER/PUNCH READ/WRITE CARD RDR/PUNCH EQ 10 +12. 1742-120 LINE PRINTER WRITE ONLY LINE PRINTER EQ 04 +13. 1733-2/856-4 DISK UNIT (4.5M) READ/WRITE MASS STORAGE EQ 03 +14. 1733-2/856-4 DISK UNIT (4.5M) READ/WRITE MASS STORAGE EQ 03 +15. 1733-2/856-4 DISK UNIT (4.5M) READ/WRITE MASS STORAGE EQ 03 +16. 1732-3/616-92 MAG TAPE READ/WRITE MAGNETIC TAPE EQ 07 +17. 1732-3/616-92 MAG TAPE READ/WRITE MAGNETIC TAPE EQ 07 +18. 1732-3/616-92 MAG TAPE READ/WRITE MAGNETIC TAPE EQ 07 +19. PSEUDO TAPE UNIT READ/WRITE MAGNETIC TAPE EQ 00 +20. PSEUDO TAPE UNIT READ/WRITE MAGNETIC TAPE EQ 00 +21. PSEUDO TAPE UNIT READ/WRITE MAGNETIC TAPE EQ 00 +22. PSEUDO DISK DRIVER READ/WRITE MASS STORAGE EQ 00 +23. PSEUDO DISK DRIVER READ/WRITE MASS STORAGE EQ 00 +24. PSEUDO DISK DRIVER READ/WRITE MASS STORAGE EQ 00 +25. PSEUDO DISK DRIVER READ/WRITE MASS STORAGE EQ 00 +26. 1752 DRUM UNIT READ/WRITE MASS STORAGE EQ 02 +27. COSY UNIT READ/WRITE MAGNETIC TAPE EQ 00 +28. 1728/430 CARD READER/PUNCH READ/WRITE CARD RDR/PUNCH EQ 10 +29. 1732-3/616-92 MAG TAPE READ/WRITE MAGNETIC TAPE EQ 07 +30. 1732-3/616-92 MAG TAPE READ/WRITE MAGNETIC TAPE EQ 07 +31. 1732-3/616-92 MAG TAPE READ/WRITE MAGNETIC TAPE EQ 07 +32. 1742-120 LINE PRINTER WRITE ONLY LINE PRINTER EQ 04 +33. 1728/430 CARD READER/PUNCH READ/WRITE CARD RDR/PUNCH EQ 10 +34. 1711 TELETYPEWRITER READ/WRITE TELETYPE EQ 01 +J + + +7. RPG II and Cobol Installation + + While installation materials for both RPG II and Cobol are available +on bitsavers.org (141_PRODUCT_SET.tap contains both) they are built to run +in core partition 3 which does not exist in the standard distribution tape +(MSOS5_SL136.tap). There does not appear to be sufficient documentation +available to add another partition. diff --git a/CDC1700/CDC1700-Diagnostics.txt b/CDC1700/CDC1700-Diagnostics.txt index c4b53f9c..23ee461a 100644 --- a/CDC1700/CDC1700-Diagnostics.txt +++ b/CDC1700/CDC1700-Diagnostics.txt @@ -50,6 +50,8 @@ FE QL2 10196 095C Quick Look 2 (more detailed instruction set test) 4B PET 12166 0C14 1732-2/1732-3 Magnetic Tape Test Passed in programmed I/O mode Failed in DMA mode +80 DRM 11086 2702 BG504 Drum Test + Passed 91 RTC 10216 04DA System 17 Real Time Clock Test Passed @@ -269,7 +271,7 @@ FC DPC 09146 0685 Disk Call-up Program 87 SCC 07155 0BCD Synchronous Communication Controller (FJ606-A) Test 88 CPC 10216 0E5C 1725-1 Card Punch Test 89 BSC 11196 0CC3 Cyberdata Bisync Controller Test -8A HFP 07046 1CDE 1781-a Hardware Floating Point Unit Test +8A HFP 07046 1CDE 1781-A Hardware Floating Point Unit Test 90 IOM 11096 0B8B IOM Mother Unit Digital Input/Output Test 91 RTC 10216 04DA System 17 Real Time Clock Test 92 PT1 10205 0617 1720-1 Paper Tape Punch Test diff --git a/CDC1700/CDC1700-MSOS.txt b/CDC1700/CDC1700-MSOS.txt index b0d46738..8082b751 100644 --- a/CDC1700/CDC1700-MSOS.txt +++ b/CDC1700/CDC1700-MSOS.txt @@ -874,7 +874,7 @@ the simtools respository on github: *Z This will compile the source code, send a message to the comment device -(typically the console TTY) and then load an execute the program. If the +(typically the console TTY) and then load and execute the program. If the program reads data from standard input it should follow the *LGO command. 4. The compiler/assembler expects each line of input to be in a separate @@ -892,8 +892,8 @@ program reads data from standard input it should follow the *LGO command. running. Listings should be sent to the line printer along with any output from the application. -If you want to code is Macro Assembler, the operations are the same; change -*FTN to *ASSEM and change the OPT parameters. Documentation for both the -Macro Assembler and Fortran compiler are available on bitsavers.org. +If you want to code in Macro Assembler, the operations are the same; change +*FTN to *ASSEM and change the OPT parameters. Documentation for both the Macro +Assembler and Fortran compiler are available on bitsavers.org. diff --git a/CDC1700/CDC1700.txt b/CDC1700/CDC1700.txt index 07f8c277..4739c9ed 100644 --- a/CDC1700/CDC1700.txt +++ b/CDC1700/CDC1700.txt @@ -80,6 +80,11 @@ mostly from the early period of its release: [Equipment address: 0x3] + DRM 1752 Drum memory controller with 64 - 1024 tracks of + drum memory (each track is 3072 words). + + [Equipment address: 0x2] + Notes: DP and CDD use the same equipment address so only 1 of them may be enabled (default is for CDD to be enabled). @@ -132,11 +137,12 @@ handling: 3.2 Disk autoload - The autoload mechanism loads track 0 from logical drive 0 of a disk -controller to memory location 0, it does not start execution of the loaded -code (some of the diagnostics code relies on this). Both DP and CD controllers -support the autoload command ("autoload dp" or "autoload cd") which is -normally followed by a "run 0" command to start execution of the loaded code. + The autoload mechanism loads track 0 from logical drive 0 of a disk or +drum controller to memory location 0, it does not start execution of the loaded +code (some of the diagnostics code relies on this). DP, CDD and DRM controllers +support the autoload command ("autoload dp", "autoload cdd" or "autoload drm") +which is normally followed by a "run 0" command to start execution of the +loaded code. 4. Operating The Simulator @@ -195,5 +201,15 @@ The actual key combination may be changed by issuing the command 5. Software There is some software available at bitsavers.org in the -bits/CDC/1700_Cyber18 directory, see CDC1700_Diagnostics.txt and -CDC1700_MSOS.txt for more details. +bits/CDC/1700_Cyber18 directory, see CDC1700-Diagnostics.txt and +CDC1700-MSOS.txt for more details. + + +6. Cyber-18 + + The CDC 1700 later morphed into the Cyber-18 series. This series +included an enhanced instruction set using unused bits from the 1700 +instruction encoding. The simulator can detect these instructions and can be +configured to stop if it tries to execute such an instruction +(set cpu debug=enhanced). Due to a lack of detailed documentation it it +unlikely that the enhanced instruction set will ever be completely implemented. diff --git a/CDC1700/cdc1700_cd.c b/CDC1700/cdc1700_cd.c index 7fa54f4d..d82ce6d6 100644 --- a/CDC1700/cdc1700_cd.c +++ b/CDC1700/cdc1700_cd.c @@ -300,7 +300,7 @@ t_bool CDintr(IO_DEVICE *); IO_DEVICE CDdev = IODEV(NULL, "1733-2", 1733, 3, 0xFF, 0, CDreject, CDin, CDout, NULL, NULL, - CDstate, CDintr, NULL, NULL, + CDstate, CDintr, NULL, NULL, NULL, NULL, 0x7F, 8, MASK_REGISTER0 | MASK_REGISTER1 | MASK_REGISTER2 | \ MASK_REGISTER3 | MASK_REGISTER4 | MASK_REGISTER5 | \ @@ -876,7 +876,7 @@ void CDDiskIO(UNIT *uptr, uint16 iotype) if ((cd_dev.dctrl & DBG_DERROR) != 0) fprintf(DBGOUT, - "%sCD - ReadWrite/Compare failed - %s\r\n", + "%sCD - Read/Write/Compare failed - %s\r\n", INTprefix, error); fw_IOalarm(FALSE, &cd_dev, &CDdev, "Alarm"); @@ -1235,6 +1235,8 @@ enum IOstatus CDout(IO_DEVICE *iod, uint8 reg) /*** TODO: Check protect conditions ***/ } + CDdev.STATUS &= ~IO_1733_SINGLE; + if ((IOAreg & IO_1733_USEL) != 0) { CDdev.iod_drive = NULL; CDdev.STATUS &= ~(IO_1733_ONCYL | IO_ST_BUSY | IO_ST_READY); @@ -1244,6 +1246,13 @@ enum IOstatus CDout(IO_DEVICE *iod, uint8 reg) CDdev.iod_drive = iou; CDdev.STATUS |= IO_ST_READY; + /* + * We only need to check on of the physical drives to see if it is + * an 856-4 since both drive types are updated together. + */ + if ((iou->ondrive[0]->flags & UNIT_856_4) == 0) + CDdev.STATUS |= IO_1733_SINGLE; + if (iou->active == NULL) { int first = ((cd_dev.flags & DEV_FIXED) != 0) ? 1 : 0; @@ -1351,14 +1360,14 @@ enum IOstatus CDout(IO_DEVICE *iod, uint8 reg) */ t_stat CDautoload(void) { - UNIT *uptr = &cd_unit[(cd_dev.flags & DEV_FIXED) ==0 ? 0 : 1]; + UNIT *uptr = &cd_unit[(cd_dev.flags & DEV_FIXED) == 0 ? 0 : 1]; if ((uptr->flags & UNIT_ATT) != 0) { uint32 i; for (i = 0; i < CD_NUMSC; i++) { t_offset offset = i * CD_NUMBY; - void * buf = &M[i * CD_NUMWD]; + void *buf = &M[i * CD_NUMWD]; if (sim_fseeko(uptr->fileref, offset, SEEK_SET) || (sim_fread(buf, sizeof(uint16), CD_NUMWD, uptr->fileref) != CD_NUMWD)) diff --git a/CDC1700/cdc1700_cpu.c b/CDC1700/cdc1700_cpu.c index d0b0de67..d0788028 100644 --- a/CDC1700/cdc1700_cpu.c +++ b/CDC1700/cdc1700_cpu.c @@ -50,28 +50,50 @@ * CPU interrupts are edge-triggered. The interrupt trigger is * automatically lowered when the CPU starts processing interrupt 0. * - * 2. There is no documention on relative timing. For example, the paper tape + * 2. Interrupts - undocumented feature + * + * The 1704 and 1784 processor doucmentation has a section describing + * interrupt handling. There is a sub-section titled "Sharing subroutines + * between interrupt levels" which indicates that a subroutine such as: + * + * SUBR ADC 0 + * IIN + * + * EIN + * JMP* (SUBR) + * + * may be shared between interrupt levels. It include the text "Interrupts + * occuring after the execution of the RTJ are blocked because the IIN is + * executed. These interrupts are not recognized until after the jump is + * executed, because one instruction must be executed after an EIN before + * the interrupt system is active". + * + * The implication of this is that interrupts must be deferred for one + * instruction following an RTJ. And indeed, deferring interrupts after + * an RTJ fixed a crash I was seeing on a customized version of MSOS 5.0. + * + * 3. There is no documention on relative timing. For example, the paper tape * punch diagnostic enables Alarm+Data interrupts and assumes that it will * be able to execute some number of instructions before the interrupt * occurs. How many instructions should we delay if interrupts are enabled * and all conditions are met to deliver the interrupt immediately? * - * 3. Some peripherals, notably the teletypewriter, do not have a protected + * 4. Some peripherals, notably the teletypewriter, do not have a protected * status bit. Does this mean that any application can directly affect * them? * * - The teletypewriter may be addressed by either a protected or a * nonprotected instruction (see SC17 Reference Manual). * - * 4. The 1740/1742 line printer controllers are incorrectly documented as + * 5. The 1740/1742 line printer controllers are incorrectly documented as * having the status register at offset 3, it is at offset 1 like all * other peripherals. * - * 5. For the 1738 disk pack controller, what is the correct response if an + * 6. For the 1738 disk pack controller, what is the correct response if an * operation is initiated with no drive selected? For now, we'll reject * the request. * - * 6. For the 1706-A buffered data channel, what interrupt is used to signal + * 7. For the 1706-A buffered data channel, what interrupt is used to signal * "End of Operation"? A channel-specific interrupt or a pass-through * interrupt from the device being controlled or some other? * @@ -123,6 +145,7 @@ uint8 P[MAXMEMSIZE]; t_uint64 Instructions; uint16 Preg, Areg, Qreg, Mreg, CAenable, OrigPreg, Pending, IOAreg, IOQreg; +uint16 R1reg, R2reg, R3reg, R4reg; uint8 Pfault, Protected, lastP, Oflag, INTflag, DEFERflag; t_bool ExecutionStarted = FALSE; @@ -177,7 +200,7 @@ t_stat cpu_help(FILE *, DEVICE *, UNIT *, int32, const char *); IO_DEVICE CPUdev = IODEV(NULL, "1714", CPU, 0, 0xFF, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, - 0, 0, 0, 0, 0, 0, 0, 0, NULL); + NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 0, NULL); /* CPU data structures @@ -1128,6 +1151,7 @@ t_stat executeAnInstruction(void) StoreToMem(operand, Preg); Preg = operand; INCP; + DEFERflag = 1; break; case OPC_STQ: @@ -1185,7 +1209,8 @@ t_stat executeAnInstruction(void) } break; } - /*** TODO: Enhanced skip instructions ***/ + Preg = OrigPreg; + return SCPE_UNIMPL; break; } break; @@ -1427,8 +1452,8 @@ t_stat executeAnInstruction(void) case INSTR_ENHANCED: if ((instr & OPC_MODMASK) != 0) { - /*** TODO: Enhanced instructions ***/ - goto done; + Preg = OrigPreg; + return SCPE_UNIMPL; } break; } @@ -1635,7 +1660,8 @@ t_stat executeAnInstruction(void) case INSTR_ENHANCED: if ((instr & OPC_MODMASK) != 0) { - /*** TODO: Enhanced miscellaneous instructions ***/ + Preg = OrigPreg; + return SCPE_UNIMPL; } break; } diff --git a/CDC1700/cdc1700_dc.c b/CDC1700/cdc1700_dc.c index 481e9bfe..963f465c 100644 --- a/CDC1700/cdc1700_dc.c +++ b/CDC1700/cdc1700_dc.c @@ -116,7 +116,7 @@ t_stat dc_help(FILE *, DEVICE *, UNIT *, int32, const char *); IO_DEVICE DCAdev = IODEV(NULL, "1706-A", DC, 0, 0xFF, IO_1706_1_A, DCreject, DCin, DCout, NULL, NULL, - DCstate, NULL, NULL, NULL, + DCstate, NULL, NULL, NULL, NULL, NULL, 0x7F, 4, MASK_REGISTER0 | MASK_REGISTER1 | \ MASK_REGISTER2 | MASK_REGISTER3, @@ -124,7 +124,7 @@ IO_DEVICE DCAdev = IODEV(NULL, "1706-A", DC, 0, 0xFF, IO_1706_1_A, IO_DEVICE DCBdev = IODEV(NULL, "1706-A", DC, 0, 0xFF, IO_1706_2_A, DCreject, DCin, DCout, NULL, NULL, - DCstate, NULL, NULL, NULL, + DCstate, NULL, NULL, NULL, NULL, NULL, 0x7F, 4, MASK_REGISTER0 | MASK_REGISTER1 | \ MASK_REGISTER2 | MASK_REGISTER3, @@ -132,7 +132,7 @@ IO_DEVICE DCBdev = IODEV(NULL, "1706-A", DC, 0, 0xFF, IO_1706_2_A, IO_DEVICE DCCdev = IODEV(NULL, "1706-A", DC, 0, 0xFF, IO_1706_3_A, DCreject, DCin, DCout, NULL, NULL, - DCstate, NULL, NULL, NULL, + DCstate, NULL, NULL, NULL, NULL, NULL, 0x7F, 4, MASK_REGISTER0 | MASK_REGISTER1 | \ MASK_REGISTER2 | MASK_REGISTER3, diff --git a/CDC1700/cdc1700_defs.h b/CDC1700/cdc1700_defs.h index 5eb7fa10..22539b18 100644 --- a/CDC1700/cdc1700_defs.h +++ b/CDC1700/cdc1700_defs.h @@ -44,6 +44,7 @@ #define SCPE_INVEXI 3 /* Invalid bit in EXI delta */ #define SCPE_IBKPT 4 /* Breakpoint */ #define SCPE_REJECT 5 /* Stop on reject */ +#define SCPE_UNIMPL 6 /* Unimplemented instruction */ /* * Private device flags @@ -113,11 +114,13 @@ #define UNIT_V_854 (UNIT_V_UF + 0) /* 854 vs. 853 disk pack drive */ #define UNIT_V_856_4 (UNIT_V_UF + 0) /* 856_4 vs. 856_2 drive */ +#define UNIT_V_DRMSIZE (UNIT_V_UF + 0) /* 1752 drum memory assignment */ #define UNIT_7TRACK (1 << UNIT_V_7TRACK) #define UNIT_WPROT (1 << UNIT_V_WPROT) #define UNIT_854 (1 << UNIT_V_854) #define UNIT_856_4 (1 << UNIT_V_856_4) +#define UNIT_DRMSIZE (1 << UNIT_V_DRMSIZE) /* * CPU @@ -386,8 +389,10 @@ enum IOstatus { */ #define MOD_ENHRE 0x0080 #define MOD_ENHIN 0x0040 +#define MOD_ENHRA 0x0038 +#define MOD_ENHRB 0x0007 -//#define REG_NONE 0x0 +#define REG_NONE 0x0 #define REG_R1 0x1 #define REG_R2 0x2 #define REG_R3 0x3 @@ -396,40 +401,48 @@ enum IOstatus { #define REG_A 0x6 #define REG_I 0x7 +#define OPC_ENHF4 0xF000 +#define OPC_ENHF5 0x0F00 + #define WORD_REG 0x0 #define WORD_MEM 0x1 #define CHAR_REG 0x2 #define CHAR_MEM 0x3 -#define OPC_ENHSUBJX 0x5000 -#define OPC_ENHADDR 0x8000 -#define OPC_ENHSUBR 0x9000 -#define OPC_ENHANDR 0xA000 -#define OPC_ENHANDM 0xA100 -#define OPC_ENHLOAD 0xC000 -#define OPC_ENHSTORE 0xC100 -#define OPC_ENHLOADC 0xC200 -#define OPC_ENHSTOREC 0xC300 -#define OPC_ENHORR 0xD000 -#define OPC_ENHORM 0xD100 -#define OPC_CMPREQ 0xE000 -#define OPC_CMPCEQ 0xE200 +#define OPC_STOSJMP 0x5000 +#define OPC_STOADD 0x8000 +#define OPC_STOSUB 0x9000 +#define OPC_STOAND 0xA000 +#define OPC_STOLOADST 0xC000 +#define OPC_STOOR 0xD000 +#define OPC_STOCRE 0xE000 +#define OPC_FLDF3A 0x07 +#define OPC_FLDRSV1 0x0 +#define OPC_FLDRSV2 0x1 #define OPC_FLDSFZ 0x2 #define OPC_FLDSFN 0x3 #define OPC_FLDLOAD 0x4 #define OPC_FLDSTORE 0x5 #define OPC_FLDCLEAR 0x6 #define OPC_FLDSET 0x7 +#define OPC_FLDSTR 0xF000 +#define OPC_FLDLTH 0x0F00 -#define OPC_ENHSKIPZ 0x0 -#define OPC_ENHSKIPNZ 0x1 -#define OPC_ENHSKIPPOS 0x2 -#define OPC_ENHSKIPNEG 0x3 -#define OPC_ENHSKIPR1 0x4 -#define OPC_ENHSKIPR2 0x8 -#define OPC_ENHSKIPR3 0xC -#define OPC_ENHSKIPR4 0x0 +#define OPC_ENHXFRRA 0xE0 +#define OPC_ENHXFRF2A 0x18 +#define OPC_ENHXFRRB 0x7 + +#define OPC_ENHSKIPTY 0x30 +#define OPC_ENHSKIPREG 0xC0 +#define OPC_ENHSKIPCNT 0xF + +#define OPC_DRPMBZ 0x10 +#define OPC_DRPRA 0xE0 +#define OPC_DRPSK 0xF + +#define OPC_MISCRA 0xE0 +#define OPC_MISCF3 0xF #define OPC_ENHLMM 0x1 #define OPC_ENHLRG 0x2 @@ -553,6 +566,8 @@ struct io_device { t_bool (*iod_intr)(struct io_device *); uint16 (*iod_raised)(DEVICE *); void (*iod_clear)(DEVICE *); + uint8 (*iod_decode)(struct io_device *, t_bool, uint8); + t_bool (*iod_chksta)(t_bool, uint8); uint16 iod_ienable; uint16 iod_oldienable; uint16 iod_imask; @@ -561,15 +576,15 @@ struct io_device { uint16 iod_cmask; uint16 iod_rmask; uint8 iod_regs; - uint8 iod_validmask; - uint8 iod_readmap; - uint8 iod_rejmapR; - uint8 iod_rejmapW; + uint16 iod_validmask; + uint16 iod_readmap; + uint16 iod_rejmapR; + uint16 iod_rejmapW; uint8 iod_flags; uint8 iod_dc; - uint16 iod_readR[8]; - uint16 iod_writeR[8]; - uint16 iod_prevR[8]; + uint16 iod_readR[16]; + uint16 iod_writeR[16]; + uint16 iod_prevR[16]; uint16 iod_forced; t_uint64 iod_event; uint16 iod_private; @@ -582,6 +597,10 @@ struct io_device { uint16 iod_private8; uint8 iod_private9; t_bool iod_private10; + uint16 iod_private11; + uint16 iod_private12; + uint8 iod_private13; + uint8 iod_private14; }; #define STATUS iod_readR[1] #define DEVSTATUS(iod) ((iod)->iod_readR[1]) @@ -598,23 +617,31 @@ struct io_device { #define CLRSTICKY(iod, reg, value) \ ((iod)->iod_sticky[reg] &= ~value) -#define MASK_REGISTER0 0x01 -#define MASK_REGISTER1 0x02 -#define MASK_REGISTER2 0x04 -#define MASK_REGISTER3 0x08 -#define MASK_REGISTER4 0x10 -#define MASK_REGISTER5 0x20 -#define MASK_REGISTER6 0x40 -#define MASK_REGISTER7 0x80 +#define MASK_REGISTER0 0x0001 +#define MASK_REGISTER1 0x0002 +#define MASK_REGISTER2 0x0004 +#define MASK_REGISTER3 0x0008 +#define MASK_REGISTER4 0x0010 +#define MASK_REGISTER5 0x0020 +#define MASK_REGISTER6 0x0040 +#define MASK_REGISTER7 0x0080 +#define MASK_REGISTER8 0x0100 +#define MASK_REGISTER9 0x0200 +#define MASK_REGISTER10 0x0400 +#define MASK_REGISTER11 0x0800 +#define MASK_REGISTER12 0x1000 +#define MASK_REGISTER13 0x2000 +#define MASK_REGISTER14 0x4000 +#define MASK_REGISTER15 0x8000 #define STATUS_ZERO 0x01 #define DEVICE_DC 0x02 #define AQ_ONLY 0x04 -#define IODEV(name, model, id, equ, sta, base, busy, ior, iow, bdcr, bdcw, dump, intr, raised, clear, mask, regs, valid, map, rejR, rejW, flags, dc, devspec) \ +#define IODEV(name, model, id, equ, sta, base, busy, ior, iow, bdcr, bdcw, dump, intr, raised, clear, decode, chksta, mask, regs, valid, map, rejR, rejW, flags, dc, devspec) \ { name, model, IOtype_default, equ, sta, 0, base, \ NULL, NULL, NULL, \ - busy, ior, iow, bdcr, bdcw, dump, intr, raised, clear, \ + busy, ior, iow, bdcr, bdcw, dump, intr, raised, clear, decode, chksta, \ 0, 0, IO_##id##_INTR, IO_##id##_DIRMSK, IO_##id##_STMSK, \ IO_##id##_STCINT | IO_ST_INT, \ mask, regs, valid, map, rejR, rejW, flags, dc, \ @@ -722,7 +749,7 @@ typedef uint16 devINTR(DEVICE *); #define IO_1711_SWRITE 0x0100 /* Select write mode */ #define IO_1711_DIRMSK (IO_1711_SREAD | IO_1711_SWRITE | IO_DIR_ALARM | \ IO_DIR_EOP | IO_DIR_DATA | IO_DIR_CINT | IO_DIR_CCONT) -#define IO_1711_INTR (IO_DIR_ALARM |IO_DIR_EOP | IO_DIR_DATA) +#define IO_1711_INTR (IO_DIR_ALARM | IO_DIR_EOP | IO_DIR_DATA) #define IO_1711_MANUAL 0x0800 /* Manual interrupt */ #define IO_1711_MON 0x0400 /* Motor on */ @@ -797,6 +824,47 @@ typedef uint16 devINTR(DEVICE *); IO_ST_INT | IO_ST_BUSY | IO_ST_READY) #define IO_1726_STCINT (IO_ST_ALARM | IO_ST_EOP | IO_ST_DATA) +/* + * 1728-A/B Card Reader/Punch + */ +#define IO_1728_MASK 0x0060 /* Station mask */ +#define IO_1728_CR 0x0020 /* Card reader select */ +#define IO_1728_CP 0x0040 /* Card puch select */ + +#define IO_1728_OFFSET 0x0100 /* Offset request */ +#define IO_1728_FEED 0x0080 /* Initiate feed cycle */ + +#define IO_1728_DIRMSK (IO_1728_OFFSET | IO_1728_FEED | IO_DIR_ALARM | \ + IO_DIR_EOP | IO_DIR_DATA | IO_DIR_CINT | \ + IO_DIR_CCONT) +#define IO_1728_INTR (IO_DIR_ALARM | IO_DIR_EOP | IO_DIR_DATA) + +#define IO_1728_CBFULL 0x0800 /* Chip box full */ +#define IO_1728_EOF 0x0400 /* End of file */ +#define IO_1728_FEEDAL 0x0200 /* Feed alert */ +#define IO_1728_ERROR 0x0100 /* Pre-read or punch error */ +#define IO_1728_STMSK (IO_1728_CBFULL | IO_1728_EOF | IO_1728_FEEDAL | \ + IO_1728_ERROR | IO_ST_PROT | IO_ST_LOST | \ + IO_ST_EOP | IO_ST_DATA | IO_ST_INT | IO_ST_BUSY | \ + IO_ST_READY) +#define IO_1728_STCINT (IO_DIR_ALARM | IO_DIR_EOP | IO_DIR_DATA) + +#define IO_ST2_INTLOCK 0x0400 /* Door interlock */ +#define IO_ST2_PUNINH 0x0200 /* Punch inhibit set */ +#define IO_ST2_MANUAL 0x0100 /* Manual mode */ +#define IO_ST2_PUNERR 0x0080 /* Punch error */ +#define IO_ST2_PREERR 0x0040 /* Pre-read error */ +#define IO_ST2_STKJAM 0x0020 /* Stacker area jam */ +#define IO_ST2_PUNJAM 0x0010 /* Punch area jam */ +#define IO_ST2_READJAM 0x0008 /* Read area jam */ +#define IO_ST2_FFEED 0x0004 /* Fail to feed */ +#define IO_ST2_FULL 0x0002 /* Stacker full */ +#define IO_ST2_EMPTY 0x0001 /* Hopper empty */ +#define IO_1728_ST2MSK (IO_ST2_INTLOCK | IO_ST2_PUNINH | IO_ST2_MANUAL | \ + IO_ST2_PUNERR | IO_ST2_PREERR | IO_ST2_STKJAM | \ + IO_ST2_PUNJAM | IO_ST2_READJAM | IO_ST2_FFEED | \ + IO_ST2_FULL | IO_ST2_EMPTY) + /* * 1729-A/B Card Reader */ @@ -997,6 +1065,29 @@ typedef uint16 devINTR(DEVICE *); #define IO_1742_STCINT (IO_ST_ALARM | IO_ST_EOP | IO_ST_DATA) +/* + * 1752-1/2/3/4 Drum + */ +#define IO_1752_DIRMSK (IO_DIR_ALARM | IO_DIR_EOP | IO_DIR_CINT | \ + IO_DIR_CCONT) +#define IO_1752_INTR (IO_DIR_ALARM | IO_DIR_EOP) + +#define IO_1752_OVERR 0x8000 /* Sector overrange error */ +#define IO_1752_GUARDED 0x4000 /* Guarded address error */ +#define IO_1752_SECCMP 0x2000 /* Sector compare */ +#define IO_1752_POWERF 0x1000 /* Power failure */ +#define IO_1752_TIMERR 0x0800 /* Timing track error */ +#define IO_1752_GUARDE 0x0400 /* Guarded address enabled */ +#define IO_1752_PROTF 0x0200 /* Protect fault */ +#define IO_1752_CHECKW 0x0100 /* Checkword error */ +#define IO_1752_STMSK (IO_1752_OVERR | IO_1752_GUARDED | IO_1752_SECCMP | \ + IO_1752_POWERF | IO_1752_TIMERR | IO_1752_GUARDE | \ + IO_1752_PROTF | IO_1752_CHECKW | IO_ST_PROT | \ + IO_ST_LOST | IO_ST_ALARM | IO_ST_EOP | IO_ST_DATA | \ + IO_ST_INT | IO_ST_BUSY | IO_ST_READY) + +#define IO_1752_STCINT (IO_ST_ALARM | IO_ST_EOP) + /* * 10336-1 Real-Time Clock */ @@ -1013,6 +1104,15 @@ typedef uint16 devINTR(DEVICE *); #define IO_10336_STMSK 0 #define IO_10336_STCINT 0 +/* + * M05 addressing scheme used by Cyber-18 enhanced instruction set for + * magtape access. + */ +#define M05_SAMPLE 0x0000 /* Sample (peripheral input) */ +#define M05_SET 0x0008 /* Set (peripheral output) */ +#define M05_DEVICE 0x0070 /* Device selection */ +#define M05_CONTR 0x0380 /* Controller selection */ + /* * Timing parameters */ @@ -1047,8 +1147,14 @@ typedef uint16 devINTR(DEVICE *); #define CD_IO_WAIT 800 /* Sector I/O wait time */ #define CD_RTZS_WAIT 200 /* Return to zero seek wait */ +#define DRM_ACCESS_WAIT 5800 /* Average access latency */ +#define DRM_SECTOR_WAIT 350 /* Sector I/O time */ + #define DC_START_WAIT 4 /* Startup delay */ #define DC_IO_WAIT 4 /* I/O transfer delay */ #define DC_EOP_WAIT 5 /* EOP delay */ +#define RDR_IN_WAIT 200 /* Card reader feed wait */ +#define PUN_OUT_WAIT 200 /* Card punch feed wait */ + #endif diff --git a/CDC1700/cdc1700_dev1.c b/CDC1700/cdc1700_dev1.c index 6e1870e0..f09051dc 100644 --- a/CDC1700/cdc1700_dev1.c +++ b/CDC1700/cdc1700_dev1.c @@ -26,7 +26,7 @@ */ /* cdc1700_dev1.c: equipment number 1 I/O device support - * Simh devices: tti, tto, ptr, ptp, cdr + * Simh devices: tti, tto, ptr, ptp */ #include "cdc1700_defs.h" @@ -140,21 +140,21 @@ t_stat tt_help(FILE *, DEVICE *, UNIT *, int32, const char *); IO_DEVICE TTIdev = IODEV("TTI", "1711-A", 1711, 1, 1, 0, NULL, NULL, NULL, NULL, NULL, - TTIstate, NULL, NULL, NULL, + TTIstate, NULL, NULL, NULL, NULL, NULL, 0xF, 2, MASK_REGISTER0 | MASK_REGISTER1, MASK_REGISTER1, 0, 0, 0, 0, NULL); IO_DEVICE TTOdev = IODEV("TTO", "1711-A", 1711, 1, 1, 0, NULL, NULL, NULL, NULL, NULL, - TTOstate, NULL, NULL, NULL, + TTOstate, NULL, NULL, NULL, NULL, NULL, 0xF, 2, MASK_REGISTER0 | MASK_REGISTER1, MASK_REGISTER1, 0, 0, 0, 0, NULL); IO_DEVICE TTdev = IODEV("TT", "1711-A", 1711, 1, 1, 0, TTreject, TTin, TTout, NULL, NULL, - TTstate, NULL, NULL, NULL, + TTstate, NULL, NULL, NULL, NULL, NULL, 0xF, 2, MASK_REGISTER0 | MASK_REGISTER1, 0, 0, 0, 0, 0, NULL); @@ -841,7 +841,7 @@ t_stat ptr_help(FILE *, DEVICE *, UNIT *, int32, const char *); IO_DEVICE PTRdev = IODEV(NULL, "1721-A", 1721, 1, 2, 0, fw_reject, PTRin, PTRout, NULL, NULL, - NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, 0xF, 2, MASK_REGISTER0 | MASK_REGISTER1, MASK_REGISTER1, 0, 0, 0, 0, NULL); @@ -1147,7 +1147,7 @@ t_stat ptp_help(FILE *, DEVICE *, UNIT *, int32, const char *); IO_DEVICE PTPdev = IODEV(NULL, "1723-A", 1723, 1, 4, 0, fw_reject, PTPin, PTPout, NULL, NULL, - NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, 0xF, 2, MASK_REGISTER0 | MASK_REGISTER1, MASK_REGISTER1, 0, 0, 0, 0, NULL); @@ -1397,164 +1397,6 @@ t_stat ptp_help(FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, const char *cptr return scp_help(st, dptr, uptr, flag, helpString, cptr); } -t_stat cdr_svc(UNIT *); -t_stat cdr_reset(DEVICE *); - -enum IOstatus CDRin(IO_DEVICE *, uint8); -enum IOstatus CDRout(IO_DEVICE *, uint8); - -/* - 1729-A/B Card Reader - - Addresses - Computer Instruction - Q Register Output From A Input to A - - 00E0 Read - 00E1 Director Function Director Status - - - Operations: - - Director Function - - 15 7 6 5 4 3 2 1 0 - +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ - | X | X | X | X | X | X | X | X | X | | | | | | | | - +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ - | | | | | | | - | | | | | | Clr Controller - | | | | | Clr Interrupts - | | | | Data Interrupt Req. - | | | Interrupt on End of Record - | | Interrupt on Alarm - | Start Motion - Stop Motion - - Status Response: - - Director Status - - 15 10 9 8 7 6 5 4 3 2 1 0 - +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ - | X | X | X | X | X | X | | | | | | | | | | | - +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ - | | | | | | | | | | - | | | | | | | | | Ready - | | | | | | | | Busy - | | | | | | | Interrupt - | | | | | | Data - | | | | | End Of Record - | | | | Alarm - | | | Lost Data - | | Protected - | Existence Code - Read Station Empty - - */ - -IO_DEVICE CDRdev = IODEV(NULL, "1729", 1729, 1, 6, 0, - fw_reject, CDRin, CDRout, NULL, NULL, - NULL, NULL, NULL, NULL, - 0xF, 2, - MASK_REGISTER0 | MASK_REGISTER1, - MASK_REGISTER1, 0, 0, 0, 0, NULL); - -/* CDR data structures - - cdr_dev CDR device descriptor - cdr_unit CDR unit descriptor - cdr_reg CDR register list - cdr_mod CDR modifiers list -*/ - -UNIT cdr_unit = { - UDATA(&cdr_svc, UNIT_SEQ+UNIT_ATTABLE+UNIT_ROABLE, 0), SERIAL_IN_WAIT -}; - -REG cdr_reg[] = { - { HRDATAD(FUNCTION, CDRdev.FUNCTION, 16, "Last director function issued") }, - { HRDATAD(STATUS, CDRdev.STATUS, 16, "Director status register") }, - { HRDATAD(IENABLE, CDRdev.IENABLE, 16, "Interrupts enabled") }, - { NULL } -}; - -MTAB cdr_mod[] = { - { MTAB_XTD | MTAB_VDV, 0, "1729 Card Reader" }, - { MTAB_XTD|MTAB_VDV, 0, "EQUIPMENT", NULL, - NULL, &show_addr, NULL, "Display equipment address" }, - { MTAB_XTD|MTAB_VDV, 0, NULL, "PROTECT", - &set_protected, NULL, NULL, "Device is protected (unimplemented)" }, - { MTAB_XTD|MTAB_VDV, 0, NULL, "NOPROTECT", - &clear_protected, NULL, NULL, "Device is unprotected (unimplemented)" }, - { 0 } -}; - -DEBTAB cdr_deb[] = { - { "TRACE", DBG_DTRACE, "Trace device I/O requests" }, - { "STATE", DBG_DSTATE, "Display device state changes" }, - { "LOCATION", DBG_DLOC, "Display address for I/O instructions" }, - { "FIRSTREJ", DBG_DFIRSTREJ, "Suppress display of 2nd ... I/O rejects" }, - { "ALL", DBG_DTRACE | DBG_DSTATE | DBG_DLOC }, - { NULL } -}; - -DEVICE cdr_dev = { - "CDR", &cdr_unit, cdr_reg, cdr_mod, - 1, 10, 31, 1, 8, 8, - NULL, NULL, &cdr_reset, - NULL, NULL, NULL, - &CDRdev, - DEV_DEBUG | DEV_NOEQUIP | DEV_INDEV | DEV_PROTECT, 0, cdr_deb, - NULL, NULL, NULL, NULL, NULL, NULL -}; - -/* Unit service */ - -t_stat cdr_svc(UNIT *uptr) -{ - /*** TODO: Implement Card Reader support ***/ - return SCPE_OK; -} - -/* Reset routine */ - -t_stat cdr_reset(DEVICE *dptr) -{ - DEVRESET(&CDRdev); - - ptr_unit.buf = 0; - if (!sim_is_running) - sim_activate(&cdr_unit, cdr_unit.wait); - return SCPE_OK; -} - -/* Perform I/O */ - -enum IOstatus CDRin(IO_DEVICE *iod, uint8 reg) -{ - /* - * The framework only passes IN operations for the data register (0x90) - */ - Areg = cdr_unit.buf; - CDRdev.STATUS &= IO_ST_BUSY | IO_ST_DATA; - return IO_REPLY; -} - -enum IOstatus CDRout(IO_DEVICE *iod, uint8 reg) -{ - switch (reg) { - case 0x00: - return IO_REJECT; - - case 0x01: - doDirectorFunc(&cdr_dev, FALSE); - /*** TODO: Process local director functions ***/ - break; - } - return IO_REPLY; -} - /* * Return device 1 interrupt status. If any of the sub-devices have their * interrupt status active, return the device 1 interrupt mask bit. @@ -1563,7 +1405,7 @@ uint16 dev1INTR(DEVICE *dptr) { uint16 status; - status = TTIdev.STATUS | TTOdev.STATUS | PTRdev.STATUS | PTPdev.STATUS | CDRdev.STATUS; + status = TTIdev.STATUS | TTOdev.STATUS | PTRdev.STATUS | PTPdev.STATUS; return (status & IO_ST_INT) != 0 ? 1 << 1 : 0; } @@ -1584,6 +1426,4 @@ void dev1Interrupts(char *buf) strcat(buf, " PTR"); if ((PTPdev.STATUS & IO_ST_INT) != 0) strcat(buf, " PTP"); - if ((CDRdev.STATUS & IO_ST_INT) != 0) - strcat(buf, " CDR"); } diff --git a/CDC1700/cdc1700_dis.c b/CDC1700/cdc1700_dis.c index 8aa3f85b..7ff8cb2b 100644 --- a/CDC1700/cdc1700_dis.c +++ b/CDC1700/cdc1700_dis.c @@ -1,6 +1,6 @@ /* - Copyright (c) 2015-2016, John Forecast + Copyright (c) 2015-2017, John Forecast Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), @@ -71,22 +71,61 @@ const char *destName[] = { "", "M", "Q", "Q,M", "A", "A,M", "A,Q", "A,Q,M" }; - const char *shiftName[] = { NULL, "QRS", "ARS", "LRS", NULL, "QLS", "ALS", "LLS" }; +/* + * Enhanced instruction set mnemonics + */ +char enhRegChar[] = { + ' ', '1', '2', '3', '4', 'Q', 'A', 'I' +}; + +const char *enhIdxName[] = { + "", ",1", ",2", ",3", ",4", ",Q", ",A", ",I" +}; + +char enhSkipType[] = { + 'Z', 'N', 'P', 'M' +}; + +char enhSkipReg[] = { + '4', '1', '2', '3' +}; + +const char *enhMiscName0[] = { + "???", "LMM", "LRG", "SRG", "SIO", "SPS", "DMI", "CBP", + "GPE", "GPO", "ASC", "APM", "PM0", "PM1" +}; +#define ENH_MAXMISC0 0xD + +const char *enhMiscName1[] = { + "LUB", "LLB", "EMS", "WPR", "RPR", "ECC" +}; +#define ENH_MAXMISC1 0x5 + +const char *enhFldName[] = { + "???", "???", "SFZ", "SFN", "LFA", "SFA", "CLF", "SEF" +}; + /* * Generate a single line of text for an instruction. Format is: * * c xxxx yyyy zzzz * + * or if enhanced instruction set is enabled + * + * c xxxx yyyy zzzz aaaa + * * where: * * |P Normal/Protected location * xxxx Memory address of instruction in hex * yyyy First word of instruction in hex - * zzzz Second word of inctruction in hex, replaced by spaces if + * zzzz Second word of instruction in hex, replaced by spaces if + * not present + * aaaa Third word of instruction in hex, replaced by spaces if * not present * Disassmbled instruction * Optional target address and contents @@ -99,14 +138,17 @@ int disassem(char *buf, uint16 addr, t_bool dbg, t_bool targ, t_bool exec) { int consumed = 1; char prot = ISPROTECTED(addr) ? 'P' : ' '; - char optional[8], temp[8], decoded[64]; + char optional[8], optional2[8], temp[8], decoded[64], enhInstr[8]; const char *mode, *spc, *shift, *inter, *dest; uint16 instr = LoadFromMem(addr); + uint16 instr2, enhMode; uint16 delta = instr & OPC_ADDRMASK; - uint8 more = 0, isconst = 0; + uint8 more = 0, isconst = 0, enhRB; uint16 t; + t_bool enhValid = FALSE, enhChar = FALSE; strcpy(optional, " "); + strcpy(optional2, " "); strcpy(decoded, "UNDEF"); if ((instr & OPC_MASK) != 0) { @@ -181,7 +223,228 @@ int disassem(char *buf, uint16 addr, t_bool dbg, t_bool targ, t_bool exec) break; case INSTR_ENHANCED: - sprintf(decoded, "%s", delta != 0 ? "Enhanced" : spc); + if (delta != 0) { + switch (instr & OPC_SPECIALMASK) { + case OPC_IIN: + if (((instr & OPC_FLDF3A) != OPC_FLDRSV1) && + ((instr & OPC_FLDF3A) != OPC_FLDRSV2)) { + instr2 = LoadFromMem(addr + 1); + delta = instr2 & OPC_ADDRMASK; + + if (((instr2 & OPC_FLDSTR) - (instr2 & OPC_FLDLTH)) >= 0) { + consumed++; + + if ((instr & MOD_ENHRE) == 0) + mode = delta == 0 ? "+ " : "- "; + else mode = "* "; + + sprintf(optional, "%04X", instr2); + if (delta == 0) { + consumed++; + sprintf(optional2, "%04X", LoadFromMem(addr + 2)); + sprintf(temp, "$%04X", LoadFromMem(addr + 2)); + } else sprintf(temp, "$%02X", delta); + + sprintf(decoded, "%s%s%s%s%s,%d,%d%s", + enhFldName[instr & OPC_FLDF3A], + mode, + (instr & MOD_ENHIN) != 0 ? "(" : "", + temp, + (instr & MOD_ENHIN) != 0 ? ")" : "", + (instr2 & OPC_FLDSTR) >> 12, + ((instr2 & OPC_FLDLTH) >> 8) + 1, + enhIdxName[(instr & MOD_ENHRA) >> 3]); + break; + } + } + strcpy(decoded, "UNDEF"); + targ = FALSE; + break; + + case OPC_EIN: + instr2 = LoadFromMem(addr + 1); + enhMode = (instr2 & OPC_ENHF5) >> 8; + enhRB = instr & MOD_ENHRB; + + switch (instr2 & OPC_ENHF4) { + case OPC_STOSJMP: + if (enhMode == 0) { + enhValid = TRUE; + if (enhRB == REG_NONE) + strcpy(enhInstr, "SJE"); + else sprintf(enhInstr, "SJ%c", enhRegChar[enhRB]); + } + break; + + case OPC_STOADD: + if ((enhMode == 0) && (enhRB != REG_NONE)) { + enhValid = TRUE; + sprintf(enhInstr, "AR%c", enhRegChar[enhRB]); + } + break; + + case OPC_STOSUB: + if ((enhMode == 0) && (enhRB != REG_NONE)) { + enhValid = TRUE; + sprintf(enhInstr, "SB%c", enhRegChar[enhRB]); + } + break; + + case OPC_STOAND: + if (enhRB != REG_NONE) + switch (enhMode) { + case WORD_REG: + enhValid = TRUE; + sprintf(enhInstr, "AN%c", enhRegChar[enhRB]); + break; + + case WORD_MEM: + enhValid = TRUE; + sprintf(enhInstr, "AM%c", enhRegChar[enhRB]); + break; + } + break; + + case OPC_STOLOADST: + switch (enhMode) { + case WORD_REG: + if (enhRB != REG_NONE) { + enhValid = TRUE; + sprintf(enhInstr, "LR%c", enhRegChar[enhRB]); + } + break; + + case WORD_MEM: + if (enhRB != REG_NONE) { + enhValid = TRUE; + sprintf(enhInstr, "SR%c", enhRegChar[enhRB]); + } + break; + + case CHAR_REG: + if (enhRB != REG_NONE) { + enhValid = TRUE; + enhChar = TRUE; + strcpy(enhInstr, "LCA"); + } + break; + + case CHAR_MEM: + if (enhRB != REG_NONE) { + enhValid = TRUE; + enhChar = TRUE; + strcpy(enhInstr, "SCA"); + } + break; + } + break; + + case OPC_STOOR: + if (enhRB != REG_NONE) + switch (enhMode) { + case WORD_REG: + enhValid = TRUE; + sprintf(enhInstr, "OR%c", enhRegChar[enhRB]); + break; + + case WORD_MEM: + enhValid = TRUE; + sprintf(enhInstr, "OM%c", enhRegChar[enhRB]); + break; + } + break; + + case OPC_STOCRE: + switch (enhMode) { + case WORD_REG: + if (enhRB != REG_NONE) { + enhValid = TRUE; + sprintf(enhInstr, "C%cE", enhRegChar[enhRB]); + } + break; + + case CHAR_REG: + if (enhRB != REG_NONE) { + enhValid = TRUE; + enhChar = TRUE; + strcpy(enhInstr, "CCE"); + } + break; + } + break; + } + if (enhValid) { + delta = instr2 & OPC_ADDRMASK; + consumed++; + + if ((instr & MOD_ENHRE) == 0) + mode = delta == 0 ? "+ " : "- "; + else mode = "* "; + + sprintf(optional, "%04X", instr2); + if (delta == 0) { + consumed++; + sprintf(optional2, "%04X", LoadFromMem(addr + 2)); + sprintf(temp, "$%04X", LoadFromMem(addr + 2)); + } else sprintf(temp, "$%02X", delta); + + if (!enhChar) { + if ((delta == 0) && + (instr & (MOD_ENHRE | MOD_ENHIN)) == 0) + isconst = 1; + + sprintf(decoded, "%s%s%s%s%s%s%s", + enhInstr, + mode, + isconst ? "=" : "", + (instr & MOD_ENHIN) != 0 ? "(" : "", + temp, + (instr & MOD_ENHIN) != 0 ? ")" : "", + enhIdxName[(instr & MOD_ENHRA) >> 3]); + } else { + sprintf(decoded, "%s%s%s%s%s%s%s", + enhInstr, + mode, + (instr & MOD_ENHIN) != 0 ? "(" : "", + temp, + (instr & MOD_ENHIN) != 0 ? ")" : "", + enhIdxName[enhRB], + enhIdxName[(instr & MOD_ENHRA) >> 3]); + } + } else { + strcpy(decoded, "UNDEF"); + targ = FALSE; + } + break; + + case OPC_SPB: + if ((instr & OPC_DRPMBZ) == 0) { + char reg = enhRegChar[(instr & OPC_DRPRA) >> 5]; + uint8 sk = instr & OPC_DRPSK; + + sprintf(decoded, "D%cP $%1X", reg, sk); + break; + } + break; + + case OPC_CPB: + if ((instr & OPC_ENHXFRF2A) == 0) { + if ((instr & (OPC_ENHXFRRA | OPC_ENHXFRRB)) != 0) { + char ra = enhRegChar[(instr & OPC_ENHXFRRA) >> 5]; + char rb = enhRegChar[instr & OPC_ENHXFRRB]; + + sprintf(decoded, "XF%c %c", ra, rb); + break; + } + } + strcpy(decoded, "UNDEF"); + targ = FALSE; + break; + } + } else { + sprintf(decoded, "%s", spc); + targ = FALSE; + } break; } break; @@ -199,7 +462,23 @@ int disassem(char *buf, uint16 addr, t_bool dbg, t_bool targ, t_bool exec) break; case INSTR_ENHANCED: - sprintf(decoded, "%s", delta != 0 ? "Enhanced" : spc); + if (delta != 0) { + uint8 miscFN = instr & OPC_MISCF3; + char reg = enhRegChar[(instr & OPC_MISCRA) >> 5]; + + targ = FALSE; + if ((instr & OPC_MISCRA) == 0) { + if (miscFN <= ENH_MAXMISC0) + spc = enhMiscName0[miscFN]; + else spc = "UNDEF"; + sprintf(decoded, "%s", spc); + } else { + if (miscFN <= ENH_MAXMISC1) { + spc = enhMiscName1[miscFN]; + sprintf(decoded, "%s %c", spc, reg); + } else strcpy(decoded, "UNDEF"); + } + } else sprintf(decoded, "%s", spc); break; } break; @@ -225,7 +504,13 @@ int disassem(char *buf, uint16 addr, t_bool dbg, t_bool targ, t_bool exec) break; case INSTR_ENHANCED: - sprintf(decoded, "%s", "Enhanced"); + { + char reg = enhSkipReg[(instr & OPC_ENHSKIPREG) >> 6]; + char type = enhSkipType[(instr & OPC_ENHSKIPTY) >> 4]; + uint8 sk = instr & OPC_ENHSKIPCNT; + + sprintf(decoded, "S%c%c $%1X", reg, type, sk); + } break; } break; @@ -257,11 +542,19 @@ int disassem(char *buf, uint16 addr, t_bool dbg, t_bool targ, t_bool exec) } if (dbg) { - sprintf(buf, "%c %04X %04X %s %s", - prot, addr, instr, optional, decoded); + if (INSTR_SET == INSTR_ENHANCED) + sprintf(buf, "%c %04X %04X %s %s %s", + prot, addr, instr, optional, optional2, decoded); + else + sprintf(buf, "%c %04X %04X %s %s", + prot, addr, instr, optional, decoded); } else { - sprintf(buf, "%c %04X %s %s", - prot, instr, optional, decoded); + if (INSTR_SET == INSTR_ENHANCED) + sprintf(buf, "%c %04X %s %s %s", + prot, instr, optional, optional2, decoded); + else + sprintf(buf, "%c %04X %s %s", + prot, instr, optional, decoded); } if (targ) { @@ -350,6 +643,13 @@ int disassem(char *buf, uint16 addr, t_bool dbg, t_bool targ, t_bool exec) case OPC_INP: case OPC_OUT: + taddr = doADDinternal(addr, EXTEND8(instr & OPC_MODMASK)); + taddr2 = taddr; + if ((sim_switches & SWMASK('R')) != 0) + taddr2 -= RelBase; + more = 1; + break; + case OPC_EIN: case OPC_IIN: case OPC_INTER: diff --git a/CDC1700/cdc1700_dp.c b/CDC1700/cdc1700_dp.c index a1c47fb6..371c2f74 100644 --- a/CDC1700/cdc1700_dp.c +++ b/CDC1700/cdc1700_dp.c @@ -231,7 +231,7 @@ t_stat dp_help(FILE *, DEVICE *, UNIT *, int32, const char *); IO_DEVICE DPdev = IODEV(NULL, "1738-B", 1738, 3, 0xFF, 0, DPreject, DPin, DPout, NULL, NULL, - DPstate, DPintr, NULL, NULL, + DPstate, DPintr, NULL, NULL, NULL, NULL, 0x7F, 8, MASK_REGISTER1 | MASK_REGISTER2 | MASK_REGISTER3 | \ MASK_REGISTER4 | MASK_REGISTER5 | MASK_REGISTER6 | \ diff --git a/CDC1700/cdc1700_drm.c b/CDC1700/cdc1700_drm.c new file mode 100644 index 00000000..e3140e9c --- /dev/null +++ b/CDC1700/cdc1700_drm.c @@ -0,0 +1,967 @@ +/* + + Copyright (c) 2015-2017, John Forecast + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + JOHN FORECAST BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + Except as contained in this notice, the name of John Forecast shall not + be used in advertising or otherwise to promote the sale, use or other dealings + in this Software without prior written authorization from John Forecast. + +*/ + +/* cdc1700_drm.c: drum memory controller + * Simh device: drm + */ + +/* + * Notes: + * + * 1. The 1752 Drum Memory Subsystem consists of a 3600 RPM drum with 32 + * sectors (96 words each) per track. There can be 64 - 1024 tracks + * depending on the model ordered. + * + * There is 1 readable register which needs to be handled specially - the + * Sector Address Status. This register consists of 3 fields: + * + * - Current sector address as read from the drum (0 - 31) + * - Current track address from last I/O request (zero on startup) + * - Core address compare - set if transfer is to last address of buffer + * + * The SMM17 diagnostic for the 1752 uses this register to verify that + * the hardware is operational before allowing the diagnostic to run. The + * register fields will be implemented as follows: + * + * 1. Current sector address + * + * Rather than use a repeating service routine, we will timestamp + * (using the instruction count) when the Sector Address Status register + * was last referenced or used as part of an I/O operation. When the + * register is next referenced, we will compute the number of sectors + * which have passed under the head (521 uSec/sector so 350 instructions + * assuming 1.5 microsecond/instruction) and update the sector address + * field appropriately. If an I/O is active, the sector address will + * reflect that used by the current I/O. This may result in a sudden + * change in value. + * + * 2. Current track address + * + * This will be the last track address referenced by an I/O request. + * + * 3. Core address compare + * + * This bit is set when the current/next DMA request is to the last + * address of the buffer. Rather than simulate DMA word at a time, + * we simulate sector transfer at a time. We will set this bit if the + * last address of the buffer is somewhere within the current sector + * and also set the Core Address Status to be the last address of + * the buffer. + * + * 2. This is the first, and only, device driver which requires dynamic + * processing of the Director Status Register. The Sector Compare is only + * set when the requested sector is under the read head. The I/O framework + * did not require any changes to allow this to work. + */ + +#include "cdc1700_defs.h" + +#define SASTATUS iod_readR[2] +#define CASTATUS iod_readR[3] +#define DATASTATUS iod_readR[4] + +extern char INTprefix[]; + +extern void RaiseExternalInterrupt(DEVICE *); + +extern t_bool doDirectorFunc(DEVICE *, t_bool); +extern t_bool fw_reject(IO_DEVICE *, t_bool, uint8); +extern void fw_IOunderwayEOP2(IO_DEVICE *, uint16); +extern void fw_IOcompleteEOP2(t_bool, DEVICE *, IO_DEVICE *, uint16, const char *); +extern void fw_IOalarm(t_bool, DEVICE *, IO_DEVICE *, const char *); +extern void fw_IOintr(t_bool, DEVICE *, IO_DEVICE *, uint16, uint16, uint16, const char *); + +extern void rebuildPending(void); + +extern t_stat show_addr(FILE *, UNIT *, int32, CONST void *); + +extern t_stat set_protected(UNIT *, int32, CONST char *, void *); +extern t_stat clear_protected(UNIT *, int32, CONST char *, void *); + +extern t_stat set_equipment(UNIT *, int32, CONST char *, void *); + +extern t_stat set_stoponrej(UNIT *, int32, CONST char *, void *); +extern t_stat clr_stoponrej(UNIT *, int32, CONST char *, void *); + +extern uint16 LoadFromMem(uint16); +extern t_bool IOStoreToMem(uint16, uint16, t_bool); + +extern uint16 M[], Areg, IOAreg; +extern t_uint64 Instructions; + +extern t_bool IOFWinitialized; + +extern UNIT cpu_unit; + +t_stat drm_help(FILE *, DEVICE *, UNIT *, int32, const char *); + +/* Constants */ + +#define DRM_NUMWD (96) /* words/sector */ +#define DRM_NUMBY (DRM_NUMWD * sizeof(uint16)) +#define DRM_NUMSC (32) /* sectors/track */ +#define DRM_SIZE (512 * DRM_NUMSC * DRM_NUMBY) +#define DRM_MINTRACKS (64) /* Min # of tracks supported */ +#define DRM_MAXTRACKS (1024) /* Max # of tracks supported */ + +#define DRM_AUTOLOAD (16) /* Sectors to autoload */ + +/* + * Drum address fields + */ +#define DRM_TRK_MASK 0x7FE0 /* Track address */ +#define DRM_TRK_SHIFT 5 /* and shift */ +#define DRM_SEC_MASK 0x001F /* Sector mask */ + +#define DRM_COMPARE 0x8000 /* Core address compare */ + +enum drmio_status { + DRMIO_MORE, /* More I/O pending */ + DRMIO_DONE, /* I/O processing complete */ + DRMIO_PROTECT, /* Protect fault */ + DRMIO_ADDRERR /* Addressing error */ +}; + +t_stat drm_svc(UNIT *); +t_stat drm_reset(DEVICE *); +t_stat drm_attach(UNIT *, CONST char *); +t_stat drm_detach(UNIT *); + +t_stat drm_set_size(UNIT *, int32, CONST char *, void *); + +void DRMstate(const char *, DEVICE *, IO_DEVICE *); +t_bool DRMreject(IO_DEVICE *, t_bool, uint8); +enum IOstatus DRMin(IO_DEVICE *, uint8); +enum IOstatus DRMout(IO_DEVICE *, uint8); +void DRMclear(DEVICE *); +uint8 DRMdecode(IO_DEVICE *, t_bool, uint8); + +/* + 1752-A/B/C/D Drum memory controller + + Addresses + Computer Instruction + Q Register Output From A Input to A + (Bits 03-00) + + 0000 Initiate Write Op Illegal + 0001 Director Function Director Status + 0010 Illegal Sector Address Status + 0011 Director Function Core Address Status + 0100 Initiate Read Op Data Status + 0101 Director Function Illegal + 0110 Illegal Illegal + 0111 Director Function Illegal + 1000 Load ISA Illegal + 1001 Director Function Illegal + 1010 Illegal Illegal + 1011 Director Function Illegal + 1100 Load Initial Addr Illegal + 1101 Director Function Illegal + 1110 Load Final Addr Illegal + 1111 Director Function Illegal + + Operations: + + Initiate Drum Write Operation + + 15 14 0 + +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | + +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + + Director Function + + 15 4 3 2 1 0 + +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + | X | X | X | X | X | X | X | X | X | X | X | | | X | | | + +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + | | | | + | | | Clr Controller + | | Clr Interrupts + | EOP Interrupt Req. + Interrupt on Alarm + + Initiate Drum Read Operation + + 15 14 0 + +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | + +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + + Load Initial Sector Address + + 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + | 0 | | | | | | | | | | | | | | | | + +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + | | | | + +-----------------------------------+ +---------------+ + Desired Initial Track Address Desired Initial + Sector Addr - 1 + + Load Initial Core Address, Load Final Core Address + + 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + | | | | | | | | | | | | | | | | | + +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + | | + +-----------------------------------------------------------+ + Core Address + + Status Response: + + Director Status + + 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + | | | | | | | | | | | | | | | | | + +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + | | | | | | | | | | | | | | | | + | | | | | | | | | | | | | | | Ready + | | | | | | | | | | | | | | Busy + | | | | | | | | | | | | | Interrupt + | | | | | | | | | | | | Data + | | | | | | | | | | | End of Operation + | | | | | | | | | | Alarm + | | | | | | | | | Lost Data + | | | | | | | | Protected + | | | | | | | Checkword Error + | | | | | | Protect Fault + | | | | | Guarded Address Enabled + | | | | Timing Track Error + | | | Power Failure + | | Sector Compare + | Guarded Address Error + Sector Overrange Error + + Sector Address Status + + 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + | | | | | | | | | | | | | | | | | + +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + | | | | | + | +-----------------------------------+ +---------------+ + | Track Address Register Contents Sector Address + | Register Contents + Core Address Compare + + Core Address Status + + 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + | | | | | | | | | | | | | | | | | + +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + | | + +-----------------------------------------------------------+ + Core Address Register Contents + + Data Status + + 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + | | | | | | | | | | | | | | | | | + +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + | | + +-----------------------------------------------------------+ + Data Register Zero Contents + +*/ + +IO_DEVICE DRMdev = IODEV(NULL, "1752", 1752, 2, 0xFF, 0, + DRMreject, DRMin, DRMout, NULL, NULL, + DRMstate, NULL, NULL, DRMclear, DRMdecode, NULL, + 0x7F, 16, + MASK_REGISTER0 | MASK_REGISTER1 | MASK_REGISTER2 | \ + MASK_REGISTER3 | MASK_REGISTER4 | MASK_REGISTER5 | \ + MASK_REGISTER6 | MASK_REGISTER7 | MASK_REGISTER8 | \ + MASK_REGISTER9 | MASK_REGISTER10 | MASK_REGISTER11 | \ + MASK_REGISTER12 | MASK_REGISTER13 | \ + MASK_REGISTER14 | MASK_REGISTER15, + MASK_REGISTER3 | MASK_REGISTER4, + MASK_REGISTER0 | MASK_REGISTER5 | MASK_REGISTER6 | \ + MASK_REGISTER7 | MASK_REGISTER8 | MASK_REGISTER9 | \ + MASK_REGISTER10 | MASK_REGISTER11 | \ + MASK_REGISTER12 | MASK_REGISTER13 | \ + MASK_REGISTER14 | MASK_REGISTER15, + MASK_REGISTER2 | MASK_REGISTER6 | MASK_REGISTER10, + 0, 0, NULL); + +/* + * Define usage for "private" IO_DEVICE data areas. + */ +#define iod_tracks iod_private /* # of tracks on device */ +#define iod_compare iod_private4 /* TRUE if DMA of last buffer word */ +#define iod_isa iod_private6 /* Initial sector address */ +#define iod_ica iod_private7 /* Initial core address */ +#define iod_fca iod_private8 /* Final core address */ +#define iod_state iod_private9 /* Current controller state */ +#define iod_ca iod_private11 /* Current DMA address */ +#define iod_trk iod_private12 /* Current track # */ +#define iod_sec iod_private13 /* Current sector # */ + +#define DRM_IDLE 0x00 /* Idle */ +#define DRM_WRITE 0x01 /* Write data */ +#define DRM_READ 0x02 /* Read data */ + +/* DRM data structures + + drm_dev DRM device descriptor + drm_unit DRM unit descriptor + drm_reg DRM register list + drm_mod DRM modifier list +*/ + +UNIT drm_unit = { + UDATA(&drm_svc, UNIT_FIX+UNIT_ATTABLE+UNIT_DISABLE, DRM_SIZE) +}; + +REG drm_reg[] = { + { HRDATAD(FUNCTION, DRMdev.FUNCTION, 16, "Last director function issued") }, + { HRDATAD(STATUS, DRMdev.STATUS, 16, "Director status register") }, + { HRDATAD(IENABLE, DRMdev.IENABLE, 16, "Interrupts enabled") }, + /*** more ***/ + { NULL } +}; + +MTAB drm_mod[] = { + { MTAB_XTD | MTAB_VDV, 0, "1752 Drum Memory Controller" }, + { MTAB_XTD|MTAB_VDV, 0, "EQUIPMENT", "EQUIPMENT=hexAddress", + &set_equipment, &show_addr, NULL, "Set/Display equipment address" }, + { MTAB_XTD|MTAB_VDV, 0, NULL, "STOPONREJECT", + &set_stoponrej, NULL, NULL, "Stop simulation if I/O is rejected" }, + { MTAB_XTD|MTAB_VDV, 0, NULL, "NOSTOPONREJECT", + &clr_stoponrej, NULL, NULL, "Don't stop simulation if I/O is rejected" }, + { MTAB_XTD|MTAB_VDV, 0, NULL, "PROTECT", + &set_protected, NULL, NULL, "Device is protected (unimplemented)" }, + { MTAB_XTD|MTAB_VDV, 0, NULL, "NOPROTECT", + &clear_protected, NULL, NULL, "Device is unprotected (unimplemented)" }, + { UNIT_DRMSIZE, 64, NULL, "64", + &drm_set_size, NULL, NULL, "Set drum storage to 64 tracks" }, + { UNIT_DRMSIZE, 128, NULL, "128", + &drm_set_size, NULL, NULL, "Set drum storage to 128 tracks" }, + { UNIT_DRMSIZE, 192, NULL, "192", + &drm_set_size, NULL, NULL, "Set drum storage to 192 tracks" }, + { UNIT_DRMSIZE, 256, NULL, "256", + &drm_set_size, NULL, NULL, "Set drum storage to 256 tracks" }, + { UNIT_DRMSIZE, 320, NULL, "320", + &drm_set_size, NULL, NULL, "Set drum storage to 320 tracks" }, + { UNIT_DRMSIZE, 384, NULL, "384", + &drm_set_size, NULL, NULL, "Set drum storage to 384 tracks" }, + { UNIT_DRMSIZE, 448, NULL, "448", + &drm_set_size, NULL, NULL, "Set drum storage to 448 tracks" }, + { UNIT_DRMSIZE, 512, NULL, "512", + &drm_set_size, NULL, NULL, "Set drum storage to 512 tracks" }, + { UNIT_DRMSIZE, 576, NULL, "576", + &drm_set_size, NULL, NULL, "Set drum storage to 576 tracks" }, + { UNIT_DRMSIZE, 640, NULL, "640", + &drm_set_size, NULL, NULL, "Set drum storage to 640 tracks" }, + { UNIT_DRMSIZE, 704, NULL, "704", + &drm_set_size, NULL, NULL, "Set drum storage to 704 tracks" }, + { UNIT_DRMSIZE, 768, NULL, "768", + &drm_set_size, NULL, NULL, "Set drum storage to 768 tracks" }, + { UNIT_DRMSIZE, 832, NULL, "832", + &drm_set_size, NULL, NULL, "Set drum storage to 832 tracks" }, + { UNIT_DRMSIZE, 896, NULL, "896", + &drm_set_size, NULL, NULL, "Set drum storage to 896 tracks" }, + { UNIT_DRMSIZE, 960, NULL, "960", + &drm_set_size, NULL, NULL, "Set drum storage to 960 tracks" }, + { UNIT_DRMSIZE, 1024, NULL, "1024", + &drm_set_size, NULL, NULL, "Set drum storage to 1024 tracks" }, + { 0 } +}; + +DEBTAB drm_deb[] = { + { "TRACE", DBG_DTRACE, "Trace device I/O requests" }, + { "STATE", DBG_DSTATE, "Display device state changes" }, + { "INTR", DBG_DINTR, "Display device interrupt requests" }, + { "ERROR", DBG_DERROR, "Display device errors" }, + { "LOCATION", DBG_DLOC, "Display address for I/O instructions" }, + { "FIRSTREJ", DBG_DFIRSTREJ, "Suppress display of 2nd ... I/O rejects" }, + { "ALL", DBG_DTRACE | DBG_DSTATE | DBG_DINTR | DBG_DERROR | DBG_DLOC }, + { NULL } +}; + +DEVICE drm_dev = { + "DRM", &drm_unit, drm_reg, drm_mod, + 1, 10, 31, 1, 8, 8, + NULL, NULL, &drm_reset, + NULL, &drm_attach, &drm_detach, + &DRMdev, + DEV_DEBUG | DEV_DISK | DEV_DISABLE | DEV_INDEV | DEV_OUTDEV | DEV_PROTECT, + 0, drm_deb, + NULL, NULL, &drm_help, NULL, NULL, NULL +}; + +/* + * Dump the current internal state of the DRM device. + */ +const char *DRMStateStr[] = { + "Idle", "Write", "Read" +}; + +void DRMstate(const char *where, DEVICE *dev, IO_DEVICE *iod) +{ + fprintf(DBGOUT, + "%s[%s %s: %s, Func: %04X, Sta: %04X, Ena: %04X]\r\n", + INTprefix, dev->name, where, DRMStateStr[iod->iod_state], + iod->FUNCTION, iod->STATUS, iod->IENABLE); + fprintf(DBGOUT, + "%s[%s: ISA: %04X, ICA: %04X, FCA: %04X, SAS: %04X, CAS: %04X]\r\n", + INTprefix, dev->name, + iod->iod_isa, iod->iod_ica, iod->iod_fca, + iod->SASTATUS, iod->CASTATUS); + fprintf(DBGOUT, + "%s[%s: Trk: %03X, Sec: %02X, Cur: %04X, Comp: %c]\r\n", + INTprefix, dev->name, iod->iod_trk, iod->iod_sec, iod->iod_ca, + iod->iod_compare ? 'T' : 'F'); +} + +/* + * Load and validate drum address in the Initial Sector Address Register + */ +static t_bool LoadDrumAddress(void) +{ + uint16 track = (DRMdev.iod_isa & DRM_TRK_MASK) >> DRM_TRK_SHIFT; + + if (track >= DRMdev.iod_tracks) + return FALSE; + + /* + * The sector field initially holds (sector # - 1) and needs to be + * incremented without touching the track #. + */ + DRMdev.iod_trk = track; + DRMdev.iod_sec = (DRMdev.iod_isa + 1) & DRM_SEC_MASK; + return TRUE; +} + +/* + * Set up a drum I/O operation using the currently set parameters + */ +static void StartDrumIO(t_bool wr) +{ + if (LoadDrumAddress()) { + DRMdev.iod_compare =(DRMdev.iod_fca >= DRMdev.CASTATUS) && + (DRMdev.iod_fca < (DRMdev.CASTATUS + DRM_NUMWD)); + DRMdev.iod_ca = DRMdev.iod_ica; + DRMdev.CASTATUS = DRMdev.iod_compare ? DRMdev.iod_ica : DRMdev.iod_fca; + + fw_IOunderwayEOP2(&DRMdev, IO_ST_DATA); + + if ((drm_dev.dctrl & DBG_DTRACE) != 0) { + fprintf(DBGOUT, + "%sDRM - Start %s I/O, Trk: %03X, Sec: %02X, Start: %04X, End: %04X\r\n", + INTprefix, wr ? "Write" : "Read", + DRMdev.iod_trk, DRMdev.iod_sec, DRMdev.iod_ica, DRMdev.iod_fca); + } + + DRMdev.iod_state = wr ? DRM_WRITE : DRM_READ; + sim_activate(&drm_unit, DRM_ACCESS_WAIT); + return; + } + + /* + * Generate a sector overrange error and possible interrupt. + */ + DRMdev.STATUS &= ~IO_ST_DATA; + DRMdev.STATUS |= IO_1752_OVERR; + fw_IOalarm(FALSE, &drm_dev, &DRMdev, "Invalid track #"); +} + +/* + * Increment the drum sector address. + */ +static void DrumIOIncSector(void) +{ + DRMdev.iod_sec = (DRMdev.iod_sec + 1) & DRM_SEC_MASK; + if (DRMdev.iod_sec == 0) + DRMdev.iod_trk++; +} + +/* + * Initiate a read operation on the drum. + */ +static enum drmio_status DrumIORead(UNIT *uptr) +{ + uint16 buf[DRM_NUMWD]; + uint32 lba = (DRMdev.iod_trk << DRM_TRK_SHIFT) | DRMdev.iod_sec; + int i; + + if (DRMdev.iod_trk >= DRMdev.iod_tracks) + return DRMIO_ADDRERR; + + /* + * Report any error in the underlying container infrastructure as an + * address error. + */ + if (sim_fseeko(uptr->fileref, lba * DRM_NUMBY, SEEK_SET) || + (sim_fread(buf, sizeof(uint16), DRM_NUMWD, uptr->fileref) != DRM_NUMWD)) + return DRMIO_ADDRERR; + + for (i = 0; i < DRM_NUMWD; i++) { + /*** TODO: fix protect check ***/ + if (!IOStoreToMem(DRMdev.iod_ca, buf[i], TRUE)) + return DRMIO_PROTECT; + + DRMdev.DATASTATUS = buf[i]; + + if (DRMdev.iod_ca++ == DRMdev.iod_fca) { + DRMdev.CASTATUS = DRMdev.iod_ca; + DrumIOIncSector(); + return DRMIO_DONE; + } + } + DrumIOIncSector(); + if ((drm_dev.dctrl & DBG_DTRACE) != 0) + fprintf(DBGOUT, + "%sDRM - Continue Read I/O, Trk: %03X, Sec: %02X, Cur: %04X, End: %04X\r\n", + INTprefix, DRMdev.iod_trk, DRMdev.iod_sec, + DRMdev.iod_ca, DRMdev.iod_fca); + + return DRMIO_MORE; +} + +/* + * Initiate a write operation on the drum. + */ +static enum drmio_status DrumIOWrite(UNIT *uptr) +{ + uint16 buf[DRM_NUMWD]; + uint32 lba = (DRMdev.iod_trk << DRM_TRK_SHIFT) | DRMdev.iod_sec; + t_bool done = FALSE; + int i; + + if (DRMdev.iod_trk >= DRMdev.iod_tracks) + return DRMIO_ADDRERR; + + memset(buf, 0, sizeof(buf)); + + for (i = 0; i < DRM_NUMWD; i++) { + DRMdev.DATASTATUS = buf[i] = LoadFromMem(DRMdev.iod_ca); + if (DRMdev.iod_ca++ == DRMdev.iod_fca) { + DRMdev.CASTATUS = DRMdev.iod_ca; + done = TRUE; + break; + } + } + + /* + * Report any error in the underlying container infrastructure as an + * address error. + */ + if (sim_fseeko(uptr->fileref, lba * DRM_NUMBY, SEEK_SET) || + (sim_fwrite(buf, sizeof(uint16), DRM_NUMWD, uptr->fileref) != DRM_NUMWD)) + return DRMIO_ADDRERR; + + DrumIOIncSector(); + if (((drm_dev.dctrl & DBG_DTRACE) != 0) && !done) + fprintf(DBGOUT, + "%sDRM - Continue Write I/O, Trk: %03X, Sec: %02X, Cur: %04X, End: %04X\r\n", + INTprefix, DRMdev.iod_trk, DRMdev.iod_sec, + DRMdev.iod_ca, DRMdev.iod_fca); + + return done ? DRMIO_DONE : DRMIO_MORE; +} + +/* + * Perform read/write sector operations from within the unit service routine. + */ +void DrumIO(UNIT *uptr, uint8 iotype) +{ + const char *error = "Unknown"; + enum drmio_status status = DRMIO_ADDRERR; + + switch (iotype) { + case DRM_WRITE: + status = DrumIOWrite(uptr); + break; + + case DRM_READ: + status = DrumIORead(uptr); + break; + } + + /* + * Update the sector address status register if the I/O was successful. + * Note that since we perform sector at a time I/O, we assert the "Core + * Address Compare" bit for the entire period. + */ + if ((status == DRMIO_MORE) || (status == DRMIO_DONE)) { + DRMdev.iod_compare =(DRMdev.iod_fca >= DRMdev.iod_ca) && + (DRMdev.iod_fca < (DRMdev.iod_ca + DRM_NUMWD)); + } + + switch (status) { + case DRMIO_MORE: + sim_activate(uptr, DRM_SECTOR_WAIT); + break; + + case DRMIO_PROTECT: + DRMdev.STATUS |= IO_1752_PROTF; + error = "Protection Fault"; + goto err; + + case DRMIO_ADDRERR: + DRMdev.STATUS |= IO_1752_OVERR; + error = "Address Error"; + err: + DRMdev.iod_compare = FALSE; + DRMdev.iod_state = DRM_IDLE; + + if ((drm_dev.dctrl & DBG_DERROR) != 0) + fprintf(DBGOUT, + "%sDRM - Read/Write failed - %s\r\n", + INTprefix, error); + + fw_IOalarm(FALSE, &drm_dev, &DRMdev, "Alarm"); + break; + + case DRMIO_DONE: + DRMdev.iod_compare = FALSE; + DRMdev.iod_event = Instructions; + DRMdev.iod_state = DRM_IDLE; + + if ((drm_dev.dctrl & DBG_DTRACE) != 0) + fprintf(DBGOUT, + "%sDRM - Read/Write transfer complete\r\n", INTprefix); + + DRMdev.STATUS |= IO_ST_DATA; + fw_IOcompleteEOP2(FALSE, &drm_dev, &DRMdev, 0xFFFF, "Transfer complete"); + break; + } +} + +/* Unit service */ + +t_stat drm_svc(UNIT *uptr) +{ + if ((drm_dev.dctrl & DBG_DTRACE) != 0) { + fprintf(DBGOUT, "%s[DRM: drm_svc() entry]\r\n", INTprefix); + if ((drm_dev.dctrl & DBG_DSTATE) != 0) + DRMstate("svc_entry", &drm_dev, &DRMdev); + } + + switch (DRMdev.iod_state) { + case DRM_IDLE: + /* + * Unit is idle, nothing to do. + */ + break; + + case DRM_WRITE: + case DRM_READ: + DrumIO(uptr, DRMdev.iod_state); + break; + } + + if ((drm_dev.dctrl & DBG_DTRACE) != 0) { + fprintf(DBGOUT, "%s[DRM: drm_svc() exit]\r\n", INTprefix); + if ((drm_dev.dctrl & DBG_DSTATE) != 0) + DRMstate("svc_exit", &drm_dev, &DRMdev); + } + return SCPE_OK; +} + +/* Reset routine */ + +t_stat drm_reset(DEVICE *dptr) +{ + DRMdev.STATUS = 0; + if ((drm_unit.flags & UNIT_ATT) != 0) + DRMdev.STATUS |= IO_ST_READY | IO_ST_DATA; + + DRMdev.SASTATUS = + DRMdev.CASTATUS = + DRMdev.DATASTATUS = 0; + + DRMdev.iod_trk = + DRMdev.iod_sec = 0; + + DRMdev.iod_event = Instructions; + + return SCPE_OK; +} + +/* Attach routine */ + +t_stat drm_attach (UNIT *uptr, CONST char *cptr) +{ + t_addr capac = uptr->capac; + t_stat r; + uint16 tracks; + + r = attach_unit(uptr, cptr); + if (r != SCPE_OK) + return r; + + /* + * If this ia a newly created file, set the drum size appropriately. + */ + if (sim_fsize_ex(uptr->fileref) == 0) + sim_set_fsize(uptr->fileref, capac); + + /* + * If we are attaching to an existing file, make sure that its size: + * + * - is a multiple of 3072 words + * - is between 64 and 1024 tracks (each of 3072 words) + * - is a multiple of 64 tracks + */ + tracks = sim_fsize_ex(uptr->fileref) / (DRM_NUMSC * DRM_NUMBY); + if (((sim_fsize_ex(uptr->fileref) % (DRM_NUMSC * DRM_NUMBY)) != 0) || + (tracks < DRM_MINTRACKS) || + (tracks > DRM_MAXTRACKS) || + ((tracks & (DRM_MINTRACKS - 1)) != 0)) { + detach_unit(uptr); + uptr->capac = capac; + return sim_messagef(SCPE_OPENERR, "Invalid file size"); + } + DRMdev.STATUS = IO_ST_READY | IO_ST_DATA; + DRMdev.iod_tracks = tracks; + DRMdev.iod_event = Instructions; + + return SCPE_OK; +} + +/* Detach routine */ + +t_stat drm_detach(UNIT *uptr) +{ + sim_cancel(uptr); + DRMdev.STATUS &= ~(IO_ST_READY | IO_ST_DATA); + return detach_unit(uptr); +} + +/* + * Change drum capacity + */ +t_stat drm_set_size(UNIT *uptr, int32 val, CONST char *cptr, void *desc) +{ + if ((uptr->flags & UNIT_ATT) != 0) + return SCPE_ALATT; + + drm_unit.capac = val * DRM_NUMSC * DRM_NUMBY; + DRMdev.iod_tracks = val; + return SCPE_OK; +} + +/* Check if I/O should be rejected */ + +t_bool DRMreject(IO_DEVICE *iod, t_bool output, uint8 reg) +{ + if (output) { + if (reg != 0x1) + return (DRMdev.STATUS & IO_ST_BUSY) != 0; + } + return FALSE; +} + +/* Perform I/O */ + +enum IOstatus DRMin(IO_DEVICE *iod, uint8 reg) +{ + /* + * The I/O framework passes input requests for the Director Status register + * and the Sector Address Status register so that we can return values + * which are dependent on the rotational position of the drum. + */ + + /* + * Update the current sector value. + */ + if (DRMdev.iod_state == DRM_IDLE) { + t_uint64 sectors = (Instructions - DRMdev.iod_event) / DRM_SECTOR_WAIT; + + if (sectors != 0) { + DRMdev.iod_sec = (DRMdev.iod_sec + sectors) & DRM_SEC_MASK; + DRMdev.iod_event += sectors * DRM_SECTOR_WAIT; + } + } + + switch (reg) { + case 0x01: + /* + * Director Status + */ + if (DRMdev.iod_sec == (DRMdev.iod_isa & DRM_SEC_MASK)) + DRMdev.STATUS |= IO_1752_SECCMP; + else DRMdev.STATUS &= ~IO_1752_SECCMP; + Areg = DRMdev.STATUS; + return IO_REPLY; + + case 0x02: + /* + * Sector Address Status + */ + DRMdev.SASTATUS = (DRMdev.iod_trk << DRM_TRK_SHIFT) | DRMdev.iod_sec; + if (DRMdev.iod_compare) + DRMdev.SASTATUS |= DRM_COMPARE; + Areg = DRMdev.SASTATUS; + return IO_REPLY; + } + return IO_REJECT; +} + +enum IOstatus DRMout(IO_DEVICE *iod, uint8 reg) +{ + switch (reg) { + case 0x00: + /* + * Initiate Drum Write Operation + */ + StartDrumIO(TRUE); + break; + + case 0x01: + /* + * Director function. + */ + doDirectorFunc(&drm_dev, FALSE); + break; + + case 0x04: + /* + * Initiate Drum Read Operation + */ + StartDrumIO(FALSE); + break; + + case 0x08: + /* + * Load Initial Sector Address Register. + */ + DRMdev.iod_isa = IOAreg; + DRMdev.iod_trk = (IOAreg & DRM_TRK_MASK) >> DRM_TRK_SHIFT; + break; + + case 0x0C: + /* + * Load Initial Core Address Register + */ + DRMdev.iod_ica = DRMdev.CASTATUS = IOAreg; + DRMdev.iod_compare = DRMdev.iod_ica == DRMdev.iod_fca; + break; + + case 0x0E: + /* + * Load Final Core Address Register + */ + DRMdev.iod_fca = IOAreg; + DRMdev.iod_compare = DRMdev.iod_ica == DRMdev.iod_fca; + break; + } + /* + * Any non-rejected output clears EOP interrupt. + */ + if ((DRMdev.STATUS & IO_ST_EOP) != 0) + DRMdev.STATUS &= ~(IO_ST_INT | IO_ST_EOP); + rebuildPending(); + + return IO_REPLY; +} + +/* + * Device clear routine. Clear controller operation from a director + * function - same as device reset but don't clear CASTATUS and DATASTATUS + */ +void DRMclear(DEVICE *dptr) +{ + DRMdev.STATUS = 0; + if ((drm_unit.flags & UNIT_ATT) != 0) + DRMdev.STATUS |= IO_ST_READY | IO_ST_DATA; + + DRMdev.SASTATUS = 0; + + DRMdev.iod_trk = + DRMdev.iod_sec = 0; + + DRMdev.iod_event = Instructions; +} + +/* + * Address decode routine. If bit 0 of an output register address is set, + * clear bits 1 - 7 since they are ignored. + */ +uint8 DRMdecode(IO_DEVICE *iod, t_bool output, uint8 reg) +{ + if (output && ((reg & 0x01) != 0)) + reg &= 0x01; + return reg; +} + +/* + * Autoload support + */ +t_stat DRMautoload(void) +{ + UNIT *uptr = &drm_unit; + + if ((uptr->flags & UNIT_ATT) != 0) { + uint32 i; + + for (i = 0; i < DRM_AUTOLOAD; i++) { + t_offset offset = i * DRM_NUMBY; + void *buf = &M[i * DRM_NUMBY]; + + if (sim_fseeko(uptr->fileref, offset, SEEK_SET) || + (sim_fread(buf, sizeof(uint16), DRM_NUMWD, uptr->fileref) != DRM_NUMWD)) + return SCPE_IOERR; + } + return SCPE_OK; + } + return SCPE_UNATT; +} + +t_stat drm_help(FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, const char *cptr) +{ + const char helpString[] = + /****************************************************************************/ + " The %D device is a 1752 drum memory controller.\n" + "1 Hardware Description\n" + " The 1752-1/2/3/4 consists of a controller and field expandable drum\n" + " storage from 196608 to 1572864 words. A custom order may provide\n" + " additional storage up to 3145728 words.\n" + "2 Equipment Address\n" + " Drum controllers are typically set to equipment address 2. This address\n" + " may be changed by:\n\n" + "+sim> SET %D EQUIPMENT=hexValue\n\n" + "2 $Registers\n" + "\n" + " These registers contain the emulated state of the device. These values\n" + " don't necessarily relate to any detail of the original device being\n" + " emulated but are merely internal details of the emulation. STATUS always\n" + " contains the current status of the device as it would be read by an\n" + " application program.\n" + "1 Configuration\n" + " A %D device is configured with various simh SET and ATTACH commands\n" + "2 $Set commands\n"; + + return scp_help(st, dptr, uptr, flag, helpString, cptr); +} diff --git a/CDC1700/cdc1700_io.c b/CDC1700/cdc1700_io.c index 724e4809..87dee337 100644 --- a/CDC1700/cdc1700_io.c +++ b/CDC1700/cdc1700_io.c @@ -49,7 +49,7 @@ extern t_bool FirstRejSeen; extern uint32 CountRejects; extern DEVICE cpu_dev, dca_dev, dcb_dev, dcc_dev, tti_dev, tto_dev, - ptr_dev, ptp_dev, cdr_dev; + ptr_dev, ptp_dev; static const char *status[] = { "REPLY", "REJECT", "INTERNALREJECT" @@ -326,7 +326,7 @@ enum IOstatus doIO(t_bool output, DEVICE **device) * 001 - 1711/1712/1713 teletypewriter * 010 - 1721/1722 paper tape reader * 100 - 1723/1724 paper tape punch - * 110 - 1729 card reader + * 110 - 1729 card reader (not implemented on device address 1) */ switch ((IOQreg >> 4) & 0x7) { case 0x01: @@ -341,10 +341,6 @@ enum IOstatus doIO(t_bool output, DEVICE **device) dev = &ptp_dev; break; - case 0x06: - dev = &cdr_dev; - break; - default: return IO_INTERNALREJECT; } diff --git a/CDC1700/cdc1700_iofw.c b/CDC1700/cdc1700_iofw.c index cc88b84a..e2c05484 100644 --- a/CDC1700/cdc1700_iofw.c +++ b/CDC1700/cdc1700_iofw.c @@ -46,7 +46,7 @@ t_bool IOFWinitialized = FALSE; /* * This I/O framework provides an implementation of a generic device. The - * framework provides for up to 8 read and 8 write device registers. The + * framework provides for up to 16 read and 16 write device registers. The * read device registers may be stored and read directly from the framework * or may cause an entry to the device-specific portion of the device * driver. The framework may be setup to dynamically reject I/O requests @@ -110,6 +110,10 @@ t_bool IOFWinitialized = FALSE; * interrupt handling * void (*iod_clear)(DEVICE *); * - Perform clear controller operation + * uint8 (*iod_decode)(DEVICE *, t_bool, uint8); + * - Non-std device register decode + * t_bool (*iod_chksta)(t_bool, uint8); + * - Check for valid station address(es) * uint16 iod_ienable; - Device interrupt enables * uint16 iod_oldienable; - Previous iod_ienable * uint16 iod_imask; - Valid device interrupts @@ -119,10 +123,10 @@ t_bool IOFWinitialized = FALSE; * "clear interrupts" * uint16 iod_rmask; - Register mask (vs. station addr) * uint8 iod_regs; - # of device registers - * uint8 iod_validmask; - Bitmap of valid registers - * uint8 iod_readmap; - Bitmap of read registers - * uint8 iod_rejmapR; - Bitmaps of register R/W - * uint8 iod_rejmapW; access to be rejected + * uint16 iod_validmask; - Bitmap of valid registers + * uint16 iod_readmap; - Bitmap of read registers + * uint16 iod_rejmapR; - Bitmaps of register R/W + * uint16 iod_rejmapW; access to be rejected * uint8 iod_flags; - Device flags * #define STATUS_ZERO 0x01 - Status register read returns 0 * #define DEVICE_DC 0x02 - Device is buffered data channel @@ -143,6 +147,10 @@ t_bool IOFWinitialized = FALSE; * uint16 iod_private8; - Device-specific use * uint8 iod_private9; - Device-specific use * t_bool iod_private10; - Device-specific use + * uint16 iod_private11; - Device-specific use + * uint16 iod_private12; - Device-specific use + * uint8 iod_private13; - Device-specific use + * uint8 iod_private14; - Device-specific use * * The macro CHANGED(iod, n) will return what bits have been changed in write * register 'n' just after it has been written. @@ -193,13 +201,28 @@ void fw_init(void) enum IOstatus fw_doIO(DEVICE *dptr, t_bool output) { IO_DEVICE *iod = (IO_DEVICE *)dptr->ctxt; - uint8 rej = (output ? iod->iod_rejmapW : iod->iod_rejmapR) & ~MASK_REGISTER1; + uint16 rej = (output ? iod->iod_rejmapW : iod->iod_rejmapR) & ~MASK_REGISTER1; uint8 reg; if ((iod->iod_flags & DEVICE_DC) != 0) reg = ((IOQreg & IO_W) - iod->iod_dcbase) >> 11; else reg = IOQreg & iod->iod_rmask; + /* + * Check for special station address handling for this device. + */ + if (iod->iod_chksta != NULL) + if (!(*iod->iod_chksta)(output, reg)) + return IO_INTERNALREJECT; + + /* + * Handle non-standard register decoding. E.g. For the 1752 drum controller, + * if bit 0 of the equipment address is set, bits 1 - 3 are ignored so all + * odd addresses map to "Director Function". + */ + if (iod->iod_decode != NULL) + reg = (*iod->iod_decode)(iod, output, reg); + /* * Check for valid device address */ @@ -298,7 +321,7 @@ enum IOstatus fw_doBDCIO(IO_DEVICE *iod, uint16 *data, t_bool output, uint8 reg) * must make sure that the active interrupt flag is set whenever one or more * interrupt source is active and the interrupt(s) have been enabled. * Interrupts are typically generated when a status flag is raised but we also - * need to handle removing an interrupt souce when a flag is dropped. + * need to handle removing an interrupt source when a flag is dropped. * * In addition, some devices have non-standard interrupts and we need to * provide a callback to a device-specific routine to check for such diff --git a/CDC1700/cdc1700_lp.c b/CDC1700/cdc1700_lp.c index cd0c0d41..7112869a 100644 --- a/CDC1700/cdc1700_lp.c +++ b/CDC1700/cdc1700_lp.c @@ -182,7 +182,7 @@ t_stat lp_help(FILE *, DEVICE *, UNIT *, int32, const char *); IO_DEVICE LPdev = IODEV(NULL, "Line Printer", 1740, 4, 0xFF, 0, fw_reject, LPin, LPout, NULL, NULL, - NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, 0x7F, 4, MASK_REGISTER0 | MASK_REGISTER1 | MASK_REGISTER3, MASK_REGISTER1, @@ -215,7 +215,7 @@ IO_DEVICE LPdev = IODEV(NULL, "Line Printer", 1740, 4, 0xFF, 0, */ UNIT lp_unit = { - UDATA(&lp_svc, UNIT_SEQ+UNIT_ATTABLE+UNIT_ROABLE, 0), LP_OUT_WAIT + UDATA(&lp_svc, UNIT_SEQ+UNIT_ATTABLE, 0), LP_OUT_WAIT }; REG lp_reg_1740[] = { @@ -326,10 +326,12 @@ const char *LPprivateState[4] = { void LPstate(const char *where, DEVICE *dev, IO_DEVICE *iod) { fprintf(DBGOUT, - "%s[%s %s: Func: %04X, Func2: %04X, Sta: %04X, Ena: %04x, Count: %d, \ -Private: %s%s\r\n", + "%s[%s %s: Func: %04X, Func2: %04X, Sta: %04X, Ena: %04x]\r\n", + INTprefix, dev->name, where, + iod->FUNCTION, iod->FUNCTION2, iod->STATUS, iod->IENABLE); + fprintf(DBGOUT, + "%s[%s %s: Count: %d, Private: %s%s\r\n", INTprefix, dev->name, where, - iod->FUNCTION, iod->FUNCTION2, iod->STATUS, iod->IENABLE, iod->iod_LPcolumn, LPprivateState[iod->iod_LPstate], iod->iod_LPoverwrite ? ",Overwrite" : ""); @@ -391,12 +393,36 @@ t_stat lp_svc(UNIT *uptr) return SCPE_OK; } +/* I/O routines */ +static void lp_puts(char *s) +{ + if (fputs(s, lp_unit.fileref) == EOF) { + perror("LP I/O error (puts)"); + clearerr(lp_unit.fileref); + return; + } + lp_unit.pos += strlen(s); +} + +static void lp_putc(uint8 ch) +{ + if (putc(ch, lp_unit.fileref) == EOF) { + perror("LP I/O error (putc)"); + clearerr(lp_unit.fileref); + return; + } + lp_unit.pos++; +} + /* Reset routine */ t_stat lp_reset(DEVICE *dptr) { t_stat r; + if ((lp_dev.dctrl & DBG_TRACE) != 0) + fprintf(DBGOUT, "%s[LP: lp_reset() entry]\r\n", INTprefix); + if (LPdev.iod_type == IOtype_default) { /* * Setup the default device type. @@ -408,8 +434,11 @@ t_stat lp_reset(DEVICE *dptr) if (IOFWinitialized) if ((dptr->flags & DEV_DIS) == 0) - if ((r = checkReset(dptr, LPdev.iod_equip)) != SCPE_OK) + if ((r = checkReset(dptr, LPdev.iod_equip)) != SCPE_OK) { + if ((lp_dev.dctrl & DBG_TRACE) != 0) + fprintf(DBGOUT, "%s[LP: lp_reset() disabled]\r\n", INTprefix); return r; + } DEVRESET(&LPdev); @@ -421,6 +450,9 @@ t_stat lp_reset(DEVICE *dptr) LPdev.STATUS |= IO_ST_DATA | IO_ST_EOP; + if ((lp_dev.dctrl & DBG_TRACE) != 0) + fprintf(DBGOUT, "%s[LP: lp_reset() exit]\r\n", INTprefix); + return SCPE_OK; } @@ -511,12 +543,9 @@ enum IOstatus LPout(IO_DEVICE *iod, uint8 reg) /*** TODO: implement format tape decoding ***/ } - if ((lp_unit.flags & UNIT_ATT) != 0) { - if (fputs(ccontrol, lp_unit.fileref) == EOF) { - perror("LP I/O error"); - clearerr(lp_unit.fileref); - } - } + if ((lp_unit.flags & UNIT_ATT) != 0) + lp_puts((char *)ccontrol); + fw_IOunderwayData(&LPdev, 0); LPdev.iod_LPstate = IODP_LPCCWAIT; @@ -567,12 +596,8 @@ enum IOstatus LPout(IO_DEVICE *iod, uint8 reg) if ((lp_unit.flags & UNIT_ATT) != 0) { int i; - for (i = 0; i < iod->iod_LPcolumn; i++) { - if (putc(buffer[i], lp_unit.fileref) == EOF) { - perror("LP I/O error"); - clearerr(lp_unit.fileref); - } - } + for (i = 0; i < iod->iod_LPcolumn; i++) + lp_putc(buffer[i]); } } fw_IOunderwayEOP(&LPdev, IO_ST_INT); @@ -597,19 +622,12 @@ enum IOstatus LPout(IO_DEVICE *iod, uint8 reg) if ((lp_unit.flags & UNIT_ATT) != 0) { int i; - if (iod->iod_LPoverwrite) { - if (putc('\r', lp_unit.fileref) == EOF) { - perror("LP I/O error"); - clearerr(lp_unit.fileref); - } - } + if (iod->iod_LPoverwrite) + lp_putc('\r'); + + for (i = 0; i < iod->iod_LPcolumn; i++) + lp_putc(buffer[i]); - for (i = 0; i < iod->iod_LPcolumn; i++) { - if (putc(buffer[i], lp_unit.fileref) == EOF) { - perror("LP I/O error"); - clearerr(lp_unit.fileref); - } - } iod->iod_LPoverwrite = TRUE; } } @@ -620,16 +638,10 @@ enum IOstatus LPout(IO_DEVICE *iod, uint8 reg) /*** TODO: Implement format tape operations. For now, all operations generate a single space motion ***/ if ((lp_unit.flags & UNIT_ATT) != 0) { - if (putc('\n', lp_unit.fileref) == EOF) { - perror("LP I/O error"); - clearerr(lp_unit.fileref); - } - if ((Areg & IO_1740_DSP) != 0) { - if (putc('\n', lp_unit.fileref) == EOF) { - perror("LP I/O error"); - clearerr(lp_unit.fileref); - } - } + lp_putc('\n'); + + if ((Areg & IO_1740_DSP) != 0) + lp_putc('\n'); } iod->iod_LPoverwrite = FALSE; printwait = TRUE; diff --git a/CDC1700/cdc1700_mt.c b/CDC1700/cdc1700_mt.c index 7b28cc09..20a9b3b3 100644 --- a/CDC1700/cdc1700_mt.c +++ b/CDC1700/cdc1700_mt.c @@ -24,7 +24,7 @@ in this Software without prior written authorization from John Forecast. */ - + /* cdc1700_mt.c: 1732-A/B and 1732-3 magtape device support * Simh devices: mt0, mt1, mt2, mt3 */ @@ -127,6 +127,8 @@ extern t_bool IOFWinitialized; extern UNIT cpu_unit; t_stat mt_show_transport(FILE *, UNIT *, int32, CONST void *); +t_stat mt_set_9track(UNIT *, int32, CONST char *, void *); +t_stat mt_set_7track(UNIT *, int32, CONST char *, void *); t_stat mt_show_type(FILE *, UNIT *, int32, CONST void *); t_stat mt_set_type(UNIT *, int32, CONST char *, void *); @@ -352,7 +354,7 @@ t_stat mt_help(FILE *, DEVICE *, UNIT *, int32, const char *); | | | (1732-A only, additional unit select bit) | | Select Tape Unit | Deselect Tape Unit - Select Low Read Threshold (1733-3 only) + Select Low Read Threshold (1732-3 only) Status Response: @@ -377,8 +379,8 @@ t_stat mt_help(FILE *, DEVICE *, UNIT *, int32, const char *); | | | | File Mark | | | Controller Active | | Fill - | Storage Parity Error (1733-3 only) - Protect Fault (1733-3 only) + | Storage Parity Error (1732-3 only) + Protect Fault (1732-3 only) Director Status 2 @@ -389,7 +391,7 @@ t_stat mt_help(FILE *, DEVICE *, UNIT *, int32, const char *); | | | | | | | | | | | | | | | | | | | 556 BPI | | | | | | | | 800 BPI - | | | | | | | 1600 BPI (1733-3 only) + | | | | | | | 1600 BPI (1732-3 only) | | | | | | Seven Track | | | | | Write Enable | | | | PE - Warning @@ -402,7 +404,7 @@ t_stat mt_help(FILE *, DEVICE *, UNIT *, int32, const char *); IO_DEVICE MTdev = IODEV(NULL, "Magtape", 1732, 7, 0xFF, 0, MTreject, MTin, MTout, MTBDCin, MTBDCout, - MTstate, NULL, NULL, MTclear, + MTstate, NULL, NULL, MTclear, NULL, NULL, 0x7F, 4, MASK_REGISTER0 | MASK_REGISTER1 | MASK_REGISTER2 | \ MASK_REGISTER3, @@ -419,6 +421,7 @@ IO_DEVICE MTdev = IODEV(NULL, "Magtape", 1732, 7, 0xFF, 0, #define iod_CWA iod_readR[3] /* current DSA address */ #define iod_LWA iod_private6 /* last word address */ #define iod_DSApending iod_private10 /* DSA request pending */ +#define iod_FWA iod_private11 /* first word address */ /* * Define delay functions other than the standard motion commands. The low @@ -486,6 +489,10 @@ MTAB mt_mod[] = { &sim_tape_set_capac, &sim_tape_show_capac, NULL, "Specify tape capacity" }, { MTAB_XTD|MTAB_VUN, 0, "TRANSPORT", NULL, NULL, &mt_show_transport, NULL, "Display type of tape transport" }, + { MTAB_XTD|MTAB_VUN, 0, NULL, "9TRACK", + &mt_set_9track, NULL, NULL, "Set drive as 9-track transport" }, + { MTAB_XTD|MTAB_VUN, 0, NULL, "7TRACK", + &mt_set_7track, NULL, NULL, "Set drive as 7-track transport" }, { MTAB_XTD|MTAB_VDV, 0, NULL, "STOPONREJECT", &set_stoponrej, NULL, NULL, "Stop simulation if I/O is rejected" }, { MTAB_XTD|MTAB_VDV, 0, NULL, "NOSTOPONREJECT", @@ -507,6 +514,8 @@ MTAB mt_mod[] = { #define DBG_V_MTIO (DBG_SPECIFIC+4)/* Trace library routine calls */ #define DBG_V_DENS (DBG_SPECIFIC+5)/* Trace density select changes */ #define DBG_V_SELECT (DBG_SPECIFIC+6)/* Trace drive select/de-select */ +#define DBG_V_RDSA (DBG_SPECIFIC+7)/* Read data after DSA transfer */ +#define DBG_V_WDSA (DBG_SPECIFIC+8)/* Write data before DSA transfer */ #define DBG_OPS (1 << DBG_V_OPS) #define DBG_READ (1 << DBG_V_READ) @@ -515,6 +524,8 @@ MTAB mt_mod[] = { #define DBG_MTIO (1 << DBG_V_MTIO) #define DBG_DENS (1 << DBG_V_DENS) #define DBG_SELECT (1 << DBG_V_SELECT) +#define DBG_RDSA (1 << DBG_V_RDSA) +#define DBG_WDSA (1 << DBG_V_WDSA) DEBTAB mt_deb[] = { { "TRACE", DBG_DTRACE, "Trace device I/O requests" }, @@ -529,6 +540,8 @@ DEBTAB mt_deb[] = { { "MTIO", DBG_MTIO, "Trace tape library routine calls" }, { "DENS", DBG_DENS, "Trace denisty select changes" }, { "SELECT", DBG_SELECT, "Trace transport select/de-select" }, + { "RDSA", DBG_RDSA, "Dump buffer after DSA read" }, + { "WDSA", DBG_WDSA, "Dump buffer before DSA write" }, { NULL } }; @@ -745,6 +758,42 @@ void mt_dump(void) } } +void mt_DSAdump(uint16 lwa, t_bool rw) +{ + uint16 cwa = MTdev.iod_FWA; + int idx; + char msg[80], text[16], temp[8]; + + fprintf(DBGOUT, "Dump of DSA %s buffer (FWA: %04X, LWA: %04X):\r\n", + rw ? "write" : "read", cwa, lwa); + + msg[0] = '\0'; + idx = 0; + + while (cwa != lwa) { + text[idx++] = chars[(M[cwa] >> 8) & 0x7F]; + text[idx++] = chars[M[cwa] & 0x7F]; + + sprintf(temp, "0x%04X", M[cwa]); + if (msg[0] != '\0') + strcat(msg, " "); + strcat(msg, temp); + + if (idx == 10) { + text[idx++] = '\0'; + fprintf(DBGOUT, "%-55s%s\r\n", msg, text); + msg[0] = '\0'; + idx = 0; + } + cwa++; + } + + if (idx != 0) { + text[idx++] = '\0'; + fprintf(DBGOUT, "%-55s%s\r\n", msg, text); + } +} + /* * Dump the current internal state of the MT device. */ @@ -788,7 +837,7 @@ t_stat mt_show_type(FILE *st, UNIT *uptr, int32 val, CONST void *desc) break; case DEVTYPE_1732_3: - fprintf(st, "1733-3 Magnetic Tape Controller"); + fprintf(st, "1732-3 Magnetic Tape Controller"); break; default: @@ -842,6 +891,36 @@ t_stat mt_show_transport(FILE *st, UNIT *uptr, int32 val, CONST void *desc) return SCPE_OK; } +/* + * Set drive to 9-track transport. + */ +t_stat mt_set_9track(UNIT *uptr, int32 val, CONST char *cptr, void *desc) +{ + if (uptr == NULL) + return SCPE_IERR; + + if ((uptr->flags & UNIT_ATT) != 0) + return SCPE_ALATT; + + uptr->flags &= ~UNIT_7TRACK; + return SCPE_OK; +} + +/* + * Set drive to 7-track transport. + */ +t_stat mt_set_7track(UNIT *uptr, int32 val, CONST char *cptr, void *desc) +{ + if (uptr == NULL) + return SCPE_IERR; + + if ((uptr->flags & UNIT_ATT) != 0) + return SCPE_ALATT; + + uptr->flags |= UNIT_7TRACK; + return SCPE_OK; +} + /* * Compute the delay time between new data being available from tape. This * will be dependent on the density of the tape and the speed of the drive @@ -988,6 +1067,8 @@ t_stat mt_svc(UNIT *uptr) if ((mt_dev.dctrl & DBG_OPS) != 0) mt_trace(uptr, "DSA read complete", (t_stat)-1, FALSE); + if ((mt_dev.dctrl & DBG_RDSA) != 0) + mt_DSAdump(MTdev.iod_LWA, FALSE); break; } @@ -1005,6 +1086,8 @@ t_stat mt_svc(UNIT *uptr) if ((mt_dev.dctrl & DBG_OPS) != 0) mt_trace(uptr, "DSA read complete - no data", (t_stat)-1, FALSE); + if ((mt_dev.dctrl & DBG_RDSA) != 0) + mt_DSAdump(MTdev.iod_CWA, FALSE); break; } @@ -1108,181 +1191,187 @@ t_stat mt_svc(UNIT *uptr) * motion" does set "end of operation" if a tape mark or end of tape * is detected. */ - case IO_1732_READ: - MTremain = 0; - status = sim_tape_rdrecf(uptr, MTbuf, &MTremain, MTSIZ); + case IO_1732_READ: + MTremain = 0; + status = sim_tape_rdrecf(uptr, MTbuf, &MTremain, MTSIZ); - if ((mt_dev.dctrl & DBG_MTIO) != 0) - mtio_trace(uptr, "rdrecf", status, TRUE, MTremain); + if ((mt_dev.dctrl & DBG_MTIO) != 0) + mtio_trace(uptr, "rdrecf", status, TRUE, MTremain); - switch (status) { - case MTSE_OK: - break; + switch (status) { + case MTSE_OK: + break; - case MTSE_TMK: - MTdev.STATUS |= IO_ST_ALARM | IO_1732_FMARK; - break; + case MTSE_TMK: + MTdev.STATUS |= IO_ST_ALARM | IO_1732_FMARK; + break; - case MTSE_EOM: - MTdev.STATUS |= IO_ST_ALARM | IO_1732_EOT; - break; + case MTSE_EOM: + MTdev.STATUS |= IO_ST_ALARM | IO_1732_EOT; + break; - case MTSE_RECE: - MTdev.STATUS |= IO_ST_ALARM | IO_ST_PARITY; - MTremain = 0; - break; - } - MToffset = 0; + case MTSE_RECE: + MTdev.STATUS |= IO_ST_ALARM | IO_ST_PARITY; + MTremain = 0; + break; + } + MToffset = 0; - if ((MTdev.STATUS & (IO_1732_FMARK | IO_1732_EOT | IO_ST_PARITY)) == 0) - mask &= ~IO_ST_EOP; + if ((MTdev.STATUS & (IO_1732_FMARK | IO_1732_EOT | IO_ST_PARITY)) == 0) + mask &= ~IO_ST_EOP; - if ((mt_dev.dctrl & DBG_OPS) != 0) - mt_trace(uptr, "READ", status, TRUE); - if ((mt_dev.dctrl & DBG_READ) != 0) - mt_dump(); + if ((mt_dev.dctrl & DBG_OPS) != 0) + mt_trace(uptr, "READ", status, TRUE); + if ((mt_dev.dctrl & DBG_READ) != 0) + mt_dump(); + + if (MTremain > 0) { + if (MTdev.iod_DSApending) { + MTdev.iod_DSApending = FALSE; + MTdev.iod_delay = IO_DSA_READ; + sim_activate(uptr, mt_densityTimeout(FALSE)); + if ((mt_dev.dctrl & DBG_OPS) != 0) { + int32 u = uptr - mt_dev.units; + + fprintf(DBGOUT, + "[MT%d: DSA Read started, CWA: 0x%04X, LWA: 0x%04X, Mode: 0x%X\r\n", + u, MTdev.iod_CWA, MTdev.iod_LWA, MTdev.iod_mode); + } + return SCPE_OK; + } + MTdev.iod_delay = IO_DELAY_RDATA; + sim_activate(uptr, MT_MIN_WAIT); + return SCPE_OK; + } + MTmode = MT_IDLE; + break; + + case IO_1732_WRITE: + if ((mt_dev.dctrl & DBG_OPS) != 0) + mt_trace(uptr, "WRITE", (t_stat)-1, FALSE); - if (MTremain > 0) { if (MTdev.iod_DSApending) { MTdev.iod_DSApending = FALSE; - MTdev.iod_delay = IO_DSA_READ; + MTdev.iod_delay = IO_DSA_WRITE; + + if ((mt_dev.dctrl & DBG_WDSA) != 0) + mt_DSAdump(MTdev.iod_LWA, TRUE); + sim_activate(uptr, mt_densityTimeout(FALSE)); if ((mt_dev.dctrl & DBG_OPS) != 0) { int32 u = uptr - mt_dev.units; fprintf(DBGOUT, - "[MT%d: DSA Read started, CWA: 0x%04X, LWA: 0x%04X, Mode: 0x%X\r\n", + "[MT%d: DSA Write started, CWA: 0x%04X, LWA: 0x%04X, Mode: 0x%X\r\n", u, MTdev.iod_CWA, MTdev.iod_LWA, MTdev.iod_mode); } return SCPE_OK; } - MTdev.iod_delay = IO_DELAY_RDATA; + MTdev.iod_delay = IO_DELAY_WDATA; sim_activate(uptr, MT_MIN_WAIT); return SCPE_OK; - } - MTmode = MT_IDLE; - break; - case IO_1732_WRITE: - if ((mt_dev.dctrl & DBG_OPS) != 0) - mt_trace(uptr, "WRITE", (t_stat)-1, FALSE); + case IO_1732A_REWU: + status = sim_tape_rewind(uptr); - if (MTdev.iod_DSApending) { - MTdev.iod_DSApending = FALSE; - MTdev.iod_delay = IO_DSA_WRITE; - sim_activate(uptr, mt_densityTimeout(FALSE)); - if ((mt_dev.dctrl & DBG_OPS) != 0) { - int32 u = uptr - mt_dev.units; + if ((mt_dev.dctrl & DBG_MTIO) != 0) + mtio_trace(uptr, "rewind & unload", status, FALSE, 0); - fprintf(DBGOUT, - "[MT%d: DSA Write started, CWA: 0x%04X, LWA: 0x%04X, Mode: 0x%X\r\n", - u, MTdev.iod_CWA, MTdev.iod_LWA, MTdev.iod_mode); - } - return SCPE_OK; - } - MTdev.iod_delay = IO_DELAY_WDATA; - sim_activate(uptr, MT_MIN_WAIT); - return SCPE_OK; - - case IO_1732A_REWU: - status = sim_tape_rewind(uptr); - - if ((mt_dev.dctrl & DBG_MTIO) != 0) - mtio_trace(uptr, "rewind & unload", status, FALSE, 0); - - MTdev.STATUS |= IO_1732_BOT; - mt_detach(uptr); - if ((mt_dev.dctrl & DBG_OPS) != 0) - mt_trace(uptr, "REWU", status, FALSE); - - mask &= ~IO_ST_EOP; - break; + MTdev.STATUS |= IO_1732_BOT; + mt_detach(uptr); + if ((mt_dev.dctrl & DBG_OPS) != 0) + mt_trace(uptr, "REWU", status, FALSE); + + mask &= ~IO_ST_EOP; + break; /* * The following commands set "end of operation" when the command * completes. */ - case IO_1732_BACKSP: - status = sim_tape_sprecr(uptr, &temp); - - if ((mt_dev.dctrl & DBG_MTIO) != 0) - mtio_trace(uptr, "sprecr", status, FALSE, 0); - - if (status == MTSE_TMK) - MTdev.STATUS |= IO_1732_FMARK; - if (sim_tape_bot(uptr)) - MTdev.STATUS |= IO_1732_BOT; - if (sim_tape_eot(uptr)) - MTdev.STATUS |= IO_1732_EOT; - if ((mt_dev.dctrl & DBG_OPS) != 0) - mt_trace(uptr, "BACKSP", status, FALSE); - break; - - case IO_1732_WFM: - status = sim_tape_wrtmk(uptr); - - if ((mt_dev.dctrl & DBG_MTIO) != 0) - mtio_trace(uptr, "wrtmk", status, FALSE, 0); - -#if 0 - MTdev.STATUS |= IO_ST_ALARM | IO_1732_FMARK; -#endif - if (sim_tape_eot(uptr)) - MTdev.STATUS |= IO_1732_EOT; - if ((mt_dev.dctrl & DBG_OPS) != 0) - mt_trace(uptr, "WFM", status, FALSE); - break; - - case IO_1732_SFWD: - while (!sim_tape_eot(uptr)) { - status = sim_tape_sprecf(uptr, &temp); - - if ((mt_dev.dctrl & DBG_MTIO) != 0) - mtio_trace(uptr, "sprecf", status, FALSE, 0); - - if (status == MTSE_TMK) { - MTdev.STATUS |= IO_1732_FMARK; - break; - } - } - if (sim_tape_bot(uptr)) - MTdev.STATUS |= IO_1732_BOT; - if (sim_tape_eot(uptr)) - MTdev.STATUS |= IO_1732_EOT; - if ((mt_dev.dctrl & DBG_OPS) != 0) - mt_trace(uptr, "SFWD", status, FALSE); - break; - - case IO_1732_SBACK: - while (!sim_tape_bot(uptr)) { + case IO_1732_BACKSP: status = sim_tape_sprecr(uptr, &temp); if ((mt_dev.dctrl & DBG_MTIO) != 0) mtio_trace(uptr, "sprecr", status, FALSE, 0); - if (status == MTSE_TMK) { + if (status == MTSE_TMK) MTdev.STATUS |= IO_1732_FMARK; - break; + if (sim_tape_bot(uptr)) + MTdev.STATUS |= IO_1732_BOT; + if (sim_tape_eot(uptr)) + MTdev.STATUS |= IO_1732_EOT; + if ((mt_dev.dctrl & DBG_OPS) != 0) + mt_trace(uptr, "BACKSP", status, FALSE); + break; + + case IO_1732_WFM: + status = sim_tape_wrtmk(uptr); + + if ((mt_dev.dctrl & DBG_MTIO) != 0) + mtio_trace(uptr, "wrtmk", status, FALSE, 0); + +#if 0 + MTdev.STATUS |= IO_ST_ALARM | IO_1732_FMARK; +#endif + if (sim_tape_eot(uptr)) + MTdev.STATUS |= IO_1732_EOT; + if ((mt_dev.dctrl & DBG_OPS) != 0) + mt_trace(uptr, "WFM", status, FALSE); + break; + + case IO_1732_SFWD: + while (!sim_tape_eot(uptr)) { + status = sim_tape_sprecf(uptr, &temp); + + if ((mt_dev.dctrl & DBG_MTIO) != 0) + mtio_trace(uptr, "sprecf", status, FALSE, 0); + + if (status == MTSE_TMK) + MTdev.STATUS |= IO_1732_FMARK; + + if (status != MTSE_OK) + break; } - } - if (sim_tape_bot(uptr)) + if (sim_tape_bot(uptr)) + MTdev.STATUS |= IO_1732_BOT; + if (sim_tape_eot(uptr)) + MTdev.STATUS |= IO_1732_EOT; + if ((mt_dev.dctrl & DBG_OPS) != 0) + mt_trace(uptr, "SFWD", status, FALSE); + break; + + case IO_1732_SBACK: + while (!sim_tape_bot(uptr)) { + status = sim_tape_sprecr(uptr, &temp); + + if ((mt_dev.dctrl & DBG_MTIO) != 0) + mtio_trace(uptr, "sprecr", status, FALSE, 0); + + if (status == MTSE_TMK) + MTdev.STATUS |= IO_1732_FMARK; + + if (status != MTSE_OK) + break; + } + if (sim_tape_bot(uptr)) + MTdev.STATUS |= IO_1732_BOT; + if (sim_tape_eot(uptr)) + MTdev.STATUS |= IO_1732_EOT; + if ((mt_dev.dctrl & DBG_OPS) != 0) + mt_trace(uptr, "SBACK", status, FALSE); + break; + + case IO_1732_REWL: + status = sim_tape_rewind(uptr); + + if ((mt_dev.dctrl & DBG_MTIO) != 0) + mtio_trace(uptr, "rewind", status, FALSE, 0); + MTdev.STATUS |= IO_1732_BOT; - if (sim_tape_eot(uptr)) - MTdev.STATUS |= IO_1732_EOT; - if ((mt_dev.dctrl & DBG_OPS) != 0) - mt_trace(uptr, "SBACK", status, FALSE); - break; - - case IO_1732_REWL: - status = sim_tape_rewind(uptr); - - if ((mt_dev.dctrl & DBG_MTIO) != 0) - mtio_trace(uptr, "rewind", status, FALSE, 0); - - MTdev.STATUS |= IO_1732_BOT; - if ((mt_dev.dctrl & DBG_OPS) != 0) - mt_trace(uptr, "REWL", status, FALSE); - break; + if ((mt_dev.dctrl & DBG_OPS) != 0) + mt_trace(uptr, "REWL", status, FALSE); + break; } /* @@ -1915,7 +2004,7 @@ enum IOstatus MTout(IO_DEVICE *iod, uint8 reg) if ((uptr == NULL) || (MTdev.iod_type == DEVTYPE_1732_A)) return IO_REJECT; MTdev.iod_LWA = LoadFromMem(IOAreg); - MTdev.iod_CWA = ++IOAreg; + MTdev.iod_CWA = MTdev.iod_FWA = ++IOAreg; MTdev.iod_DSApending = TRUE; if ((mt_dev.dctrl & DBG_OPS) != 0) mt_DSAtrace(uptr, "setup"); @@ -1991,8 +2080,10 @@ t_stat mt_help(FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, const char *cptr) "+sim> SET %D 1732-A\n" "+sim> SET %D 1732-3\n\n" " The first 3 transports (MT0, MT1, MT2) are 9-track drives and MT3 is a\n" - " 7-track drive. Each drive may be individually write-locked or\n" - " write-enabled with:\n\n" + " 7-track drive. The type of a transport may be changed with:\n\n" + "+sim> SET %U 9TRACK\n" + "+sim> SET %U 7TRACK\n\n" + " Each drive may be individually write-locked or write-enabled with:\n\n" "+sim> SET %U LOCKED\n" "+sim> SET %U WRITEENABLED\n\n" " The 1732-A controller can only perform I/O 1 or 2 bytes at a time. In\n" diff --git a/CDC1700/cdc1700_rtc.c b/CDC1700/cdc1700_rtc.c index ceeab5c2..5290a693 100644 --- a/CDC1700/cdc1700_rtc.c +++ b/CDC1700/cdc1700_rtc.c @@ -93,7 +93,7 @@ t_stat rtc_help(FILE *, DEVICE *, UNIT *, int32, const char *); IO_DEVICE RTCdev = IODEV(NULL, "10336-1", 10336, 13, 0xFF, 0, NULL, RTCin, RTCout, NULL, NULL, - NULL, NULL, RTCraised, NULL, + NULL, NULL, RTCraised, NULL, NULL, NULL, 0x7F, 2, MASK_REGISTER0 | MASK_REGISTER1, MASK_REGISTER1, @@ -158,7 +158,7 @@ struct RTCtimebase { */ UNIT rtc_unit = { - UDATA(&rtc_svc, 0, 0), RTC_10MSEC + UDATA(&rtc_svc, 0, 0), RTC_10USEC }; REG rtc_reg[] = { @@ -346,7 +346,8 @@ t_stat rtc_help(FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, const char *cptr "1 Hardware Description\n" " The 10336-1 is a Real Time Clock which can generate periodic interrupts\n" " or measure elapsed time. The timer resolution is set via jumpers on the\n" - " physical hardware. For the simulator, the resolution can be changed by:\n\n" + " physical hardware. For the simulator, the default resolution is\n" + " 10 uSec and can be changed by:\n\n" "+sim> SET %D RATE=1usec\n" "+sim> SET %D RATE=10usec\n" "+sim> SET %D RATE=100usec\n" diff --git a/CDC1700/cdc1700_sys.c b/CDC1700/cdc1700_sys.c index 3b8ba1a8..9a17c13b 100644 --- a/CDC1700/cdc1700_sys.c +++ b/CDC1700/cdc1700_sys.c @@ -39,13 +39,14 @@ extern int disassem(char *, uint16, t_bool, t_bool, t_bool); extern uint16 M[]; extern REG cpu_reg[]; extern DEVICE cpu_dev, dca_dev, dcb_dev, dcc_dev, - tti_dev, tto_dev, ptr_dev, ptp_dev, cdr_dev, mt_dev, lp_dev, dp_dev, - cd_dev, rtc_dev; + tti_dev, tto_dev, ptr_dev, ptp_dev, mt_dev, lp_dev, dp_dev, + cd_dev, drm_dev, rtc_dev; extern UNIT cpu_unit; t_stat autoload(int32, CONST char *); t_stat CDautoload(void); t_stat DPautoload(void); +t_stat DRMautoload(void); t_bool RelValid = FALSE; uint16 RelBase; @@ -76,13 +77,11 @@ DEVICE *sim_devices[] = { &tto_dev, &ptr_dev, &ptp_dev, -#if 0 - &cdr_dev, -#endif &mt_dev, &lp_dev, &dp_dev, &cd_dev, + &drm_dev, NULL }; @@ -92,7 +91,8 @@ const char *sim_stop_messages[] = { "Selective Stop", "Invalid bits set in EXI instruction", "Breakpoint", - "Stop on reject" + "Stop on reject", + "Unimpl. instruction" }; /* @@ -113,7 +113,7 @@ static void postUpdate(t_bool from_scp) { /* * Rebuild the I/O device and buffered data channel tables in case the - * command the configuration. + * command changed the configuration. */ buildIOtable(); buildDCtables(); @@ -346,6 +346,8 @@ t_stat autoload(int32 flag, CONST char *ptr) return CDautoload(); if (dptr == &dp_dev) return DPautoload(); + if (dptr == &drm_dev) + return DRMautoload(); return SCPE_NOFNC; } diff --git a/CDC1700/customization/custom1/msosCustom1.simh b/CDC1700/customization/custom1/msosCustom1.simh new file mode 100644 index 00000000..71903ea1 --- /dev/null +++ b/CDC1700/customization/custom1/msosCustom1.simh @@ -0,0 +1,126 @@ +# Script to generate a customized MSOS 5.0 installation tape. +# +# Customizations: +# 1. Set system creation date to 4/19/17 +# +# Requires: +# MSOS5-A.dsk and MSOS5-B.dsk Installation boot disks +# Installation tape Default is MSOS5_SL136.tap which can +# be copied from bitsavers.org. This can +# be overridden by specifying the +# installation tape on the command line: +# +# cdc1700 msosCustom1.simh install.tap +# +# Creates: +# MSOS5-Install.tap New installation tape. If it already +# exists, it will be overwritten +# Scratch1.tap and Scratch2.tap Tapes for temporary use. If they +# already exist, they will be overwritten +# %DATETIME%.lpt Unique LPT output file for this run +# +set env CDD0=MSOS5-A.dsk +set env CDD1=MSOS5-B.dsk +set env MT0=%1 +if "%MT0%"=="" set env MT0=MSOS5_SL136.tap +set env MT1=MSOS5-Install.tap +set env MT2=Scratch1.tap +set env MT3=Scratch2.tap +set cpu instr=basic +set cpu mode65k,64k +#set throttle 30% +set mt type=1732-3 +set mt3 9track +set lp type=1742 +att lp %DATETIME%.lpt +att cdd0 %CDD0% +att cdd1 %CDD1% +att -r mt0 %MT0% +att mt1 %MT1% +att mt2 %MT2% +att mt3 %MT3% +set env TODAY=%DATE_MM%%DATE_DD%%DATE_19XX_YY% +# +# The following command will patch out unimplemented devices (1728 card +# reader/punch) +# +expect "SET PROGRAM PROTECT" set cpu protect; d 056D 0649; d 057E 0649; d 0589 0649; c +expect "DATE/TIME MMDDYYHHMM \n\r\n" send "%TODAY%%TIME_HH%%TIME_MM%\r"; c +expect ":00 " send after=1000000,"\007"; c +expect "MI\r\n" send "*BATCH,4\r"; c +expect "J \r\n" send "*JOB\r"; c +# Use SKED to extract and edit the skeleton file +expect "J \r\n" send delay=10000,"*SKED\r"; c +expect "NEXT\r\n" send "ADF,6,1\r"; c +expect "NEXT\r\n" send "BUILD,6\r"; c +expect "ENTER LU\r\n\007" send "\r"; goto insert1 +autoload cdd +run 0 +goto end + +:insert1 +expect "NEXT\r\n" send "INSERT,1,4\r"; c +expect "\007" send delay=20000,"*S,SYSMON,$3034\r"; c +expect "\007" send "*S,SYSDAY,$3139\r"; c +expect "\007" send "*S,SYSYER,$3137\r"; c +expect "\007" send "\r"; c +expect "NEXT\r\n" send delay=10000,"DELETE,2,4\r"; c +expect "NEXT\r\n" send "DUMP,17\r"; c +expect "NEXT\r\n" send "EXIT\r"; c +expect "J \r\n" send "*REW,6,17\r"; c +expect "J \r\n" send "*ADF,6,1\r"; goto libild +continue + +:libild +expect "J \r\n" send delay=5000,"*LIBILD\r"; c +expect "CONTROL LU = \007" send "\r"; c +expect "DEFS LU = \007" send "\r"; c +expect "INSTALL LU = \007" send "18\r"; c +expect "NEWLIB LU = \007" send "\r"; c +expect "LIB 01 LU = \007" send "6\r"; c +expect "LIB 02 LU = \007" send "\r"; c +expect "SKELETON LU = \007" send "17\r"; c +expect "CR WHEN READY \r\n\007" send "\r"; c +expect "OUTPUT LIBRARY LU'S \007" send "*Z\r"; c +expect "J \r\n" send "*REW,6\r"; goto mtup +continue + +:mtup +expect "J \r\n" send "*mtup\r"; c +expect "NEXT: \007" send "OPEN,O18,NL,U,A,SF0\r"; c +expect "NEXT: \007" send "CLOSE,O18,RW\r"; c +expect "NEXT: \007" send "OPEN,O16,NL,U,A,SF0,,LB13000\r"; c +expect "NEXT: \007" send "OPEN,I6,NL,U,A,SF0,,LB13000\r"; c +expect "NEXT: \007" send "COPY,FC1\r"; c +expect "NEXT: \007" send "CLOSE,O16,RW\r"; c +expect "NEXT: \007" send "CLOSE,I6,RW\r"; c +expect "NEXT: \007" send "OPEN,O16,NL,U,A,SF1,,LB13000\r"; c +expect "NEXT: \007" send "OPEN,I18,NL,U,A,SF0,,LB13000\r"; c +expect "NEXT: \007" send "COPY,FC1\r"; c +expect "NEXT: \007" send "CLOSE,O16,RW\r"; c +expect "NEXT: \007" send "CLOSE,I18,RW\r"; c +expect "NEXT: \007" send "OPEN,I6,NL,U,A,SF2,,LB13000\r"; c +expect "NEXT: \007" send "OPEN,O16,NL,U,A,SF2,,LB13000\r"; c +expect "NEXT: \007" send "COPY,FC1\r"; c +expect "NEXT: \007" send "CLOSE,O16,RW\r"; c +expect "NEXT: \007" send "CLOSE,I6,RW\r"; c +expect "NEXT: \007" send "OPEN,I6,NL,U,A,SF3,,LB13000\r"; c +expect "NEXT: \007" send "OPEN,O16,NL,U,A,SF3,,LB13000\r"; c +expect "NEXT: \007" send "COPY,FC1\r"; c +expect "NEXT: \007" send "CLOSE,O16,RW\r"; c +expect "NEXT: \007" send "CLOSE,I6,RW\r"; c +expect "NEXT: \007" send "OPEN,I6,NL,U,A,SF4,,LB13000\r"; c +expect "NEXT: \007" send "OPEN,O16,NL,U,A,SF4,,LB13000\r"; c +expect "NEXT: \007" send "COPY,FC1\r"; c +expect "NEXT: \007" send "CLOSE,O16,RW\r"; c +expect "NEXT: \007" send "CLOSE,I6,RW\r"; c +expect "NEXT: \007" send "OPEN,I6,NL,U,A,SF5,,LB13000\r"; c +expect "NEXT: \007" send "OPEN,O16,NL,U,A,SF5,,LB13000\r"; c +expect "NEXT: \007" send "COPY,FC1\r"; c +expect "NEXT: \007" send "CLOSE,O16,RW\r"; c +expect "NEXT: \007" send "CLOSE,I6,RW\r"; c +expect "NEXT: \007" send "EXIT\r"; c +expect "J \r\n" send "*Z\r"; c +continue + +:end diff --git a/CDC1700/customization/custom2/msosCustom2.simh b/CDC1700/customization/custom2/msosCustom2.simh new file mode 100644 index 00000000..86fa241a --- /dev/null +++ b/CDC1700/customization/custom2/msosCustom2.simh @@ -0,0 +1,149 @@ +# Script to generate a customized MSOS 5.0 installation tape. +# +# Customizations: +# 1. Set system creation date to 4/19/17 +# 2. Change the system name to "SIMH DEVELOPMENT SYSTEM" +# +# Requires: +# MSOS5-A.dsk and MSOS5-B.dsk Installation boot disks +# sysdat.tap Modified sysdat.asm as only file on +# the tape (80 char records) +# Installation tape Default is MSOS5_SL136.tap which can +# be copied from bitsavers.org. This can +# be overridden by specifying the +# installation tape on the command line: +# +# cdc1700 msosCustom1.simh install.tap +# +# Creates: +# MSOS5-Install.tap New installation tape. If it already +# exists, it will be overwritten +# Scratch?.tap Tapes for temporary use. If they +# already exist, they will be overwritten +# %DATETIME%.lpt Unique LPT output file for this run +# +set env CDD0=MSOS5-A.dsk +set env CDD1=MSOS5-B.dsk +set env MT0=%1 +if "%MT0%"=="" set env MT0=MSOS5_SL136.tap +set env MT1A=Scratch3.tap +set env MT1B=MSOS5-Install.tap +set env MT2A=sysdat.tap +set env MT2B=Scratch1.tap +set env MT3=Scratch2.tap +set cpu instr=basic +set cpu mode65k,64k +#set throttle 30% +set mt type=1732-3 +set mt3 9track +set lp type=1742 +att lp %DATETIME%.lpt +att cdd0 %CDD0% +att cdd1 %CDD1% +att -r mt0 %MT0% +att mt1 %MT1A% +att -r mt2 %MT2A% +att mt3 %MT3% +set env TODAY=%DATE_MM%%DATE_DD%%DATE_19XX_YY% +# +# The following command will patch out unimplemented devices (1728 card +# reader/punch) +# +expect "SET PROGRAM PROTECT" set cpu protect; d 056D 0649; d 057E 0649; d 0589 0649; c +expect "DATE/TIME MMDDYYHHMM \n\r\n" send "%TODAY%%TIME_HH%%TIME_MM%\r"; c +expect ":00 " send after=1000000,"\007"; c +expect "MI\r\n" send "*BATCH,4\r"; c +expect "J \r\n" send "*JOB\r"; c +expect "J \r\n" send "*K,I17,P16\r"; c +expect "J \r\n" send "*ASSEM\r"; c +expect "J \r\n" send "*mtup\r"; c +expect "NEXT: \007" send "OPEN,O16,NL,U,A,SF0\r"; c +expect "NEXT: \007" send "CLOSE,O16,RW\r"; c +expect "NEXT: \007" send "EXIT\r"; c +expect "J \r\n" send "*REW,17\r"; c +# Use SKED to extract and edit the skeleton file +expect "J \r\n" send "*SKED\r"; c +expect "NEXT\r\n\007" send "ADF,6,1\r"; c +expect "NEXT\r\n\007" send "BUILD,6\r"; c +expect "ENTER LU\r\n\007" send "\r"; goto insert1 +send delay=10000 +autoload cdd +run 0 +goto end + +:insert1 +det mt2 +att -q mt2 %MT2B% +expect "NEXT\r\n\007" send "INSERT,1,4\r"; c +expect "\007" send "*S,SYSMON,$3034\r"; c +expect "\007" send "*S,SYSDAY,$3139\r"; c +expect "\007" send "*S,SYSYER,$3137\r"; c +expect "\007" send "\r"; c +expect "NEXT\r\n\007" send "DELETE,2,4\r"; c +expect "NEXT\r\n\007" send "INSERT,8,4\r"; c +expect "\007" send "*V SIMH DEVELOPMENT SYSTEM\r"; c +expect "\007" send "\r"; c +expect "NEXT\r\n\007" send "DELETE,9\r"; c +expect "NEXT\r\n\007" send "DUMP,17\r"; c +expect "NEXT\r\n\007" send "EXIT\r"; c +expect "J \r\n" send "*REW,6\r"; c +expect "J \r\n" send "*ADF,6,1\r"; goto libild +continue + +:libild +expect "J \r\n" send delay=5000,"*LIBILD\r"; c +expect "CONTROL LU = \007" send "\r"; c +expect "DEFS LU = \007" send "\r"; c +expect "INSTALL LU = \007" send "18\r"; c +expect "NEWLIB LU = \007" send "\r"; c +expect "LIB 01 LU = \007" send "16\r"; c +expect "LIB 02 LU = \007" send "6\r"; c +expect "LIB 03 LU = \007" send "\r"; c +expect "SKELETON LU = \007" send "17\r"; c +expect "CR WHEN READY. \r\n\007" send "\r"; c +expect "CR WHEN READY \r\n\007" send "\r"; c +expect "OUTPUT LIBRARY LU'S \007" send "*Z\r"; c +expect "J \r\n" send "*REW,6,16\r"; goto mtup +continue + +:mtup +det mt1 +att mt1 %MT1B% +expect "J \r\n" send "*mtup\r"; c +expect "NEXT: \007" send "OPEN,O18,NL,U,A,SF0\r"; c +expect "NEXT: \007" send "CLOSE,O18,RW\r"; c +expect "NEXT: \007" send "OPEN,O16,NL,U,A,SF0,,LB13000\r"; c +expect "NEXT: \007" send "OPEN,I6,NL,U,A,SF0,,LB13000\r"; c +expect "NEXT: \007" send "COPY,FC1\r"; c +expect "NEXT: \007" send "CLOSE,O16,RW\r"; c +expect "NEXT: \007" send "CLOSE,I6,RW\r"; c +expect "NEXT: \007" send "OPEN,O16,NL,U,A,SF1,,LB13000\r"; c +expect "NEXT: \007" send "OPEN,I18,NL,U,A,SF0,,LB13000\r"; c +expect "NEXT: \007" send "COPY,FC1\r"; c +expect "NEXT: \007" send "CLOSE,O16,RW\r"; c +expect "NEXT: \007" send "CLOSE,I18,RW\r"; c +expect "NEXT: \007" send "OPEN,I6,NL,U,A,SF2,,LB13000\r"; c +expect "NEXT: \007" send "OPEN,O16,NL,U,A,SF2,,LB13000\r"; c +expect "NEXT: \007" send "COPY,FC1\r"; c +expect "NEXT: \007" send "CLOSE,O16,RW\r"; c +expect "NEXT: \007" send "CLOSE,I6,RW\r"; c +expect "NEXT: \007" send "OPEN,I6,NL,U,A,SF3,,LB13000\r"; c +expect "NEXT: \007" send "OPEN,O16,NL,U,A,SF3,,LB13000\r"; c +expect "NEXT: \007" send "COPY,FC1\r"; c +expect "NEXT: \007" send "CLOSE,O16,RW\r"; c +expect "NEXT: \007" send "CLOSE,I6,RW\r"; c +expect "NEXT: \007" send "OPEN,I6,NL,U,A,SF4,,LB13000\r"; c +expect "NEXT: \007" send "OPEN,O16,NL,U,A,SF4,,LB13000\r"; c +expect "NEXT: \007" send "COPY,FC1\r"; c +expect "NEXT: \007" send "CLOSE,O16,RW\r"; c +expect "NEXT: \007" send "CLOSE,I6,RW\r"; c +expect "NEXT: \007" send "OPEN,I6,NL,U,A,SF5,,LB13000\r"; c +expect "NEXT: \007" send "OPEN,O16,NL,U,A,SF5,,LB13000\r"; c +expect "NEXT: \007" send "COPY,FC1\r"; c +expect "NEXT: \007" send "CLOSE,O16,RW\r"; c +expect "NEXT: \007" send "CLOSE,I6,RW\r"; c +expect "NEXT: \007" send "EXIT\r"; c +expect "J \r\n" send "*Z\r"; c +continue + +:end diff --git a/CDC1700/customization/custom2/sysdat.asm b/CDC1700/customization/custom2/sysdat.asm new file mode 100644 index 00000000..70b64e43 --- /dev/null +++ b/CDC1700/customization/custom2/sysdat.asm @@ -0,0 +1,2922 @@ + NAM SYSDAT EXXON DEVELOPMENT SYSTEM SUMMARY-122 +* SYSTEM DATA PROGRAM - MSOS 5.0 +* 1700 MASS STORAGE OPERATING SYSTEM VERSION 5.0 +* SMALL SYSTEMS DIVISION, LA JOLLA, CALIFORNIA +* COPYRIGHT CONTROL DATA CORPORATION 1976 +* +* SIMH DEVELOPMENT SYSTEM +* +* PROGRAM BASE - MSOS 4.3 +* +* S Y S T E M D A T A P R O G R A M +* +* +* TABLE OF CONTENTS +* +* 1. COMMUNICATION EXTERNALS +* +* 2. COMMUNICATION REGION (INCLUDING APPLICATIONS AREA) +* +* 3. INTERRUPT REGION +* +* 4. INTERRUPT MASK TABLE (MASKT) +* +* 5. EXTENDED COMMUNICATIONS REGION +* +* 6. STORAGE STACKS (INTSTK,VOLBLK, SCHSTK) +* +* 7. LOGICAL UNIT TABLES (LOG1A, LOG1, LOG2) +* +* 8. DIAGNOSTIC TABLES (DGNTAB, ALTERR) +* +* 9. STANDARD LOGICAL UNIT DEFINITIONS AND LINE 1 TABLE +* +* 10. PHYSICAL DEVICE TABLES WITH INTERRUPT RESPONSE ROUTINES +* +* 11. CORE ALLOCATION INFORMATION (CALTHD, LVLSTR, NN'S) +* +* 12. CORE PARTITION INFORMATION (PARTBL, THDS, USE) +* +* 13. SYSTEM COMMON DECLARATION +* +* 14. MISCELLANEOUS PROGRAMS +* +* 15. MISCELLANEOUS INFORMATION +* +* 16. SYSTEM FILE INFORMATION +* +* 17. PRESET REGION +* +* 18. START OF SYSTEM DIRECTORY +* + EJT +* C O M M U N I C A T I O N S E X T E R N A L S +* +* + EXT FNR FIND NEXT REQUEST + EXT COMPRQ COMPLETE REQUEST + EXT REQXT REQUEST EXIT + EXT VOLR VOLATILE RELEASE + EXT VOLA VOLATILE ASSIGNMENT + EXT LUABS LOGICAL UNIT ABSOLUTIZING + EXT SABS STARTING ADDRESS ABSOLUTIZING + EXT CABS COMPLETION ADDRESS ABSOLUTIZING + EXT NABS NUMBER OF WORDS ABSOLUTIZING + EXT DISPXX DISPATCHER + EXT MONI MONITOR + EXT MSIZV4 HIGHEST CORE LOCATION USED BY SYSTEM + EXT IPROC INTERNAL INTERRUPT PROCESSOR + EXT ALLIN COMMON INTERRUPT HANDLER + EJT +* C O M M U N I C A T I O N R E G I O N +* + ORG 0 + RTJ SYFAIL GO TO COMMON SYSTEM FAILURE ROUTINE +* +LPMSK NUM 0 LOGICAL PRODUCT MASK TABLE OF ONES +ONE NUM 1 ONE +THREE NUM 3 THREE +SEVEN NUM 7 SEVEN + NUM $F + NUM $1F + NUM $3F + NUM $7F + NUM $FF + NUM $1FF + NUM $3FF + NUM $7FF + NUM $FFF + NUM $1FFF + NUM $3FFF + NUM $7FFF +* +NZERO NUM $FFFF LOGICAL PRODUCT MASK TABLE OF ZEROS (NEG ZERO) + NUM $FFFE + NUM $FFFC + NUM $FFF8 + NUM $FFF0 + NUM $FFE0 + NUM $FFC0 + NUM $FF80 + NUM $FF00 + NUM $FE00 + NUM $FC00 + NUM $F800 + NUM $F000 + NUM $E000 + NUM $C000 + NUM $8000 + EJT +* C O M M U N I C A T I O N R E G I O N +* +ZERO NUM 0 ZERO +* +ONEBIT NUM 1 ONE BIT TABLE +TWO NUM 2 TWO +FOUR NUM 4 FOUR +EIGHT NUM 8 EIGHT + NUM $10 + NUM $20 + NUM $40 + NUM $80 + NUM $100 + NUM $200 + NUM $400 + NUM $800 + NUM $1000 + NUM $2000 + NUM $4000 + NUM $8000 +* +ZROBIT NUM $FFFE ZERO BIT TABLE + NUM $FFFD + NUM $FFFB + NUM $FFF7 + NUM $FFEF + NUM $FFDF + NUM $FFBF + NUM $FF7F + NUM $FEFF + NUM $FDFF + NUM $FBFF + NUM $F7FF + NUM $EFFF + NUM $DFFF + NUM $BFFF + NUM $7FFF +* +FIVE NUM 5 FIVE +SIX NUM 6 SIX +NINE NUM 9 NINE +TEN NUM 10 TEN + EJT +* C O M M U N I C A T I O N R E G I O N +* +* THIS AREA IS AVAILABLE FOR APPLICATIONS USE +* + NUM 0 $47 + NUM 0 $48 + NUM 0 $49 + NUM 0 $4A + NUM 0 $4B + NUM 0 $4C + NUM 0 $4D + NUM 0 $4E + NUM 0 $4F + NUM 0 $50 + NUM 0 $51 + NUM 0 $52 + NUM 0 $53 + NUM 0 $54 + NUM 0 $55 + NUM 0 $56 + NUM 0 $57 + NUM 0 $58 + NUM 0 $59 + NUM 0 $5A + NUM 0 $5B + NUM 0 $5C + NUM 0 $5D + NUM 0 $5E + NUM 0 $5F + NUM 0 $60 + NUM 0 $61 + NUM 0 $62 + NUM 0 $63 + NUM 0 $64 + NUM 0 $65 + NUM 0 $66 + NUM 0 $67 + NUM 0 $68 + NUM 0 $69 + NUM 0 $6A + NUM 0 $6B + NUM 0 $6C + NUM 0 $6D + NUM 0 $6E + NUM 0 $6F + EJT + SPC 4 +* C O M M U N I C A T I O N R E G I O N +* +* THIS AREA IS AVAILABLE FOR APPLICATIONS USE +* + NUM 0 $70 + NUM 0 $71 + NUM 0 $72 + NUM 0 $73 + NUM 0 $74 + NUM 0 $75 + NUM 0 $76 + NUM 0 $77 + NUM 0 $78 + NUM 0 $79 + NUM 0 $7A + NUM 0 $7B + NUM 0 $7C + NUM 0 $7D + NUM 0 $7E + NUM 0 $7F + NUM 0 $80 + NUM 0 $81 + NUM 0 $82 + NUM 0 $83 + NUM 0 $84 + NUM 0 $85 + NUM 0 $86 + NUM 0 $87 + NUM 0 $88 + NUM 0 $89 + NUM 0 $8A + NUM 0 $8B + NUM 0 $8C + NUM 0 $8D + NUM 0 $8E + NUM 0 $8F + EJT + SPC 2 +* C O M M U N I C A T I O N R E G I O N +* +* THIS AREA IS AVAILABLE FOR APPLICATIONS USE +* + NUM 0 $90 + NUM 0 $91 + NUM 0 $92 + NUM 0 $93 + NUM 0 $94 + NUM 0 $95 + NUM 0 $96 + NUM 0 $97 + NUM 0 $98 + NUM 0 $99 + NUM 0 $9A + NUM 0 $9B + NUM 0 $9C + NUM 0 $9D + NUM 0 $9E + NUM 0 $9F + NUM 0 $A0 + NUM 0 $A1 + NUM 0 $A2 + NUM 0 $A3 + NUM 0 $A4 + NUM 0 $A5 + NUM 0 $A6 + NUM 0 $A7 + NUM 0 $A8 + NUM 0 $A9 + NUM 0 $AA + NUM 0 $AB + NUM 0 $AC + NUM 0 $AD + NUM 0 $AE + NUM 0 $AF + NUM 0 $B0 + NUM 0 $B1 + NUM 0 $B2 + EJT +* C O M M U N I C A T I O N R E G I O N +* + ORG $B3 + ADC SCRTCH LOGICAL UNIT OF STANDARD SCRATCH DEVICE + ADC SCHSTK ADR OF TOP OF SCHEDULER STACK +AFNR ADC FNR ADR OF FIND NEXT REQUEST +ACOMPR ADC COMPRQ ADR OF COMPLETE REQUEST + ADC MASKT ADR OF MASK TABLE + ADC INTSTK ADR OF TOP OF INTERRUPT STACK + ADC REQXT ADR OF EXIT FOR MONITOR REQUESTS +AVOLR ADC VOLR ADR OF RELEASE VOLATILE ROUTINE +AVOLA ADC VOLA ADR OF ASSIGN VOLATILE ROUTINE + ADC LUABS ADR OF ABSOLUTIZING ROUTINE FOR LOGICAL UNIT + ADC SABS ADR OF ABSOLUTIZING ROUTINE FOR STARTING ADR + ADC CABS ADR OF ABSOLUTIZING ROUTINE FOR COMPLETION ADR + ADC NABS ADR OF ABSOLUTIZING ROUTINE FOR NUMBER OF WRDS + NUM 0 MSB OF STARTING SCRATCH SECTOR (ALWAYS ZERO) + NUM 0 LSB OF STARTING SCRATCH SECTOR (SET BY SI) + ADC LBUNIT LOGICAL UNIT OF STANDARD LIBRARY DEVICE + NUM 0 MSB OF PGM LIB DIRECTORY SECTOR (ALWAYS ZERO) + NUM 0 LSB OF PGM LIB DIRECTORY SECTOR (SET BY SI) +* + BZS ($E3-$C5+1) RESERVED FOR FTN (UNPROTECTED) + NUM 0 RESERVED FOR FTN + LOAD/GO SECTOR(UNPROTECTED) + NUM 0 RESERVED FOR FTN (UNPROTECTED) +* + BSS (1) LENGTH OF MASS RESIDENT SYSTEM DIR.(SET BY SI) + BSS (1) LENGTH OF CORE RESIDENT SYSTEM DIR.(SET BY SI) + NUM 0 REAL TIME CLOCK COUNTER + ADC EXTBV4 ADDR OF EXTENDED CORE TABLE +ADISP ADC DISPXX ADR OF DISPATCHER + ADC SLDIRY ADR OF SYSTEM DIRECTORY + NUM 0 TEMPORARY TOP+1 OF UNPROTECTED (SET BY SI) + NUM 0 TEMPORARY BOTTOM-1 OF UNPROTECTED (SET BY SI) + NUM 0 USED BY JOB PROCESSOR FOR LOADER RETURNS + NUM -1 CURRENT PRIORITY LEVEL + ADC VOLBLK STARTING LOCATION OF VOLATILE STORAGE + ADC LPRSET LENGTH OF PRESETS TABLE + ADC APRSET STARTING LOCATION OF PRESETS TABLE + ADC 0 ADR OF BREAKPOINT PROGRAM IN CORE(UNPROTECTED) +AMONI ADC MONI ADR OF MONITOR ENTRY FOR REQUESTS + ADC MSIZV4 HIGHEST CORE LOCATION USED BY SYSTEM + NUM 0 TOP+1 OF UNPROTECTED (SET BY SI) + NUM 0 BOTTOM-1 OF UNPROTECTED (SET BY SI) + ADC IPROC ADR OF INTERNAL INTERRUPT PROCESSOR + ADC STDINP LOGICAL UNIT OF STANDARD INPUT DEVICE (FTN 1) + ADC BINOUT LOGICAL UNIT OF STANDARD BINARY DEVICE (FTN 2) + ADC LSTOUT LOGICAL UNIT OF STANDARD PRINT DEVICE (FTN 3) + ADC OUTCOM LOGICAL UNIT OF OUTPUT COMMENT DEVICE (FTN 4) + ADC INPCOM LOGICAL UNIT OF INPUT COMMENT DEVICE (FTN 4) + ADC ALLIN ADR OF COMMON INTERRUPT HANDLER + BSS (1) I (MEMORY INDEX) REGISTER (UNPROTECTED) + EJT + SPC 6 +* I N T E R R U P T R E G I O N +* +* +* +LINE00 NUM 0 INTERRUPT LINE ENTRY + RTJ- ($F8) GO TO INTERRUPT HANDLER ROUTINE + NUM 15 PRIORITY LEVEL OF INTERRUPT + ADC IPROC INTERRUPT RESPONSE FOR THE PROTECT/PARITY ERR. +* +LINE01 NUM 0 INTERRUPT LINE ENTRY + RTJ- ($FE) GO TO INTERRUPT HANDLER ROUTINE + NUM 13 PRIORITY LEVEL OF INTERRUPT + ADC LIN1V4 INTERRUPT RESPONSE FOR THE LOW SPEED I / O +* +LINE02 NUM 0 INTERRUPT LINE ENTRY + RTJ- ($FE) GO TO INTERRUPT HANDLER ROUTINE + NUM 09 PRIORITY LEVEL OF INTERRUPT + ADC R1752 INTERRUPT RESPONSE FOR THE 1752 DRUM +* +LINE03 NUM 0 INTERRUPT LINE ENTRY + RTJ- ($FE) GO TO INTERRUPT HANDLER ROUTINE + NUM 09 PRIORITY LEVEL OF INTERRUPT + ADC R17332 INTERRUPT RESPONSE FOR THE 1733-2/856-2/4 DISK +* +LINE04 NUM 0 INTERRUPT LINE ENTRY + RTJ- ($FE) GO TO INTERRUPT HANDLER ROUTINE + NUM 10 PRIORITY LEVEL OF INTERRUPT + ADC R42312 INTERRUPT RESPONSE FOR THE 1742-30/120 PRINTER +* +LINE05 NUM 0 INTERRUPT LINE ENTRY + RTJ- ($FE) GO TO INTERRUPT HANDLER ROUTINE + NUM 10 PRIORITY LEVEL OF INTERRUPT + ADC R17432 INTERRUPT RESPONSE FOR THE 1743-2 COMM. CONT. +* +LINE06 NUM 0 INTERRUPT LINE ENTRY + RTJ- ($FE) GO TO INTERRUPT HANDLER ROUTINE + NUM 0 PRIORITY LEVEL OF INTERRUPT + ADC INVINT INTERRUPT RESPONSE FOR THE INVALID INTERRUPTS + SPC 1 +* +LINE07 NUM 0 INTERRUPT LINE ENTRY + RTJ- ($FE) GO TO INTERRUPT HANDLER ROUTINE + NUM 10 PRIORITY LEVEL OF INTERRUPT + ADC R17323 INTERRUPT RESPONSE FOR THE 1732-3/616 MAG TAPE +* +LINE08 NUM 0 INTERRUPT LINE ENTRY + RTJ- ($FE) GO TO INTERRUPT HANDLER ROUTINE + NUM 0 PRIORITY LEVEL OF INTERRUPT + ADC INVINT INTERRUPT RESPONSE FOR THE INVALID INTERRUPTS + SPC 1 +* +LINE09 NUM 0 INTERRUPT LINE ENTRY + RTJ- ($FE) GO TO INTERRUPT HANDLER ROUTINE + NUM 0 PRIORITY LEVEL OF INTERRUPT + ADC INVINT INTERRUPT RESPONSE FOR THE INVALID INTERRUPTS + SPC 1 +* +LINE10 NUM 0 INTERRUPT LINE ENTRY + RTJ- ($FE) GO TO INTERRUPT HANDLER ROUTINE + NUM 14 PRIORITY LEVEL OF INTERRUPT + ADC R1728 INTERRUPT RESPONSE FOR THE 1728-430 READ/PNCH +* +LINE11 NUM 0 INTERRUPT LINE ENTRY + RTJ- ($FE) GO TO INTERRUPT HANDLER ROUTINE + NUM 0 PRIORITY LEVEL OF INTERRUPT + ADC INVINT INTERRUPT RESPONSE FOR THE INVALID INTERRUPTS + SPC 1 +* +LINE12 NUM 0 INTERRUPT LINE ENTRY + RTJ- ($FE) GO TO INTERRUPT HANDLER ROUTINE + NUM 0 PRIORITY LEVEL OF INTERRUPT + ADC INVINT INTERRUPT RESPONSE FOR THE INVALID INTERRUPTS + SPC 1 +* +LINE13 NUM 0 INTERRUPT LINE ENTRY + RTJ- ($FE) GO TO INTERRUPT HANDLER ROUTINE + NUM 0 PRIORITY LEVEL OF INTERRUPT + ADC INVINT INTERRUPT RESPONSE FOR THE INVALID INTERRUPTS + SPC 1 +* +LINE14 NUM 0 INTERRUPT LINE ENTRY + RTJ- ($FE) GO TO INTERRUPT HANDLER ROUTINE + NUM 0 PRIORITY LEVEL OF INTERRUPT + ADC INVINT INTERRUPT RESPONSE FOR THE INVALID INTERRUPTS + SPC 1 +* +LINE15 NUM 0 INTERRUPT LINE ENTRY + RTJ- ($FE) GO TO INTERRUPT HANDLER ROUTINE + NUM 0 PRIORITY LEVEL OF INTERRUPT + ADC INVINT INTERRUPT RESPONSE FOR THE INVALID INTERRUPTS + SPC 1 + EJT +* C O R E R E S I D E N T D E B U G E N T R I E S + SPC 2 + ORG $140 + SPC 1 + EXT COUTV4 + EXT COBOP + SPC 2 + JMP+ COUTV4 OFF-LINE CORE DUMP + SPC 4 + JMP+ COBOP SYSTEM CHECKOUT BOOTSTRAP + EJT +* I N T E R R U P T M A S K T A B L E +* +* + ENT MASKT INTERRUPT MASKS INDEXED BY PRIORITY LEVEL +* +* +* <----------------------------- INTERRUPT LINE NUMBER +* 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 +* **************************************************** +* P -1 * 0 0 0 0 0 1 0 0 1 0 1 1 1 1 1 1 * +* R 0 * 0 0 0 0 0 1 0 0 1 0 1 1 1 1 1 1 * +* I 1 * 0 0 0 0 0 1 0 0 1 0 1 1 1 1 1 1 * +* O 2 * 0 0 0 0 0 1 0 0 1 0 1 1 1 1 1 1 * +* R 3 * 0 0 0 0 0 1 0 0 1 0 1 1 1 1 1 1 * +* I 4 * 0 0 0 0 0 1 0 0 1 0 1 1 1 1 1 1 * +* T 5 * 0 0 0 0 0 1 0 0 1 0 1 1 1 1 1 1 * +* Y 6 * 0 0 0 0 0 1 0 0 1 0 1 1 1 1 1 1 * +* 7 * 0 0 0 0 0 1 0 0 1 0 1 1 1 1 1 1 * +* L 8 * 0 0 0 0 0 1 0 0 1 0 1 1 1 1 1 1 * +* E 9 * 0 0 0 0 0 1 0 0 1 0 1 1 0 0 1 1 * +* V 10 * 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 * +* E 11 * 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 * +* L 12 * 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 * +* . 13 * 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 * +* . 14 * 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 * +* V 15 * 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 * +* **************************************************** +* +* + NUM $04BF PRIORITY LEVEL -1 +MASKT NUM $04BF PRIORITY LEVEL 00 + NUM $04BF PRIORITY LEVEL 01 + NUM $04BF PRIORITY LEVEL 02 + NUM $04BF PRIORITY LEVEL 03 + NUM $04BF PRIORITY LEVEL 04 + NUM $04BF PRIORITY LEVEL 05 + NUM $04BF PRIORITY LEVEL 06 + NUM $04BF PRIORITY LEVEL 07 + NUM $04BF PRIORITY LEVEL 08 + NUM $04B3 PRIORITY LEVEL 09 + NUM $0403 PRIORITY LEVEL 10 + NUM $0403 PRIORITY LEVEL 11 + NUM $0403 PRIORITY LEVEL 12 + NUM $0401 PRIORITY LEVEL 13 + NUM $0001 PRIORITY LEVEL 14 + NUM $0000 PRIORITY LEVEL 15 + EJT +* E X T E N D E D C O M M U N I C A T I O N S R E G I O N +* +* REFERENCED THRU LOCATION $E9 + SPC 3 + ENT MAXSEC + ENT MPFLAG + ENT MIINP + EXT JFILV4 + EXT RCTV + EXT END0V4 + EXT DATBAS + EXT SECTOR + EQU CSYLST(9) + EQU CSYINP(10) + EQU CSYPUN(11) + EQU SECT1(0) + EQU SECT3(0) + EQU SECT4($5BFA) + SPC 3 +EXTBV4 ADC 0 00 MODE SWITCH 32K=0 65K=1 + ADC CSYINP 01 STANDARD COSY INPUT LU NUMBER + ADC CSYPUN 02 STANDARD COSY OUTPUT LU NUMBER + ADC CSYLST 03 STANDARD COSY LIST LU NUMBER + ADC 0 04 FIRST SECTOR LSB OF SYSTEM CORE IMAGE + ADC 0 05 FIRST SECTOR LSB OF S. A. T. + ADC 0 06 FIRST SECTOR LSB OF CREP TABLE + ADC 0 07 FIRST SECTOR LSB OF CREP1 TABLE + ADC JFILV4 08 FIRST SECTOR LSB OF JOB FILE DIRECTORY + ADC RCTV 09 ADDRESS OF RCTV TABLE IN THE MONITOR + ADC 0 10 UNPROTECTED CORE FLAG 0=PART0 / 1=PART1 + ADC 0 11 UNPROTECTED SWAP ALLOWED 0=YES / 1=NO + ADC AYERTO 12 ADDRESS LOCATION CONTAINING THE YEAR + ADC AMONTO 13 ADDRESS LOCATION CONTAINING THE MONTH + ADC ADAYTO 14 ADDRESS LOCATION CONTAINING THE DAY + ADC END0V4 15 LAST ADDRESS OF PART 0 CORE + ADC 0 16 FIRST ADDRESS OF BLANK (SYSTEM) COMMON + ADC DATBAS 17 FIRST ADDRESS OF LABELED COMMON + ADC 0 18 COSY DRIVER CURRENT PHYSTAB ADDRESS + ADC 0 19 JOB TABLE INITIALIZATION FLAG + ADC 0 20 MASS MEMORY LOCATION OF ENGINEERING FILE + ADC SECT1 21 MSB OF MAXIMUM SCRATCH SECTOR +MAXSEC ADC SECTOR 22 LSB OF MAXIMUM SCRATCH SECTOR + ADC SECT3 23 MSB OF MAXIMUM LIBRARY SECTOR + ADC SECT4 24 LSB OF MAXIMUM LIBRARY SECTOR + ADC 0 25 LAST ADDRESS OF LABELED COMMON + ADC 0 26 UNUSED +MPFLAG ADC 0 27 ZERO IF NOT AN MP SYSTEM + ADC LOG1A 28 ADDRESS OF LOG1A TABLE +MIINP BZS MIINP(40) MANUAL INPUT BUFFER + EJT +* S Y S T E M I D E N T I F I C A T I O N +* + SPC 1 + ENT SYSID + EXT SYSMON MONTH SYSTEM WAS BUILT + EXT SYSDAY DAY SYSTEM WAS BUILT + EXT SYSYER YEAR SYSTEM WAS BUILT + SPC 4 +SYSID ALF 16, SIMH DEVELOPMENT SYSTEM + ADC SYSMON + ADC SYSDAY + ADC SYSYER + SPC 4 +* COMMON SYSTEM FAILURE ROUTINE + SPC 2 + ENT SYFAIL + SPC 1 +SYFAIL NOP 0 + IIN 0 INHIBIT INTERRUPTS + STA* SAVEA SAVE A + STQ* SAVEQ SAVE Q + TRM A MOVE M TO A + STA* SAVEM SAVE M + LDA* SYFAIL PICK UP ADDRESS OF CALLER + INA -2 CORRECT IT FOR 2 WORD RTJ + STA* SYFAIL STORE IT BACK + NUM $18FF HANG + SPC 2 +SAVEA NUM 0 +SAVEQ NUM 0 +SAVEM NUM 0 + EJT +* C O N T R O L P O I N T / B O U N D S R E G I S T E R +* P A R A M E T E R S +* + ENT UBPROT + ENT LBPROT + ENT UPBDTB + ENT LOBDTB + ENT TSCNAC + ENT TSCNMI + ENT SIM200 + ENT CCP + ENT CPSET + SPC + EQU UBPROT($7FFF),LBPROT($7FFF),UPBDTB($7FFF),LOBDTB($7FFF) + EQU TSCNAC($7FFF),TSCNMI($7FFF),SIM200($7FFF) + EQU CCP($7FFF) + SPC 2 +CPSET NUM 0 + JMP* (CPSET) + EJT +* S T O R A G E S T A C K S +* +* +NUMPRI EQU NUMPRI(16) NUMBER OF SYSTEM PRIORITY LEVELS +EXTVOL EQU EXTVOL(00) AMOUNT OF EXTRA VOLATILE STORAGE +* +NFTNLV EQU NFTNLV(3) NUMBER OF REENTRANT FORTRAN LEVELS +NEDLVL EQU NEDLVL(3) NUMBER OF REENTRANT ENCODE/DECODE LEVELS + SPC 3 +* +* I N T E R R U P T S T A C K +* + ENT INTSTK CONTENTS, 1 = Q-REGISTER +* 2 = A-REGISTER +* 3 = I-REGISTER +* 4 = P-REGISTER +* 5 = PRIORITY LEVEL AND OVERFLOW +* INDICATOR (BIT 15) +* +INTSTK BZS INTSTK(5*NUMPRI) + SPC 3 +* +* V O L A T I L E B L O C K S T A C K +* + ENT VOLBLK CONTENTS, 1 = Q-REGISTER + ENT VOLEND 2 = A-REGISTER +* 3 = I-REGISTER +* 4 = USER ASSIGNMENTS +* . +* N = USER ASSIGNMENTS +* +VOLBLK BZS VOLBLK(18*NUMPRI+98*NFTNLV+57*NEDLVL+EXTVOL+1) +VOLEND EQU VOLEND(*) END OF VOLATILE + SPC 3 +* +* S C H E D U L E R / T I M E R S T A C K +* + ENT SCHSTK CONTENTS, 1 = SCHEDULER CALL + ENT SCHLNG 2 = STARTING ADDRESS +* 3 = THREAD TO NEXT CALL +SCHSTK EQU SCHSTK(*) 4 = Q-REGISTER CONTENTS + SPC 1 + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 001 + EJT + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 002 + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 003 + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 004 + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 005 + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 006 + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 007 + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 008 + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 009 + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 010 + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 011 + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 012 + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 013 + EJT + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 014 + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 015 + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 016 + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 017 + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 018 + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 019 + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 020 + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 021 + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 022 + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 023 + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 024 + ADC 0,0,(-0),0 SCHEDULER STACK ENTRY 025 +SCHLNG EQU SCHLNG(*-SCHSTK) SCHEDULER STACK LENGTH + EJT +* L O G I C A L U N I T T A B L E S ( L O G 1 A ) +* +* + ENT LOG1A PHYSICAL DEVICES ADDRESSES BY LOGICAL UNIT + ENT NUMLU + SPC 1 +LOG1A ADC NUMLU NUMBER OF LOGICAL UNITS + ADC PCORE 1 CORE ALLOCATOR + ADC PDUMMY 2 DUMMY LOGICAL UNIT + ADC PDUMMY 3 DUMMY LOGICAL UNIT + ADC P1711 4 1711 TELETYPE, 713-10 CRT + ADC PCOSY1 5 COSY DRIVER, FIRST UNIT + ADC P73230 6 1732-3 616-73/93/95 MAG TAPE UNIT 0 + ADC PSUDO0 7 PSEUDO TAPE, UNIT 0 + ADC P73320 8 1733-2 856-2/4 DISK, UNIT 0 + ADC P42312 9 1742-30/120 LINE PRINTER +X73230 ADC P73230 10 DIAGNOSTIC 1732-3 616 MAG TAPE, UNIT 0 + ADC P1728 11 1728-430 CARD PUNCH +FTN742 ADC P42312 12 1742-30/120 FORTRAN LINE PRINTER + ADC P73321 13 1733-2 856-2/4 DISK, UNIT 1 + ADC P73322 14 1733-2 856-2/4 DISK, UNIT 2 + ADC P73323 15 1733-2 856-2/4 DISK, UNIT 3 + ADC P73231 16 1732-3 616-73/93/95 MAG TAPE UNIT 1 + ADC P73232 17 1732-3 616-73/93/95 MAG TAPE UNIT 2 + ADC P73233 18 1732-3 616-73/93/95 MAG TAPE UNIT 3 + ADC PSUDO1 19 PSEUDO TAPE, UNIT 1 + ADC PSUDO2 20 PSEUDO TAPE, UNIT 2 + ADC PSUDO3 21 PSEUDO TAPE, UNIT 3 + ADC PSDSK0 22 PSEUDO DISK, UNIT 0 + ADC PSDSK1 23 PSEUDO DISK, UNIT 1 + ADC PSDSK2 24 PSEUDO DISK, UNIT 2 + ADC PSDSK3 25 PSEUDO DISK, UNIT 3 + ADC P1752 26 1752 DRUM + ADC PCOSY2 27 COSY DRIVER, SECOND UNIT + ADC P1728 28 1728-430 CARD READER +X73231 ADC P73231 29 DIAGNOSTIC 1732-3 616 MAG TAPE, UNIT 1 +L74300 ADC P74300 30 1743-2 COMMUNICATIONS UNIT 0 +L74301 ADC P74301 31 1743-2 COMMUNICATIONS UNIT 1 +L74302 ADC P74302 32 1743-2 COMMUNICATIONS UNIT 2 +L74303 ADC P74303 33 1743-2 COMMUNICATIONS UNIT 3 +L74304 ADC P74304 34 1743-2 COMMUNICATIONS UNIT 4 +L74305 ADC P74305 35 1743-2 COMMUNICATIONS UNIT 5 +X73232 ADC P73232 36 DIAGNOSTIC 1732-3 616 MAG TAPE, UNIT 2 +X73233 ADC P73233 37 DIAGNOSTIC 1732-3 616 MAG TAPE, UNIT 3 +X42312 ADC P42312 38 DIAGNOSTIC 1742-30/120 LINE PRINTER +X1728 ADC P1728 39 DIAGNOSTIC 1728-430 READER / PUNCH +X74300 ADC P74300 40 DIAGNOSTIC 1743-2 COMM. , UNIT 0 +X74301 ADC P74301 41 DIAGNOSTIC 1743-2 COMM. , UNIT 1 +X74302 ADC P74302 42 DIAGNOSTIC 1743-2 COMM. , UNIT 2 +X74303 ADC P74303 43 DIAGNOSTIC 1743-2 COMM. , UNIT 3 +X74304 ADC P74304 44 DIAGNOSTIC 1743-2 COMM. , UNIT 4 +X74305 ADC P74305 45 DIAGNOSTIC 1743-2 COMM. , UNIT 5 +X1711 ADC P1711 46 DIAGNOSTIC 1711 TELETYPE, 713-10 CRT +NUMLU EQU NUMLU(*-LOG1A-1) + EJT +* L O G I C A L U N I T T A B L E S ( L O G 1 ) +* +* + ENT LOG1 LOGICAL UNIT INFORMATION BY LOGICAL UNIT +* BIT 14 = 1, IMPLIES LU SHARES DEVICE +* BIT 13 = 1, IMPLIES LU IS MARKED DOWN +* BITS 0 - 11 IS ALTERNATE LOGICAL UNIT +* ALTERNATE = 0, IMPLIES NONE +S EQU S($4000) SHARED BIT + SPC 1 +LOG1 ADC NUMLU NUMBER OF LOGICAL UNITS + ADC 0 1 CORE ALLOCATOR + ADC 0+S 2 DUMMY LOGICAL UNIT + ADC 0+S 3 DUMMY LOGICAL UNIT + ADC 2+S 4 1711 TELETYPE, 713-10 CRT + ADC 0 5 COSY DRIVER, FIRST UNIT + ADC 0+S 6 1732-3 616-73/93/95 MAG TAPE UNIT 0 + ADC 0 7 PSEUDO TAPE, UNIT 0 + ADC 0 8 1733-2 856-2/4 DISK, UNIT 0 + ADC 0+S 9 1742-30/120 LINE PRINTER + ADC 0+S 10 DIAGNOSTIC 1732-3 616 MAG TAPE, UNIT 0 + ADC 0+S 11 1728-430 CARD PUNCH + ADC 0+S 12 1742-30/120 FORTRAN LINE PRINTER + ADC 0 13 1733-2 856-2/4 DISK, UNIT 1 + ADC 0 14 1733-2 856-2/4 DISK, UNIT 2 + ADC 0 15 1733-2 856-2/4 DISK, UNIT 3 + ADC 0+S 16 1732-3 616-73/93/95 MAG TAPE UNIT 1 + ADC 0+S 17 1732-3 616-73/93/95 MAG TAPE UNIT 2 + ADC 0+S 18 1732-3 616-73/93/95 MAG TAPE UNIT 3 + ADC 0 19 PSEUDO TAPE, UNIT 1 + ADC 0 20 PSEUDO TAPE, UNIT 2 + ADC 0 21 PSEUDO TAPE, UNIT 3 + ADC 0 22 PSEUDO DISK, UNIT 0 + ADC 0 23 PSEUDO DISK, UNIT 1 + ADC 0 24 PSEUDO DISK, UNIT 2 + ADC 0 25 PSEUDO DISK, UNIT 3 + ADC 0 26 1752 DRUM + ADC 0 27 COSY DRIVER, SECOND UNIT + ADC 0+S 28 1728-430 CARD READER + ADC 0+S 29 DIAGNOSTIC 1732-3 616 MAG TAPE, UNIT 1 + ADC 0+S 30 1743-2 COMMUNICATIONS UNIT 0 + ADC 0+S 31 1743-2 COMMUNICATIONS UNIT 1 + ADC 0+S 32 1743-2 COMMUNICATIONS UNIT 2 + ADC 0+S 33 1743-2 COMMUNICATIONS UNIT 3 + ADC 0+S 34 1743-2 COMMUNICATIONS UNIT 4 + ADC 0+S 35 1743-2 COMMUNICATIONS UNIT 5 + ADC 0+S 36 DIAGNOSTIC 1732-3 616 MAG TAPE, UNIT 2 + ADC 0+S 37 DIAGNOSTIC 1732-3 616 MAG TAPE, UNIT 3 + ADC 0+S 38 DIAGNOSTIC 1742-30/120 LINE PRINTER + ADC 0+S 39 DIAGNOSTIC 1728-430 READER / PUNCH + ADC 0+S 40 DIAGNOSTIC 1743-2 COMM. , UNIT 0 + ADC 0+S 41 DIAGNOSTIC 1743-2 COMM. , UNIT 1 + ADC 0+S 42 DIAGNOSTIC 1743-2 COMM. , UNIT 2 + ADC 0+S 43 DIAGNOSTIC 1743-2 COMM. , UNIT 3 + ADC 0+S 44 DIAGNOSTIC 1743-2 COMM. , UNIT 4 + ADC 0+S 45 DIAGNOSTIC 1743-2 COMM. , UNIT 5 + ADC 0+S 46 DIAGNOSTIC 1711 TELETYPE, 713-10 CRT + EJT +* L O G I C A L U N I T T A B L E S ( L O G 2 ) +* +* + ENT LOG2 TOP OF I/O THREAD ADDRESSES BY LOGICAL UNIT + SPC 1 +LOG2 ADC NUMLU NUMBER OF LOGICAL UNITS + NUM $FFFF 1 CORE ALLOCATOR + NUM $FFFF 2 DUMMY LOGICAL UNIT + NUM $FFFF 3 DUMMY LOGICAL UNIT + NUM $FFFF 4 1711 TELETYPE, 713-10 CRT + NUM $FFFF 5 COSY DRIVER, FIRST UNIT + NUM $FFFF 6 1732-3 616-73/93/95 MAG TAPE UNIT 0 + NUM $FFFF 7 PSEUDO TAPE, UNIT 0 + NUM $FFFF 8 1733-2 856-2/4 DISK, UNIT 0 + NUM $FFFF 9 1742-30/120 LINE PRINTER + NUM $FFFF 10 DIAGNOSTIC 1732-3 616 MAG TAPE, UNIT 0 + NUM $FFFF 11 1728-430 CARD PUNCH + NUM $FFFF 12 1742-30/120 FORTRAN LINE PRINTER + NUM $FFFF 13 1733-2 856-2/4 DISK, UNIT 1 + NUM $FFFF 14 1733-2 856-2/4 DISK, UNIT 2 + NUM $FFFF 15 1733-2 856-2/4 DISK, UNIT 3 + NUM $FFFF 16 1732-3 616-73/93/95 MAG TAPE UNIT 1 + NUM $FFFF 17 1732-3 616-73/93/95 MAG TAPE UNIT 2 + NUM $FFFF 18 1732-3 616-73/93/95 MAG TAPE UNIT 3 + NUM $FFFF 19 PSEUDO TAPE, UNIT 1 + NUM $FFFF 20 PSEUDO TAPE, UNIT 2 + NUM $FFFF 21 PSEUDO TAPE, UNIT 3 + NUM $FFFF 22 PSEUDO DISK, UNIT 0 + NUM $FFFF 23 PSEUDO DISK, UNIT 1 + NUM $FFFF 24 PSEUDO DISK, UNIT 2 + NUM $FFFF 25 PSEUDO DISK, UNIT 3 + NUM $FFFF 26 1752 DRUM + NUM $FFFF 27 COSY DRIVER, SECOND UNIT + NUM $FFFF 28 1728-430 CARD READER + NUM $FFFF 29 DIAGNOSTIC 1732-3 616 MAG TAPE, UNIT 1 + NUM $FFFF 30 1743-2 COMMUNICATIONS UNIT 0 + NUM $FFFF 31 1743-2 COMMUNICATIONS UNIT 1 + NUM $FFFF 32 1743-2 COMMUNICATIONS UNIT 2 + NUM $FFFF 33 1743-2 COMMUNICATIONS UNIT 3 + NUM $FFFF 34 1743-2 COMMUNICATIONS UNIT 4 + NUM $FFFF 35 1743-2 COMMUNICATIONS UNIT 5 + NUM $FFFF 36 DIAGNOSTIC 1732-3 616 MAG TAPE, UNIT 2 + NUM $FFFF 37 DIAGNOSTIC 1732-3 616 MAG TAPE, UNIT 3 + NUM $FFFF 38 DIAGNOSTIC 1742-30/120 LINE PRINTER + NUM $FFFF 39 DIAGNOSTIC 1728-430 READER / PUNCH + NUM $FFFF 40 DIAGNOSTIC 1743-2 COMM. , UNIT 0 + NUM $FFFF 41 DIAGNOSTIC 1743-2 COMM. , UNIT 1 + NUM $FFFF 42 DIAGNOSTIC 1743-2 COMM. , UNIT 2 + NUM $FFFF 43 DIAGNOSTIC 1743-2 COMM. , UNIT 3 + NUM $FFFF 44 DIAGNOSTIC 1743-2 COMM. , UNIT 4 + NUM $FFFF 45 DIAGNOSTIC 1743-2 COMM. , UNIT 5 + NUM $FFFF 46 DIAGNOSTIC 1711 TELETYPE, 713-10 CRT + EJT +* D I A G N O S T I C T A B L E S +* +* + ENT ALTERR ALTERNATE DEVICE ERROR TABLE + SPC 1 +ALTERR ADC NUMLU ERROR TABLE SIZE + BZS (NUMLU) SPACE FOR MAXIMUM SIMULTANEOUS FAILURES + SPC 3 + ENT DGNTAB DIAGNOSTIC TIMER TABLE + SPC 1 +DGNTAB EQU DGNTAB(*) START OF TABLE + ADC PCORE 1 CORE ALLOCATOR + ADC P1711 4 1711 TELETYPE, 713-10 CRT + ADC P73230 6 1732-3 616-73/93/95 MAG TAPE UNIT 0 + ADC P73320 8 1733-2 856-2/4 DISK, UNIT 0 + ADC P42312 9 1742-30/120 LINE PRINTER + ADC P73321 13 1733-2 856-2/4 DISK, UNIT 1 + ADC P73322 14 1733-2 856-2/4 DISK, UNIT 2 + ADC P73323 15 1733-2 856-2/4 DISK, UNIT 3 + ADC P73231 16 1732-3 616-73/93/95 MAG TAPE UNIT 1 + ADC P73232 17 1732-3 616-73/93/95 MAG TAPE UNIT 2 + ADC P73233 18 1732-3 616-73/93/95 MAG TAPE UNIT 3 + ADC P1752 26 1752 DRUM + ADC P1728 28 1728-430 CARD READER + ADC P74300 30 1743-2 COMMUNICATIONS UNIT 0 + ADC P74301 31 1743-2 COMMUNICATIONS UNIT 1 + ADC P74302 32 1743-2 COMMUNICATIONS UNIT 2 + ADC P74303 33 1743-2 COMMUNICATIONS UNIT 3 + ADC P74304 34 1743-2 COMMUNICATIONS UNIT 4 + ADC P74305 35 1743-2 COMMUNICATIONS UNIT 5 + NUM $FFFF END OF TABLE + EJT + SPC 4 +* S T A N D A R D L O G I C A L U N I T S +* + ENT DUMALT +* +DUMALT EQU DUMALT(2) STANDARD DUMMY ALTERNATE +INPCOM EQU INPCOM(4) STANDARD INPUT COMMENT +OUTCOM EQU OUTCOM(4) STANDARD OUTPUT COMMENT +LBUNIT EQU LBUNIT(8) STANDARD LIBRARY UNIT +SCRTCH EQU SCRTCH(8) STANDARD SCRATCH UNIT +LSTOUT EQU LSTOUT(9) STANDARD LIST OUTPUT +STDINP EQU STDINP(10) STANDARD INPUT +BINOUT EQU BINOUT(11) STANDARD BINARY OUTPUT + EJT +* L I N E O N E T A B L E +* + SPC 1 +* + ENT LIN1V4 LINE 1 INTERRUPT ENTRY + SPC 1 +LIN1V4 LDQ* LN1TV4 PLACE THE PDT ADDRESS IN Q + LDA- 2,Q + STA- I + JMP- (I) TRANSFER CONTROL TO THE DRIVER CONTINUATOR + SPC 3 + ENT INVINT + SPC 1 +INVINT JMP- (ADISP) +* + SPC 4 + EQU LN1TV4(*) START OF TABLE + ADC P1711 1711 TELETYPE, 713-10 CRT + NUM $FFFF END OF TABLE + EJT +* P H Y S I C A L D E V I C E T A B L E S +* +* +* THE FOLLOWING SECTION CONTAINS THE PHYSICAL DEVICE TABLES +* AND INTERRUPT RESPONSE ROUTINES FOR EACH LOGICAL UNIT IN +* THE SYSTEM. +* +* LISTED BELOW ARE THE MANDATORY ENTRIES FOR ALL PHYSICAL +* DEVICE TABLES. ADDITIONAL ENTRIES REQUIRED BY EACH +* DRIVER MAY BE ADDED AFTER THE LAST ENTRY INDICATED. + SPC 3 +PHYSTB EQU PHYSTB(*) + EQU ELVL(0) 00 SCHEDULER CALL WITH DRIVER LEVEL + EQU EDIN(1) 01 DRIVER INITIATOR ENTRY + EQU EDCN(2) 02 DRIVER CONTINUATOR ENTRY + EQU EDPGM(3) 03 DRIVER DIAGNOSTIC ENTRY + EQU EDCLK(4) 04 DIAGNOSTIC CLOCK + EQU ELU(5) 05 LOGICAL UNIT + EQU EPTR(6) 06 PARAMETER LOCATION + EQU EWES(7) 07 CONVERTOR, EQUIPMENT, STATION + EQU EREQST(8) 08 REQUEST STATUS + EQU ESTAT1(9) 09 DRIVER STATUS + EQU ECCOR(10) 10 CURRENT LOCATION + EQU ELSTWD(11) 11 LAST LOCATION PLUS ONE + EQU ESTAT2(12) 12 DEVICE STATUS + EQU MASLGN(13) 13 DRIVER LENGTH (IF MASS MEMORY) + EQU MASSEC(14) 14 NAME ASSOCIATED WITH SECTOR NUMBER + EQU RETURN(15) 15 RESERVED FOR FNR AND CMR + SPC 3 +* LINK UNSELECTED PHYSICAL DEVICE TABLES + SPC 1 + ENT P18ECM + ENT P18PGA + ENT P18ADD + ENT P18MXP +P18ECM EQU P18ECM($7FFF) +P18PGA EQU P18PGA($7FFF) +P18ADD EQU P18ADD($7FFF) +P18MXP EQU P18MXP($7FFF) + EJT +* C O R E A L L O C A T O R +* + SPC 1 + ENT PCORE + EXT ICORE,ECORE + EQU SWAPT(0) SWAP TIME + SPC 1 +PCORE ADC $5207 00 SCHEDULER CALL + ADC ICORE 01 INITIATOR ADDRESS + ADC 0 02 CONTINUATOR ADDRESS - NOT USED + ADC ECORE 03 TIMEOUT ERROR ADDRESS + NUM -1 04 DIAGNOSTIC CLOCK + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION + NUM 0 07 CONVERTER, EQUIPMENT, STATION - NONE + NUM $00D6 08 REQUEST STATUS + NUM 0 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM 0 12 DEVICE STATUS + VFD X16/SWAPT-1 13 TIME BETWEEN SWAPS (NONE IF NEGATIVE) + NUM $7FFF 14 RESERVED + NUM 0 15 RESERVED FOR FNR AND CMR + EJT +* D U M M Y L O G I C A L U N I T +* + SPC 1 + EXT IDUMMY,CDUMMY,EDUMMY + SPC 1 +PDUMMY ADC $520A 00 SCHEDULER CALL + ADC IDUMMY 01 INITIATOR ADDRESS + ADC CDUMMY 02 CONTINUATOR ADDRESS + ADC EDUMMY 03 TIMEOUT ERROR ADDRESS + NUM -1 04 DIAGNOSTIC CLOCK - NOT USED + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION + NUM 0 07 CONVERTER, EQUIPMENT, STATION - NONE + NUM $01F6 08 REQUEST STATUS + NUM $8000 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM 0 12 DEVICE STATUS + NUM 0 13 RESERVED + NUM $7FFF 14 RESERVED + NUM 0 15 RESERVED FOR FNR AND CMR + EJT +* 1 7 1 1 T E L E T Y P E , 7 1 3 - 1 0 C R T +* + SPC 1 + EXT I1711,C1711,E1711 + EQU T713(04*$10) TYPE CODE - 713-10 CRT + EQU T1711(00*$10) TYPE CODE - 1711 TELETYPE + EQU U1711(X1711-LOG1A) + SPC 1 +P1711 ADC $520D 00 SCHEDULER CALL + ADC I1711 01 INITIATOR ADDRESS + ADC C1711 02 CONTINUATOR ADDRESS + ADC E1711 03 TIMEOUT ERROR ADDRESS + NUM -1 04 DIAGNOSTIC CLOCK + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION + NUM $0091 07 CONVERTER, EQUIPMENT, STATION + ADC $3006+T1711 08 REQUEST STATUS + NUM 0 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM 0 12 DEVICE STATUS + NUM 0 13 ERROR CODE AND STARTING LOCATION + NUM $7FFF 14 RESERVED + NUM 0 15 RESERVED FOR FNR AND CMR + NUM 0 16 DRIVER FLAGS + NUM 1 17 HARDWARE PARITY CHECK FLAG + ADC U1711 18 DIAGNOSTIC LU + EJT +* C O S Y D R I V E R +* + SPC 1 + EQU MCOSY1(1) +* + IFA MCOSY1,EQ,0 CORE RESIDENT DRIVER + EXT ICOSY + EQU LCOSY(0) + EQU SCOSY($7FFF) + EIF +* + IFA MCOSY1,EQ,1 MASS RESIDENT DRIVER + EXT MASDRV +ICOSY JMP+ MASDRV INITIATE DRIVER + EXT LCOSY + EXT SCOSY + EIF +* + EJT +* C O S Y D R I V E R , F I R S T U N I T +* + SPC 1 +PCOSY1 ADC $5208 00 SCHEDULER CALL + ADC ICOSY 01 INITIATOR ADDRESS + ADC 0 02 CONTINUATOR ADDRESS - NOT USED + ADC 0 03 TIMEOUT ERROR ADDRESS - NOT USED + NUM -1 04 DIAGNOSTIC CLOCK + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION + NUM 0 07 CONVERTER, EQUIPMENT, STATION - NONE + NUM $08B6 08 REQUEST STATUS + NUM 0 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM 0 12 DEVICE STATUS + ADC LCOSY 13 DRIVER LENGTH IF MASS MEMORY + ADC SCOSY 14 NAME ASSOCIATED WITH SECTOR NUMBER + NUM 0 15 RESERVED FOR FNR AND CMR + ADC PCOSY2 16 PHYSTB THREAD + NUM 0 17 SEQUENCE NUMBER + NUM 0 18 ID + NUM 0 19 ID-1 + NUM 0 20 ID-2 + NUM 0 21 NUMBER OF WORDS REQUESTED + NUM $5555 22 HOL-CHARACTER POINTER + NUM $5555 23 COSY-CHARACTER POINTER + NUM 0 24 R/W FLAG + NUM 1 25 PON5F + NUM 0 26 FSTCHR + NUM 0 27 ENDDCK + ADC INPBFA 28 COSY BUFFER LOCATION + ADC INPBFA 29 NEXT COSY WORD + NUM 0 30 HOL-BUFFER POINTER + NUM 1 31 INITIAL CALL FLAG + NUM 0 32 SEQUENCE FLAG NONZERO=NO SEQUENCE NUMBER +* + BZS INPBFA(192) 33 COSY BUFFER +* 224 COSY BUFFER + EJT +* C O S Y D R I V E R , S E C O N D U N I T +* + SPC 1 +PCOSY2 ADC $5208 00 SCHEDULER CALL + ADC ICOSY 01 INITIATOR ADDRESS + ADC 0 02 CONTINUATOR ADDRESS - NOT USED + ADC 0 03 TIMEOUT ERROR ADDRESS - NOT USED + NUM -1 04 DIAGNOSTIC CLOCK + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION + NUM 0 07 CONVERTER, EQUIPMENT, STATION - NONE + NUM $08B6 08 REQUEST STATUS + NUM 0 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM 0 12 DEVICE STATUS + ADC LCOSY 13 DRIVER LENGTH IF MASS MEMORY + ADC SCOSY 14 NAME ASSOCIATED WITH SECTOR NUMBER + NUM 0 15 RESERVED FOR FNR AND CMR + ADC PCOSY1 16 PHYSTB THREAD + NUM 0 17 SEQUENCE NUMBER + NUM 0 18 ID + NUM 0 19 ID-1 + NUM 0 20 ID-2 + NUM 0 21 NUMBER OF WORDS REQUESTED + NUM $5555 22 HOL-CHARACTER POINTER + NUM $5555 23 COSY-CHARACTER POINTER + NUM 0 24 R/W FLAG + NUM 1 25 PON5F + NUM 0 26 FSTCHR + NUM 0 27 ENDDCK + ADC INPBFB 28 COSY BUFFER LOCATION + ADC INPBFB 29 NEXT COSY WORD + NUM 0 30 HOL-BUFFER POINTER + NUM 1 31 INITIAL CALL FLAG + NUM 0 32 SEQUENCE FLAG NONZERO=NO SEQUENCE NUMBER +* + BZS INPBFB(192) 33 COSY BUFFER +* 224 COSY BUFFER + EJT +* 6 1 6 - 7 2 / 9 2 / 9 5 M A G T A P E +* + SPC 1 + EQU T6167(53*$10) TYPE CODE - 616-72 MAG TAPE + EQU T6169(54*$10) TYPE CODE - 616-92-95 MAG TAPE + EQU PHSREC(192) MAX. PHYSICAL RECORD SIZE FOR 7 TRACK + SPC 2 +BF1F33 BZS BF1F33(PHSREC*4/3+2) PACK/UNPACK BUFFER (7 TRACK) + SPC 1 + EQU M17323(1) +* + IFA M17323,EQ,0 CORE RESIDENT DRIVER + EXT I17323 + EXT C17323 + EXT E17323 + EQU L17323(0) + EQU S17323($7FFF) + EIF +* + IFA M17323,EQ,1 MASS RESIDENT DRIVER + EXT MASDRV + EXT MASCON + EXT MASERR +I17323 JMP+ MASDRV INITIATE DRIVER +C17323 JMP+ MASCON INTERRUPT RESPONSE +E17323 JMP+ MASERR TIMEOUT ERROR + EXT L17323 + EXT S17323 + EIF +* + SPC 2 +R17323 LDQ =XP73230 INTERRUPT RESPONSE FOR 616-72-92-95 MAG TAPE + JMP* (P73230+2) + EJT +* 6 1 6 - 7 2 / 9 2 / 9 5 M A G T A P E , U N I T 0 +* + EQU U73230(X73230-LOG1A) + SPC 1 +P73230 ADC $520A 00 SCHEDULER CALL + ADC I17323 01 INITIATOR ADDRESS + ADC C17323 02 CONTINUATOR ADDRESS + ADC E17323 03 TIMEOUT ERROR ADDRESS + NUM -1 04 DIAGNOSTIC CLOCK + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION + NUM $0381 07 CONVERTER, EQUIPMENT, STATION + ADC $0806+T6169 08 REQUEST STATUS + NUM 0 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM 0 12 DEVICE STATUS + ADC L17323 13 DRIVER LENGTH IF MASS MEMORY + ADC S17323 14 NAME ASSOCIATED WITH SECTOR NUMBER + NUM 0 15 RESERVED FOR FNR AND CMR + NUM $0448 16 REC. OPT., UNIT, FUNCTION, DENSITY CONTROL + ADC U73230 17 DIAGNOSTIC LU + ADC 0 18 ERROR CODE + NUM 0 19 RECOVERY RETURN ADDRESS + NUM 0 20 RECORD CHECKSUM + NUM $D554 21 FUNCTION DIRECTORY BITWORD + NUM 0 22 TEMPORARY CHECKSUM + ADC P73231 23 PHYSTB THREAD + ADC PHSREC 24 MAX PHY RECORD SIZE (7 TRACK) + ADC BF1F33 25 PACK/UNPACK BUFFER (7 TRACK) + EJT +* 6 1 6 - 7 2 / 9 2 / 9 5 M A G T A P E , U N I T 1 +* + EQU U73231(X73231-LOG1A) + SPC 1 +P73231 ADC $520A 00 SCHEDULER CALL + ADC I17323 01 INITIATOR ADDRESS + ADC C17323 02 CONTINUATOR ADDRESS + ADC E17323 03 TIMEOUT ERROR ADDRESS + NUM -1 04 DIAGNOSTIC CLOCK + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION + NUM $0381 07 CONVERTER, EQUIPMENT, STATION + ADC $0806+T6169 08 REQUEST STATUS + NUM 0 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM 0 12 DEVICE STATUS + ADC L17323 13 DRIVER LENGTH IF MASS MEMORY + ADC S17323 14 NAME ASSOCIATED WITH SECTOR NUMBER + NUM 0 15 RESERVED FOR FNR AND CMR + NUM $04C8 16 REC. OPT., UNIT, FUNCTION, DENSITY CONTROL + ADC U73231 17 DIAGNOSTIC LU + ADC 0 18 ERROR CODE + NUM 0 19 RECOVERY RETURN ADDRESS + NUM 0 20 RECORD CHECKSUM + NUM $D554 21 FUNCTION DIRECTORY BITWORD + NUM 0 22 TEMPORARY CHECKSUM + ADC P73232 23 PHYSTB THREAD + ADC PHSREC 24 MAX PHY RECORD SIZE (7 TRACK) + ADC BF1F33 25 PACK/UNPACK BUFFER (7 TRACK) + EJT +* 6 1 6 - 7 2 / 9 2 / 9 5 M A G T A P E , U N I T 2 +* + EQU U73232(X73232-LOG1A) + SPC 1 +P73232 ADC $520A 00 SCHEDULER CALL + ADC I17323 01 INITIATOR ADDRESS + ADC C17323 02 CONTINUATOR ADDRESS + ADC E17323 03 TIMEOUT ERROR ADDRESS + NUM -1 04 DIAGNOSTIC CLOCK + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION + NUM $0381 07 CONVERTER, EQUIPMENT, STATION + ADC $0806+T6169 08 REQUEST STATUS + NUM 0 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM 0 12 DEVICE STATUS + ADC L17323 13 DRIVER LENGTH IF MASS MEMORY + ADC S17323 14 NAME ASSOCIATED WITH SECTOR NUMBER + NUM 0 15 RESERVED FOR FNR AND CMR + NUM $0548 16 REC. OPT., UNIT, FUNCTION, DENSITY CONTROL + ADC U73232 17 DIAGNOSTIC LU + ADC 0 18 ERROR CODE + NUM 0 19 RECOVERY RETURN ADDRESS + NUM 0 20 RECORD CHECKSUM + NUM $D554 21 FUNCTION DIRECTORY BITWORD + NUM 0 22 TEMPORARY CHECKSUM + ADC P73233 23 PHYSTB THREAD + ADC PHSREC 24 MAX PHY RECORD SIZE (7 TRACK) + ADC BF1F33 25 PACK/UNPACK BUFFER (7 TRACK) + EJT +* 6 1 6 - 7 2 / 9 2 / 9 5 M A G T A P E , U N I T 3 +* + EQU U73233(X73233-LOG1A) + SPC 1 +P73233 ADC $520A 00 SCHEDULER CALL + ADC I17323 01 INITIATOR ADDRESS + ADC C17323 02 CONTINUATOR ADDRESS + ADC E17323 03 TIMEOUT ERROR ADDRESS + NUM -1 04 DIAGNOSTIC CLOCK + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION + NUM $0381 07 CONVERTER, EQUIPMENT, STATION + ADC $0806+T6169 08 REQUEST STATUS + NUM 0 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM 0 12 DEVICE STATUS + ADC L17323 13 DRIVER LENGTH IF MASS MEMORY + ADC S17323 14 NAME ASSOCIATED WITH SECTOR NUMBER + NUM 0 15 RESERVED FOR FNR AND CMR + NUM $05C8 16 REC. OPT., UNIT, FUNCTION, DENSITY CONTROL + ADC U73233 17 DIAGNOSTIC LU + ADC 0 18 ERROR CODE + NUM 0 19 RECOVERY RETURN ADDRESS + NUM 0 20 RECORD CHECKSUM + NUM $D554 21 FUNCTION DIRECTORY BITWORD + NUM 0 22 TEMPORARY CHECKSUM + ADC P73230 23 PHYSTB THREAD + ADC PHSREC 24 MAX PHY RECORD SIZE (7 TRACK) + ADC BF1F33 25 PACK/UNPACK BUFFER (7 TRACK) + EJT +* P S E U D O T A P E +* + SPC 1 + EQU PSTPD0(1) +* + IFA PSTPD0,EQ,0 CORE RESIDENT DRIVER + EXT IPSUDO + EQU LPSUDO(0) + EQU SPSUDO($7FFF) + EIF +* + IFA PSTPD0,EQ,1 MASS RESIDENT DRIVER + EXT MASDRV +IPSUDO JMP+ MASDRV INITIATE DRIVER + EXT LPSUDO + EXT SPSUDO + EIF +* + EJT +* P S E U D O T A P E , U N I T 0 +* + SPC 1 +PSUDO0 ADC $5208 00 SCHEDULER CALL + ADC IPSUDO 01 INITIATOR ADDRESS + ADC 0 02 CONTINUATOR ADDRESS - NOT USED + ADC 0 03 TIMEOUT ERROR ADDRESS - NOT USED + NUM -1 04 DIAGNOSTIC CLOCK - NOT USED + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION +PWES0 NUM 0 07 CONVERTER, EQUIPMENT, STATION - NONE + NUM $0A46 08 REQUEST STATUS + NUM 0 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM 1 12 DEVICE STATUS + ADC LPSUDO 13 DRIVER LENGTH IF MASS MEMORY + ADC SPSUDO 14 NAME ASSOCIATED WITH SECTOR NUMBER + NUM 0 15 RESERVED FOR FNR AND CMR + NUM 0 16 FILE NUMBER + NUM 0 17 TEMP FOR MOTION REQ PROCESSOR + NUM 0 18 TEMP FOR MOTION REQ PROCESSOR + BZS (12) 19 REQUEST BUFFER - REQBUF + NUM 0 31 BLOCK POINTER - BLKPTR + BZS (30) 32 POINTER BLOCK - PTRBLK +PSDRQ0 NUM 0 62 * + NUM $5400 63 * + NUM 0 64 * AREA TO BE STUFFED WITH + ADC PWES0 65 * FILE MANAGER AND DISK REQUESTS + BZS (6) 66 * + NUM $1400 72 * + RTJ* (PSDRQ0) 73 * + ADC 0 74 INPUT BUFFER ADDRESS + ADC PSUDO1 75 PHYSTB THREAD + EJT +* P S E U D O T A P E , U N I T 1 +* + SPC 1 +PSUDO1 ADC $5208 00 SCHEDULER CALL + ADC IPSUDO 01 INITIATOR ADDRESS + ADC 0 02 CONTINUATOR ADDRESS - NOT USED + ADC 0 03 TIMEOUT ERROR ADDRESS - NOT USED + NUM -1 04 DIAGNOSTIC CLOCK - NOT USED + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION +PWES1 NUM 0 07 CONVERTER, EQUIPMENT, STATION - NONE + NUM $0A46 08 REQUEST STATUS + NUM 0 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM 1 12 DEVICE STATUS + ADC LPSUDO 13 DRIVER LENGTH IF MASS MEMORY + ADC SPSUDO 14 NAME ASSOCIATED WITH SECTOR NUMBER + NUM 0 15 RESERVED FOR FNR AND CMR + NUM 0 16 FILE NUMBER + NUM 0 17 TEMP FOR MOTION REQ PROCESSOR + NUM 0 18 TEMP FOR MOTION REQ PROCESSOR + BZS (12) 19 REQUEST BUFFER - REQBUF + NUM 0 31 BLOCK POINTER - BLKPTR + BZS (30) 32 POINTER BLOCK - PTRBLK +PSDRQ1 NUM 0 62 * + NUM $5400 63 * + NUM 0 64 * AREA TO BE STUFFED WITH + ADC PWES1 65 * FILE MANAGER AND DISK REQUESTS + BZS (6) 66 * + NUM $1400 72 * + RTJ* (PSDRQ1) 73 * + ADC 0 74 INPUT BUFFER ADDRESS + ADC PSUDO2 75 PHYSTB THREAD + EJT +* P S E U D O T A P E , U N I T 2 +* + SPC 1 +PSUDO2 ADC $5208 00 SCHEDULER CALL + ADC IPSUDO 01 INITIATOR ADDRESS + ADC 0 02 CONTINUATOR ADDRESS - NOT USED + ADC 0 03 TIMEOUT ERROR ADDRESS - NOT USED + NUM -1 04 DIAGNOSTIC CLOCK - NOT USED + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION +PWES2 NUM 0 07 CONVERTER, EQUIPMENT, STATION - NONE + NUM $0A46 08 REQUEST STATUS + NUM 0 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM $C401 12 DEVICE STATUS + ADC LPSUDO 13 DRIVER LENGTH IF MASS MEMORY + ADC SPSUDO 14 NAME ASSOCIATED WITH SECTOR NUMBER + NUM 0 15 RESERVED FOR FNR AND CMR + NUM $7FF7 16 FILE NUMBER + NUM 0 17 TEMP FOR MOTION REQ PROCESSOR + NUM 0 18 TEMP FOR MOTION REQ PROCESSOR + BZS (12) 19 REQUEST BUFFER - REQBUF + NUM 0 31 BLOCK POINTER - BLKPTR + BZS (30) 32 POINTER BLOCK - PTRBLK +PSDRQ2 NUM 0 62 * + NUM $5400 63 * + NUM 0 64 * AREA TO BE STUFFED WITH + ADC PWES2 65 * FILE MANAGER AND DISK REQUESTS + BZS (6) 66 * + NUM $1400 72 * + RTJ* (PSDRQ2) 73 * + ADC 0 74 INPUT BUFFER ADDRESS + ADC PSUDO3 75 PHYSTB THREAD + EJT +* P S E U D O T A P E , U N I T 3 +* + SPC 1 +PSUDO3 ADC $5208 00 SCHEDULER CALL + ADC IPSUDO 01 INITIATOR ADDRESS + ADC 0 02 CONTINUATOR ADDRESS - NOT USED + ADC 0 03 TIMEOUT ERROR ADDRESS - NOT USED + NUM -1 04 DIAGNOSTIC CLOCK - NOT USED + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION +PWES3 NUM 0 07 CONVERTER, EQUIPMENT, STATION - NONE + NUM $0A46 08 REQUEST STATUS + NUM 0 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM $C401 12 DEVICE STATUS + ADC LPSUDO 13 DRIVER LENGTH IF MASS MEMORY + ADC SPSUDO 14 NAME ASSOCIATED WITH SECTOR NUMBER + NUM 0 15 RESERVED FOR FNR AND CMR + NUM $7FF8 16 FILE NUMBER + NUM 0 17 TEMP FOR MOTION REQ PROCESSOR + NUM 0 18 TEMP FOR MOTION REQ PROCESSOR + BZS (12) 19 REQUEST BUFFER - REQBUF + NUM 0 31 BLOCK POINTER - BLKPTR + BZS (30) 32 POINTER BLOCK - PTRBLK +PSDRQ3 NUM 0 62 * + NUM $5400 63 * + NUM 0 64 * AREA TO BE STUFFED WITH + ADC PWES3 65 * FILE MANAGER AND DISK REQUESTS + BZS (6) 66 * + NUM $1400 72 * + RTJ* (PSDRQ3) 73 * + ADC 0 74 INPUT BUFFER ADDRESS + ADC PSUDO0 75 PHYSTB THREAD + EJT +* P S E U D O D I S K U N I T 0 +* + SPC 1 + EXT IPSDSK,CPSDSK,EPSDSK + EQU SBIAS0(1) + SPC 1 +PSDSK0 ADC $5209 00 SCHEDULER CALL + ADC IPSDSK 01 INITIATOR ADDRESS + ADC CPSDSK 02 CONTINUATOR ADDRESS + ADC EPSDSK 03 TIMEOUT ERROR ADDRESS + NUM -1 04 DIAGNOSTIC CLOCK + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION + NUM 0 07 CONVERTER, EQUIPMENT, STATION - NONE + NUM $1486 08 REQUEST STATUS + NUM 0 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM 0 12 DEVICE STATUS + NUM 0 13 RESERVED + NUM 0 14 RESERVED + NUM 0 15 RESERVED FOR FNR AND CMR + NUM 0 16 NEW REQUEST + ADC CPSDSK 17 COMPLETION + NUM 0 18 THREAD + NUM 8 19 MASS MEMORY LOGICAL UNIT + NUM 0 20 NUMBER OF WORDS + NUM 0 21 BUFFER + NUM 0 22 NEW REQUEST MSB + NUM 0 23 NEW REQUEST LSB + NUM 0 24 CONTROL POINT FOR TIME SHARE SYSTEM + ADC SBIAS0 25 SECTOR BIAS + ADC SBIAS0*$60 26 WORD BIAS + NUM 9 27 COMPLETION LEVEL + EJT +* P S E U D O D I S K U N I T 1 +* + EQU SBIAS1(1) + SPC 1 +PSDSK1 ADC $5209 00 SCHEDULER CALL + ADC IPSDSK 01 INITIATOR ADDRESS + ADC CPSDSK 02 CONTINUATOR ADDRESS + ADC EPSDSK 03 TIMEOUT ERROR ADDRESS + NUM -1 04 DIAGNOSTIC CLOCK + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION + NUM 0 07 CONVERTER, EQUIPMENT, STATION - NONE + NUM $1486 08 REQUEST STATUS + NUM 0 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM 0 12 DEVICE STATUS + NUM 0 13 RESERVED + NUM 0 14 RESERVED + NUM 0 15 RESERVED FOR FNR AND CMR + NUM 0 16 NEW REQUEST + ADC CPSDSK 17 COMPLETION + NUM 0 18 THREAD + NUM 13 19 MASS MEMORY LOGICAL UNIT + NUM 0 20 NUMBER OF WORDS + NUM 0 21 BUFFER + NUM 0 22 NEW REQUEST MSB + NUM 0 23 NEW REQUEST LSB + NUM 0 24 CONTROL POINT FOR TIME SHARE SYSTEM + ADC SBIAS1 25 SECTOR BIAS + ADC SBIAS1*$60 26 WORD BIAS + NUM 9 27 COMPLETION LEVEL + EJT +* P S E U D O D I S K U N I T 2 +* + EQU SBIAS2(1) + SPC 1 +PSDSK2 ADC $5209 00 SCHEDULER CALL + ADC IPSDSK 01 INITIATOR ADDRESS + ADC CPSDSK 02 CONTINUATOR ADDRESS + ADC EPSDSK 03 TIMEOUT ERROR ADDRESS + NUM -1 04 DIAGNOSTIC CLOCK + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION + NUM 0 07 CONVERTER, EQUIPMENT, STATION - NONE + NUM $1486 08 REQUEST STATUS + NUM 0 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM 0 12 DEVICE STATUS + NUM 0 13 RESERVED + NUM 0 14 RESERVED + NUM 0 15 RESERVED FOR FNR AND CMR + NUM 0 16 NEW REQUEST + ADC CPSDSK 17 COMPLETION + NUM 0 18 THREAD + NUM 14 19 MASS MEMORY LOGICAL UNIT + NUM 0 20 NUMBER OF WORDS + NUM 0 21 BUFFER + NUM 0 22 NEW REQUEST MSB + NUM 0 23 NEW REQUEST LSB + NUM 0 24 CONTROL POINT FOR TIME SHARE SYSTEM + ADC SBIAS2 25 SECTOR BIAS + ADC SBIAS2*$60 26 WORD BIAS + NUM 9 27 COMPLETION LEVEL + EJT +* P S E U D O D I S K U N I T 3 +* + EQU SBIAS3(1) + SPC 1 +PSDSK3 ADC $5209 00 SCHEDULER CALL + ADC IPSDSK 01 INITIATOR ADDRESS + ADC CPSDSK 02 CONTINUATOR ADDRESS + ADC EPSDSK 03 TIMEOUT ERROR ADDRESS + NUM -1 04 DIAGNOSTIC CLOCK + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION + NUM 0 07 CONVERTER, EQUIPMENT, STATION - NONE + NUM $1486 08 REQUEST STATUS + NUM 0 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM 0 12 DEVICE STATUS + NUM 0 13 RESERVED + NUM 0 14 RESERVED + NUM 0 15 RESERVED FOR FNR AND CMR + NUM 0 16 NEW REQUEST + ADC CPSDSK 17 COMPLETION + NUM 0 18 THREAD + NUM 15 19 MASS MEMORY LOGICAL UNIT + NUM 0 20 NUMBER OF WORDS + NUM 0 21 BUFFER + NUM 0 22 NEW REQUEST MSB + NUM 0 23 NEW REQUEST LSB + NUM 0 24 CONTROL POINT FOR TIME SHARE SYSTEM + ADC SBIAS3 25 SECTOR BIAS + ADC SBIAS3*$60 26 WORD BIAS + NUM 9 27 COMPLETION LEVEL + EJT +* 1 7 3 3 - 2 / 8 5 6 D I S K +* + SPC 1 + ENT P332D0 + EXT I17332,C17332,E17332 + EQU T8562(15*$10) TYPE CODE - 1733-2 856-2 + EQU T8564(16*$10) TYPE CODE - 1733-2 856-4 + SPC 2 +R17332 LDQ =XP73320 INTERRUPT RESPONSE FOR 1733-2 DISK + JMP* (P73320+2) + EJT +* 1 7 3 3 - 2 / 8 5 6 D I S K - U N I T 0 +* + SPC 1 + EQU P332D0(*) +P73320 ADC $5209 00 SCHEDULER CALL + ADC I17332 01 INITIATOR ADDRESS + ADC C17332 02 CONTINUATOR ADDRESS + ADC E17332 03 TIMEOUT ERROR ADDRESS + NUM -1 04 DIAGNOSTIC CLOCK + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION + NUM $0181 07 CONVERTER, EQUIPMENT, STATION + ADC $1006+T8564 08 REQUEST STATUS + NUM $0200 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM 0 12 DEVICE STATUS + NUM 0 13 ERROR COUNTER + NUM 0 14 DATA TRANSFER FUNCTION + NUM 0 15 SECTOR NUMBER OR FNR RETURN + NUM $8100 16 NO COMPARE FLAG / DIRECTOR FUNCTION + NUM 0 17 TEMSEC - USED BY WORD ADDRESSING + NUM 0 18 OVERLAY AREA (SCHEDULER CALL) + NUM 0 19 OVERLAY AREA (COMPLETION ADDRESS) + NUM 0 20 OVERLAY AREA (THREAD) + NUM 0 21 OVERLAY AREA (LOGICAL UNIT) + ADC P73321 22 PHYSTB THREAD + NUM 0 23 RETURN ADDRESS FOR DATA TRANSFER + NUM $5BFB 24 FIRST SECTOR ADDRESS ON DISK 1 + NUM 0 25 LAST DATA TRANSFER FUNCTION + NUM 0 26 BUFFER SIZE FOR SPLIT TRANSFERS + NUM 0 27 CYLINDER ADDRESS FOR TRANSFER + NUM 1 28 MASK FOR THIS UNITS SEEK COMPLETE BIT + ADC BF332A 29 ADDRESS OF 96 WORD BUFFER + NUM 0 30 TEMPORARY FOR WORD ADDRESSING + NUM 0 31 TEMPORARY FOR WORD ADDRESSING + NUM 0 32 TEMPORARY FOR WORD ADDRESSING + NUM 0 33 REQUEST CODE + NUM 0 34 REQUEST PRIORITY + NUM 0 35 STARTING SECTOR FOR COMPARE OR RETRY + NUM 0 36 FWA OF TRANSFER FOR COMPARE OR RETRY + NUM 0 37 ERROR COUNTER + NUM 0 38 DATA TRANSFER FUNCTION CODE + NUM $FFFF 39 SECTOR NUMBER CURRENTLY IN BUFFER + NUM 0 40 LAST VALUE OF CYLINDER ADDRESS STATUS + NUM 0 41 LAST VALUE OF C W A STATUS + NUM 0 42 LAST VALUE OF CHECKWORD STATUS + NUM 0 43 LAST VALUE OF DRIVE CYLINDER STATUS +* + BZS BF332A(96) 44 BUFFER FOR WORD ADDRESSING +* 139 BUFFER FOR WORD ADDRESSING + EJT +* 1 7 3 3 - 2 / 8 5 6 D I S K - U N I T 1 +* + SPC 1 +P73321 ADC $5209 00 SCHEDULER CALL + ADC I17332 01 INITIATOR ADDRESS + ADC C17332 02 CONTINUATOR ADDRESS + ADC E17332 03 TIMEOUT ERROR ADDRESS + NUM -1 04 DIAGNOSTIC CLOCK + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION + NUM $0181 07 CONVERTER, EQUIPMENT, STATION + ADC $1006+T8564 08 REQUEST STATUS + NUM $0200 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM 0 12 DEVICE STATUS + NUM 0 13 ERROR COUNTER + NUM 0 14 DATA TRANSFER FUNCTION + NUM 0 15 SECTOR NUMBER OR FNR RETURN + NUM $8300 16 NO COMPARE FLAG / DIRECTOR FUNCTION + NUM 0 17 TEMSEC - USED BY WORD ADDRESSING + NUM 0 18 OVERLAY AREA (SCHEDULER CALL) + NUM 0 19 OVERLAY AREA (COMPLETION ADDRESS) + NUM 0 20 OVERLAY AREA (THREAD) + NUM 0 21 OVERLAY AREA (LOGICAL UNIT) + ADC P73322 22 PHYSTB THREAD + NUM 0 23 RETURN ADDRESS FOR DATA TRANSFER + NUM $5BFB 24 FIRST SECTOR ADDRESS ON DISK 1 + NUM 0 25 LAST DATA TRANSFER FUNCTION + NUM 0 26 BUFFER SIZE FOR SPLIT TRANSFERS + NUM 0 27 CYLINDER ADDRESS FOR TRANSFER + NUM 2 28 MASK FOR THIS UNITS SEEK COMPLETE BIT + ADC BF332B 29 ADDRESS OF 96 WORD BUFFER + NUM 0 30 TEMPORARY FOR WORD ADDRESSING + NUM 0 31 TEMPORARY FOR WORD ADDRESSING + NUM 0 32 TEMPORARY FOR WORD ADDRESSING + NUM 0 33 REQUEST CODE + NUM 0 34 REQUEST PRIORITY + NUM 0 35 STARTING SECTOR FOR COMPARE OR RETRY + NUM 0 36 FWA OF TRANSFER FOR COMPARE OR RETRY + NUM 0 37 ERROR COUNTER + NUM 0 38 DATA TRANSFER FUNCTION CODE + NUM $FFFF 39 SECTOR NUMBER CURRENTLY IN BUFFER + NUM 0 40 LAST VALUE OF CYLINDER ADDRESS STATUS + NUM 0 41 LAST VALUE OF C W A STATUS + NUM 0 42 LAST VALUE OF CHECKWORD STATUS + NUM 0 43 LAST VALUE OF DRIVE CYLINDER STATUS +* + BZS BF332B(96) 44 BUFFER FOR WORD ADDRESSING +* 139 BUFFER FOR WORD ADDRESSING + EJT +* 1 7 3 3 - 2 / 8 5 6 D I S K - U N I T 2 +* + SPC 1 +P73322 ADC $5209 00 SCHEDULER CALL + ADC I17332 01 INITIATOR ADDRESS + ADC C17332 02 CONTINUATOR ADDRESS + ADC E17332 03 TIMEOUT ERROR ADDRESS + NUM -1 04 DIAGNOSTIC CLOCK + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION + NUM $0181 07 CONVERTER, EQUIPMENT, STATION + ADC $1006+T8564 08 REQUEST STATUS + NUM $0200 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM 0 12 DEVICE STATUS + NUM 0 13 ERROR COUNTER + NUM 0 14 DATA TRANSFER FUNCTION + NUM 0 15 SECTOR NUMBER OR FNR RETURN + NUM $8500 16 NO COMPARE FLAG / DIRECTOR FUNCTION + NUM 0 17 TEMSEC - USED BY WORD ADDRESSING + NUM 0 18 OVERLAY AREA (SCHEDULER CALL) + NUM 0 19 OVERLAY AREA (COMPLETION ADDRESS) + NUM 0 20 OVERLAY AREA (THREAD) + NUM 0 21 OVERLAY AREA (LOGICAL UNIT) + ADC P73323 22 PHYSTB THREAD + NUM 0 23 RETURN ADDRESS FOR DATA TRANSFER + NUM $5BFB 24 FIRST SECTOR ADDRESS ON DISK 1 + NUM 0 25 LAST DATA TRANSFER FUNCTION + NUM 0 26 BUFFER SIZE FOR SPLIT TRANSFERS + NUM 0 27 CYLINDER ADDRESS FOR TRANSFER + NUM 4 28 MASK FOR THIS UNITS SEEK COMPLETE BIT + ADC BF332C 29 ADDRESS OF 96 WORD BUFFER + NUM 0 30 TEMPORARY FOR WORD ADDRESSING + NUM 0 31 TEMPORARY FOR WORD ADDRESSING + NUM 0 32 TEMPORARY FOR WORD ADDRESSING + NUM 0 33 REQUEST CODE + NUM 0 34 REQUEST PRIORITY + NUM 0 35 STARTING SECTOR FOR COMPARE OR RETRY + NUM 0 36 FWA OF TRANSFER FOR COMPARE OR RETRY + NUM 0 37 ERROR COUNTER + NUM 0 38 DATA TRANSFER FUNCTION CODE + NUM $FFFF 39 SECTOR NUMBER CURRENTLY IN BUFFER + NUM 0 40 LAST VALUE OF CYLINDER ADDRESS STATUS + NUM 0 41 LAST VALUE OF C W A STATUS + NUM 0 42 LAST VALUE OF CHECKWORD STATUS + NUM 0 43 LAST VALUE OF DRIVE CYLINDER STATUS +* + BZS BF332C(96) 44 BUFFER FOR WORD ADDRESSING +* 139 BUFFER FOR WORD ADDRESSING + EJT +* 1 7 3 3 - 2 / 8 5 6 D I S K - U N I T 3 +* + SPC 1 +P73323 ADC $5209 00 SCHEDULER CALL + ADC I17332 01 INITIATOR ADDRESS + ADC C17332 02 CONTINUATOR ADDRESS + ADC E17332 03 TIMEOUT ERROR ADDRESS + NUM -1 04 DIAGNOSTIC CLOCK + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION + NUM $0181 07 CONVERTER, EQUIPMENT, STATION + ADC $1006+T8564 08 REQUEST STATUS + NUM $0200 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM 0 12 DEVICE STATUS + NUM 0 13 ERROR COUNTER + NUM 0 14 DATA TRANSFER FUNCTION + NUM 0 15 SECTOR NUMBER OR FNR RETURN + NUM $8700 16 NO COMPARE FLAG / DIRECTOR FUNCTION + NUM 0 17 TEMSEC - USED BY WORD ADDRESSING + NUM 0 18 OVERLAY AREA (SCHEDULER CALL) + NUM 0 19 OVERLAY AREA (COMPLETION ADDRESS) + NUM 0 20 OVERLAY AREA (THREAD) + NUM 0 21 OVERLAY AREA (LOGICAL UNIT) + ADC P73320 22 PHYSTB THREAD + NUM 0 23 RETURN ADDRESS FOR DATA TRANSFER + NUM $5BFB 24 FIRST SECTOR ADDRESS ON DISK 1 + NUM 0 25 LAST DATA TRANSFER FUNCTION + NUM 0 26 BUFFER SIZE FOR SPLIT TRANSFERS + NUM 0 27 CYLINDER ADDRESS FOR TRANSFER + NUM 8 28 MASK FOR THIS UNITS SEEK COMPLETE BIT + ADC BF332D 29 ADDRESS OF 96 WORD BUFFER + NUM 0 30 TEMPORARY FOR WORD ADDRESSING + NUM 0 31 TEMPORARY FOR WORD ADDRESSING + NUM 0 32 TEMPORARY FOR WORD ADDRESSING + NUM 0 33 REQUEST CODE + NUM 0 34 REQUEST PRIORITY + NUM 0 35 STARTING SECTOR FOR COMPARE OR RETRY + NUM 0 36 FWA OF TRANSFER FOR COMPARE OR RETRY + NUM 0 37 ERROR COUNTER + NUM 0 38 DATA TRANSFER FUNCTION CODE + NUM $FFFF 39 SECTOR NUMBER CURRENTLY IN BUFFER + NUM 0 40 LAST VALUE OF CYLINDER ADDRESS STATUS + NUM 0 41 LAST VALUE OF C W A STATUS + NUM 0 42 LAST VALUE OF CHECKWORD STATUS + NUM 0 43 LAST VALUE OF DRIVE CYLINDER STATUS +* + BZS BF332D(96) 44 BUFFER FOR WORD ADDRESSING +* 139 BUFFER FOR WORD ADDRESSING + EJT +* 1 7 5 2 D R U M +* + EXT I1752,C1752,E1752 + SPC 2 +R1752 LDQ =XP1752 INTERRUPT RESPONSE FOR 1752 DRUM + JMP* (P1752+2) + EJT +* 1 7 5 2 D R U M +* + SPC 1 +P1752 ADC $5209 00 SCHEDULER CALL + ADC I1752 01 INITIATOR ADDRESS + ADC C1752 02 CONTINUATOR ADDRESS + ADC E1752 03 TIMEOUT ERROR ADDRESS + NUM -1 04 DIAGNOSTIC CLOCK + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION + NUM $0101 07 CONVERTER, EQUIPMENT, STATION + NUM $1036 08 REQUEST STATUS + NUM 0 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM 0 12 DEVICE STATUS + NUM 0 13 RESERVED + NUM $7FFF 14 RESERVED + NUM 0 15 RESERVED FOR FNR AND CMR + NUM 0 16 SECTOR NUMBER + NUM 0 17 DATA TRANSFER FUNCTION + NUM 0 18 COUNTER + NUM 0 19 FULL SECTOR COUNTER + NUM 0 20 SAVE ECCOR + NUM 0 21 SAVE ELSTWD + NUM 0 22 OVERLAY AREA (SCHEDULER CALL) + NUM 0 23 OVERLAY AREA (COMPLETION ADDRESS) + NUM 0 24 OVERLAY AREA (THREAD) + NUM 0 25 OVERLAY AREA (LOGICAL UNIT) + NUM 0 26 UNSUCCESSFUL I/O ATTEMPT COUNTER + NUM 0 27 EQUIPMENT STATUS (ON LAST ERROR) + NUM 0 28 CORE STATUS (ON LAST ERROR) + NUM 0 29 SECTOR STATUS (ON LAST ERROR) + NUM 0 30 DATA STATUS (ON LAST ERROR) + EJT +* 1 7 4 2 - 3 0 / 1 2 0 L I N E P R I N T E R +* + SPC 1 + EQU T4230(17*$10) TYPE CODE - 1742-30 + EQU T4212(18*$10) TYPE CODE - 1742-120 + EQU U42312(X42312-LOG1A) + EQU F42312(FTN742-LOG1A) + SPC 1 + EQU M42312(1) +* + IFA M42312,EQ,0 CORE RESIDENT DRIVER + EXT I42312 + EXT C42312 + EXT E42312 + EQU L42312(0) + EQU S42312($7FFF) + EIF +* + IFA M42312,EQ,1 MASS RESIDENT DRIVER + EXT MASDRV + EXT MASCON + EXT MASERR +I42312 JMP+ MASDRV INITIATE DRIVER +C42312 JMP+ MASCON INTERRUPT RESPONSE +E42312 JMP+ MASERR TIMEOUT ERROR + EXT L42312 + EXT S42312 + EIF +* + SPC 2 +R42312 LDQ =XP42312 INTERRUPT RESPONSE FOR 1742-30/120 PRINTER + JMP* (P42312+2) + EJT +* 1 7 4 2 - 3 0 / 1 2 0 L I N E P R I N T E R +* + SPC 1 +P42312 ADC $520A 00 SCHEDULER CALL + ADC I42312 01 INITIATOR ADDRESS + ADC C42312 02 CONTINUATOR ADDRESS + ADC E42312 03 TIMEOUT ERROR ADDRESS + NUM -1 04 DIAGNOSTC CLOCK + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION + NUM $0201 07 CONVERTER, EQUIPMENT, STATION + ADC $2804+T4212 08 REQUEST STATUS + NUM 0 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM 0 12 DEVICE STATUS + ADC L42312 13 DRIVER LENGTH IF MASS MEMORY + ADC S42312 14 NAME ASSOCIATED WITH SECTOR NUMBER + NUM 0 15 BLANK DETECTION INDICATOR + NUM 0 16 LINE COUNT + NUM 0 17 TEMPORARY STORAGE FOR CONTROL FUNC. + NUM 0 18 CHARACTER COUNT + ADC F42312 19 FORTRAN LOGICAL UNIT + NUM 0 20 NUMBER OF BLANKS TO BE SENT + NUM 60 21 MAXIMUM NUMBER OF LINES PER PAGE + NUM 136 22 NUMBER OF CHARACTERS PER LINE + ADC U42312 23 DIAGNOSTIC LU + EJT +* +* F O R T R A N L I N E P R I N T E R + SPC 2 +* PHYSTB SHARED WITH 1742-30/120 LINE PRINTER + EJT +* 1 7 2 8 / 4 3 0 C A R D R E A D E R / P U N C H +* + SPC 1 + EQU U1728(X1728-LOG1A) + SPC 1 + EQU M1728(1) +* + IFA M1728,EQ,0 CORE RESIDENT DRIVER + EXT I1728 + EXT C1728 + EXT E1728 + EQU L1728(0) + EQU S1728($7FFF) + EIF +* + IFA M1728,EQ,1 MASS RESIDENT DRIVER + EXT MASDRV + EXT MASCON + EXT MASERR +I1728 JMP+ MASDRV INITIATE DRIVER +C1728 JMP+ MASCON INTERRUPT RESPONSE +E1728 JMP+ MASERR TIMEOUT ERROR + EXT L1728 + EXT S1728 + EIF +* + SPC 2 +R1728 LDQ =XP1728 INTERRUPT RESPONSE FOR 1728-430 READ/PUNCH + JMP* (P1728+2) + EJT +* 1 7 2 8 / 4 3 0 C A R D R E A D E R / P U N C H +* + SPC 1 +P1728 ADC $520E 00 SCHEDULER CALL + ADC I1728 01 INITIATOR ADDRESS + ADC C1728 02 CONTINUATOR ADDRESS + ADC E1728 03 TIMEOUT ERROR ADDRESS + NUM -1 04 DIAGNOSTIC CLOCK + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION + NUM $0521 07 CONVERTER, EQUIPMENT, STATION + NUM $18C6 08 REQUEST STATUS + NUM 0 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM 0 12 DEVICE STATUS + ADC L1728 13 DRIVER LENGTH IF MASS MEMORY + ADC S1728 14 NAME ASSOCIATED WITH SECTOR NUMBER + NUM 0 15 PACKING CYCLE ADDRESS STORAGE + NUM $800F 16 READ/PUNCH SWITCH, EOF FORMAT (6789) + ADC BUF28 17 FIRST LOCATION OF 80 WORD I / O BUFFER + NUM 0 18 CURRENT CARD BUFFER LOCATION + NUM 0 19 SUBROUTINE RETURN ADDRESS + NUM 0 20 CARD SEQUENCE NUMBER + NUM 0 21 RECORD LENGTH + NUM 0 22 CHECKSUM ACCUMULATOR + NUM 0 23 TEMPORARY STORAGE + NUM 0 24 OUTPUT OFFSET SWITCH + NUM 0 25 ERROR RETURN + NUM 0 26 HOLLERITH ERROR FLAG + ADC U1728 27 DIAGNOSTIC LU +* + BZS BUF28(80) 28 INPUT / OUTPUT BUFFER +* 107 INPUT / OUTPUT BUFFER + EJT +* 1 7 4 3 - 2 C O M M U N I C A T I O N S +* +* C O N T R O L L E R , U N I T 0 +* + EXT I17432,C17432,E17432 + ENT CABF00 + ENT P74300 + EQU U74300(X74300-LOG1A) + SPC 1 +R17432 LDQ =XP74300 INTERRUPT RESPONSE FOR 1743-2 + JMP* (P74300+2) + SPC 2 +P74300 ADC $520A 00 SCHEDULER CALL + ADC I17432 01 INITIATOR ADDRESS + ADC C17432 02 CONTINUATOR ADDRESS + ADC E17432 03 TIMEOUT ERROR ADDRESS + NUM -1 04 DIAGNOSTIC CLOCK + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION + NUM $0282 07 CONVERTER, EQUIPMENT, STATION + NUM $3376 08 REQUEST STATUS + NUM 0 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + ADC 0 11 LAST LOCATION PLUS ONE + NUM 0 12 DEVICE STATUS + NUM 0 13 RESERVED + NUM $7FFF 14 RESERVED + NUM 0 15 RESERVED FOR FNR AND CMR + ADC CABF00 16 START OF BUFFER ADDRESS + ADC U74300 17 DIAGNOSTIC LOGICAL UNIT + NUM $0000 18 TERMINATION CHARACTERS + NUM 0 19 ERROR CODE STORAGE + NUM $8000 20 TYPE OF I/O - = FULL DUPLEX + NUM $023C 21 OUTPUT/INPUT DIAG CLOCK TIME + NUM $0800 22 MOTION WORD 1 - BACKSPACE RECORD + NUM $1900 23 MOTION WORD 2 - WRITE EOF + NUM 0 24 MOTION WORD 3 - REWIND + NUM $0D00 25 MOTION WORD 4 - REWIND/UNLOAD + NUM $0A00 26 MOTION WORD 5 - ADVANCE FILE + NUM $1A00 27 MOTION WORD 6 - BACKSPACE FILE + NUM $1500 28 MOTION WORD 7 - ADVANCE RECORD + NUM $0000 29 TIMESHARE FLAG AND PRIORITY LEVEL + NUM 40 30 LENGTH OF INPUT BUFFER + ADC 0 31 ENTRY POINT OF INPUT HANDLER + NUM 0 32 CURRENT MOTION WORD + ADC L74300-LOG1A 33 ACTUAL LOGICAL UNIT + BZS CABF00(40) 34 INPUT BUFFER +* 73 INPUT BUFFER + NUM 0 74 INPUT LENGTH + ADC P74301 75 PHYSTB THREAD + EJT +* 1 7 4 3 - 2 C O M M U N I C A T I O N S +* +* C O N T R O L L E R , U N I T 1 +* + ENT CABF01 + EQU U74301(X74301-LOG1A) + SPC 1 +P74301 ADC $520A 00 SCHEDULER CALL + ADC I17432 01 INITIATOR ADDRESS + ADC C17432 02 CONTINUATOR ADDRESS + ADC E17432 03 TIMEOUT ERROR ADDRESS + NUM -1 04 DIAGNOSTIC CLOCK + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION + NUM $0292 07 CONVERTER, EQUIPMENT, STATION + NUM $3376 08 REQUEST STATUS + NUM 0 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + ADC 0 11 LAST LOCATION PLUS ONE + NUM 0 12 DEVICE STATUS + NUM 0 13 RESERVED + NUM $7FFF 14 RESERVED + NUM 0 15 RESERVED FOR FNR AND CMR + ADC CABF01 16 START OF BUFFER ADDRESS + ADC U74301 17 DIAGNOSTIC LOGICAL UNIT + NUM $0000 18 TERMINATION CHARACTERS + NUM 0 19 ERROR CODE STORAGE + NUM $8000 20 TYPE OF I/O - = FULL DUPLEX + NUM $023C 21 OUTPUT/INPUT DIAG CLOCK TIME + NUM $0800 22 MOTION WORD 1 - BACKSPACE RECORD + NUM $1900 23 MOTION WORD 2 - WRITE EOF + NUM 0 24 MOTION WORD 3 - REWIND + NUM $0D00 25 MOTION WORD 4 - REWIND/UNLOAD + NUM $0A00 26 MOTION WORD 5 - ADVANCE FILE + NUM $1A00 27 MOTION WORD 6 - BACKSPACE FILE + NUM $1500 28 MOTION WORD 7 - ADVANCE RECORD + NUM $0000 29 TIMESHARE FLAG AND PRIORITY LEVEL + NUM 40 30 LENGTH OF INPUT BUFFER + ADC 0 31 ENTRY POINT OF INPUT HANDLER + NUM 0 32 CURRENT MOTION WORD + ADC L74301-LOG1A 33 ACTUAL LOGICAL UNIT + BZS CABF01(40) 34 INPUT BUFFER +* 73 INPUT BUFFER + NUM 0 74 INPUT LENGTH + ADC P74302 75 PHYSTB THREAD + EJT +* 1 7 4 3 - 2 C O M M U N I C A T I O N S +* +* C O N T R O L L E R , U N I T 2 +* + ENT CABF02 + EQU U74302(X74302-LOG1A) + SPC 1 +P74302 ADC $520A 00 SCHEDULER CALL + ADC I17432 01 INITIATOR ADDRESS + ADC C17432 02 CONTINUATOR ADDRESS + ADC E17432 03 TIMEOUT ERROR ADDRESS + NUM -1 04 DIAGNOSTIC CLOCK + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION + NUM $02A2 07 CONVERTER, EQUIPMENT, STATION + NUM $3376 08 REQUEST STATUS + NUM 0 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + ADC 0 11 LAST LOCATION PLUS ONE + NUM 0 12 DEVICE STATUS + NUM 0 13 RESERVED + NUM $7FFF 14 RESERVED + NUM 0 15 RESERVED FOR FNR AND CMR + ADC CABF02 16 START OF BUFFER ADDRESS + ADC U74302 17 DIAGNOSTIC LOGICAL UNIT + NUM $0000 18 TERMINATION CHARACTERS + NUM 0 19 ERROR CODE STORAGE + NUM $8000 20 TYPE OF I/O - = FULL DUPLEX + NUM $023C 21 OUTPUT/INPUT DIAG CLOCK TIME + NUM $0800 22 MOTION WORD 1 - BACKSPACE RECORD + NUM $1900 23 MOTION WORD 2 - WRITE EOF + NUM 0 24 MOTION WORD 3 - REWIND + NUM $0D00 25 MOTION WORD 4 - REWIND/UNLOAD + NUM $0A00 26 MOTION WORD 5 - ADVANCE FILE + NUM $1A00 27 MOTION WORD 6 - BACKSPACE FILE + NUM $1500 28 MOTION WORD 7 - ADVANCE RECORD + NUM $0000 29 TIMESHARE FLAG AND PRIORITY LEVEL + NUM 40 30 LENGTH OF INPUT BUFFER + ADC 0 31 ENTRY POINT OF INPUT HANDLER + NUM 0 32 CURRENT MOTION WORD + ADC L74302-LOG1A 33 ACTUAL LOGICAL UNIT + BZS CABF02(40) 34 INPUT BUFFER +* 73 INPUT BUFFER + NUM 0 74 INPUT LENGTH + ADC P74303 75 PHYSTB THREAD + EJT +* 1 7 4 3 - 2 C O M M U N I C A T I O N S +* +* C O N T R O L L E R , U N I T 3 +* + ENT CABF03 + EQU U74303(X74303-LOG1A) + SPC 1 +P74303 ADC $520A 00 SCHEDULER CALL + ADC I17432 01 INITIATOR ADDRESS + ADC C17432 02 CONTINUATOR ADDRESS + ADC E17432 03 TIMEOUT ERROR ADDRESS + NUM -1 04 DIAGNOSTIC CLOCK + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION + NUM $02B2 07 CONVERTER, EQUIPMENT, STATION + NUM $3376 08 REQUEST STATUS + NUM 0 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + ADC 0 11 LAST LOCATION PLUS ONE + NUM 0 12 DEVICE STATUS + NUM 0 13 RESERVED + NUM $7FFF 14 RESERVED + NUM 0 15 RESERVED FOR FNR AND CMR + ADC CABF03 16 START OF BUFFER ADDRESS + ADC U74303 17 DIAGNOSTIC LOGICAL UNIT + NUM $0000 18 TERMINATION CHARACTERS + NUM 0 19 ERROR CODE STORAGE + NUM $8000 20 TYPE OF I/O - = FULL DUPLEX + NUM $023C 21 OUTPUT/INPUT DIAG CLOCK TIME + NUM $0800 22 MOTION WORD 1 - BACKSPACE RECORD + NUM $1900 23 MOTION WORD 2 - WRITE EOF + NUM 0 24 MOTION WORD 3 - REWIND + NUM $0D00 25 MOTION WORD 4 - REWIND/UNLOAD + NUM $0A00 26 MOTION WORD 5 - ADVANCE FILE + NUM $1A00 27 MOTION WORD 6 - BACKSPACE FILE + NUM $1500 28 MOTION WORD 7 - ADVANCE RECORD + NUM $0000 29 TIMESHARE FLAG AND PRIORITY LEVEL + NUM 40 30 LENGTH OF INPUT BUFFER + ADC 0 31 ENTRY POINT OF INPUT HANDLER + NUM 0 32 CURRENT MOTION WORD + ADC L74303-LOG1A 33 ACTUAL LOGICAL UNIT + BZS CABF03(40) 34 INPUT BUFFER +* 73 INPUT BUFFER + NUM 0 74 INPUT LENGTH + ADC P74304 75 PHYSTB THREAD + EJT +* 1 7 4 3 - 2 C O M M U N I C A T I O N S +* +* C O N T R O L L E R , U N I T 4 +* + ENT CABF04 + EQU U74304(X74304-LOG1A) + SPC 1 +P74304 ADC $520A 00 SCHEDULER CALL + ADC I17432 01 INITIATOR ADDRESS + ADC C17432 02 CONTINUATOR ADDRESS + ADC E17432 03 TIMEOUT ERROR ADDRESS + NUM -1 04 DIAGNOSTIC CLOCK + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION + NUM $02C2 07 CONVERTER, EQUIPMENT, STATION + NUM $3376 08 REQUEST STATUS + NUM 0 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + ADC 0 11 LAST LOCATION PLUS ONE + NUM 0 12 DEVICE STATUS + NUM 0 13 RESERVED + NUM $7FFF 14 RESERVED + NUM 0 15 RESERVED FOR FNR AND CMR + ADC CABF04 16 START OF BUFFER ADDRESS + ADC U74304 17 DIAGNOSTIC LOGICAL UNIT + NUM $0000 18 TERMINATION CHARACTERS + NUM 0 19 ERROR CODE STORAGE + NUM $8000 20 TYPE OF I/O - = FULL DUPLEX + NUM $023C 21 OUTPUT/INPUT DIAG CLOCK TIME + NUM $0800 22 MOTION WORD 1 - BACKSPACE RECORD + NUM $1900 23 MOTION WORD 2 - WRITE EOF + NUM 0 24 MOTION WORD 3 - REWIND + NUM $0D00 25 MOTION WORD 4 - REWIND/UNLOAD + NUM $0A00 26 MOTION WORD 5 - ADVANCE FILE + NUM $1A00 27 MOTION WORD 6 - BACKSPACE FILE + NUM $1500 28 MOTION WORD 7 - ADVANCE RECORD + NUM $0000 29 TIMESHARE FLAG AND PRIORITY LEVEL + NUM 40 30 LENGTH OF INPUT BUFFER + ADC 0 31 ENTRY POINT OF INPUT HANDLER + NUM 0 32 CURRENT MOTION WORD + ADC L74304-LOG1A 33 ACTUAL LOGICAL UNIT + BZS CABF04(40) 34 INPUT BUFFER +* 73 INPUT BUFFER + NUM 0 74 INPUT LENGTH + ADC P74305 75 PHYSTB THREAD + EJT +* 1 7 4 3 - 2 C O M M U N I C A T I O N S +* +* C O N T R O L L E R , U N I T 5 +* + ENT CABF05 + EQU U74305(X74305-LOG1A) + SPC 1 +P74305 ADC $520A 00 SCHEDULER CALL + ADC I17432 01 INITIATOR ADDRESS + ADC C17432 02 CONTINUATOR ADDRESS + ADC E17432 03 TIMEOUT ERROR ADDRESS + NUM -1 04 DIAGNOSTIC CLOCK + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION + NUM $02D2 07 CONVERTER, EQUIPMENT, STATION + NUM $3376 08 REQUEST STATUS + NUM 0 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + ADC 0 11 LAST LOCATION PLUS ONE + NUM 0 12 DEVICE STATUS + NUM 0 13 RESERVED + NUM $7FFF 14 RESERVED + NUM 0 15 RESERVED FOR FNR AND CMR + ADC CABF05 16 START OF BUFFER ADDRESS + ADC U74305 17 DIAGNOSTIC LOGICAL UNIT + NUM $0000 18 TERMINATION CHARACTERS + NUM 0 19 ERROR CODE STORAGE + NUM $8000 20 TYPE OF I/O - = FULL DUPLEX + NUM $023C 21 OUTPUT/INPUT DIAG CLOCK TIME + NUM $0800 22 MOTION WORD 1 - BACKSPACE RECORD + NUM $1900 23 MOTION WORD 2 - WRITE EOF + NUM 0 24 MOTION WORD 3 - REWIND + NUM $0D00 25 MOTION WORD 4 - REWIND/UNLOAD + NUM $0A00 26 MOTION WORD 5 - ADVANCE FILE + NUM $1A00 27 MOTION WORD 6 - BACKSPACE FILE + NUM $1500 28 MOTION WORD 7 - ADVANCE RECORD + NUM $0000 29 TIMESHARE FLAG AND PRIORITY LEVEL + NUM 40 30 LENGTH OF INPUT BUFFER + ADC 0 31 ENTRY POINT OF INPUT HANDLER + NUM 0 32 CURRENT MOTION WORD + ADC L74305-LOG1A 33 ACTUAL LOGICAL UNIT + BZS CABF05(40) 34 INPUT BUFFER +* 73 INPUT BUFFER + NUM 0 74 INPUT LENGTH + ADC P74300 75 PHYSTB THREAD + EJT +* R E S I D E N T C O R E D A T A +* + ENT LSTLOC + EXT BGNMON + SPC 1 +LSTLOC ADC BGNMON BEGINNING LOCATION OF CORE RESIDENT SYSTEM + SPC 2 +* C O R E A L L O C A T I O N D A T A +* + ENT CALTHD CORE ALLOCATOR THREAD + ENT LVLSTR LEVEL START ALLOCATION TABLE + EXT AREAC START OF ALLOCATABLE AREA + EXT LEND END OF ALLOCATABLE AREA +* +CALTHD ADC 0 TOTAL AVAILABLE ALLOCATABLE CORE + ADC AREAC START OF ALLOCATABLE AREA +* +LVLSTR ADC AREAC START OF ALLOCATABLE CORE FOR LEVEL 0 + ADC AREAC START OF ALLOCATABLE CORE FOR LEVEL 1 + ADC AREAC START OF ALLOCATABLE CORE FOR LEVEL 2 + ADC AREAC START OF ALLOCATABLE CORE FOR LEVEL 3 + ADC AREAC START OF ALLOCATABLE CORE FOR LEVEL 4 + ADC AREAC START OF ALLOCATABLE CORE FOR LEVEL 5 + ADC AREAC START OF ALLOCATABLE CORE FOR LEVEL 6 + ADC AREAC START OF ALLOCATABLE CORE FOR LEVEL 7 + ADC AREAC START OF ALLOCATABLE CORE FOR LEVEL 8 + ADC AREAC START OF ALLOCATABLE CORE FOR LEVEL 9 + ADC AREAC START OF ALLOCATABLE CORE FOR LEVEL 10 + ADC AREAC START OF ALLOCATABLE CORE FOR LEVEL 11 + ADC AREAC START OF ALLOCATABLE CORE FOR LEVEL 12 + ADC AREAC START OF ALLOCATABLE CORE FOR LEVEL 13 + ADC AREAC START OF ALLOCATABLE CORE FOR LEVEL 14 + ADC AREAC START OF ALLOCATABLE CORE FOR LEVEL 15 + ADC LEND END OF ALLOCATABLE CORE +* + ENT N5,N6,N7,N8,N9,N10,N11,N12,N13,N14,N15 + SPC 1 +* NOTE - THE SIZE OF AREAS 1, 2, 3, AND 4 ARE SPECIFIED +* DURING SYSTEM INITIALIZATION +* +N5 EQU N5() NUMBER OF CORE LOCATIONS FOR AREA 5 +N6 EQU N6() NUMBER OF CORE LOCATIONS FOR AREA 6 +N7 EQU N7() NUMBER OF CORE LOCATIONS FOR AREA 7 +N8 EQU N8() NUMBER OF CORE LOCATIONS FOR AREA 8 +N9 EQU N9() NUMBER OF CORE LOCATIONS FOR AREA 9 +N10 EQU N10() NUMBER OF CORE LOCATIONS FOR AREA 10 +N11 EQU N11() NUMBER OF CORE LOCATIONS FOR AREA 11 +N12 EQU N12() NUMBER OF CORE LOCATIONS FOR AREA 12 +N13 EQU N13() NUMBER OF CORE LOCATIONS FOR AREA 13 +N14 EQU N14() NUMBER OF CORE LOCATIONS FOR AREA 14 +N15 EQU N15() NUMBER OF CORE LOCATIONS FOR AREA 15 + EJT +* P A R T I T I O N C O R E D A T A +* + ENT PARTBL,BUSY,DIP,LSTPRT,THDS,USE + SPC 1 + EQU LSTPRT(2) LAST PARTITION IN SYSTEM +* +PARTBL NUM $BF20 STARTING ADDRESS OF PARTITION 0 + NUM $C310 STARTING ADDRESS OF PARTITION 1 + NUM $CAE0 STARTING ADDRESS OF PARTITION 2 + NUM $FFFF STARTING ADDRESS OF PARTITION 3 + NUM $FFFF STARTING ADDRESS OF PARTITION 4 + NUM $FFFF STARTING ADDRESS OF PARTITION 5 + NUM $FFFF STARTING ADDRESS OF PARTITION 6 + NUM $FFFF STARTING ADDRESS OF PARTITION 7 + NUM $FFFF STARTING ADDRESS OF PARTITION 8 + NUM $FFFF STARTING ADDRESS OF PARTITION 9 + NUM $FFFF STARTING ADDRESS OF PARTITION 10 + NUM $FFFF STARTING ADDRESS OF PARTITION 11 + NUM $FFFF STARTING ADDRESS OF PARTITION 12 + NUM $FFFF STARTING ADDRESS OF PARTITION 13 + NUM $FFFF STARTING ADDRESS OF PARTITION 14 + NUM $FFFF STARTING ADDRESS OF PARTITION 15 +* + NUM $FFFF STARTING ADDRESS OF PARTITION 16 - SWAP AREA + SPC 2 +THDS NUM $FFFF TOP OF REQUEST THREAD FOR PARTITION 0 + NUM $FFFF TOP OF REQUEST THREAD FOR PARTITION 1 + NUM $FFFF TOP OF REQUEST THREAD FOR PARTITION 2 + NUM 0 TOP OF REQUEST THREAD FOR PARTITION 3 + NUM 0 TOP OF REQUEST THREAD FOR PARTITION 4 + NUM 0 TOP OF REQUEST THREAD FOR PARTITION 5 + NUM 0 TOP OF REQUEST THREAD FOR PARTITION 6 + NUM 0 TOP OF REQUEST THREAD FOR PARTITION 7 + NUM 0 TOP OF REQUEST THREAD FOR PARTITION 8 + NUM 0 TOP OF REQUEST THREAD FOR PARTITION 9 + NUM 0 TOP OF REQUEST THREAD FOR PARTITION 10 + NUM 0 TOP OF REQUEST THREAD FOR PARTITION 11 + NUM 0 TOP OF REQUEST THREAD FOR PARTITION 12 + NUM 0 TOP OF REQUEST THREAD FOR PARTITION 13 + NUM 0 TOP OF REQUEST THREAD FOR PARTITION 14 + NUM 0 TOP OF REQUEST THREAD FOR PARTITION 15 +* + NUM 0 TOP OF REQUEST THREAD FOR PARTITION 16 - SWAP + SPC 2 +USE BZS USE(16) PARTITION-IN-USE INDICATORS + SPC 2 +BUSY NUM $FFF8 BUSY INDICATOR - BIT 0 = PARTITION 0 +DIP NUM -0 PARTITION CORE DRIVER ACTIVE INDICATOR + EJT +* S Y S T E M C O M M O N D E C L A R A T I O N +* +* THIS ENTRY SPECIFIES THE AMOUNT OF SYSTEM (BLANK) COMMON + SPC 4 + EQU NCOM($03E8) + SPC 1 +COMMON COM COMMON(NCOM) + EJT +* M I S C E L L A N E O U S P R O G R A M S +* +* S Y S T E M I D L E L O O P + SPC 2 + ENT IDLE BASIC SYSTEM IDLE LOOP + ENT IDLER SYSTEM IDLE SUBROUTINE + ENT INSTLU SYSTEM INSTALLATION L. U. + SPC 2 +IDLE LDA* STRTUP IS THIS THE INITIAL IDLE ENTRY + SAN IDLE1 NO + RTJ* STRTUP YES, PERFORM STARTUP FUNCTIONS +IDLE1 RTJ* IDLER + JMP* IDLE + SPC 2 + EXT LIBEDT LIBRARY EDIT + EXT RELFLE SYSTEM CORE SWAP ROUTINE + EXT INPTV4 JOB PROCESSOR STANDARD INPUT DEVICE + EQU INSTLU(6) + SPC 1 +STRTUP NUM 0 + LDQ- $EB + ADQ =XLIBEDT OBTAIN THE DIRECTORY ADDRESS OF LIBEDT + LDA- (ZERO),Q HAVE THE REQUEST PRIORITIES BEEN SET UP + SAN STRTP1 YES + LDA =XINSTLU + STA+ INPTV4 SET THE STD. INPUT TO THE INSTALLATION L.U. + JMP* (STRTUP) AND EXIT + SPC 1 +STRTP1 EQU STRTP1(*) +* +* NOTE - ANY ADDITIONAL SYSTEM STARTUP FUNCTIONS +* MAY BE ADDED HERE. +* + RTJ- (AMONI) SCHEDULE RELFLE TO FORCE A SWAP + ADC $5203 + ADC RELFLE + JMP* (STRTUP) + EJT +* M I S C E L L A N E O U S P R O G R A M S +* +* I N T E R R U P T R E S P O N S E F O R T I M E R +* + ENT TMRTYP,TMCODE TYPE OF SYSTEM TIME BASE + EXT TIMEUP TMINT INTERRUPT ENTRY + EQU X($7FFF) VALUE FOR UNSELECTED ENTRY POINTS + ENT E15761 + EQU E15761(X) LINK UNSELECTED ENTRY POINT + SPC 1 + EQU TMCODE(0) SOFTWARE PSEUDO TIMER +TMRTYP ADC 6 TIME BASE CODE + SPC 2 +CTR NUM 30967 +BASCTR NUM 30967 APPROXIMATION TO 60 CPS + SPC 1 +IDLER NUM 0 + IIN 0 USED AT LEVEL -1 OR LEVEL 2 + SOV 0 + RAO* CTR PSEUDO SYSTEM TIMER + SOV COUNT SKIP IF 1800 LOOPS EXECUTED + EIN 0 + JMP* (IDLER) BACK TO BASIC IDLE LOOP +COUNT LDA* BASCTR INITIALIZE LOOP COUNTER + STA* CTR + LDQ* IDLER SAVE RETURN FOR RE-ENTRANCY IN VOLATILE + RTJ- (AVOLA) GET 3 WORDS VOLATILE STORAGE + NUM 3 + RTJ- (AMONI) + ADC $520D SCHEDULE TMINT AT LEVEL 13 + ADC TIMEUP + IIN 0 + RTJ- (AVOLR) RETURN VOLATILE + JMP- (ZERO),Q RETURN TO IDLE LOOP + SPC 4 +* +* LINK ALL UNSELECTED ENTRY POINTS +* + ENT E1572F,E1572,O1572,E1573,H15721,E15721,D15721,O15721,EQ3644 + ENT F10336,O10336,E10336 + ENT DMICOD,EMPSRT,TBLADR + EQU E1572F(X),E1572(X),O1572(X),E1573(X),H15721(X) + EQU E15721(X),D15721(X),O15721(X),EQ3644(X) + EQU F10336(X),O10336(X),E10336(X) + EQU DMICOD(X),EMPSRT(X),TBLADR(X) + EJT +* M I S C E L L A N E O U S P R O G R A M S +* +* A / Q C H A N N E L A L L O C A T I O N +* + SPC 2 + ENT RQAQ REQUEST ENTRY FOR A/Q + ENT RLAQ RELEASE ENTRY FOR A/Q + SPC 1 +RQAQ NUM 0 ENTRY USED IF NO A/Q ALLOCATION + IIN 0 + LDQ- I TRANSFER PDT ADDRESS TO Q + EIN 0 + JMP* (RQAQ) RETURN + SPC 1 + EQU RLAQ(RQAQ) EQUATE BOTH ENTRIES + EJT +* M I S C E L L A N E O U S I N F O R M A T I O N +* +* M A S S R E S I D E N T D R I V E R S B U F F E R +* +* THIS BUFFER WILL CONTAIN THE MASS RESIDENT DRIVER(S) +* WHEN THEY ARE IN CORE. THE SMALLEST ALLOWABLE SIZE IS +* EQUAL TO THE LARGEST MASS RESIDENT DRIVER IN THE SYSTEM. +* OPTIMUM THROUGHPUT REQUIRES SIZING EQUAL TO THE TWO +* LARGEST MASS RESIDENT DRIVERS IN THE SYSTEM. + SPC 2 + ENT BUFF,BUFFE + EQU MBFSZ($A00) + SPC 2 +BUFF BZS BUFF(MBFSZ) + EQU BUFFE(*) + SPC 2 +* C O M M O N G H O S T I N T E R R U P T R O U T I N E + SPC 1 + ENT CGHOST + SPC 1 +CGHOST NOP 0 + JMP- (ADISP) + EJT +* M I S C E L L A N E O U S I N F O R M A T I O N +* +* F O R T R A N R E E N T R A N T I N F O R M A T I O N +* + ENT FMASK,FLIST + EXT E4SAVE + EXT ARGU0 + SPC 1 +FMASK NUM $0070 FORTRAN REENTRANT LEVELS (BIT 0 = LEVEL 0) + SPC 1 +* TABLE OF FORTRAN ENTRY POINTS SAVED TO MAINTAIN REENTRANCY + SPC 1 +* ENTRY POINT PROGRAM DESCRIPTION +* ----------- ------- ---------- + SPC 1 +FLIST ADC FEND + ADC E4SAVE Q8EXPR LOCATION $E4 STORAGE + ADC ARGU0 Q8QIO TEMPORARY STORAGE +FEND EQU FEND(*-FLIST-1) + EJT +* F O R T R A N R E E N T R A N T I N F O R M A T I O N +* + SPC 4 +* THIS ENTRY IS PROVIDED TO ALLOW COMPATIBILITY BETWEEN THE +* NON-REENTRANT (BACKGROUND) FORTRAN AND REENTRANT FORTRAN + SPC 1 + ENT Q8STP + SPC 1 +Q8STP NOP 0 FORTRAN STOP + JMP- (ADISP) + EJT +* M I S C E L L A N E O U S I N F O R M A T I O N +* +* 1 7 8 1 - 1 H A R D W A R E F L O A T I N G +* +* P O I N T I N F O R M A T I O N +* + SPC 4 +* THESE ENTRIES ALLOW PROPER SYSTEM LINKAGE IF THE 1781-1 +* IS NOT SELECTED. + SPC 2 + ENT E17811,F17811 +E17811 NUM $7FFF + EQU F17811($7FFF) + EJT +* M I S C E L L A N E O U S I N F O R M A T I O N +* +* T I M E / D A T E P A R A M E T E R S T O R A G E +* + SPC 3 + ENT AYERTO CURRENT YEAR (ASCII) + ENT AMONTO CURRENT MONTH (ASCII) + ENT ADAYTO CURRENT DAY (ASCII) + ENT YERTO CURRENT YEAR (INTEGER) + ENT MONTO CURRENT MONTH (INTEGER) + ENT DAYTO CURRENT DAY (INTEGER) + ENT HORTO CURRENT HOUR (INTEGER) + ENT MINTO CURRENT MINUTE (INTEGER) + ENT SECON CURRENT SECOND (INTEGER) + ENT CONTA CURRENT COUNT (INTEGER) + ENT HORMIN CURRENT 24-HOUR TIME + ENT TOTMIN CURRENT DAY ELAPSED MINUTES + SPC 3 +AYERTO NUM 0 00 CURRENT YEAR (ASCII) +AMONTO NUM 0 01 CURRENT MONTH (ASCII) +ADAYTO NUM 0 02 CURRENT DAY (ASCII) +YERTO NUM 0 03 CURRENT YEAR (INTEGER) +MONTO NUM 0 04 CURRENT MONTH (INTEGER) +DAYTO NUM 0 05 CURRENT DAY (INTEGER) +HORTO NUM 0 06 CURRENT HOUR (INTEGER) +MINTO NUM 0 07 CURRENT MINUTE (INTEGER) +SECON NUM 0 08 CURRENT SECOND (INTEGER) +CONTA NUM 0 09 CURRENT COUNT (INTEGER) +HORMIN NUM 0 10 CURRENT 24-HOUR TIME +TOTMIN NUM 0 11 CURRENT DAY ELAPSED MINUTES + EJT +* M I S C E L L A N E O U S I N F O R M A T I O N +* +* S Y S T E M T I M E R P A R A M E T E R S + SPC 4 + ENT TIMCPS BASIC SYSTEM CLOCK FREQUENCY + SPC 1 +TIMCPS EQU TIMCPS(60) TIMER CYCLES PER SECOND + SPC 4 + ENT TIMEC TIMER CYCLES PER 1/10 SECOND MINUS 1 + SPC 1 +TIMEC EQU TIMEC(TIMCPS/10-1) + SPC 4 + ENT TODLVL TIME OF DAY(TOD) PROGRAM REQ. CODE + PRIORITY + SPC 1 +TODLVL EQU TODLVL($5006) D-BIT = 1, REQUEST CODE 8, PRIORITY 6 + SPC 4 + ENT NSCHED MAX. NO. OF COMPLETIONS PER TIMER INTERVAL + SPC 1 +NSCHED NUM 5 MAXIMUM 5 COMPLETIONS PER INTERVAL + SPC 4 + ENT TMRLVL DIAGNOSTIC TIMER PRIORITY LEVEL + SPC 1 +TMRLVL EQU TMRLVL(13) LEVEL 13 + EJT +* M I S C E L L A N E O U S I N F O R M A T I O N +* +* S Y S T E M P R O G R A M O V E R L A Y S I Z E S + SPC 2 + ENT LSIZV4 INITIAL OVERLAY SIZE OF LIBEDT + ENT PSIZV4 SIZE OF AREA 3 + ENT ODBSIZ INITIAL OVERLAY SIZE OF ODEBUG + SPC 4 + EQU LSIZV4($4B8) INITIAL OVERLAY SIZE OF LIBEDT + EQU PSIZV4($4B8) SIZE OF AREA 3 + EQU ODBSIZ($369) INITIAL OVERLAY SIZE OF ODEBUG + EJT +* M I S C E L L A N E O U S I N F O R M A T I O N +* +* S C M M I N C O R E F L A G +* + ENT SCMMLC + SPC 2 +SCMMLC NUM 0 NON-ZERO IF S C M M RUNNING + EJT +* M I S C E L L A N E O U S I N F O R M A T I O N +* +* O N L I N E D E B U G I N C O R E F L A G +* + ENT CHRSFG + SPC 2 +CHRSFG NUM 0 NON-ZERO IF ODEBUG RUNNING + EJT +* M I S C E L L A N E O U S I N F O R M A T I O N +* +* S Y S T E M C H E C K O U T P A R A M E T E R S + SPC 4 +* THE STARTING SECTOR OF THE FAILED CORE IMAGE IS SPECIFIED BY +* THE NAME COBOPS. THIS AREA MUST BE SIZED TO ACCOMODATE A +* FAILED IMAGE OF THE SIZE SPECIFIED BY NAME MSIZV4. THE FAILED +* IMAGE MUST RESIDE ON THE LIBRARY MASS MEMORY UNIT. IF THE +* MASS MEMORY LIBRARY UNIT IS A CARTRIDGE DISK, THE IMAGE AREA +* CANNOT OVERLAP FROM ONE PLATTER TO THE OTHER. + SPC 2 + ENT COBOPS +COBOPS EQU COBOPS($5A00) START SECTOR OF FAILED IMAGE + SPC 4 +* THIS ENTRY IS PROVIDED TO LINK THE NO-FORTRAN DISPATCHER +* ENTRY POINT + SPC 1 + ENT NDISP + SPC 1 + EQU NDISP($7FFF) + SPC 4 +* THIS ENTRY IS PROVIDED TO LINK THE TIMESHARE PROTECT INTERRUPT +* PROCESSOR ENTRY POINT + SPC 1 + ENT TSIPRC + SPC 1 + EQU TSIPRC($7FFF) + EJT +* M I S C E L L A N E O U S I N F O R M A T I O N +* +* F I L E M A N A G E R D A T A +* + SPC 2 + ENT FISLU LOGICAL UNIT OF FIS DIRECTORY AND BLOCKS + ENT MAXMMA MAXIMUM NO. OF MASS MEMORY ATTEMPTS ON ERROR + ENT RPTPER REQUEST PROCESSOR TIMEOUT PERIOD + ENT FDTPER FILE/DIRECTORY TIMEOUT PERIOD + ENT FIDSEC FIS DIRECTORY, S SECTOR ADDRESS + ENT FIBLSA SECTOR ADDRESS OF LAST FIS BLOCK + ENT FIBNIX INDEX TO THE NEXT AVAILABLE LOCATION IN FIBLSA + ENT FSLIST START OF FILE SPACE LIST + ENT FSLLTH FILE SPACE LIST LENGTH + ENT FSLEND END OF FILE SPACE LIST + ENT ADRFMS BEGINNING OF FILE MANAGER SPACE ON LIB UNIT + SPC 2 + EQU FISLU(LBUNIT) LOGICAL UNIT OF FIS DIRECTORY AND BLOCKS + EQU MAXMMA(1) MAXIMUM NO. OF MASS MEMORY ATTEMPTS ON ERROR + EQU FDTPER(1) FILE/DIRECTORY TIMEOUT PERIOD (1/10 SEC.) + EQU RPTPER(1) REQUEST PROCESSOR TIMEOUT PERIOD (1/10 SEC.) + SPC 2 +ADRFMS ADC $5BFB BEGINNING OF FILE MANAGER SPACE ON LIB UNIT + SPC 1 +******** THE FOLLOWING MUST BE IN ORDER ******** +FIDSEC ADC 0 1. FIS DIRECTORY, S SECTOR ADDRESS +FIBLSA ADC 0 2. SECTOR ADDRESS OF THE LAST FIS BLOCK +FIBNIX ADC 0 3. INDEX TO NEXT AVAILABLE LOCATION IN FIBLSA +FSLIST EQU FSLIST(*) 4. START OF FILE SPACE LIST + SPC 1 +******** START OF LOGICAL UNIT ENTRIES ******** + SPC 2 +* L O G I C A L U N I T D A T A , U N I T 0 +* + ENT NUMFS0 + EQU NUMFS0($1F40) NUMBER OF FILE SECTORS - UNIT 0 + SPC 1 +LUE0 VFD X9/LUEL0,X7/LBUNIT LU ENTRY LENGTH(7/15), LOGICAL UNIT(0-6) + ADC 0 ADDRESS OF FILE SPACE POOL + ADC 0 NUMBER OF AVAILABLE SECTORS + ADC NUMFS0 NUMBER OF SECTORS IN THIS FILE SPACE + NUM 0,1 THREAD OF ONE SECTOR LONG + NUM 0,2 THREAD OF TWO SECTORS LONG + NUM 0,3 THREAD OF THREE SECTORS LONG +LUEL0 EQU LUEL0(*-LUE0) + EJT +* L O G I C A L U N I T D A T A , U N I T 1 +* + ENT BEGLU1 + ENT NUMFS1 + EQU LUNIT1(13) LOGICAL UNIT OF FILE MANAGER UNIT 1 + EQU BEGLU1(1) BEGINNING FILE SECTOR - UNIT 1 + EQU NUMFS1($7FFF) NUMBER OF FILE SECTORS - UNIT 1 + SPC 1 +LUE1 VFD X9/LUEL1,X7/LUNIT1 LU ENTRY LENGTH(7/15), LOGICAL UNIT(0-6) + ADC BEGLU1 ADDRESS OF FILE SPACE POOL + ADC 0 NUMBER OF AVAILABLE SECTORS + ADC NUMFS1 NUMBER OF SECTORS IN THIS FILE SPACE + NUM 0,1 THREAD OF ONE SECTOR LONG + NUM 0,2 THREAD OF TWO SECTORS LONG + NUM 0,3 THREAD OF THREE SECTORS LONG +LUEL1 EQU LUEL1(*-LUE1) + EJT +* L O G I C A L U N I T D A T A , U N I T 2 +* + ENT BEGLU2 + ENT NUMFS2 + EQU LUNIT2(14) LOGICAL UNIT OF FILE MANAGER UNIT 2 + EQU BEGLU2(1) BEGINNING FILE SECTOR - UNIT 2 + EQU NUMFS2($7FFF) NUMBER OF FILE SECTORS - UNIT 2 + SPC 1 +LUE2 VFD X9/LUEL2,X7/LUNIT2 LU ENTRY LENGTH(7/15), LOGICAL UNIT(0-6) + ADC BEGLU2 ADDRESS OF FILE SPACE POOL + ADC 0 NUMBER OF AVAILABLE SECTORS + ADC NUMFS2 NUMBER OF SECTORS IN THIS FILE SPACE + NUM 0,1 THREAD OF ONE SECTOR LONG + NUM 0,2 THREAD OF TWO SECTORS LONG + NUM 0,3 THREAD OF THREE SECTORS LONG +LUEL2 EQU LUEL2(*-LUE2) + EJT +* L O G I C A L U N I T D A T A , U N I T 3 +* + ENT BEGLU3 + ENT NUMFS3 + EQU LUNIT3(15) LOGICAL UNIT OF FILE MANAGER UNIT 3 + EQU BEGLU3(1) BEGINNING FILE SECTOR - UNIT 3 + EQU NUMFS3($7FFF) NUMBER OF FILE SECTORS - UNIT 3 + SPC 1 +LUE3 VFD X9/LUEL3,X7/LUNIT3 LU ENTRY LENGTH(7/15), LOGICAL UNIT(0-6) + ADC BEGLU3 ADDRESS OF FILE SPACE POOL + ADC 0 NUMBER OF AVAILABLE SECTORS + ADC NUMFS3 NUMBER OF SECTORS IN THIS FILE SPACE + NUM 0,1 THREAD OF ONE SECTOR LONG + NUM 0,2 THREAD OF TWO SECTORS LONG + NUM 0,3 THREAD OF THREE SECTORS LONG +LUEL3 EQU LUEL3(*-LUE3) + EJT +* L O G I C A L U N I T D A T A , U N I T 4 +* + ENT BEGLU4 + ENT NUMFS4 + EQU LUNIT4(22) LOGICAL UNIT OF FILE MANAGER UNIT 4 + EQU BEGLU4(1) BEGINNING FILE SECTOR - UNIT 4 + EQU NUMFS4($37F5) NUMBER OF FILE SECTORS - UNIT 4 + SPC 1 +LUE4 VFD X9/LUEL4,X7/LUNIT4 LU ENTRY LENGTH(7/15), LOGICAL UNIT(0-6) + ADC BEGLU4 ADDRESS OF FILE SPACE POOL + ADC 0 NUMBER OF AVAILABLE SECTORS + ADC NUMFS4 NUMBER OF SECTORS IN THIS FILE SPACE + NUM 0,1 THREAD OF ONE SECTOR LONG + NUM 0,2 THREAD OF TWO SECTORS LONG + NUM 0,3 THREAD OF THREE SECTORS LONG +LUEL4 EQU LUEL4(*-LUE4) + EJT +* L O G I C A L U N I T D A T A , U N I T 5 +* + ENT BEGLU5 + ENT NUMFS5 + EQU LUNIT5(23) LOGICAL UNIT OF FILE MANAGER UNIT 5 + EQU BEGLU5(1) BEGINNING FILE SECTOR - UNIT 5 + EQU NUMFS5($37F5) NUMBER OF FILE SECTORS - UNIT 5 + SPC 1 +LUE5 VFD X9/LUEL5,X7/LUNIT5 LU ENTRY LENGTH(7/15), LOGICAL UNIT(0-6) + ADC BEGLU5 ADDRESS OF FILE SPACE POOL + ADC 0 NUMBER OF AVAILABLE SECTORS + ADC NUMFS5 NUMBER OF SECTORS IN THIS FILE SPACE + NUM 0,1 THREAD OF ONE SECTOR LONG + NUM 0,2 THREAD OF TWO SECTORS LONG + NUM 0,3 THREAD OF THREE SECTORS LONG +LUEL5 EQU LUEL5(*-LUE5) + EJT +* L O G I C A L U N I T D A T A , U N I T 6 +* + ENT BEGLU6 + ENT NUMFS6 + EQU LUNIT6(24) LOGICAL UNIT OF FILE MANAGER UNIT 6 + EQU BEGLU6(1) BEGINNING FILE SECTOR - UNIT 6 + EQU NUMFS6($37F5) NUMBER OF FILE SECTORS - UNIT 6 + SPC 1 +LUE6 VFD X9/LUEL6,X7/LUNIT6 LU ENTRY LENGTH(7/15), LOGICAL UNIT(0-6) + ADC BEGLU6 ADDRESS OF FILE SPACE POOL + ADC 0 NUMBER OF AVAILABLE SECTORS + ADC NUMFS6 NUMBER OF SECTORS IN THIS FILE SPACE + NUM 0,1 THREAD OF ONE SECTOR LONG + NUM 0,2 THREAD OF TWO SECTORS LONG + NUM 0,3 THREAD OF THREE SECTORS LONG +LUEL6 EQU LUEL6(*-LUE6) + EJT +* L O G I C A L U N I T D A T A , U N I T 7 +* + ENT BEGLU7 + ENT NUMFS7 + EQU LUNIT7(25) LOGICAL UNIT OF FILE MANAGER UNIT 7 + EQU BEGLU7(1) BEGINNING FILE SECTOR - UNIT 7 + EQU NUMFS7($37F5) NUMBER OF FILE SECTORS - UNIT 7 + SPC 1 +LUE7 VFD X9/LUEL7,X7/LUNIT7 LU ENTRY LENGTH(7/15), LOGICAL UNIT(0-6) + ADC BEGLU7 ADDRESS OF FILE SPACE POOL + ADC 0 NUMBER OF AVAILABLE SECTORS + ADC NUMFS7 NUMBER OF SECTORS IN THIS FILE SPACE + NUM 0,1 THREAD OF ONE SECTOR LONG + NUM 0,2 THREAD ON TWO SECTORS LONG + NUM 0,3 THREAD OF THREE SECTORS LONG +LUEL7 EQU LUEL7(*-LUE7) + EJT +* L O G I C A L U N I T D A T A , U N I T 8 +* + ENT BEGLU8 + ENT NUMFS8 + EQU LUNIT8(26) LOGICAL UNIT OF FILE MANAGER UNIT 8 + EQU BEGLU8(1) BEGINNING FILE SECTOR - UNIT 8 + EQU NUMFS8($4000) NUMBER OF FILE SECTORS - UNIT 8 + SPC 1 +LUE8 VFD X9/LUEL8,X7/LUNIT8 LU ENTRY LENGTH(7/15), LOGICAL UNIT(0-6) + ADC BEGLU8 ADDRESS OF FILE SPACE POOL + ADC 0 NUMBER OF AVAILABLE SECTORS + ADC NUMFS8 NUMBER OF SECTORS IN THIS FILE SPACE + NUM 0,1 THREAD OF ONE SECTOR LONG + NUM 0,2 THREAD ON TWO SECTORS LONG + NUM 0,3 THREAD OF THREE SECTORS LONG +LUEL8 EQU LUEL8(*-LUE8) + SPC 2 +FSLLTH EQU FSLLTH(*-FSLIST) FILE SPACE LIST LENGTH + SPC 1 +FSLEND NUM -0 END OF FILE SPACE LIST + EJT +* F I L E M A N A G E R D A T A +* + SPC 2 +* LINK UNSELECTED ENTRY POINTS + SPC 2 +* +* S O R T - M E R G E L O G I C A L U N I T S +* + SPC 1 + ENT SMCLU1 + ENT SMCLU2 + ENT SMCLU3 + ENT SMCLU4 + SPC 1 +SMCLU1 EQU SMCLU1(8) SORT MERGE L.U. 1 +SMCLU2 EQU SMCLU2(8) SORT MERGE L.U. 2 +SMCLU3 EQU SMCLU3(8) SORT MERGE L.U. 3 +SMCLU4 EQU SMCLU4(8) SORT MERGE L.U. 4 + EJT +* M I S C E L L A N E O U S I N F O R M A T I O N +* +* J O B P R O C E S S O R F I L E P A R A M E T E R S +* + SPC 3 + ENT JLLUV4 LOGICAL UNIT OF JOB PROCESSOR FILES + ENT JBFLV4 NUMBER OF JOB PROCESSOR FILES + ENT FBASV4 FIRST FILE NUMBER USED BY JOB PROCESSOR + ENT PKEYV4 JOB FILE PURGE KEY + SPC 3 +JLLUV4 ADC LBUNIT LOGICAL UNIT OF JOB PROCESSOR FILES + SPC 2 + EQU JBFLV4(500) NUMBER OF JOB PROCESSOR FILES + SPC 1 + EQU FBASV4($7F2B-JBFLV4) +* +* NOTE - FILES $7FFD THRU $7FFF ARE RESERVED FOR THE MSOS +* VERIFICATION TESTS, FILES $7FF5 THRU $7FFC ARE +* RESERVED FOR FOREGROUND PSEUDO TAPES, FILES $7FF3 +* THRU $7FF4 ARE RESERVED FOR THE TEXT EDITOR, AND +* FILES $7F2B THRU $7FF2 ARE RESERVED FOR RPGII. + SPC 2 + EQU PKEYV4($3030) JOB FILE PURGE KEY + EJT +* P R E S E T R E G I O N +* +* PRESET PROTECTED ENTRY POINTS FOR USE BY UNPROTECTED PGMS +* +APRSET EQU APRSET(*) + ENT JPRET + SPC 2 +* J O B P R O C E S S O R P R E S E T + SPC 2 + EXT JPRETN + ALF 3,JPRETN +JPRET ADC JPRETN JOB PROCESSOR RETURN +* + SPC 2 +* S N A P D U M P P R E S E T + SPC 2 + EXT SNAPOL + ALF 3,SNAPOL + ADC SNAPOL REGISTER SNAPSHOT +* + SPC 2 +* F I L E M A N A G E R P R E S E T S + SPC 2 + EXT DEFFIL + ALF 3,DEFFIL + ADC DEFFIL DEFINE FILE +* + EXT RELFIL + ALF 3,RELFIL + ADC RELFIL RELEASE FILE +* + EXT DEFIDX + ALF 3,DEFIDX + ADC DEFIDX DEFINE INDEXED FILE +* + EXT LOKFIL + ALF 3,LOKFIL + ADC LOKFIL LOCK FILE +* + EXT UNLFIL + ALF 3,UNLFIL + ADC UNLFIL UNLOCK FILE +* + EXT STOSEQ + ALF 3,STOSEQ + ADC STOSEQ STORE SEQUENTIAL RECORD +* + EXT STODIR + ALF 3,STODIR + ADC STODIR STORE DIRECT +* + EXT STOIDX + ALF 3,STOIDX + ADC STOIDX STORE INDEXED RECORD +* + EXT RTVSEQ + ALF 3,RTVSEQ + ADC RTVSEQ RETRIEVE SEQUENTIAL RECORD +* + EXT RTVDIR + ALF 3,RTVDIR + ADC RTVDIR RETRIEVE DIRECT +* + EXT RTVIDX + ALF 3,RTVIDX + ADC RTVIDX RETRIEVE INDEXED RECORD +* + EXT RTVIDO + ALF 3,RTVIDO + ADC RTVIDO RETRIEVE INDEXED-ORDERED RECORD + SPC 2 +* F I L E M A N A G E R F L A G P R E S E T + SPC 2 + EXT FMPFLG + ALF 3,FMPFLG + ADC FMPFLG + SPC 1 +LPRSET EQU LPRSET(*-APRSET) + EJT + SPC 10 +* S Y S T E M L I B R A R Y D I R E C T O R Y +* +* COMPILED FROM *Y, *YM BY SYSTEM INITIALIZER +SLDIRY EQU SLDIRY(*) + END diff --git a/CDC1700/customization/custom2/sysdat.tap b/CDC1700/customization/custom2/sysdat.tap new file mode 100644 index 0000000000000000000000000000000000000000..c44973d67cd04927f6362fbfda4fe44aa0e370b8 GIT binary patch literal 257144 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 literal 0 HcmV?d00001 diff --git a/CDC1700/customization/custom4/msosCustom4.simh b/CDC1700/customization/custom4/msosCustom4.simh new file mode 100644 index 00000000..04ceabc1 --- /dev/null +++ b/CDC1700/customization/custom4/msosCustom4.simh @@ -0,0 +1,151 @@ +# Script to generate a customized MSOS 5.0 installation tape. +# +# Customizations: +# 1. Set system creation date to 4/19/17 +# 2. Change the system name to "SIMH DEVELOPMENT SYSTEM" +# 3. Reduce file manager devices to CDD0/CDD1 +# 4. Remove the 1743-2 Asynch communication controller support +# +# Requires: +# MSOS5-A.dsk and MSOS5-B.dsk Installation boot disks +# sysdat.tap Modified sysdat.asm as only file on +# the tape (80 char records) +# Installation tape Default is MSOS5_SL136.tap which can +# be copied from bitsavers.org. This can +# be overridden by specifying the +# installation tape on the command line: +# +# cdc1700 msosCustom1.simh install.tap +# +# Creates: +# MSOS5-Install.tap New installation tape. If it already +# exists, it will be overwritten +# Scratch?.tap Tapes for temporary use. If they +# already exist, they will be overwritten +# %DATETIME%.lpt Unique LPT output file for this run +# +set env CDD0=MSOS5-A.dsk +set env CDD1=MSOS5-B.dsk +set env MT0=%1 +if "%MT0%"=="" set env MT0=MSOS5_SL136.tap +set env MT1A=Scratch3.tap +set env MT1B=MSOS5-Install.tap +set env MT2A=sysdat.tap +set env MT2B=Scratch1.tap +set env MT3=Scratch2.tap +set cpu instr=basic +set cpu mode65k,64k +#set throttle 30% +set mt type=1732-3 +set mt3 9track +set lp type=1742 +att lp %DATETIME%.lpt +att cdd0 %CDD0% +att cdd1 %CDD1% +att -r mt0 %MT0% +att mt1 %MT1A% +att -r mt2 %MT2A% +att mt3 %MT3% +set env TODAY=%DATE_MM%%DATE_DD%%DATE_19XX_YY% +# +# The following command will patch out unimplemented devices (1728 card +# reader/punch) +# +expect "SET PROGRAM PROTECT" set cpu protect; d 056D 0649; d 057E 0649; d 0589 0649; c +expect "DATE/TIME MMDDYYHHMM \n\r\n" send "%TODAY%%TIME_HH%%TIME_MM%\r"; c +expect ":00 " send after=1000000,"\007"; c +expect "MI\r\n" send "*BATCH,4\r"; c +expect "J \r\n" send "*JOB\r"; c +expect "J \r\n" send "*K,I17,P16\r"; c +expect "J \r\n" send "*ASSEM\r"; c +expect "J \r\n" send "*MTUP\r"; c +expect "NEXT: \007" send "OPEN,O16,NL,U,A,SF0,BR1\r"; c +expect "NEXT: \007" send "CLOSE,O16,RW\r"; c +expect "NEXT: \007" send "EXIT\r"; c +expect "J \r\n" send "*REW,17\r"; c +# Use SKED to extract and edit the skeleton file +expect "J \r\n" send "*SKED\r"; c +expect "NEXT\r\n\007" send "ADF,6,1\r"; c +expect "NEXT\r\n\007" send "BUILD,6\r"; c +expect "ENTER LU\r\n\007" send "\r"; goto insert1 +send delay=10000 +autoload cdd +run 0 +goto end + +:insert1 +det mt2 +att -q mt2 %MT2B% +expect "NEXT\r\n\007" send "INSERT,1,4\r"; c +expect "\007" send "*S,SYSMON,$3034\r"; c +expect "\007" send "*S,SYSDAY,$3139\r"; c +expect "\007" send "*S,SYSYER,$3137\r"; c +expect "\007" send "\r"; c +expect "NEXT\r\n\007" send "DELETE,2,4\r"; c +expect "NEXT\r\n\007" send "INSERT,8,4\r"; c +expect "\007" send "*V SIMH DEVELOPMENT SYSTEM\r"; c +expect "\007" send "\r"; c +expect "NEXT\r\n\007" send "DELETE,9\r"; c +expect "NEXT\r\n\007" send "DUMP,17\r"; c +expect "NEXT\r\n\007" send "EXIT\r"; c +expect "J \r\n" send "*REW,6,17\r"; c +expect "J \r\n" send "*ADF,6,1\r"; goto libild +continue + +:libild +expect "J \r\n" send delay=5000,"*LIBILD\r"; c +expect "CONTROL LU = \007" send "\r"; c +expect "DEFS LU = \007" send "\r"; c +expect "INSTALL LU = \007" send "18\r"; c +expect "NEWLIB LU = \007" send "\r"; c +expect "LIB 01 LU = \007" send "16\r"; c +expect "LIB 02 LU = \007" send "6\r"; c +expect "LIB 03 LU = \007" send "\r"; c +expect "SKELETON LU = \007" send "17\r"; c +expect "CR WHEN READY. \r\n\007" send "\r"; c +expect "CR WHEN READY \r\n\007" send "\r"; c +expect "OUTPUT LIBRARY LU'S \007" send "*Z\r"; c +expect "J \r\n" send "*REW,6,16\r"; goto mtup +continue + +:mtup +det mt1 +att -q mt1 %MT1B% +expect "J \r\n" send "*mtup\r"; c +expect "NEXT: \007" send "OPEN,O18,NL,U,A,SF0\r"; c +expect "NEXT: \007" send "CLOSE,O18,RW\r"; c +expect "NEXT: \007" send "OPEN,O16,NL,U,A,SF0,,LB13000\r"; c +expect "NEXT: \007" send "OPEN,I6,NL,U,A,SF0,,LB13000\r"; c +expect "NEXT: \007" send "COPY,FC1\r"; c +expect "NEXT: \007" send "CLOSE,O16,RW\r"; c +expect "NEXT: \007" send "CLOSE,I6,RW\r"; c +expect "NEXT: \007" send "OPEN,O16,NL,U,A,SF1,,LB13000\r"; c +expect "NEXT: \007" send "OPEN,I18,NL,U,A,SF0,,LB13000\r"; c +expect "NEXT: \007" send "COPY,FC1\r"; c +expect "NEXT: \007" send "CLOSE,O16,RW\r"; c +expect "NEXT: \007" send "CLOSE,I18,RW\r"; c +expect "NEXT: \007" send "OPEN,I6,NL,U,A,SF2,,LB13000\r"; c +expect "NEXT: \007" send "OPEN,O16,NL,U,A,SF2,,LB13000\r"; c +expect "NEXT: \007" send "COPY,FC1\r"; c +expect "NEXT: \007" send "CLOSE,O16,RW\r"; c +expect "NEXT: \007" send "CLOSE,I6,RW\r"; c +expect "NEXT: \007" send "OPEN,I6,NL,U,A,SF3,,LB13000\r"; c +expect "NEXT: \007" send "OPEN,O16,NL,U,A,SF3,,LB13000\r"; c +expect "NEXT: \007" send "COPY,FC1\r"; c +expect "NEXT: \007" send "CLOSE,O16,RW\r"; c +expect "NEXT: \007" send "CLOSE,I6,RW\r"; c +expect "NEXT: \007" send "OPEN,I6,NL,U,A,SF4,,LB13000\r"; c +expect "NEXT: \007" send "OPEN,O16,NL,U,A,SF4,,LB13000\r"; c +expect "NEXT: \007" send "COPY,FC1\r"; c +expect "NEXT: \007" send "CLOSE,O16,RW\r"; c +expect "NEXT: \007" send "CLOSE,I6,RW\r"; c +expect "NEXT: \007" send "OPEN,I6,NL,U,A,SF5,,LB13000\r"; c +expect "NEXT: \007" send "OPEN,O16,NL,U,A,SF5,,LB13000\r"; c +expect "NEXT: \007" send "COPY,FC1\r"; c +expect "NEXT: \007" send "CLOSE,O16,RW\r"; c +expect "NEXT: \007" send "CLOSE,I6,RW\r"; c +expect "NEXT: \007" send "EXIT\r"; c +expect "J \r\n" send "*Z\r"; c +continue + +:end diff --git a/CDC1700/customization/custom4/sysdat.asm b/CDC1700/customization/custom4/sysdat.asm new file mode 100644 index 00000000..3e786ff1 --- /dev/null +++ b/CDC1700/customization/custom4/sysdat.asm @@ -0,0 +1,2503 @@ + NAM SYSDAT EXXON DEVELOPMENT SYSTEM SUMMARY-122 +* SYSTEM DATA PROGRAM - MSOS 5.0 +* 1700 MASS STORAGE OPERATING SYSTEM VERSION 5.0 +* SMALL SYSTEMS DIVISION, LA JOLLA, CALIFORNIA +* COPYRIGHT CONTROL DATA CORPORATION 1976 +* +* SIMH DEVELOPMENT SYSTEM +* +* PROGRAM BASE - MSOS 4.3 +* +* S Y S T E M D A T A P R O G R A M +* +* +* TABLE OF CONTENTS +* +* 1. COMMUNICATION EXTERNALS +* +* 2. COMMUNICATION REGION (INCLUDING APPLICATIONS AREA) +* +* 3. INTERRUPT REGION +* +* 4. INTERRUPT MASK TABLE (MASKT) +* +* 5. EXTENDED COMMUNICATIONS REGION +* +* 6. STORAGE STACKS (INTSTK,VOLBLK, SCHSTK) +* +* 7. LOGICAL UNIT TABLES (LOG1A, LOG1, LOG2) +* +* 8. DIAGNOSTIC TABLES (DGNTAB, ALTERR) +* +* 9. STANDARD LOGICAL UNIT DEFINITIONS AND LINE 1 TABLE +* +* 10. PHYSICAL DEVICE TABLES WITH INTERRUPT RESPONSE ROUTINES +* +* 11. CORE ALLOCATION INFORMATION (CALTHD, LVLSTR, NN'S) +* +* 12. CORE PARTITION INFORMATION (PARTBL, THDS, USE) +* +* 13. SYSTEM COMMON DECLARATION +* +* 14. MISCELLANEOUS PROGRAMS +* +* 15. MISCELLANEOUS INFORMATION +* +* 16. SYSTEM FILE INFORMATION +* +* 17. PRESET REGION +* +* 18. START OF SYSTEM DIRECTORY +* + EJT +* C O M M U N I C A T I O N S E X T E R N A L S +* +* + EXT FNR FIND NEXT REQUEST + EXT COMPRQ COMPLETE REQUEST + EXT REQXT REQUEST EXIT + EXT VOLR VOLATILE RELEASE + EXT VOLA VOLATILE ASSIGNMENT + EXT LUABS LOGICAL UNIT ABSOLUTIZING + EXT SABS STARTING ADDRESS ABSOLUTIZING + EXT CABS COMPLETION ADDRESS ABSOLUTIZING + EXT NABS NUMBER OF WORDS ABSOLUTIZING + EXT DISPXX DISPATCHER + EXT MONI MONITOR + EXT MSIZV4 HIGHEST CORE LOCATION USED BY SYSTEM + EXT IPROC INTERNAL INTERRUPT PROCESSOR + EXT ALLIN COMMON INTERRUPT HANDLER + EJT +* C O M M U N I C A T I O N R E G I O N +* + ORG 0 + RTJ SYFAIL GO TO COMMON SYSTEM FAILURE ROUTINE +* +LPMSK NUM 0 LOGICAL PRODUCT MASK TABLE OF ONES +ONE NUM 1 ONE +THREE NUM 3 THREE +SEVEN NUM 7 SEVEN + NUM $F + NUM $1F + NUM $3F + NUM $7F + NUM $FF + NUM $1FF + NUM $3FF + NUM $7FF + NUM $FFF + NUM $1FFF + NUM $3FFF + NUM $7FFF +* +NZERO NUM $FFFF LOGICAL PRODUCT MASK TABLE OF ZEROS (NEG ZERO) + NUM $FFFE + NUM $FFFC + NUM $FFF8 + NUM $FFF0 + NUM $FFE0 + NUM $FFC0 + NUM $FF80 + NUM $FF00 + NUM $FE00 + NUM $FC00 + NUM $F800 + NUM $F000 + NUM $E000 + NUM $C000 + NUM $8000 + EJT +* C O M M U N I C A T I O N R E G I O N +* +ZERO NUM 0 ZERO +* +ONEBIT NUM 1 ONE BIT TABLE +TWO NUM 2 TWO +FOUR NUM 4 FOUR +EIGHT NUM 8 EIGHT + NUM $10 + NUM $20 + NUM $40 + NUM $80 + NUM $100 + NUM $200 + NUM $400 + NUM $800 + NUM $1000 + NUM $2000 + NUM $4000 + NUM $8000 +* +ZROBIT NUM $FFFE ZERO BIT TABLE + NUM $FFFD + NUM $FFFB + NUM $FFF7 + NUM $FFEF + NUM $FFDF + NUM $FFBF + NUM $FF7F + NUM $FEFF + NUM $FDFF + NUM $FBFF + NUM $F7FF + NUM $EFFF + NUM $DFFF + NUM $BFFF + NUM $7FFF +* +FIVE NUM 5 FIVE +SIX NUM 6 SIX +NINE NUM 9 NINE +TEN NUM 10 TEN + EJT +* C O M M U N I C A T I O N R E G I O N +* +* THIS AREA IS AVAILABLE FOR APPLICATIONS USE +* + NUM 0 $47 + NUM 0 $48 + NUM 0 $49 + NUM 0 $4A + NUM 0 $4B + NUM 0 $4C + NUM 0 $4D + NUM 0 $4E + NUM 0 $4F + NUM 0 $50 + NUM 0 $51 + NUM 0 $52 + NUM 0 $53 + NUM 0 $54 + NUM 0 $55 + NUM 0 $56 + NUM 0 $57 + NUM 0 $58 + NUM 0 $59 + NUM 0 $5A + NUM 0 $5B + NUM 0 $5C + NUM 0 $5D + NUM 0 $5E + NUM 0 $5F + NUM 0 $60 + NUM 0 $61 + NUM 0 $62 + NUM 0 $63 + NUM 0 $64 + NUM 0 $65 + NUM 0 $66 + NUM 0 $67 + NUM 0 $68 + NUM 0 $69 + NUM 0 $6A + NUM 0 $6B + NUM 0 $6C + NUM 0 $6D + NUM 0 $6E + NUM 0 $6F + EJT + SPC 4 +* C O M M U N I C A T I O N R E G I O N +* +* THIS AREA IS AVAILABLE FOR APPLICATIONS USE +* + NUM 0 $70 + NUM 0 $71 + NUM 0 $72 + NUM 0 $73 + NUM 0 $74 + NUM 0 $75 + NUM 0 $76 + NUM 0 $77 + NUM 0 $78 + NUM 0 $79 + NUM 0 $7A + NUM 0 $7B + NUM 0 $7C + NUM 0 $7D + NUM 0 $7E + NUM 0 $7F + NUM 0 $80 + NUM 0 $81 + NUM 0 $82 + NUM 0 $83 + NUM 0 $84 + NUM 0 $85 + NUM 0 $86 + NUM 0 $87 + NUM 0 $88 + NUM 0 $89 + NUM 0 $8A + NUM 0 $8B + NUM 0 $8C + NUM 0 $8D + NUM 0 $8E + NUM 0 $8F + EJT + SPC 2 +* C O M M U N I C A T I O N R E G I O N +* +* THIS AREA IS AVAILABLE FOR APPLICATIONS USE +* + NUM 0 $90 + NUM 0 $91 + NUM 0 $92 + NUM 0 $93 + NUM 0 $94 + NUM 0 $95 + NUM 0 $96 + NUM 0 $97 + NUM 0 $98 + NUM 0 $99 + NUM 0 $9A + NUM 0 $9B + NUM 0 $9C + NUM 0 $9D + NUM 0 $9E + NUM 0 $9F + NUM 0 $A0 + NUM 0 $A1 + NUM 0 $A2 + NUM 0 $A3 + NUM 0 $A4 + NUM 0 $A5 + NUM 0 $A6 + NUM 0 $A7 + NUM 0 $A8 + NUM 0 $A9 + NUM 0 $AA + NUM 0 $AB + NUM 0 $AC + NUM 0 $AD + NUM 0 $AE + NUM 0 $AF + NUM 0 $B0 + NUM 0 $B1 + NUM 0 $B2 + EJT +* C O M M U N I C A T I O N R E G I O N +* + ORG $B3 + ADC SCRTCH LOGICAL UNIT OF STANDARD SCRATCH DEVICE + ADC SCHSTK ADR OF TOP OF SCHEDULER STACK +AFNR ADC FNR ADR OF FIND NEXT REQUEST +ACOMPR ADC COMPRQ ADR OF COMPLETE REQUEST + ADC MASKT ADR OF MASK TABLE + ADC INTSTK ADR OF TOP OF INTERRUPT STACK + ADC REQXT ADR OF EXIT FOR MONITOR REQUESTS +AVOLR ADC VOLR ADR OF RELEASE VOLATILE ROUTINE +AVOLA ADC VOLA ADR OF ASSIGN VOLATILE ROUTINE + ADC LUABS ADR OF ABSOLUTIZING ROUTINE FOR LOGICAL UNIT + ADC SABS ADR OF ABSOLUTIZING ROUTINE FOR STARTING ADR + ADC CABS ADR OF ABSOLUTIZING ROUTINE FOR COMPLETION ADR + ADC NABS ADR OF ABSOLUTIZING ROUTINE FOR NUMBER OF WRDS + NUM 0 MSB OF STARTING SCRATCH SECTOR (ALWAYS ZERO) + NUM 0 LSB OF STARTING SCRATCH SECTOR (SET BY SI) + ADC LBUNIT LOGICAL UNIT OF STANDARD LIBRARY DEVICE + NUM 0 MSB OF PGM LIB DIRECTORY SECTOR (ALWAYS ZERO) + NUM 0 LSB OF PGM LIB DIRECTORY SECTOR (SET BY SI) +* + BZS ($E3-$C5+1) RESERVED FOR FTN (UNPROTECTED) + NUM 0 RESERVED FOR FTN + LOAD/GO SECTOR(UNPROTECTED) + NUM 0 RESERVED FOR FTN (UNPROTECTED) +* + BSS (1) LENGTH OF MASS RESIDENT SYSTEM DIR.(SET BY SI) + BSS (1) LENGTH OF CORE RESIDENT SYSTEM DIR.(SET BY SI) + NUM 0 REAL TIME CLOCK COUNTER + ADC EXTBV4 ADDR OF EXTENDED CORE TABLE +ADISP ADC DISPXX ADR OF DISPATCHER + ADC SLDIRY ADR OF SYSTEM DIRECTORY + NUM 0 TEMPORARY TOP+1 OF UNPROTECTED (SET BY SI) + NUM 0 TEMPORARY BOTTOM-1 OF UNPROTECTED (SET BY SI) + NUM 0 USED BY JOB PROCESSOR FOR LOADER RETURNS + NUM -1 CURRENT PRIORITY LEVEL + ADC VOLBLK STARTING LOCATION OF VOLATILE STORAGE + ADC LPRSET LENGTH OF PRESETS TABLE + ADC APRSET STARTING LOCATION OF PRESETS TABLE + ADC 0 ADR OF BREAKPOINT PROGRAM IN CORE(UNPROTECTED) +AMONI ADC MONI ADR OF MONITOR ENTRY FOR REQUESTS + ADC MSIZV4 HIGHEST CORE LOCATION USED BY SYSTEM + NUM 0 TOP+1 OF UNPROTECTED (SET BY SI) + NUM 0 BOTTOM-1 OF UNPROTECTED (SET BY SI) + ADC IPROC ADR OF INTERNAL INTERRUPT PROCESSOR + ADC STDINP LOGICAL UNIT OF STANDARD INPUT DEVICE (FTN 1) + ADC BINOUT LOGICAL UNIT OF STANDARD BINARY DEVICE (FTN 2) + ADC LSTOUT LOGICAL UNIT OF STANDARD PRINT DEVICE (FTN 3) + ADC OUTCOM LOGICAL UNIT OF OUTPUT COMMENT DEVICE (FTN 4) + ADC INPCOM LOGICAL UNIT OF INPUT COMMENT DEVICE (FTN 4) + ADC ALLIN ADR OF COMMON INTERRUPT HANDLER + BSS (1) I (MEMORY INDEX) REGISTER (UNPROTECTED) + EJT + SPC 6 +* I N T E R R U P T R E G I O N +* +* +* +LINE00 NUM 0 INTERRUPT LINE ENTRY + RTJ- ($F8) GO TO INTERRUPT HANDLER ROUTINE + NUM 15 PRIORITY LEVEL OF INTERRUPT + ADC IPROC INTERRUPT RESPONSE FOR THE PROTECT/PARITY ERR. +* +LINE01 NUM 0 INTERRUPT LINE ENTRY + RTJ- ($FE) GO TO INTERRUPT HANDLER ROUTINE + NUM 13 PRIORITY LEVEL OF INTERRUPT + ADC LIN1V4 INTERRUPT RESPONSE FOR THE LOW SPEED I / O +* +LINE02 NUM 0 INTERRUPT LINE ENTRY + RTJ- ($FE) GO TO INTERRUPT HANDLER ROUTINE + NUM 09 PRIORITY LEVEL OF INTERRUPT + ADC R1752 INTERRUPT RESPONSE FOR THE 1752 DRUM +* +LINE03 NUM 0 INTERRUPT LINE ENTRY + RTJ- ($FE) GO TO INTERRUPT HANDLER ROUTINE + NUM 09 PRIORITY LEVEL OF INTERRUPT + ADC R17332 INTERRUPT RESPONSE FOR THE 1733-2/856-2/4 DISK +* +LINE04 NUM 0 INTERRUPT LINE ENTRY + RTJ- ($FE) GO TO INTERRUPT HANDLER ROUTINE + NUM 10 PRIORITY LEVEL OF INTERRUPT + ADC R42312 INTERRUPT RESPONSE FOR THE 1742-30/120 PRINTER +* +LINE05 NUM 0 INTERRUPT LINE ENTRY + RTJ- ($FE) GO TO INTERRUPT HANDLER ROUTINE + NUM 10 PRIORITY LEVEL OF INTERRUPT + ADC INVINT INTERRUPT RESPONSE FOR THE INVALID INTERRUPTS +* +LINE06 NUM 0 INTERRUPT LINE ENTRY + RTJ- ($FE) GO TO INTERRUPT HANDLER ROUTINE + NUM 0 PRIORITY LEVEL OF INTERRUPT + ADC INVINT INTERRUPT RESPONSE FOR THE INVALID INTERRUPTS + SPC 1 +* +LINE07 NUM 0 INTERRUPT LINE ENTRY + RTJ- ($FE) GO TO INTERRUPT HANDLER ROUTINE + NUM 10 PRIORITY LEVEL OF INTERRUPT + ADC R17323 INTERRUPT RESPONSE FOR THE 1732-3/616 MAG TAPE +* +LINE08 NUM 0 INTERRUPT LINE ENTRY + RTJ- ($FE) GO TO INTERRUPT HANDLER ROUTINE + NUM 0 PRIORITY LEVEL OF INTERRUPT + ADC INVINT INTERRUPT RESPONSE FOR THE INVALID INTERRUPTS + SPC 1 +* +LINE09 NUM 0 INTERRUPT LINE ENTRY + RTJ- ($FE) GO TO INTERRUPT HANDLER ROUTINE + NUM 0 PRIORITY LEVEL OF INTERRUPT + ADC INVINT INTERRUPT RESPONSE FOR THE INVALID INTERRUPTS + SPC 1 +* +LINE10 NUM 0 INTERRUPT LINE ENTRY + RTJ- ($FE) GO TO INTERRUPT HANDLER ROUTINE + NUM 14 PRIORITY LEVEL OF INTERRUPT + ADC R1728 INTERRUPT RESPONSE FOR THE 1728-430 READ/PNCH +* +LINE11 NUM 0 INTERRUPT LINE ENTRY + RTJ- ($FE) GO TO INTERRUPT HANDLER ROUTINE + NUM 0 PRIORITY LEVEL OF INTERRUPT + ADC INVINT INTERRUPT RESPONSE FOR THE INVALID INTERRUPTS + SPC 1 +* +LINE12 NUM 0 INTERRUPT LINE ENTRY + RTJ- ($FE) GO TO INTERRUPT HANDLER ROUTINE + NUM 0 PRIORITY LEVEL OF INTERRUPT + ADC INVINT INTERRUPT RESPONSE FOR THE INVALID INTERRUPTS + SPC 1 +* +LINE13 NUM 0 INTERRUPT LINE ENTRY + RTJ- ($FE) GO TO INTERRUPT HANDLER ROUTINE + NUM 0 PRIORITY LEVEL OF INTERRUPT + ADC INVINT INTERRUPT RESPONSE FOR THE INVALID INTERRUPTS + SPC 1 +* +LINE14 NUM 0 INTERRUPT LINE ENTRY + RTJ- ($FE) GO TO INTERRUPT HANDLER ROUTINE + NUM 0 PRIORITY LEVEL OF INTERRUPT + ADC INVINT INTERRUPT RESPONSE FOR THE INVALID INTERRUPTS + SPC 1 +* +LINE15 NUM 0 INTERRUPT LINE ENTRY + RTJ- ($FE) GO TO INTERRUPT HANDLER ROUTINE + NUM 0 PRIORITY LEVEL OF INTERRUPT + ADC INVINT INTERRUPT RESPONSE FOR THE INVALID INTERRUPTS + SPC 1 + EJT +* C O R E R E S I D E N T D E B U G E N T R I E S + SPC 2 + ORG $140 + SPC 1 + EXT COUTV4 + EXT COBOP + SPC 2 + JMP+ COUTV4 OFF-LINE CORE DUMP + SPC 4 + JMP+ COBOP SYSTEM CHECKOUT BOOTSTRAP + EJT +* I N T E R R U P T M A S K T A B L E +* +* + ENT MASKT INTERRUPT MASKS INDEXED BY PRIORITY LEVEL +* +* +* <----------------------------- INTERRUPT LINE NUMBER +* 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 +* **************************************************** +* P -1 * 0 0 0 0 0 1 0 0 1 0 0 1 1 1 1 1 * +* R 0 * 0 0 0 0 0 1 0 0 1 0 0 1 1 1 1 1 * +* I 1 * 0 0 0 0 0 1 0 0 1 0 0 1 1 1 1 1 * +* O 2 * 0 0 0 0 0 1 0 0 1 0 0 1 1 1 1 1 * +* R 3 * 0 0 0 0 0 1 0 0 1 0 0 1 1 1 1 1 * +* I 4 * 0 0 0 0 0 1 0 0 1 0 0 1 1 1 1 1 * +* T 5 * 0 0 0 0 0 1 0 0 1 0 0 1 1 1 1 1 * +* Y 6 * 0 0 0 0 0 1 0 0 1 0 0 1 1 1 1 1 * +* 7 * 0 0 0 0 0 1 0 0 1 0 0 1 1 1 1 1 * +* L 8 * 0 0 0 0 0 1 0 0 1 0 0 1 1 1 1 1 * +* E 9 * 0 0 0 0 0 1 0 0 1 0 0 1 0 0 1 1 * +* V 10 * 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 * +* E 11 * 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 * +* L 12 * 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 * +* . 13 * 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 * +* . 14 * 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 * +* V 15 * 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 * +* **************************************************** +* +* + NUM $049F PRIORITY LEVEL -1 +MASKT NUM $049F PRIORITY LEVEL 00 + NUM $049F PRIORITY LEVEL 01 + NUM $049F PRIORITY LEVEL 02 + NUM $049F PRIORITY LEVEL 03 + NUM $049F PRIORITY LEVEL 04 + NUM $049F PRIORITY LEVEL 05 + NUM $049F PRIORITY LEVEL 06 + NUM $049F PRIORITY LEVEL 07 + NUM $049F PRIORITY LEVEL 08 + NUM $0493 PRIORITY LEVEL 09 + NUM $0403 PRIORITY LEVEL 10 + NUM $0403 PRIORITY LEVEL 11 + NUM $0403 PRIORITY LEVEL 12 + NUM $0401 PRIORITY LEVEL 13 + NUM $0001 PRIORITY LEVEL 14 + NUM $0000 PRIORITY LEVEL 15 + EJT +* E X T E N D E D C O M M U N I C A T I O N S R E G I O N +* +* REFERENCED THRU LOCATION $E9 + SPC 3 + ENT MAXSEC + ENT MPFLAG + ENT MIINP + EXT JFILV4 + EXT RCTV + EXT END0V4 + EXT DATBAS + EXT SECTOR + EQU CSYLST(9) + EQU CSYINP(10) + EQU CSYPUN(11) + EQU SECT1(0) + EQU SECT3(0) + EQU SECT4($5BFA) + SPC 3 +EXTBV4 ADC 0 00 MODE SWITCH 32K=0 65K=1 + ADC CSYINP 01 STANDARD COSY INPUT LU NUMBER + ADC CSYPUN 02 STANDARD COSY OUTPUT LU NUMBER + ADC CSYLST 03 STANDARD COSY LIST LU NUMBER + ADC 0 04 FIRST SECTOR LSB OF SYSTEM CORE IMAGE + ADC 0 05 FIRST SECTOR LSB OF S. A. T. + ADC 0 06 FIRST SECTOR LSB OF CREP TABLE + ADC 0 07 FIRST SECTOR LSB OF CREP1 TABLE + ADC JFILV4 08 FIRST SECTOR LSB OF JOB FILE DIRECTORY + ADC RCTV 09 ADDRESS OF RCTV TABLE IN THE MONITOR + ADC 0 10 UNPROTECTED CORE FLAG 0=PART0 / 1=PART1 + ADC 0 11 UNPROTECTED SWAP ALLOWED 0=YES / 1=NO + ADC AYERTO 12 ADDRESS LOCATION CONTAINING THE YEAR + ADC AMONTO 13 ADDRESS LOCATION CONTAINING THE MONTH + ADC ADAYTO 14 ADDRESS LOCATION CONTAINING THE DAY + ADC END0V4 15 LAST ADDRESS OF PART 0 CORE + ADC 0 16 FIRST ADDRESS OF BLANK (SYSTEM) COMMON + ADC DATBAS 17 FIRST ADDRESS OF LABELED COMMON + ADC 0 18 COSY DRIVER CURRENT PHYSTAB ADDRESS + ADC 0 19 JOB TABLE INITIALIZATION FLAG + ADC 0 20 MASS MEMORY LOCATION OF ENGINEERING FILE + ADC SECT1 21 MSB OF MAXIMUM SCRATCH SECTOR +MAXSEC ADC SECTOR 22 LSB OF MAXIMUM SCRATCH SECTOR + ADC SECT3 23 MSB OF MAXIMUM LIBRARY SECTOR + ADC SECT4 24 LSB OF MAXIMUM LIBRARY SECTOR + ADC 0 25 LAST ADDRESS OF LABELED COMMON + ADC 0 26 UNUSED +MPFLAG ADC 0 27 ZERO IF NOT AN MP SYSTEM + ADC LOG1A 28 ADDRESS OF LOG1A TABLE +MIINP BZS MIINP(40) MANUAL INPUT BUFFER + EJT +* S Y S T E M I D E N T I F I C A T I O N +* + SPC 1 + ENT SYSID + EXT SYSMON MONTH SYSTEM WAS BUILT + EXT SYSDAY DAY SYSTEM WAS BUILT + EXT SYSYER YEAR SYSTEM WAS BUILT + SPC 4 +SYSID ALF 16, SIMH DEVELOPMENT SYSTEM + ADC SYSMON + ADC SYSDAY + ADC SYSYER + SPC 4 +* COMMON SYSTEM FAILURE ROUTINE + SPC 2 + ENT SYFAIL + SPC 1 +SYFAIL NOP 0 + IIN 0 INHIBIT INTERRUPTS + STA* SAVEA SAVE A + STQ* SAVEQ SAVE Q + TRM A MOVE M TO A + STA* SAVEM SAVE M + LDA* SYFAIL PICK UP ADDRESS OF CALLER + INA -2 CORRECT IT FOR 2 WORD RTJ + STA* SYFAIL STORE IT BACK + NUM $18FF HANG + SPC 2 +SAVEA NUM 0 +SAVEQ NUM 0 +SAVEM NUM 0 + EJT +* C O N T R O L P O I N T / B O U N D S R E G I S T E R +* P A R A M E T E R S +* + ENT UBPROT + ENT LBPROT + ENT UPBDTB + ENT LOBDTB + ENT TSCNAC + ENT TSCNMI + ENT SIM200 + ENT CCP + ENT CPSET + SPC + EQU UBPROT($7FFF),LBPROT($7FFF),UPBDTB($7FFF),LOBDTB($7FFF) + EQU TSCNAC($7FFF),TSCNMI($7FFF),SIM200($7FFF) + EQU CCP($7FFF) + SPC 2 +CPSET NUM 0 + JMP* (CPSET) + EJT +* S T O R A G E S T A C K S +* +* +NUMPRI EQU NUMPRI(16) NUMBER OF SYSTEM PRIORITY LEVELS +EXTVOL EQU EXTVOL(00) AMOUNT OF EXTRA VOLATILE STORAGE +* +NFTNLV EQU NFTNLV(3) NUMBER OF REENTRANT FORTRAN LEVELS +NEDLVL EQU NEDLVL(3) NUMBER OF REENTRANT ENCODE/DECODE LEVELS + SPC 3 +* +* I N T E R R U P T S T A C K +* + ENT INTSTK CONTENTS, 1 = Q-REGISTER +* 2 = A-REGISTER +* 3 = I-REGISTER +* 4 = P-REGISTER +* 5 = PRIORITY LEVEL AND OVERFLOW +* INDICATOR (BIT 15) +* +INTSTK BZS INTSTK(5*NUMPRI) + SPC 3 +* +* V O L A T I L E B L O C K S T A C K +* + ENT VOLBLK CONTENTS, 1 = Q-REGISTER + ENT VOLEND 2 = A-REGISTER +* 3 = I-REGISTER +* 4 = USER ASSIGNMENTS +* . +* N = USER ASSIGNMENTS +* +VOLBLK BZS VOLBLK(18*NUMPRI+98*NFTNLV+57*NEDLVL+EXTVOL+1) +VOLEND EQU VOLEND(*) END OF VOLATILE + SPC 3 +* +* S C H E D U L E R / T I M E R S T A C K +* + ENT SCHSTK CONTENTS, 1 = SCHEDULER CALL + ENT SCHLNG 2 = STARTING ADDRESS +* 3 = THREAD TO NEXT CALL +SCHSTK EQU SCHSTK(*) 4 = Q-REGISTER CONTENTS + SPC 1 + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 001 + EJT + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 002 + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 003 + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 004 + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 005 + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 006 + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 007 + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 008 + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 009 + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 010 + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 011 + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 012 + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 013 + EJT + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 014 + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 015 + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 016 + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 017 + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 018 + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 019 + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 020 + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 021 + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 022 + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 023 + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 024 + ADC 0,0,(-0),0 SCHEDULER STACK ENTRY 025 +SCHLNG EQU SCHLNG(*-SCHSTK) SCHEDULER STACK LENGTH + EJT +* L O G I C A L U N I T T A B L E S ( L O G 1 A ) +* +* + ENT LOG1A PHYSICAL DEVICES ADDRESSES BY LOGICAL UNIT + ENT NUMLU + SPC 1 +LOG1A ADC NUMLU NUMBER OF LOGICAL UNITS + ADC PCORE 1 CORE ALLOCATOR + ADC PDUMMY 2 DUMMY LOGICAL UNIT + ADC PDUMMY 3 DUMMY LOGICAL UNIT + ADC P1711 4 1711 TELETYPE, 713-10 CRT + ADC PCOSY1 5 COSY DRIVER, FIRST UNIT + ADC P73230 6 1732-3 616-73/93/95 MAG TAPE UNIT 0 + ADC PSUDO0 7 PSEUDO TAPE, UNIT 0 + ADC P73320 8 1733-2 856-2/4 DISK, UNIT 0 + ADC P42312 9 1742-30/120 LINE PRINTER +X73230 ADC P73230 10 DIAGNOSTIC 1732-3 616 MAG TAPE, UNIT 0 + ADC P1728 11 1728-430 CARD PUNCH +FTN742 ADC P42312 12 1742-30/120 FORTRAN LINE PRINTER + ADC P73321 13 1733-2 856-2/4 DISK, UNIT 1 + ADC P73322 14 1733-2 856-2/4 DISK, UNIT 2 + ADC P73323 15 1733-2 856-2/4 DISK, UNIT 3 + ADC P73231 16 1732-3 616-73/93/95 MAG TAPE UNIT 1 + ADC P73232 17 1732-3 616-73/93/95 MAG TAPE UNIT 2 + ADC P73233 18 1732-3 616-73/93/95 MAG TAPE UNIT 3 + ADC PSUDO1 19 PSEUDO TAPE, UNIT 1 + ADC PSUDO2 20 PSEUDO TAPE, UNIT 2 + ADC PSUDO3 21 PSEUDO TAPE, UNIT 3 + ADC PSDSK0 22 PSEUDO DISK, UNIT 0 + ADC PSDSK1 23 PSEUDO DISK, UNIT 1 + ADC PSDSK2 24 PSEUDO DISK, UNIT 2 + ADC PSDSK3 25 PSEUDO DISK, UNIT 3 + ADC P1752 26 1752 DRUM + ADC PCOSY2 27 COSY DRIVER, SECOND UNIT + ADC P1728 28 1728-430 CARD READER +X73231 ADC P73231 29 DIAGNOSTIC 1732-3 616 MAG TAPE, UNIT 1 +X73232 ADC P73232 30 DIAGNOSTIC 1732-3 616 MAG TAPE, UNIT 2 +X73233 ADC P73233 31 DIAGNOSTIC 1732-3 616 MAG TAPE, UNIT 3 +X42312 ADC P42312 32 DIAGNOSTIC 1742-30/120 LINE PRINTER +X1728 ADC P1728 33 DIAGNOSTIC 1728-430 READER / PUNCH +X1711 ADC P1711 34 DIAGNOSTIC 1711 TELETYPE, 713-10 CRT +NUMLU EQU NUMLU(*-LOG1A-1) + EJT +* L O G I C A L U N I T T A B L E S ( L O G 1 ) +* +* + ENT LOG1 LOGICAL UNIT INFORMATION BY LOGICAL UNIT +* BIT 14 = 1, IMPLIES LU SHARES DEVICE +* BIT 13 = 1, IMPLIES LU IS MARKED DOWN +* BITS 0 - 11 IS ALTERNATE LOGICAL UNIT +* ALTERNATE = 0, IMPLIES NONE +S EQU S($4000) SHARED BIT + SPC 1 +LOG1 ADC NUMLU NUMBER OF LOGICAL UNITS + ADC 0 1 CORE ALLOCATOR + ADC 0+S 2 DUMMY LOGICAL UNIT + ADC 0+S 3 DUMMY LOGICAL UNIT + ADC 2+S 4 1711 TELETYPE, 713-10 CRT + ADC 0 5 COSY DRIVER, FIRST UNIT + ADC 0+S 6 1732-3 616-73/93/95 MAG TAPE UNIT 0 + ADC 0 7 PSEUDO TAPE, UNIT 0 + ADC 0 8 1733-2 856-2/4 DISK, UNIT 0 + ADC 0+S 9 1742-30/120 LINE PRINTER + ADC 0+S 10 DIAGNOSTIC 1732-3 616 MAG TAPE, UNIT 0 + ADC 0+S 11 1728-430 CARD PUNCH + ADC 0+S 12 1742-30/120 FORTRAN LINE PRINTER + ADC 0 13 1733-2 856-2/4 DISK, UNIT 1 + ADC 0 14 1733-2 856-2/4 DISK, UNIT 2 + ADC 0 15 1733-2 856-2/4 DISK, UNIT 3 + ADC 0+S 16 1732-3 616-73/93/95 MAG TAPE UNIT 1 + ADC 0+S 17 1732-3 616-73/93/95 MAG TAPE UNIT 2 + ADC 0+S 18 1732-3 616-73/93/95 MAG TAPE UNIT 3 + ADC 0 19 PSEUDO TAPE, UNIT 1 + ADC 0 20 PSEUDO TAPE, UNIT 2 + ADC 0 21 PSEUDO TAPE, UNIT 3 + ADC 0 22 PSEUDO DISK, UNIT 0 + ADC 0 23 PSEUDO DISK, UNIT 1 + ADC 0 24 PSEUDO DISK, UNIT 2 + ADC 0 25 PSEUDO DISK, UNIT 3 + ADC 0 26 1752 DRUM + ADC 0 27 COSY DRIVER, SECOND UNIT + ADC 0+S 28 1728-430 CARD READER + ADC 0+S 29 DIAGNOSTIC 1732-3 616 MAG TAPE, UNIT 1 + ADC 0+S 30 DIAGNOSTIC 1732-3 616 MAG TAPE, UNIT 2 + ADC 0+S 31 DIAGNOSTIC 1732-3 616 MAG TAPE, UNIT 3 + ADC 0+S 32 DIAGNOSTIC 1742-30/120 LINE PRINTER + ADC 0+S 33 DIAGNOSTIC 1728-430 READER / PUNCH + ADC 0+S 34 DIAGNOSTIC 1711 TELETYPE, 713-10 CRT + EJT +* L O G I C A L U N I T T A B L E S ( L O G 2 ) +* +* + ENT LOG2 TOP OF I/O THREAD ADDRESSES BY LOGICAL UNIT + SPC 1 +LOG2 ADC NUMLU NUMBER OF LOGICAL UNITS + NUM $FFFF 1 CORE ALLOCATOR + NUM $FFFF 2 DUMMY LOGICAL UNIT + NUM $FFFF 3 DUMMY LOGICAL UNIT + NUM $FFFF 4 1711 TELETYPE, 713-10 CRT + NUM $FFFF 5 COSY DRIVER, FIRST UNIT + NUM $FFFF 6 1732-3 616-73/93/95 MAG TAPE UNIT 0 + NUM $FFFF 7 PSEUDO TAPE, UNIT 0 + NUM $FFFF 8 1733-2 856-2/4 DISK, UNIT 0 + NUM $FFFF 9 1742-30/120 LINE PRINTER + NUM $FFFF 10 DIAGNOSTIC 1732-3 616 MAG TAPE, UNIT 0 + NUM $FFFF 11 1728-430 CARD PUNCH + NUM $FFFF 12 1742-30/120 FORTRAN LINE PRINTER + NUM $FFFF 13 1733-2 856-2/4 DISK, UNIT 1 + NUM $FFFF 14 1733-2 856-2/4 DISK, UNIT 2 + NUM $FFFF 15 1733-2 856-2/4 DISK, UNIT 3 + NUM $FFFF 16 1732-3 616-73/93/95 MAG TAPE UNIT 1 + NUM $FFFF 17 1732-3 616-73/93/95 MAG TAPE UNIT 2 + NUM $FFFF 18 1732-3 616-73/93/95 MAG TAPE UNIT 3 + NUM $FFFF 19 PSEUDO TAPE, UNIT 1 + NUM $FFFF 20 PSEUDO TAPE, UNIT 2 + NUM $FFFF 21 PSEUDO TAPE, UNIT 3 + NUM $FFFF 22 PSEUDO DISK, UNIT 0 + NUM $FFFF 23 PSEUDO DISK, UNIT 1 + NUM $FFFF 24 PSEUDO DISK, UNIT 2 + NUM $FFFF 25 PSEUDO DISK, UNIT 3 + NUM $FFFF 26 1752 DRUM + NUM $FFFF 27 COSY DRIVER, SECOND UNIT + NUM $FFFF 28 1728-430 CARD READER + NUM $FFFF 29 DIAGNOSTIC 1732-3 616 MAG TAPE, UNIT 1 + NUM $FFFF 30 DIAGNOSTIC 1732-3 616 MAG TAPE, UNIT 2 + NUM $FFFF 31 DIAGNOSTIC 1732-3 616 MAG TAPE, UNIT 3 + NUM $FFFF 32 DIAGNOSTIC 1742-30/120 LINE PRINTER + NUM $FFFF 33 DIAGNOSTIC 1728-430 READER / PUNCH + NUM $FFFF 34 DIAGNOSTIC 1711 TELETYPE, 713-10 CRT + EJT +* D I A G N O S T I C T A B L E S +* +* + ENT ALTERR ALTERNATE DEVICE ERROR TABLE + SPC 1 +ALTERR ADC NUMLU ERROR TABLE SIZE + BZS (NUMLU) SPACE FOR MAXIMUM SIMULTANEOUS FAILURES + SPC 3 + ENT DGNTAB DIAGNOSTIC TIMER TABLE + SPC 1 +DGNTAB EQU DGNTAB(*) START OF TABLE + ADC PCORE 1 CORE ALLOCATOR + ADC P1711 4 1711 TELETYPE, 713-10 CRT + ADC P73230 6 1732-3 616-73/93/95 MAG TAPE UNIT 0 + ADC P73320 8 1733-2 856-2/4 DISK, UNIT 0 + ADC P42312 9 1742-30/120 LINE PRINTER + ADC P73321 13 1733-2 856-2/4 DISK, UNIT 1 + ADC P73322 14 1733-2 856-2/4 DISK, UNIT 2 + ADC P73323 15 1733-2 856-2/4 DISK, UNIT 3 + ADC P73231 16 1732-3 616-73/93/95 MAG TAPE UNIT 1 + ADC P73232 17 1732-3 616-73/93/95 MAG TAPE UNIT 2 + ADC P73233 18 1732-3 616-73/93/95 MAG TAPE UNIT 3 + ADC P1752 26 1752 DRUM + ADC P1728 28 1728-430 CARD READER + NUM $FFFF END OF TABLE + EJT + SPC 4 +* S T A N D A R D L O G I C A L U N I T S +* + ENT DUMALT +* +DUMALT EQU DUMALT(2) STANDARD DUMMY ALTERNATE +INPCOM EQU INPCOM(4) STANDARD INPUT COMMENT +OUTCOM EQU OUTCOM(4) STANDARD OUTPUT COMMENT +LBUNIT EQU LBUNIT(8) STANDARD LIBRARY UNIT +SCRTCH EQU SCRTCH(8) STANDARD SCRATCH UNIT +LSTOUT EQU LSTOUT(9) STANDARD LIST OUTPUT +STDINP EQU STDINP(10) STANDARD INPUT +BINOUT EQU BINOUT(11) STANDARD BINARY OUTPUT + EJT +* L I N E O N E T A B L E +* + SPC 1 +* + ENT LIN1V4 LINE 1 INTERRUPT ENTRY + SPC 1 +LIN1V4 LDQ* LN1TV4 PLACE THE PDT ADDRESS IN Q + LDA- 2,Q + STA- I + JMP- (I) TRANSFER CONTROL TO THE DRIVER CONTINUATOR + SPC 3 + ENT INVINT + SPC 1 +INVINT JMP- (ADISP) +* + SPC 4 + EQU LN1TV4(*) START OF TABLE + ADC P1711 1711 TELETYPE, 713-10 CRT + NUM $FFFF END OF TABLE + EJT +* P H Y S I C A L D E V I C E T A B L E S +* +* +* THE FOLLOWING SECTION CONTAINS THE PHYSICAL DEVICE TABLES +* AND INTERRUPT RESPONSE ROUTINES FOR EACH LOGICAL UNIT IN +* THE SYSTEM. +* +* LISTED BELOW ARE THE MANDATORY ENTRIES FOR ALL PHYSICAL +* DEVICE TABLES. ADDITIONAL ENTRIES REQUIRED BY EACH +* DRIVER MAY BE ADDED AFTER THE LAST ENTRY INDICATED. + SPC 3 +PHYSTB EQU PHYSTB(*) + EQU ELVL(0) 00 SCHEDULER CALL WITH DRIVER LEVEL + EQU EDIN(1) 01 DRIVER INITIATOR ENTRY + EQU EDCN(2) 02 DRIVER CONTINUATOR ENTRY + EQU EDPGM(3) 03 DRIVER DIAGNOSTIC ENTRY + EQU EDCLK(4) 04 DIAGNOSTIC CLOCK + EQU ELU(5) 05 LOGICAL UNIT + EQU EPTR(6) 06 PARAMETER LOCATION + EQU EWES(7) 07 CONVERTOR, EQUIPMENT, STATION + EQU EREQST(8) 08 REQUEST STATUS + EQU ESTAT1(9) 09 DRIVER STATUS + EQU ECCOR(10) 10 CURRENT LOCATION + EQU ELSTWD(11) 11 LAST LOCATION PLUS ONE + EQU ESTAT2(12) 12 DEVICE STATUS + EQU MASLGN(13) 13 DRIVER LENGTH (IF MASS MEMORY) + EQU MASSEC(14) 14 NAME ASSOCIATED WITH SECTOR NUMBER + EQU RETURN(15) 15 RESERVED FOR FNR AND CMR + SPC 3 +* LINK UNSELECTED PHYSICAL DEVICE TABLES + SPC 1 + ENT P18ECM + ENT P18PGA + ENT P18ADD + ENT P18MXP +P18ECM EQU P18ECM($7FFF) +P18PGA EQU P18PGA($7FFF) +P18ADD EQU P18ADD($7FFF) +P18MXP EQU P18MXP($7FFF) + EJT +* C O R E A L L O C A T O R +* + SPC 1 + ENT PCORE + EXT ICORE,ECORE + EQU SWAPT(0) SWAP TIME + SPC 1 +PCORE ADC $5207 00 SCHEDULER CALL + ADC ICORE 01 INITIATOR ADDRESS + ADC 0 02 CONTINUATOR ADDRESS - NOT USED + ADC ECORE 03 TIMEOUT ERROR ADDRESS + NUM -1 04 DIAGNOSTIC CLOCK + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION + NUM 0 07 CONVERTER, EQUIPMENT, STATION - NONE + NUM $00D6 08 REQUEST STATUS + NUM 0 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM 0 12 DEVICE STATUS + VFD X16/SWAPT-1 13 TIME BETWEEN SWAPS (NONE IF NEGATIVE) + NUM $7FFF 14 RESERVED + NUM 0 15 RESERVED FOR FNR AND CMR + EJT +* D U M M Y L O G I C A L U N I T +* + SPC 1 + EXT IDUMMY,CDUMMY,EDUMMY + SPC 1 +PDUMMY ADC $520A 00 SCHEDULER CALL + ADC IDUMMY 01 INITIATOR ADDRESS + ADC CDUMMY 02 CONTINUATOR ADDRESS + ADC EDUMMY 03 TIMEOUT ERROR ADDRESS + NUM -1 04 DIAGNOSTIC CLOCK - NOT USED + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION + NUM 0 07 CONVERTER, EQUIPMENT, STATION - NONE + NUM $01F6 08 REQUEST STATUS + NUM $8000 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM 0 12 DEVICE STATUS + NUM 0 13 RESERVED + NUM $7FFF 14 RESERVED + NUM 0 15 RESERVED FOR FNR AND CMR + EJT +* 1 7 1 1 T E L E T Y P E , 7 1 3 - 1 0 C R T +* + SPC 1 + EXT I1711,C1711,E1711 + EQU T713(04*$10) TYPE CODE - 713-10 CRT + EQU T1711(00*$10) TYPE CODE - 1711 TELETYPE + EQU U1711(X1711-LOG1A) + SPC 1 +P1711 ADC $520D 00 SCHEDULER CALL + ADC I1711 01 INITIATOR ADDRESS + ADC C1711 02 CONTINUATOR ADDRESS + ADC E1711 03 TIMEOUT ERROR ADDRESS + NUM -1 04 DIAGNOSTIC CLOCK + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION + NUM $0091 07 CONVERTER, EQUIPMENT, STATION + ADC $3006+T1711 08 REQUEST STATUS + NUM 0 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM 0 12 DEVICE STATUS + NUM 0 13 ERROR CODE AND STARTING LOCATION + NUM $7FFF 14 RESERVED + NUM 0 15 RESERVED FOR FNR AND CMR + NUM 0 16 DRIVER FLAGS + NUM 1 17 HARDWARE PARITY CHECK FLAG + ADC U1711 18 DIAGNOSTIC LU + EJT +* C O S Y D R I V E R +* + SPC 1 + EQU MCOSY1(1) +* + IFA MCOSY1,EQ,0 CORE RESIDENT DRIVER + EXT ICOSY + EQU LCOSY(0) + EQU SCOSY($7FFF) + EIF +* + IFA MCOSY1,EQ,1 MASS RESIDENT DRIVER + EXT MASDRV +ICOSY JMP+ MASDRV INITIATE DRIVER + EXT LCOSY + EXT SCOSY + EIF +* + EJT +* C O S Y D R I V E R , F I R S T U N I T +* + SPC 1 +PCOSY1 ADC $5208 00 SCHEDULER CALL + ADC ICOSY 01 INITIATOR ADDRESS + ADC 0 02 CONTINUATOR ADDRESS - NOT USED + ADC 0 03 TIMEOUT ERROR ADDRESS - NOT USED + NUM -1 04 DIAGNOSTIC CLOCK + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION + NUM 0 07 CONVERTER, EQUIPMENT, STATION - NONE + NUM $08B6 08 REQUEST STATUS + NUM 0 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM 0 12 DEVICE STATUS + ADC LCOSY 13 DRIVER LENGTH IF MASS MEMORY + ADC SCOSY 14 NAME ASSOCIATED WITH SECTOR NUMBER + NUM 0 15 RESERVED FOR FNR AND CMR + ADC PCOSY2 16 PHYSTB THREAD + NUM 0 17 SEQUENCE NUMBER + NUM 0 18 ID + NUM 0 19 ID-1 + NUM 0 20 ID-2 + NUM 0 21 NUMBER OF WORDS REQUESTED + NUM $5555 22 HOL-CHARACTER POINTER + NUM $5555 23 COSY-CHARACTER POINTER + NUM 0 24 R/W FLAG + NUM 1 25 PON5F + NUM 0 26 FSTCHR + NUM 0 27 ENDDCK + ADC INPBFA 28 COSY BUFFER LOCATION + ADC INPBFA 29 NEXT COSY WORD + NUM 0 30 HOL-BUFFER POINTER + NUM 1 31 INITIAL CALL FLAG + NUM 0 32 SEQUENCE FLAG NONZERO=NO SEQUENCE NUMBER +* + BZS INPBFA(192) 33 COSY BUFFER +* 224 COSY BUFFER + EJT +* C O S Y D R I V E R , S E C O N D U N I T +* + SPC 1 +PCOSY2 ADC $5208 00 SCHEDULER CALL + ADC ICOSY 01 INITIATOR ADDRESS + ADC 0 02 CONTINUATOR ADDRESS - NOT USED + ADC 0 03 TIMEOUT ERROR ADDRESS - NOT USED + NUM -1 04 DIAGNOSTIC CLOCK + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION + NUM 0 07 CONVERTER, EQUIPMENT, STATION - NONE + NUM $08B6 08 REQUEST STATUS + NUM 0 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM 0 12 DEVICE STATUS + ADC LCOSY 13 DRIVER LENGTH IF MASS MEMORY + ADC SCOSY 14 NAME ASSOCIATED WITH SECTOR NUMBER + NUM 0 15 RESERVED FOR FNR AND CMR + ADC PCOSY1 16 PHYSTB THREAD + NUM 0 17 SEQUENCE NUMBER + NUM 0 18 ID + NUM 0 19 ID-1 + NUM 0 20 ID-2 + NUM 0 21 NUMBER OF WORDS REQUESTED + NUM $5555 22 HOL-CHARACTER POINTER + NUM $5555 23 COSY-CHARACTER POINTER + NUM 0 24 R/W FLAG + NUM 1 25 PON5F + NUM 0 26 FSTCHR + NUM 0 27 ENDDCK + ADC INPBFB 28 COSY BUFFER LOCATION + ADC INPBFB 29 NEXT COSY WORD + NUM 0 30 HOL-BUFFER POINTER + NUM 1 31 INITIAL CALL FLAG + NUM 0 32 SEQUENCE FLAG NONZERO=NO SEQUENCE NUMBER +* + BZS INPBFB(192) 33 COSY BUFFER +* 224 COSY BUFFER + EJT +* 6 1 6 - 7 2 / 9 2 / 9 5 M A G T A P E +* + SPC 1 + EQU T6167(53*$10) TYPE CODE - 616-72 MAG TAPE + EQU T6169(54*$10) TYPE CODE - 616-92-95 MAG TAPE + EQU PHSREC(192) MAX. PHYSICAL RECORD SIZE FOR 7 TRACK + SPC 2 +BF1F33 BZS BF1F33(PHSREC*4/3+2) PACK/UNPACK BUFFER (7 TRACK) + SPC 1 + EQU M17323(1) +* + IFA M17323,EQ,0 CORE RESIDENT DRIVER + EXT I17323 + EXT C17323 + EXT E17323 + EQU L17323(0) + EQU S17323($7FFF) + EIF +* + IFA M17323,EQ,1 MASS RESIDENT DRIVER + EXT MASDRV + EXT MASCON + EXT MASERR +I17323 JMP+ MASDRV INITIATE DRIVER +C17323 JMP+ MASCON INTERRUPT RESPONSE +E17323 JMP+ MASERR TIMEOUT ERROR + EXT L17323 + EXT S17323 + EIF +* + SPC 2 +R17323 LDQ =XP73230 INTERRUPT RESPONSE FOR 616-72-92-95 MAG TAPE + JMP* (P73230+2) + EJT +* 6 1 6 - 7 2 / 9 2 / 9 5 M A G T A P E , U N I T 0 +* + EQU U73230(X73230-LOG1A) + SPC 1 +P73230 ADC $520A 00 SCHEDULER CALL + ADC I17323 01 INITIATOR ADDRESS + ADC C17323 02 CONTINUATOR ADDRESS + ADC E17323 03 TIMEOUT ERROR ADDRESS + NUM -1 04 DIAGNOSTIC CLOCK + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION + NUM $0381 07 CONVERTER, EQUIPMENT, STATION + ADC $0806+T6169 08 REQUEST STATUS + NUM 0 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM 0 12 DEVICE STATUS + ADC L17323 13 DRIVER LENGTH IF MASS MEMORY + ADC S17323 14 NAME ASSOCIATED WITH SECTOR NUMBER + NUM 0 15 RESERVED FOR FNR AND CMR + NUM $0448 16 REC. OPT., UNIT, FUNCTION, DENSITY CONTROL + ADC U73230 17 DIAGNOSTIC LU + ADC 0 18 ERROR CODE + NUM 0 19 RECOVERY RETURN ADDRESS + NUM 0 20 RECORD CHECKSUM + NUM $D554 21 FUNCTION DIRECTORY BITWORD + NUM 0 22 TEMPORARY CHECKSUM + ADC P73231 23 PHYSTB THREAD + ADC PHSREC 24 MAX PHY RECORD SIZE (7 TRACK) + ADC BF1F33 25 PACK/UNPACK BUFFER (7 TRACK) + EJT +* 6 1 6 - 7 2 / 9 2 / 9 5 M A G T A P E , U N I T 1 +* + EQU U73231(X73231-LOG1A) + SPC 1 +P73231 ADC $520A 00 SCHEDULER CALL + ADC I17323 01 INITIATOR ADDRESS + ADC C17323 02 CONTINUATOR ADDRESS + ADC E17323 03 TIMEOUT ERROR ADDRESS + NUM -1 04 DIAGNOSTIC CLOCK + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION + NUM $0381 07 CONVERTER, EQUIPMENT, STATION + ADC $0806+T6169 08 REQUEST STATUS + NUM 0 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM 0 12 DEVICE STATUS + ADC L17323 13 DRIVER LENGTH IF MASS MEMORY + ADC S17323 14 NAME ASSOCIATED WITH SECTOR NUMBER + NUM 0 15 RESERVED FOR FNR AND CMR + NUM $04C8 16 REC. OPT., UNIT, FUNCTION, DENSITY CONTROL + ADC U73231 17 DIAGNOSTIC LU + ADC 0 18 ERROR CODE + NUM 0 19 RECOVERY RETURN ADDRESS + NUM 0 20 RECORD CHECKSUM + NUM $D554 21 FUNCTION DIRECTORY BITWORD + NUM 0 22 TEMPORARY CHECKSUM + ADC P73232 23 PHYSTB THREAD + ADC PHSREC 24 MAX PHY RECORD SIZE (7 TRACK) + ADC BF1F33 25 PACK/UNPACK BUFFER (7 TRACK) + EJT +* 6 1 6 - 7 2 / 9 2 / 9 5 M A G T A P E , U N I T 2 +* + EQU U73232(X73232-LOG1A) + SPC 1 +P73232 ADC $520A 00 SCHEDULER CALL + ADC I17323 01 INITIATOR ADDRESS + ADC C17323 02 CONTINUATOR ADDRESS + ADC E17323 03 TIMEOUT ERROR ADDRESS + NUM -1 04 DIAGNOSTIC CLOCK + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION + NUM $0381 07 CONVERTER, EQUIPMENT, STATION + ADC $0806+T6169 08 REQUEST STATUS + NUM 0 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM 0 12 DEVICE STATUS + ADC L17323 13 DRIVER LENGTH IF MASS MEMORY + ADC S17323 14 NAME ASSOCIATED WITH SECTOR NUMBER + NUM 0 15 RESERVED FOR FNR AND CMR + NUM $0548 16 REC. OPT., UNIT, FUNCTION, DENSITY CONTROL + ADC U73232 17 DIAGNOSTIC LU + ADC 0 18 ERROR CODE + NUM 0 19 RECOVERY RETURN ADDRESS + NUM 0 20 RECORD CHECKSUM + NUM $D554 21 FUNCTION DIRECTORY BITWORD + NUM 0 22 TEMPORARY CHECKSUM + ADC P73233 23 PHYSTB THREAD + ADC PHSREC 24 MAX PHY RECORD SIZE (7 TRACK) + ADC BF1F33 25 PACK/UNPACK BUFFER (7 TRACK) + EJT +* 6 1 6 - 7 2 / 9 2 / 9 5 M A G T A P E , U N I T 3 +* + EQU U73233(X73233-LOG1A) + SPC 1 +P73233 ADC $520A 00 SCHEDULER CALL + ADC I17323 01 INITIATOR ADDRESS + ADC C17323 02 CONTINUATOR ADDRESS + ADC E17323 03 TIMEOUT ERROR ADDRESS + NUM -1 04 DIAGNOSTIC CLOCK + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION + NUM $0381 07 CONVERTER, EQUIPMENT, STATION + ADC $0806+T6169 08 REQUEST STATUS + NUM 0 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM 0 12 DEVICE STATUS + ADC L17323 13 DRIVER LENGTH IF MASS MEMORY + ADC S17323 14 NAME ASSOCIATED WITH SECTOR NUMBER + NUM 0 15 RESERVED FOR FNR AND CMR + NUM $05C8 16 REC. OPT., UNIT, FUNCTION, DENSITY CONTROL + ADC U73233 17 DIAGNOSTIC LU + ADC 0 18 ERROR CODE + NUM 0 19 RECOVERY RETURN ADDRESS + NUM 0 20 RECORD CHECKSUM + NUM $D554 21 FUNCTION DIRECTORY BITWORD + NUM 0 22 TEMPORARY CHECKSUM + ADC P73230 23 PHYSTB THREAD + ADC PHSREC 24 MAX PHY RECORD SIZE (7 TRACK) + ADC BF1F33 25 PACK/UNPACK BUFFER (7 TRACK) + EJT +* P S E U D O T A P E +* + SPC 1 + EQU PSTPD0(1) +* + IFA PSTPD0,EQ,0 CORE RESIDENT DRIVER + EXT IPSUDO + EQU LPSUDO(0) + EQU SPSUDO($7FFF) + EIF +* + IFA PSTPD0,EQ,1 MASS RESIDENT DRIVER + EXT MASDRV +IPSUDO JMP+ MASDRV INITIATE DRIVER + EXT LPSUDO + EXT SPSUDO + EIF +* + EJT +* P S E U D O T A P E , U N I T 0 +* + SPC 1 +PSUDO0 ADC $5208 00 SCHEDULER CALL + ADC IPSUDO 01 INITIATOR ADDRESS + ADC 0 02 CONTINUATOR ADDRESS - NOT USED + ADC 0 03 TIMEOUT ERROR ADDRESS - NOT USED + NUM -1 04 DIAGNOSTIC CLOCK - NOT USED + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION +PWES0 NUM 0 07 CONVERTER, EQUIPMENT, STATION - NONE + NUM $0A46 08 REQUEST STATUS + NUM 0 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM 1 12 DEVICE STATUS + ADC LPSUDO 13 DRIVER LENGTH IF MASS MEMORY + ADC SPSUDO 14 NAME ASSOCIATED WITH SECTOR NUMBER + NUM 0 15 RESERVED FOR FNR AND CMR + NUM 0 16 FILE NUMBER + NUM 0 17 TEMP FOR MOTION REQ PROCESSOR + NUM 0 18 TEMP FOR MOTION REQ PROCESSOR + BZS (12) 19 REQUEST BUFFER - REQBUF + NUM 0 31 BLOCK POINTER - BLKPTR + BZS (30) 32 POINTER BLOCK - PTRBLK +PSDRQ0 NUM 0 62 * + NUM $5400 63 * + NUM 0 64 * AREA TO BE STUFFED WITH + ADC PWES0 65 * FILE MANAGER AND DISK REQUESTS + BZS (6) 66 * + NUM $1400 72 * + RTJ* (PSDRQ0) 73 * + ADC 0 74 INPUT BUFFER ADDRESS + ADC PSUDO1 75 PHYSTB THREAD + EJT +* P S E U D O T A P E , U N I T 1 +* + SPC 1 +PSUDO1 ADC $5208 00 SCHEDULER CALL + ADC IPSUDO 01 INITIATOR ADDRESS + ADC 0 02 CONTINUATOR ADDRESS - NOT USED + ADC 0 03 TIMEOUT ERROR ADDRESS - NOT USED + NUM -1 04 DIAGNOSTIC CLOCK - NOT USED + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION +PWES1 NUM 0 07 CONVERTER, EQUIPMENT, STATION - NONE + NUM $0A46 08 REQUEST STATUS + NUM 0 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM 1 12 DEVICE STATUS + ADC LPSUDO 13 DRIVER LENGTH IF MASS MEMORY + ADC SPSUDO 14 NAME ASSOCIATED WITH SECTOR NUMBER + NUM 0 15 RESERVED FOR FNR AND CMR + NUM 0 16 FILE NUMBER + NUM 0 17 TEMP FOR MOTION REQ PROCESSOR + NUM 0 18 TEMP FOR MOTION REQ PROCESSOR + BZS (12) 19 REQUEST BUFFER - REQBUF + NUM 0 31 BLOCK POINTER - BLKPTR + BZS (30) 32 POINTER BLOCK - PTRBLK +PSDRQ1 NUM 0 62 * + NUM $5400 63 * + NUM 0 64 * AREA TO BE STUFFED WITH + ADC PWES1 65 * FILE MANAGER AND DISK REQUESTS + BZS (6) 66 * + NUM $1400 72 * + RTJ* (PSDRQ1) 73 * + ADC 0 74 INPUT BUFFER ADDRESS + ADC PSUDO2 75 PHYSTB THREAD + EJT +* P S E U D O T A P E , U N I T 2 +* + SPC 1 +PSUDO2 ADC $5208 00 SCHEDULER CALL + ADC IPSUDO 01 INITIATOR ADDRESS + ADC 0 02 CONTINUATOR ADDRESS - NOT USED + ADC 0 03 TIMEOUT ERROR ADDRESS - NOT USED + NUM -1 04 DIAGNOSTIC CLOCK - NOT USED + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION +PWES2 NUM 0 07 CONVERTER, EQUIPMENT, STATION - NONE + NUM $0A46 08 REQUEST STATUS + NUM 0 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM $C401 12 DEVICE STATUS + ADC LPSUDO 13 DRIVER LENGTH IF MASS MEMORY + ADC SPSUDO 14 NAME ASSOCIATED WITH SECTOR NUMBER + NUM 0 15 RESERVED FOR FNR AND CMR + NUM $7FF7 16 FILE NUMBER + NUM 0 17 TEMP FOR MOTION REQ PROCESSOR + NUM 0 18 TEMP FOR MOTION REQ PROCESSOR + BZS (12) 19 REQUEST BUFFER - REQBUF + NUM 0 31 BLOCK POINTER - BLKPTR + BZS (30) 32 POINTER BLOCK - PTRBLK +PSDRQ2 NUM 0 62 * + NUM $5400 63 * + NUM 0 64 * AREA TO BE STUFFED WITH + ADC PWES2 65 * FILE MANAGER AND DISK REQUESTS + BZS (6) 66 * + NUM $1400 72 * + RTJ* (PSDRQ2) 73 * + ADC 0 74 INPUT BUFFER ADDRESS + ADC PSUDO3 75 PHYSTB THREAD + EJT +* P S E U D O T A P E , U N I T 3 +* + SPC 1 +PSUDO3 ADC $5208 00 SCHEDULER CALL + ADC IPSUDO 01 INITIATOR ADDRESS + ADC 0 02 CONTINUATOR ADDRESS - NOT USED + ADC 0 03 TIMEOUT ERROR ADDRESS - NOT USED + NUM -1 04 DIAGNOSTIC CLOCK - NOT USED + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION +PWES3 NUM 0 07 CONVERTER, EQUIPMENT, STATION - NONE + NUM $0A46 08 REQUEST STATUS + NUM 0 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM $C401 12 DEVICE STATUS + ADC LPSUDO 13 DRIVER LENGTH IF MASS MEMORY + ADC SPSUDO 14 NAME ASSOCIATED WITH SECTOR NUMBER + NUM 0 15 RESERVED FOR FNR AND CMR + NUM $7FF8 16 FILE NUMBER + NUM 0 17 TEMP FOR MOTION REQ PROCESSOR + NUM 0 18 TEMP FOR MOTION REQ PROCESSOR + BZS (12) 19 REQUEST BUFFER - REQBUF + NUM 0 31 BLOCK POINTER - BLKPTR + BZS (30) 32 POINTER BLOCK - PTRBLK +PSDRQ3 NUM 0 62 * + NUM $5400 63 * + NUM 0 64 * AREA TO BE STUFFED WITH + ADC PWES3 65 * FILE MANAGER AND DISK REQUESTS + BZS (6) 66 * + NUM $1400 72 * + RTJ* (PSDRQ3) 73 * + ADC 0 74 INPUT BUFFER ADDRESS + ADC PSUDO0 75 PHYSTB THREAD + EJT +* P S E U D O D I S K U N I T 0 +* + SPC 1 + EXT IPSDSK,CPSDSK,EPSDSK + EQU SBIAS0(1) + SPC 1 +PSDSK0 ADC $5209 00 SCHEDULER CALL + ADC IPSDSK 01 INITIATOR ADDRESS + ADC CPSDSK 02 CONTINUATOR ADDRESS + ADC EPSDSK 03 TIMEOUT ERROR ADDRESS + NUM -1 04 DIAGNOSTIC CLOCK + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION + NUM 0 07 CONVERTER, EQUIPMENT, STATION - NONE + NUM $1486 08 REQUEST STATUS + NUM 0 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM 0 12 DEVICE STATUS + NUM 0 13 RESERVED + NUM 0 14 RESERVED + NUM 0 15 RESERVED FOR FNR AND CMR + NUM 0 16 NEW REQUEST + ADC CPSDSK 17 COMPLETION + NUM 0 18 THREAD + NUM 8 19 MASS MEMORY LOGICAL UNIT + NUM 0 20 NUMBER OF WORDS + NUM 0 21 BUFFER + NUM 0 22 NEW REQUEST MSB + NUM 0 23 NEW REQUEST LSB + NUM 0 24 CONTROL POINT FOR TIME SHARE SYSTEM + ADC SBIAS0 25 SECTOR BIAS + ADC SBIAS0*$60 26 WORD BIAS + NUM 9 27 COMPLETION LEVEL + EJT +* P S E U D O D I S K U N I T 1 +* + EQU SBIAS1(1) + SPC 1 +PSDSK1 ADC $5209 00 SCHEDULER CALL + ADC IPSDSK 01 INITIATOR ADDRESS + ADC CPSDSK 02 CONTINUATOR ADDRESS + ADC EPSDSK 03 TIMEOUT ERROR ADDRESS + NUM -1 04 DIAGNOSTIC CLOCK + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION + NUM 0 07 CONVERTER, EQUIPMENT, STATION - NONE + NUM $1486 08 REQUEST STATUS + NUM 0 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM 0 12 DEVICE STATUS + NUM 0 13 RESERVED + NUM 0 14 RESERVED + NUM 0 15 RESERVED FOR FNR AND CMR + NUM 0 16 NEW REQUEST + ADC CPSDSK 17 COMPLETION + NUM 0 18 THREAD + NUM 13 19 MASS MEMORY LOGICAL UNIT + NUM 0 20 NUMBER OF WORDS + NUM 0 21 BUFFER + NUM 0 22 NEW REQUEST MSB + NUM 0 23 NEW REQUEST LSB + NUM 0 24 CONTROL POINT FOR TIME SHARE SYSTEM + ADC SBIAS1 25 SECTOR BIAS + ADC SBIAS1*$60 26 WORD BIAS + NUM 9 27 COMPLETION LEVEL + EJT +* P S E U D O D I S K U N I T 2 +* + EQU SBIAS2(1) + SPC 1 +PSDSK2 ADC $5209 00 SCHEDULER CALL + ADC IPSDSK 01 INITIATOR ADDRESS + ADC CPSDSK 02 CONTINUATOR ADDRESS + ADC EPSDSK 03 TIMEOUT ERROR ADDRESS + NUM -1 04 DIAGNOSTIC CLOCK + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION + NUM 0 07 CONVERTER, EQUIPMENT, STATION - NONE + NUM $1486 08 REQUEST STATUS + NUM 0 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM 0 12 DEVICE STATUS + NUM 0 13 RESERVED + NUM 0 14 RESERVED + NUM 0 15 RESERVED FOR FNR AND CMR + NUM 0 16 NEW REQUEST + ADC CPSDSK 17 COMPLETION + NUM 0 18 THREAD + NUM 14 19 MASS MEMORY LOGICAL UNIT + NUM 0 20 NUMBER OF WORDS + NUM 0 21 BUFFER + NUM 0 22 NEW REQUEST MSB + NUM 0 23 NEW REQUEST LSB + NUM 0 24 CONTROL POINT FOR TIME SHARE SYSTEM + ADC SBIAS2 25 SECTOR BIAS + ADC SBIAS2*$60 26 WORD BIAS + NUM 9 27 COMPLETION LEVEL + EJT +* P S E U D O D I S K U N I T 3 +* + EQU SBIAS3(1) + SPC 1 +PSDSK3 ADC $5209 00 SCHEDULER CALL + ADC IPSDSK 01 INITIATOR ADDRESS + ADC CPSDSK 02 CONTINUATOR ADDRESS + ADC EPSDSK 03 TIMEOUT ERROR ADDRESS + NUM -1 04 DIAGNOSTIC CLOCK + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION + NUM 0 07 CONVERTER, EQUIPMENT, STATION - NONE + NUM $1486 08 REQUEST STATUS + NUM 0 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM 0 12 DEVICE STATUS + NUM 0 13 RESERVED + NUM 0 14 RESERVED + NUM 0 15 RESERVED FOR FNR AND CMR + NUM 0 16 NEW REQUEST + ADC CPSDSK 17 COMPLETION + NUM 0 18 THREAD + NUM 15 19 MASS MEMORY LOGICAL UNIT + NUM 0 20 NUMBER OF WORDS + NUM 0 21 BUFFER + NUM 0 22 NEW REQUEST MSB + NUM 0 23 NEW REQUEST LSB + NUM 0 24 CONTROL POINT FOR TIME SHARE SYSTEM + ADC SBIAS3 25 SECTOR BIAS + ADC SBIAS3*$60 26 WORD BIAS + NUM 9 27 COMPLETION LEVEL + EJT +* 1 7 3 3 - 2 / 8 5 6 D I S K +* + SPC 1 + ENT P332D0 + EXT I17332,C17332,E17332 + EQU T8562(15*$10) TYPE CODE - 1733-2 856-2 + EQU T8564(16*$10) TYPE CODE - 1733-2 856-4 + SPC 2 +R17332 LDQ =XP73320 INTERRUPT RESPONSE FOR 1733-2 DISK + JMP* (P73320+2) + EJT +* 1 7 3 3 - 2 / 8 5 6 D I S K - U N I T 0 +* + SPC 1 + EQU P332D0(*) +P73320 ADC $5209 00 SCHEDULER CALL + ADC I17332 01 INITIATOR ADDRESS + ADC C17332 02 CONTINUATOR ADDRESS + ADC E17332 03 TIMEOUT ERROR ADDRESS + NUM -1 04 DIAGNOSTIC CLOCK + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION + NUM $0181 07 CONVERTER, EQUIPMENT, STATION + ADC $1006+T8564 08 REQUEST STATUS + NUM $0200 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM 0 12 DEVICE STATUS + NUM 0 13 ERROR COUNTER + NUM 0 14 DATA TRANSFER FUNCTION + NUM 0 15 SECTOR NUMBER OR FNR RETURN + NUM $8100 16 NO COMPARE FLAG / DIRECTOR FUNCTION + NUM 0 17 TEMSEC - USED BY WORD ADDRESSING + NUM 0 18 OVERLAY AREA (SCHEDULER CALL) + NUM 0 19 OVERLAY AREA (COMPLETION ADDRESS) + NUM 0 20 OVERLAY AREA (THREAD) + NUM 0 21 OVERLAY AREA (LOGICAL UNIT) + ADC P73321 22 PHYSTB THREAD + NUM 0 23 RETURN ADDRESS FOR DATA TRANSFER + NUM $5BFB 24 FIRST SECTOR ADDRESS ON DISK 1 + NUM 0 25 LAST DATA TRANSFER FUNCTION + NUM 0 26 BUFFER SIZE FOR SPLIT TRANSFERS + NUM 0 27 CYLINDER ADDRESS FOR TRANSFER + NUM 1 28 MASK FOR THIS UNITS SEEK COMPLETE BIT + ADC BF332A 29 ADDRESS OF 96 WORD BUFFER + NUM 0 30 TEMPORARY FOR WORD ADDRESSING + NUM 0 31 TEMPORARY FOR WORD ADDRESSING + NUM 0 32 TEMPORARY FOR WORD ADDRESSING + NUM 0 33 REQUEST CODE + NUM 0 34 REQUEST PRIORITY + NUM 0 35 STARTING SECTOR FOR COMPARE OR RETRY + NUM 0 36 FWA OF TRANSFER FOR COMPARE OR RETRY + NUM 0 37 ERROR COUNTER + NUM 0 38 DATA TRANSFER FUNCTION CODE + NUM $FFFF 39 SECTOR NUMBER CURRENTLY IN BUFFER + NUM 0 40 LAST VALUE OF CYLINDER ADDRESS STATUS + NUM 0 41 LAST VALUE OF C W A STATUS + NUM 0 42 LAST VALUE OF CHECKWORD STATUS + NUM 0 43 LAST VALUE OF DRIVE CYLINDER STATUS +* + BZS BF332A(96) 44 BUFFER FOR WORD ADDRESSING +* 139 BUFFER FOR WORD ADDRESSING + EJT +* 1 7 3 3 - 2 / 8 5 6 D I S K - U N I T 1 +* + SPC 1 +P73321 ADC $5209 00 SCHEDULER CALL + ADC I17332 01 INITIATOR ADDRESS + ADC C17332 02 CONTINUATOR ADDRESS + ADC E17332 03 TIMEOUT ERROR ADDRESS + NUM -1 04 DIAGNOSTIC CLOCK + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION + NUM $0181 07 CONVERTER, EQUIPMENT, STATION + ADC $1006+T8564 08 REQUEST STATUS + NUM $0200 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM 0 12 DEVICE STATUS + NUM 0 13 ERROR COUNTER + NUM 0 14 DATA TRANSFER FUNCTION + NUM 0 15 SECTOR NUMBER OR FNR RETURN + NUM $8300 16 NO COMPARE FLAG / DIRECTOR FUNCTION + NUM 0 17 TEMSEC - USED BY WORD ADDRESSING + NUM 0 18 OVERLAY AREA (SCHEDULER CALL) + NUM 0 19 OVERLAY AREA (COMPLETION ADDRESS) + NUM 0 20 OVERLAY AREA (THREAD) + NUM 0 21 OVERLAY AREA (LOGICAL UNIT) + ADC P73322 22 PHYSTB THREAD + NUM 0 23 RETURN ADDRESS FOR DATA TRANSFER + NUM $5BFB 24 FIRST SECTOR ADDRESS ON DISK 1 + NUM 0 25 LAST DATA TRANSFER FUNCTION + NUM 0 26 BUFFER SIZE FOR SPLIT TRANSFERS + NUM 0 27 CYLINDER ADDRESS FOR TRANSFER + NUM 2 28 MASK FOR THIS UNITS SEEK COMPLETE BIT + ADC BF332B 29 ADDRESS OF 96 WORD BUFFER + NUM 0 30 TEMPORARY FOR WORD ADDRESSING + NUM 0 31 TEMPORARY FOR WORD ADDRESSING + NUM 0 32 TEMPORARY FOR WORD ADDRESSING + NUM 0 33 REQUEST CODE + NUM 0 34 REQUEST PRIORITY + NUM 0 35 STARTING SECTOR FOR COMPARE OR RETRY + NUM 0 36 FWA OF TRANSFER FOR COMPARE OR RETRY + NUM 0 37 ERROR COUNTER + NUM 0 38 DATA TRANSFER FUNCTION CODE + NUM $FFFF 39 SECTOR NUMBER CURRENTLY IN BUFFER + NUM 0 40 LAST VALUE OF CYLINDER ADDRESS STATUS + NUM 0 41 LAST VALUE OF C W A STATUS + NUM 0 42 LAST VALUE OF CHECKWORD STATUS + NUM 0 43 LAST VALUE OF DRIVE CYLINDER STATUS +* + BZS BF332B(96) 44 BUFFER FOR WORD ADDRESSING +* 139 BUFFER FOR WORD ADDRESSING + EJT +* 1 7 3 3 - 2 / 8 5 6 D I S K - U N I T 2 +* + SPC 1 +P73322 ADC $5209 00 SCHEDULER CALL + ADC I17332 01 INITIATOR ADDRESS + ADC C17332 02 CONTINUATOR ADDRESS + ADC E17332 03 TIMEOUT ERROR ADDRESS + NUM -1 04 DIAGNOSTIC CLOCK + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION + NUM $0181 07 CONVERTER, EQUIPMENT, STATION + ADC $1006+T8564 08 REQUEST STATUS + NUM $0200 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM 0 12 DEVICE STATUS + NUM 0 13 ERROR COUNTER + NUM 0 14 DATA TRANSFER FUNCTION + NUM 0 15 SECTOR NUMBER OR FNR RETURN + NUM $8500 16 NO COMPARE FLAG / DIRECTOR FUNCTION + NUM 0 17 TEMSEC - USED BY WORD ADDRESSING + NUM 0 18 OVERLAY AREA (SCHEDULER CALL) + NUM 0 19 OVERLAY AREA (COMPLETION ADDRESS) + NUM 0 20 OVERLAY AREA (THREAD) + NUM 0 21 OVERLAY AREA (LOGICAL UNIT) + ADC P73323 22 PHYSTB THREAD + NUM 0 23 RETURN ADDRESS FOR DATA TRANSFER + NUM $5BFB 24 FIRST SECTOR ADDRESS ON DISK 1 + NUM 0 25 LAST DATA TRANSFER FUNCTION + NUM 0 26 BUFFER SIZE FOR SPLIT TRANSFERS + NUM 0 27 CYLINDER ADDRESS FOR TRANSFER + NUM 4 28 MASK FOR THIS UNITS SEEK COMPLETE BIT + ADC BF332C 29 ADDRESS OF 96 WORD BUFFER + NUM 0 30 TEMPORARY FOR WORD ADDRESSING + NUM 0 31 TEMPORARY FOR WORD ADDRESSING + NUM 0 32 TEMPORARY FOR WORD ADDRESSING + NUM 0 33 REQUEST CODE + NUM 0 34 REQUEST PRIORITY + NUM 0 35 STARTING SECTOR FOR COMPARE OR RETRY + NUM 0 36 FWA OF TRANSFER FOR COMPARE OR RETRY + NUM 0 37 ERROR COUNTER + NUM 0 38 DATA TRANSFER FUNCTION CODE + NUM $FFFF 39 SECTOR NUMBER CURRENTLY IN BUFFER + NUM 0 40 LAST VALUE OF CYLINDER ADDRESS STATUS + NUM 0 41 LAST VALUE OF C W A STATUS + NUM 0 42 LAST VALUE OF CHECKWORD STATUS + NUM 0 43 LAST VALUE OF DRIVE CYLINDER STATUS +* + BZS BF332C(96) 44 BUFFER FOR WORD ADDRESSING +* 139 BUFFER FOR WORD ADDRESSING + EJT +* 1 7 3 3 - 2 / 8 5 6 D I S K - U N I T 3 +* + SPC 1 +P73323 ADC $5209 00 SCHEDULER CALL + ADC I17332 01 INITIATOR ADDRESS + ADC C17332 02 CONTINUATOR ADDRESS + ADC E17332 03 TIMEOUT ERROR ADDRESS + NUM -1 04 DIAGNOSTIC CLOCK + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION + NUM $0181 07 CONVERTER, EQUIPMENT, STATION + ADC $1006+T8564 08 REQUEST STATUS + NUM $0200 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM 0 12 DEVICE STATUS + NUM 0 13 ERROR COUNTER + NUM 0 14 DATA TRANSFER FUNCTION + NUM 0 15 SECTOR NUMBER OR FNR RETURN + NUM $8700 16 NO COMPARE FLAG / DIRECTOR FUNCTION + NUM 0 17 TEMSEC - USED BY WORD ADDRESSING + NUM 0 18 OVERLAY AREA (SCHEDULER CALL) + NUM 0 19 OVERLAY AREA (COMPLETION ADDRESS) + NUM 0 20 OVERLAY AREA (THREAD) + NUM 0 21 OVERLAY AREA (LOGICAL UNIT) + ADC P73320 22 PHYSTB THREAD + NUM 0 23 RETURN ADDRESS FOR DATA TRANSFER + NUM $5BFB 24 FIRST SECTOR ADDRESS ON DISK 1 + NUM 0 25 LAST DATA TRANSFER FUNCTION + NUM 0 26 BUFFER SIZE FOR SPLIT TRANSFERS + NUM 0 27 CYLINDER ADDRESS FOR TRANSFER + NUM 8 28 MASK FOR THIS UNITS SEEK COMPLETE BIT + ADC BF332D 29 ADDRESS OF 96 WORD BUFFER + NUM 0 30 TEMPORARY FOR WORD ADDRESSING + NUM 0 31 TEMPORARY FOR WORD ADDRESSING + NUM 0 32 TEMPORARY FOR WORD ADDRESSING + NUM 0 33 REQUEST CODE + NUM 0 34 REQUEST PRIORITY + NUM 0 35 STARTING SECTOR FOR COMPARE OR RETRY + NUM 0 36 FWA OF TRANSFER FOR COMPARE OR RETRY + NUM 0 37 ERROR COUNTER + NUM 0 38 DATA TRANSFER FUNCTION CODE + NUM $FFFF 39 SECTOR NUMBER CURRENTLY IN BUFFER + NUM 0 40 LAST VALUE OF CYLINDER ADDRESS STATUS + NUM 0 41 LAST VALUE OF C W A STATUS + NUM 0 42 LAST VALUE OF CHECKWORD STATUS + NUM 0 43 LAST VALUE OF DRIVE CYLINDER STATUS +* + BZS BF332D(96) 44 BUFFER FOR WORD ADDRESSING +* 139 BUFFER FOR WORD ADDRESSING + EJT +* 1 7 5 2 D R U M +* + EXT I1752,C1752,E1752 + SPC 2 +R1752 LDQ =XP1752 INTERRUPT RESPONSE FOR 1752 DRUM + JMP* (P1752+2) + EJT +* 1 7 5 2 D R U M +* + SPC 1 +P1752 ADC $5209 00 SCHEDULER CALL + ADC I1752 01 INITIATOR ADDRESS + ADC C1752 02 CONTINUATOR ADDRESS + ADC E1752 03 TIMEOUT ERROR ADDRESS + NUM -1 04 DIAGNOSTIC CLOCK + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION + NUM $0101 07 CONVERTER, EQUIPMENT, STATION + NUM $1036 08 REQUEST STATUS + NUM 0 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM 0 12 DEVICE STATUS + NUM 0 13 RESERVED + NUM $7FFF 14 RESERVED + NUM 0 15 RESERVED FOR FNR AND CMR + NUM 0 16 SECTOR NUMBER + NUM 0 17 DATA TRANSFER FUNCTION + NUM 0 18 COUNTER + NUM 0 19 FULL SECTOR COUNTER + NUM 0 20 SAVE ECCOR + NUM 0 21 SAVE ELSTWD + NUM 0 22 OVERLAY AREA (SCHEDULER CALL) + NUM 0 23 OVERLAY AREA (COMPLETION ADDRESS) + NUM 0 24 OVERLAY AREA (THREAD) + NUM 0 25 OVERLAY AREA (LOGICAL UNIT) + NUM 0 26 UNSUCCESSFUL I/O ATTEMPT COUNTER + NUM 0 27 EQUIPMENT STATUS (ON LAST ERROR) + NUM 0 28 CORE STATUS (ON LAST ERROR) + NUM 0 29 SECTOR STATUS (ON LAST ERROR) + NUM 0 30 DATA STATUS (ON LAST ERROR) + EJT +* 1 7 4 2 - 3 0 / 1 2 0 L I N E P R I N T E R +* + SPC 1 + EQU T4230(17*$10) TYPE CODE - 1742-30 + EQU T4212(18*$10) TYPE CODE - 1742-120 + EQU U42312(X42312-LOG1A) + EQU F42312(FTN742-LOG1A) + SPC 1 + EQU M42312(1) +* + IFA M42312,EQ,0 CORE RESIDENT DRIVER + EXT I42312 + EXT C42312 + EXT E42312 + EQU L42312(0) + EQU S42312($7FFF) + EIF +* + IFA M42312,EQ,1 MASS RESIDENT DRIVER + EXT MASDRV + EXT MASCON + EXT MASERR +I42312 JMP+ MASDRV INITIATE DRIVER +C42312 JMP+ MASCON INTERRUPT RESPONSE +E42312 JMP+ MASERR TIMEOUT ERROR + EXT L42312 + EXT S42312 + EIF +* + SPC 2 +R42312 LDQ =XP42312 INTERRUPT RESPONSE FOR 1742-30/120 PRINTER + JMP* (P42312+2) + EJT +* 1 7 4 2 - 3 0 / 1 2 0 L I N E P R I N T E R +* + SPC 1 +P42312 ADC $520A 00 SCHEDULER CALL + ADC I42312 01 INITIATOR ADDRESS + ADC C42312 02 CONTINUATOR ADDRESS + ADC E42312 03 TIMEOUT ERROR ADDRESS + NUM -1 04 DIAGNOSTC CLOCK + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION + NUM $0201 07 CONVERTER, EQUIPMENT, STATION + ADC $2804+T4212 08 REQUEST STATUS + NUM 0 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM 0 12 DEVICE STATUS + ADC L42312 13 DRIVER LENGTH IF MASS MEMORY + ADC S42312 14 NAME ASSOCIATED WITH SECTOR NUMBER + NUM 0 15 BLANK DETECTION INDICATOR + NUM 0 16 LINE COUNT + NUM 0 17 TEMPORARY STORAGE FOR CONTROL FUNC. + NUM 0 18 CHARACTER COUNT + ADC F42312 19 FORTRAN LOGICAL UNIT + NUM 0 20 NUMBER OF BLANKS TO BE SENT + NUM 60 21 MAXIMUM NUMBER OF LINES PER PAGE + NUM 136 22 NUMBER OF CHARACTERS PER LINE + ADC U42312 23 DIAGNOSTIC LU + EJT +* +* F O R T R A N L I N E P R I N T E R + SPC 2 +* PHYSTB SHARED WITH 1742-30/120 LINE PRINTER + EJT +* 1 7 2 8 / 4 3 0 C A R D R E A D E R / P U N C H +* + SPC 1 + EQU U1728(X1728-LOG1A) + SPC 1 + EQU M1728(1) +* + IFA M1728,EQ,0 CORE RESIDENT DRIVER + EXT I1728 + EXT C1728 + EXT E1728 + EQU L1728(0) + EQU S1728($7FFF) + EIF +* + IFA M1728,EQ,1 MASS RESIDENT DRIVER + EXT MASDRV + EXT MASCON + EXT MASERR +I1728 JMP+ MASDRV INITIATE DRIVER +C1728 JMP+ MASCON INTERRUPT RESPONSE +E1728 JMP+ MASERR TIMEOUT ERROR + EXT L1728 + EXT S1728 + EIF +* + SPC 2 +R1728 LDQ =XP1728 INTERRUPT RESPONSE FOR 1728-430 READ/PUNCH + JMP* (P1728+2) + EJT +* 1 7 2 8 / 4 3 0 C A R D R E A D E R / P U N C H +* + SPC 1 +P1728 ADC $520E 00 SCHEDULER CALL + ADC I1728 01 INITIATOR ADDRESS + ADC C1728 02 CONTINUATOR ADDRESS + ADC E1728 03 TIMEOUT ERROR ADDRESS + NUM -1 04 DIAGNOSTIC CLOCK + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION + NUM $0521 07 CONVERTER, EQUIPMENT, STATION + NUM $18C6 08 REQUEST STATUS + NUM 0 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM 0 12 DEVICE STATUS + ADC L1728 13 DRIVER LENGTH IF MASS MEMORY + ADC S1728 14 NAME ASSOCIATED WITH SECTOR NUMBER + NUM 0 15 PACKING CYCLE ADDRESS STORAGE + NUM $800F 16 READ/PUNCH SWITCH, EOF FORMAT (6789) + ADC BUF28 17 FIRST LOCATION OF 80 WORD I / O BUFFER + NUM 0 18 CURRENT CARD BUFFER LOCATION + NUM 0 19 SUBROUTINE RETURN ADDRESS + NUM 0 20 CARD SEQUENCE NUMBER + NUM 0 21 RECORD LENGTH + NUM 0 22 CHECKSUM ACCUMULATOR + NUM 0 23 TEMPORARY STORAGE + NUM 0 24 OUTPUT OFFSET SWITCH + NUM 0 25 ERROR RETURN + NUM 0 26 HOLLERITH ERROR FLAG + ADC U1728 27 DIAGNOSTIC LU +* + BZS BUF28(80) 28 INPUT / OUTPUT BUFFER +* 107 INPUT / OUTPUT BUFFER + EJT +* 1 7 4 3 - 2 C O M M U N I C A T I O N S +* +* C O N T R O L L E R, U N I T 0 +* +* REMOVED FROM SYSTEM +* + ENT P74300 + EQU P74300($7FFF) + EJT +* R E S I D E N T C O R E D A T A +* + ENT LSTLOC + EXT BGNMON + SPC 1 +LSTLOC ADC BGNMON BEGINNING LOCATION OF CORE RESIDENT SYSTEM + SPC 2 +* C O R E A L L O C A T I O N D A T A +* + ENT CALTHD CORE ALLOCATOR THREAD + ENT LVLSTR LEVEL START ALLOCATION TABLE + EXT AREAC START OF ALLOCATABLE AREA + EXT LEND END OF ALLOCATABLE AREA +* +CALTHD ADC 0 TOTAL AVAILABLE ALLOCATABLE CORE + ADC AREAC START OF ALLOCATABLE AREA +* +LVLSTR ADC AREAC START OF ALLOCATABLE CORE FOR LEVEL 0 + ADC AREAC START OF ALLOCATABLE CORE FOR LEVEL 1 + ADC AREAC START OF ALLOCATABLE CORE FOR LEVEL 2 + ADC AREAC START OF ALLOCATABLE CORE FOR LEVEL 3 + ADC AREAC START OF ALLOCATABLE CORE FOR LEVEL 4 + ADC AREAC START OF ALLOCATABLE CORE FOR LEVEL 5 + ADC AREAC START OF ALLOCATABLE CORE FOR LEVEL 6 + ADC AREAC START OF ALLOCATABLE CORE FOR LEVEL 7 + ADC AREAC START OF ALLOCATABLE CORE FOR LEVEL 8 + ADC AREAC START OF ALLOCATABLE CORE FOR LEVEL 9 + ADC AREAC START OF ALLOCATABLE CORE FOR LEVEL 10 + ADC AREAC START OF ALLOCATABLE CORE FOR LEVEL 11 + ADC AREAC START OF ALLOCATABLE CORE FOR LEVEL 12 + ADC AREAC START OF ALLOCATABLE CORE FOR LEVEL 13 + ADC AREAC START OF ALLOCATABLE CORE FOR LEVEL 14 + ADC AREAC START OF ALLOCATABLE CORE FOR LEVEL 15 + ADC LEND END OF ALLOCATABLE CORE +* + ENT N5,N6,N7,N8,N9,N10,N11,N12,N13,N14,N15 + SPC 1 +* NOTE - THE SIZE OF AREAS 1, 2, 3, AND 4 ARE SPECIFIED +* DURING SYSTEM INITIALIZATION +* +N5 EQU N5() NUMBER OF CORE LOCATIONS FOR AREA 5 +N6 EQU N6() NUMBER OF CORE LOCATIONS FOR AREA 6 +N7 EQU N7() NUMBER OF CORE LOCATIONS FOR AREA 7 +N8 EQU N8() NUMBER OF CORE LOCATIONS FOR AREA 8 +N9 EQU N9() NUMBER OF CORE LOCATIONS FOR AREA 9 +N10 EQU N10() NUMBER OF CORE LOCATIONS FOR AREA 10 +N11 EQU N11() NUMBER OF CORE LOCATIONS FOR AREA 11 +N12 EQU N12() NUMBER OF CORE LOCATIONS FOR AREA 12 +N13 EQU N13() NUMBER OF CORE LOCATIONS FOR AREA 13 +N14 EQU N14() NUMBER OF CORE LOCATIONS FOR AREA 14 +N15 EQU N15() NUMBER OF CORE LOCATIONS FOR AREA 15 + EJT +* P A R T I T I O N C O R E D A T A +* + ENT PARTBL,BUSY,DIP,LSTPRT,THDS,USE + SPC 1 + EQU LSTPRT(2) LAST PARTITION IN SYSTEM +* +PARTBL NUM $BF20 STARTING ADDRESS OF PARTITION 0 + NUM $C310 STARTING ADDRESS OF PARTITION 1 + NUM $CAE0 STARTING ADDRESS OF PARTITION 2 + NUM $FFFF STARTING ADDRESS OF PARTITION 3 + NUM $FFFF STARTING ADDRESS OF PARTITION 4 + NUM $FFFF STARTING ADDRESS OF PARTITION 5 + NUM $FFFF STARTING ADDRESS OF PARTITION 6 + NUM $FFFF STARTING ADDRESS OF PARTITION 7 + NUM $FFFF STARTING ADDRESS OF PARTITION 8 + NUM $FFFF STARTING ADDRESS OF PARTITION 9 + NUM $FFFF STARTING ADDRESS OF PARTITION 10 + NUM $FFFF STARTING ADDRESS OF PARTITION 11 + NUM $FFFF STARTING ADDRESS OF PARTITION 12 + NUM $FFFF STARTING ADDRESS OF PARTITION 13 + NUM $FFFF STARTING ADDRESS OF PARTITION 14 + NUM $FFFF STARTING ADDRESS OF PARTITION 15 +* + NUM $FFFF STARTING ADDRESS OF PARTITION 16 - SWAP AREA + SPC 2 +THDS NUM $FFFF TOP OF REQUEST THREAD FOR PARTITION 0 + NUM $FFFF TOP OF REQUEST THREAD FOR PARTITION 1 + NUM $FFFF TOP OF REQUEST THREAD FOR PARTITION 2 + NUM 0 TOP OF REQUEST THREAD FOR PARTITION 3 + NUM 0 TOP OF REQUEST THREAD FOR PARTITION 4 + NUM 0 TOP OF REQUEST THREAD FOR PARTITION 5 + NUM 0 TOP OF REQUEST THREAD FOR PARTITION 6 + NUM 0 TOP OF REQUEST THREAD FOR PARTITION 7 + NUM 0 TOP OF REQUEST THREAD FOR PARTITION 8 + NUM 0 TOP OF REQUEST THREAD FOR PARTITION 9 + NUM 0 TOP OF REQUEST THREAD FOR PARTITION 10 + NUM 0 TOP OF REQUEST THREAD FOR PARTITION 11 + NUM 0 TOP OF REQUEST THREAD FOR PARTITION 12 + NUM 0 TOP OF REQUEST THREAD FOR PARTITION 13 + NUM 0 TOP OF REQUEST THREAD FOR PARTITION 14 + NUM 0 TOP OF REQUEST THREAD FOR PARTITION 15 +* + NUM 0 TOP OF REQUEST THREAD FOR PARTITION 16 - SWAP + SPC 2 +USE BZS USE(16) PARTITION-IN-USE INDICATORS + SPC 2 +BUSY NUM $FFF8 BUSY INDICATOR - BIT 0 = PARTITION 0 +DIP NUM -0 PARTITION CORE DRIVER ACTIVE INDICATOR + EJT +* S Y S T E M C O M M O N D E C L A R A T I O N +* +* THIS ENTRY SPECIFIES THE AMOUNT OF SYSTEM (BLANK) COMMON + SPC 4 + EQU NCOM($03E8) + SPC 1 +COMMON COM COMMON(NCOM) + EJT +* M I S C E L L A N E O U S P R O G R A M S +* +* S Y S T E M I D L E L O O P + SPC 2 + ENT IDLE BASIC SYSTEM IDLE LOOP + ENT IDLER SYSTEM IDLE SUBROUTINE + ENT INSTLU SYSTEM INSTALLATION L. U. + SPC 2 +IDLE LDA* STRTUP IS THIS THE INITIAL IDLE ENTRY + SAN IDLE1 NO + RTJ* STRTUP YES, PERFORM STARTUP FUNCTIONS +IDLE1 RTJ* IDLER + JMP* IDLE + SPC 2 + EXT LIBEDT LIBRARY EDIT + EXT RELFLE SYSTEM CORE SWAP ROUTINE + EXT INPTV4 JOB PROCESSOR STANDARD INPUT DEVICE + EQU INSTLU(6) + SPC 1 +STRTUP NUM 0 + LDQ- $EB + ADQ =XLIBEDT OBTAIN THE DIRECTORY ADDRESS OF LIBEDT + LDA- (ZERO),Q HAVE THE REQUEST PRIORITIES BEEN SET UP + SAN STRTP1 YES + LDA =XINSTLU + STA+ INPTV4 SET THE STD. INPUT TO THE INSTALLATION L.U. + JMP* (STRTUP) AND EXIT + SPC 1 +STRTP1 EQU STRTP1(*) +* +* NOTE - ANY ADDITIONAL SYSTEM STARTUP FUNCTIONS +* MAY BE ADDED HERE. +* + RTJ- (AMONI) SCHEDULE RELFLE TO FORCE A SWAP + ADC $5203 + ADC RELFLE + JMP* (STRTUP) + EJT +* M I S C E L L A N E O U S P R O G R A M S +* +* I N T E R R U P T R E S P O N S E F O R T I M E R +* + ENT TMRTYP,TMCODE TYPE OF SYSTEM TIME BASE + EXT TIMEUP TMINT INTERRUPT ENTRY + EQU X($7FFF) VALUE FOR UNSELECTED ENTRY POINTS + ENT E15761 + EQU E15761(X) LINK UNSELECTED ENTRY POINT + SPC 1 + EQU TMCODE(0) SOFTWARE PSEUDO TIMER +TMRTYP ADC 6 TIME BASE CODE + SPC 2 +CTR NUM 30967 +BASCTR NUM 30967 APPROXIMATION TO 60 CPS + SPC 1 +IDLER NUM 0 + IIN 0 USED AT LEVEL -1 OR LEVEL 2 + SOV 0 + RAO* CTR PSEUDO SYSTEM TIMER + SOV COUNT SKIP IF 1800 LOOPS EXECUTED + EIN 0 + JMP* (IDLER) BACK TO BASIC IDLE LOOP +COUNT LDA* BASCTR INITIALIZE LOOP COUNTER + STA* CTR + LDQ* IDLER SAVE RETURN FOR RE-ENTRANCY IN VOLATILE + RTJ- (AVOLA) GET 3 WORDS VOLATILE STORAGE + NUM 3 + RTJ- (AMONI) + ADC $520D SCHEDULE TMINT AT LEVEL 13 + ADC TIMEUP + IIN 0 + RTJ- (AVOLR) RETURN VOLATILE + JMP- (ZERO),Q RETURN TO IDLE LOOP + SPC 4 +* +* LINK ALL UNSELECTED ENTRY POINTS +* + ENT E1572F,E1572,O1572,E1573,H15721,E15721,D15721,O15721,EQ3644 + ENT F10336,O10336,E10336 + ENT DMICOD,EMPSRT,TBLADR + EQU E1572F(X),E1572(X),O1572(X),E1573(X),H15721(X) + EQU E15721(X),D15721(X),O15721(X),EQ3644(X) + EQU F10336(X),O10336(X),E10336(X) + EQU DMICOD(X),EMPSRT(X),TBLADR(X) + EJT +* M I S C E L L A N E O U S P R O G R A M S +* +* A / Q C H A N N E L A L L O C A T I O N +* + SPC 2 + ENT RQAQ REQUEST ENTRY FOR A/Q + ENT RLAQ RELEASE ENTRY FOR A/Q + SPC 1 +RQAQ NUM 0 ENTRY USED IF NO A/Q ALLOCATION + IIN 0 + LDQ- I TRANSFER PDT ADDRESS TO Q + EIN 0 + JMP* (RQAQ) RETURN + SPC 1 + EQU RLAQ(RQAQ) EQUATE BOTH ENTRIES + EJT +* M I S C E L L A N E O U S I N F O R M A T I O N +* +* M A S S R E S I D E N T D R I V E R S B U F F E R +* +* THIS BUFFER WILL CONTAIN THE MASS RESIDENT DRIVER(S) +* WHEN THEY ARE IN CORE. THE SMALLEST ALLOWABLE SIZE IS +* EQUAL TO THE LARGEST MASS RESIDENT DRIVER IN THE SYSTEM. +* OPTIMUM THROUGHPUT REQUIRES SIZING EQUAL TO THE TWO +* LARGEST MASS RESIDENT DRIVERS IN THE SYSTEM. + SPC 2 + ENT BUFF,BUFFE + EQU MBFSZ($A00) + SPC 2 +BUFF BZS BUFF(MBFSZ) + EQU BUFFE(*) + SPC 2 +* C O M M O N G H O S T I N T E R R U P T R O U T I N E + SPC 1 + ENT CGHOST + SPC 1 +CGHOST NOP 0 + JMP- (ADISP) + EJT +* M I S C E L L A N E O U S I N F O R M A T I O N +* +* F O R T R A N R E E N T R A N T I N F O R M A T I O N +* + ENT FMASK,FLIST + EXT E4SAVE + EXT ARGU0 + SPC 1 +FMASK NUM $0070 FORTRAN REENTRANT LEVELS (BIT 0 = LEVEL 0) + SPC 1 +* TABLE OF FORTRAN ENTRY POINTS SAVED TO MAINTAIN REENTRANCY + SPC 1 +* ENTRY POINT PROGRAM DESCRIPTION +* ----------- ------- ---------- + SPC 1 +FLIST ADC FEND + ADC E4SAVE Q8EXPR LOCATION $E4 STORAGE + ADC ARGU0 Q8QIO TEMPORARY STORAGE +FEND EQU FEND(*-FLIST-1) + EJT +* F O R T R A N R E E N T R A N T I N F O R M A T I O N +* + SPC 4 +* THIS ENTRY IS PROVIDED TO ALLOW COMPATIBILITY BETWEEN THE +* NON-REENTRANT (BACKGROUND) FORTRAN AND REENTRANT FORTRAN + SPC 1 + ENT Q8STP + SPC 1 +Q8STP NOP 0 FORTRAN STOP + JMP- (ADISP) + EJT +* M I S C E L L A N E O U S I N F O R M A T I O N +* +* 1 7 8 1 - 1 H A R D W A R E F L O A T I N G +* +* P O I N T I N F O R M A T I O N +* + SPC 4 +* THESE ENTRIES ALLOW PROPER SYSTEM LINKAGE IF THE 1781-1 +* IS NOT SELECTED. + SPC 2 + ENT E17811,F17811 +E17811 NUM $7FFF + EQU F17811($7FFF) + EJT +* M I S C E L L A N E O U S I N F O R M A T I O N +* +* T I M E / D A T E P A R A M E T E R S T O R A G E +* + SPC 3 + ENT AYERTO CURRENT YEAR (ASCII) + ENT AMONTO CURRENT MONTH (ASCII) + ENT ADAYTO CURRENT DAY (ASCII) + ENT YERTO CURRENT YEAR (INTEGER) + ENT MONTO CURRENT MONTH (INTEGER) + ENT DAYTO CURRENT DAY (INTEGER) + ENT HORTO CURRENT HOUR (INTEGER) + ENT MINTO CURRENT MINUTE (INTEGER) + ENT SECON CURRENT SECOND (INTEGER) + ENT CONTA CURRENT COUNT (INTEGER) + ENT HORMIN CURRENT 24-HOUR TIME + ENT TOTMIN CURRENT DAY ELAPSED MINUTES + SPC 3 +AYERTO NUM 0 00 CURRENT YEAR (ASCII) +AMONTO NUM 0 01 CURRENT MONTH (ASCII) +ADAYTO NUM 0 02 CURRENT DAY (ASCII) +YERTO NUM 0 03 CURRENT YEAR (INTEGER) +MONTO NUM 0 04 CURRENT MONTH (INTEGER) +DAYTO NUM 0 05 CURRENT DAY (INTEGER) +HORTO NUM 0 06 CURRENT HOUR (INTEGER) +MINTO NUM 0 07 CURRENT MINUTE (INTEGER) +SECON NUM 0 08 CURRENT SECOND (INTEGER) +CONTA NUM 0 09 CURRENT COUNT (INTEGER) +HORMIN NUM 0 10 CURRENT 24-HOUR TIME +TOTMIN NUM 0 11 CURRENT DAY ELAPSED MINUTES + EJT +* M I S C E L L A N E O U S I N F O R M A T I O N +* +* S Y S T E M T I M E R P A R A M E T E R S + SPC 4 + ENT TIMCPS BASIC SYSTEM CLOCK FREQUENCY + SPC 1 +TIMCPS EQU TIMCPS(60) TIMER CYCLES PER SECOND + SPC 4 + ENT TIMEC TIMER CYCLES PER 1/10 SECOND MINUS 1 + SPC 1 +TIMEC EQU TIMEC(TIMCPS/10-1) + SPC 4 + ENT TODLVL TIME OF DAY(TOD) PROGRAM REQ. CODE + PRIORITY + SPC 1 +TODLVL EQU TODLVL($5006) D-BIT = 1, REQUEST CODE 8, PRIORITY 6 + SPC 4 + ENT NSCHED MAX. NO. OF COMPLETIONS PER TIMER INTERVAL + SPC 1 +NSCHED NUM 5 MAXIMUM 5 COMPLETIONS PER INTERVAL + SPC 4 + ENT TMRLVL DIAGNOSTIC TIMER PRIORITY LEVEL + SPC 1 +TMRLVL EQU TMRLVL(13) LEVEL 13 + EJT +* M I S C E L L A N E O U S I N F O R M A T I O N +* +* S Y S T E M P R O G R A M O V E R L A Y S I Z E S + SPC 2 + ENT LSIZV4 INITIAL OVERLAY SIZE OF LIBEDT + ENT PSIZV4 SIZE OF AREA 3 + ENT ODBSIZ INITIAL OVERLAY SIZE OF ODEBUG + SPC 4 + EQU LSIZV4($4B8) INITIAL OVERLAY SIZE OF LIBEDT + EQU PSIZV4($4B8) SIZE OF AREA 3 + EQU ODBSIZ($369) INITIAL OVERLAY SIZE OF ODEBUG + EJT +* M I S C E L L A N E O U S I N F O R M A T I O N +* +* S C M M I N C O R E F L A G +* + ENT SCMMLC + SPC 2 +SCMMLC NUM 0 NON-ZERO IF S C M M RUNNING + EJT +* M I S C E L L A N E O U S I N F O R M A T I O N +* +* O N L I N E D E B U G I N C O R E F L A G +* + ENT CHRSFG + SPC 2 +CHRSFG NUM 0 NON-ZERO IF ODEBUG RUNNING + EJT +* M I S C E L L A N E O U S I N F O R M A T I O N +* +* S Y S T E M C H E C K O U T P A R A M E T E R S + SPC 4 +* THE STARTING SECTOR OF THE FAILED CORE IMAGE IS SPECIFIED BY +* THE NAME COBOPS. THIS AREA MUST BE SIZED TO ACCOMODATE A +* FAILED IMAGE OF THE SIZE SPECIFIED BY NAME MSIZV4. THE FAILED +* IMAGE MUST RESIDE ON THE LIBRARY MASS MEMORY UNIT. IF THE +* MASS MEMORY LIBRARY UNIT IS A CARTRIDGE DISK, THE IMAGE AREA +* CANNOT OVERLAP FROM ONE PLATTER TO THE OTHER. + SPC 2 + ENT COBOPS +COBOPS EQU COBOPS($5A00) START SECTOR OF FAILED IMAGE + SPC 4 +* THIS ENTRY IS PROVIDED TO LINK THE NO-FORTRAN DISPATCHER +* ENTRY POINT + SPC 1 + ENT NDISP + SPC 1 + EQU NDISP($7FFF) + SPC 4 +* THIS ENTRY IS PROVIDED TO LINK THE TIMESHARE PROTECT INTERRUPT +* PROCESSOR ENTRY POINT + SPC 1 + ENT TSIPRC + SPC 1 + EQU TSIPRC($7FFF) + EJT +* M I S C E L L A N E O U S I N F O R M A T I O N +* +* F I L E M A N A G E R D A T A +* + SPC 2 + ENT FISLU LOGICAL UNIT OF FIS DIRECTORY AND BLOCKS + ENT MAXMMA MAXIMUM NO. OF MASS MEMORY ATTEMPTS ON ERROR + ENT RPTPER REQUEST PROCESSOR TIMEOUT PERIOD + ENT FDTPER FILE/DIRECTORY TIMEOUT PERIOD + ENT FIDSEC FIS DIRECTORY, S SECTOR ADDRESS + ENT FIBLSA SECTOR ADDRESS OF LAST FIS BLOCK + ENT FIBNIX INDEX TO THE NEXT AVAILABLE LOCATION IN FIBLSA + ENT FSLIST START OF FILE SPACE LIST + ENT FSLLTH FILE SPACE LIST LENGTH + ENT FSLEND END OF FILE SPACE LIST + ENT ADRFMS BEGINNING OF FILE MANAGER SPACE ON LIB UNIT + SPC 2 + EQU FISLU(LBUNIT) LOGICAL UNIT OF FIS DIRECTORY AND BLOCKS + EQU MAXMMA(1) MAXIMUM NO. OF MASS MEMORY ATTEMPTS ON ERROR + EQU FDTPER(1) FILE/DIRECTORY TIMEOUT PERIOD (1/10 SEC.) + EQU RPTPER(1) REQUEST PROCESSOR TIMEOUT PERIOD (1/10 SEC.) + SPC 2 +ADRFMS ADC $5BFB BEGINNING OF FILE MANAGER SPACE ON LIB UNIT + SPC 1 +******** THE FOLLOWING MUST BE IN ORDER ******** +FIDSEC ADC 0 1. FIS DIRECTORY, S SECTOR ADDRESS +FIBLSA ADC 0 2. SECTOR ADDRESS OF THE LAST FIS BLOCK +FIBNIX ADC 0 3. INDEX TO NEXT AVAILABLE LOCATION IN FIBLSA +FSLIST EQU FSLIST(*) 4. START OF FILE SPACE LIST + SPC 1 +******** START OF LOGICAL UNIT ENTRIES ******** + SPC 2 +* L O G I C A L U N I T D A T A , U N I T 0 +* + ENT NUMFS0 + EQU NUMFS0($1F40) NUMBER OF FILE SECTORS - UNIT 0 + SPC 1 +LUE0 VFD X9/LUEL0,X7/LBUNIT LU ENTRY LENGTH(7/15), LOGICAL UNIT(0-6) + ADC 0 ADDRESS OF FILE SPACE POOL + ADC 0 NUMBER OF AVAILABLE SECTORS + ADC NUMFS0 NUMBER OF SECTORS IN THIS FILE SPACE + NUM 0,1 THREAD OF ONE SECTOR LONG + NUM 0,2 THREAD OF TWO SECTORS LONG + NUM 0,3 THREAD OF THREE SECTORS LONG +LUEL0 EQU LUEL0(*-LUE0) + EJT +* L O G I C A L U N I T D A T A , U N I T 1 +* + ENT BEGLU1 + ENT NUMFS1 + EQU LUNIT1(22) LOGICAL UNIT OF FILE MANAGER UNIT 1 + EQU BEGLU1(1) BEGINNING FILE SECTOR - UNIT 1 + EQU NUMFS1($37F5) NUMBER OF FILE SECTORS - UNIT 1 + SPC 1 +LUE1 VFD X9/LUEL1,X7/LUNIT1 LU ENTRY LENGTH(7/15), LOGICAL UNIT(0-6) + ADC BEGLU1 ADDRESS OF FILE SPACE POOL + ADC 0 NUMBER OF AVAILABLE SECTORS + ADC NUMFS1 NUMBER OF SECTORS IN THIS FILE SPACE + NUM 0,1 THREAD OF ONE SECTOR LONG + NUM 0,2 THREAD OF TWO SECTORS LONG + NUM 0,3 THREAD OF THREE SECTORS LONG +LUEL1 EQU LUEL1(*-LUE1) + SPC 2 +FSLLTH EQU FSLLTH(*-FSLIST) FILE SPACE LIST LENGTH + SPC 1 +FSLEND NUM -0 END OF FILE SPACE LIST + EJT +* F I L E M A N A G E R D A T A +* + SPC 2 +* LINK UNSELECTED ENTRY POINTS + SPC 2 + ENT BEGLU2,NUMFS2 + EQU BEGLU2($7FFF),NUMFS2($7FFF) + ENT BEGLU3,NUMFS3 + EQU BEGLU3($7FFF),NUMFS3($7FFF) + ENT BEGLU4,NUMFS4 + EQU BEGLU4($7FFF),NUMFS4($7FFF) + ENT BEGLU5,NUMFS5 + EQU BEGLU5($7FFF),NUMFS5($7FFF) + ENT BEGLU6,NUMFS6 + EQU BEGLU6($7FFF),NUMFS6($7FFF) + ENT BEGLU7,NUMFS7 + EQU BEGLU7($7FFF),NUMFS7($7FFF) + ENT BEGLU8,NUMFS8 + EQU BEGLU8($7FFF),NUMFS8($7FFF) +* +* S O R T - M E R G E L O G I C A L U N I T S +* + SPC 1 + ENT SMCLU1 + ENT SMCLU2 + ENT SMCLU3 + ENT SMCLU4 + SPC 1 +SMCLU1 EQU SMCLU1(8) SORT MERGE L.U. 1 +SMCLU2 EQU SMCLU2(8) SORT MERGE L.U. 2 +SMCLU3 EQU SMCLU3(8) SORT MERGE L.U. 3 +SMCLU4 EQU SMCLU4(8) SORT MERGE L.U. 4 + EJT +* M I S C E L L A N E O U S I N F O R M A T I O N +* +* J O B P R O C E S S O R F I L E P A R A M E T E R S +* + SPC 3 + ENT JLLUV4 LOGICAL UNIT OF JOB PROCESSOR FILES + ENT JBFLV4 NUMBER OF JOB PROCESSOR FILES + ENT FBASV4 FIRST FILE NUMBER USED BY JOB PROCESSOR + ENT PKEYV4 JOB FILE PURGE KEY + SPC 3 +JLLUV4 ADC LBUNIT LOGICAL UNIT OF JOB PROCESSOR FILES + SPC 2 + EQU JBFLV4(500) NUMBER OF JOB PROCESSOR FILES + SPC 1 + EQU FBASV4($7F2B-JBFLV4) +* +* NOTE - FILES $7FFD THRU $7FFF ARE RESERVED FOR THE MSOS +* VERIFICATION TESTS, FILES $7FF5 THRU $7FFC ARE +* RESERVED FOR FOREGROUND PSEUDO TAPES, FILES $7FF3 +* THRU $7FF4 ARE RESERVED FOR THE TEXT EDITOR, AND +* FILES $7F2B THRU $7FF2 ARE RESERVED FOR RPGII. + SPC 2 + EQU PKEYV4($3030) JOB FILE PURGE KEY + EJT +* P R E S E T R E G I O N +* +* PRESET PROTECTED ENTRY POINTS FOR USE BY UNPROTECTED PGMS +* +APRSET EQU APRSET(*) + ENT JPRET + SPC 2 +* J O B P R O C E S S O R P R E S E T + SPC 2 + EXT JPRETN + ALF 3,JPRETN +JPRET ADC JPRETN JOB PROCESSOR RETURN +* + SPC 2 +* S N A P D U M P P R E S E T + SPC 2 + EXT SNAPOL + ALF 3,SNAPOL + ADC SNAPOL REGISTER SNAPSHOT +* + SPC 2 +* F I L E M A N A G E R P R E S E T S + SPC 2 + EXT DEFFIL + ALF 3,DEFFIL + ADC DEFFIL DEFINE FILE +* + EXT RELFIL + ALF 3,RELFIL + ADC RELFIL RELEASE FILE +* + EXT DEFIDX + ALF 3,DEFIDX + ADC DEFIDX DEFINE INDEXED FILE +* + EXT LOKFIL + ALF 3,LOKFIL + ADC LOKFIL LOCK FILE +* + EXT UNLFIL + ALF 3,UNLFIL + ADC UNLFIL UNLOCK FILE +* + EXT STOSEQ + ALF 3,STOSEQ + ADC STOSEQ STORE SEQUENTIAL RECORD +* + EXT STODIR + ALF 3,STODIR + ADC STODIR STORE DIRECT +* + EXT STOIDX + ALF 3,STOIDX + ADC STOIDX STORE INDEXED RECORD +* + EXT RTVSEQ + ALF 3,RTVSEQ + ADC RTVSEQ RETRIEVE SEQUENTIAL RECORD +* + EXT RTVDIR + ALF 3,RTVDIR + ADC RTVDIR RETRIEVE DIRECT +* + EXT RTVIDX + ALF 3,RTVIDX + ADC RTVIDX RETRIEVE INDEXED RECORD +* + EXT RTVIDO + ALF 3,RTVIDO + ADC RTVIDO RETRIEVE INDEXED-ORDERED RECORD + SPC 2 +* F I L E M A N A G E R F L A G P R E S E T + SPC 2 + EXT FMPFLG + ALF 3,FMPFLG + ADC FMPFLG + SPC 1 +LPRSET EQU LPRSET(*-APRSET) + EJT + SPC 10 +* S Y S T E M L I B R A R Y D I R E C T O R Y +* +* COMPILED FROM *Y, *YM BY SYSTEM INITIALIZER +SLDIRY EQU SLDIRY(*) + END diff --git a/CDC1700/customization/custom4/sysdat.tap b/CDC1700/customization/custom4/sysdat.tap new file mode 100644 index 0000000000000000000000000000000000000000..34118aaf1639dec2c2cb9a013d2addbf92f54a13 GIT binary patch literal 220272 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

9_0lE1S^@^=}!Fzk`pHeKh+`+e4fu=W2FJ&*R!; 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 z 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 PWI!EafWA)j%J%;NAF~9D literal 0 HcmV?d00001 diff --git a/CDC1700/customization/custom5/msosCustom5.simh b/CDC1700/customization/custom5/msosCustom5.simh new file mode 100644 index 00000000..8cc0b593 --- /dev/null +++ b/CDC1700/customization/custom5/msosCustom5.simh @@ -0,0 +1,152 @@ +# Script to generate a customized MSOS 5.0 installation tape. +# +# Customizations: +# 1. Set system creation date to 4/19/17 +# 2. Change the system name to "SIMH DEVELOPMENT SYSTEM" +# 3. Reduce file manager devices to CDD0/CDD1 +# 4. Remove the 1743-2 Asynch communication controller support +# 5. Add 10336 real-time clock +# +# Requires: +# MSOS5-A.dsk and MSOS5-B.dsk Installation boot disks +# sysdat.tap Modified sysdat.asm as only file on +# the tape (80 char records) +# Installation tape Default is MSOS5_SL136.tap which can +# be copied from bitsavers.org. This can +# be overridden by specifying the +# installation tape on the command line: +# +# cdc1700 msosCustom1.simh install.tap +# +# Creates: +# MSOS5-Install.tap New installation tape. If it already +# exists, it will be overwritten +# Scratch?.tap Tapes for temporary use. If they +# already exist, they will be overwritten +# %DATETIME%.lpt Unique LPT output file for this run +# +set env CDD0=MSOS5-A.dsk +set env CDD1=MSOS5-B.dsk +set env MT0=%1 +if "%MT0%"=="" set env MT0=MSOS5_SL136.tap +set env MT1A=Scratch3.tap +set env MT1B=MSOS5-Install.tap +set env MT2A=sysdat.tap +set env MT2B=Scratch1.tap +set env MT3=Scratch2.tap +set cpu instr=basic +set cpu mode65k,64k +#set throttle 30% +set mt type=1732-3 +set mt3 9track +set lp type=1742 +att lp %DATETIME%.lpt +att cdd0 %CDD0% +att cdd1 %CDD1% +att -r mt0 %MT0% +att mt1 %MT1A% +att -r mt2 %MT2A% +att mt3 %MT3% +set env TODAY=%DATE_MM%%DATE_DD%%DATE_19XX_YY% +# +# The following command will patch out unimplemented devices (1728 card +# reader/punch) +# +expect "SET PROGRAM PROTECT" set cpu protect; d 056D 0649; d 057E 0649; d 0589 0649; c +expect "DATE/TIME MMDDYYHHMM \n\r\n" send "%TODAY%%TIME_HH%%TIME_MM%\r"; c +expect ":00 " send after=1000000,"\007"; c +expect "MI\r\n" send "*BATCH,4\r"; c +expect "J \r\n" send "*JOB\r"; c +expect "J \r\n" send "*K,I17,P16\r"; c +expect "J \r\n" send "*ASSEM\r"; c +expect "J \r\n" send "*MTUP\r"; c +expect "NEXT: \007" send "OPEN,O16,NL,U,A,SF0,BR1\r"; c +expect "NEXT: \007" send "CLOSE,O16,RW\r"; c +expect "NEXT: \007" send "EXIT\r"; c +expect "J \r\n" send "*REW,17\r"; c +# Use SKED to extract and edit the skeleton file +expect "J \r\n" send "*SKED\r"; c +expect "NEXT\r\n\007" send "ADF,6,1\r"; c +expect "NEXT\r\n\007" send "BUILD,6\r"; c +expect "ENTER LU\r\n\007" send "\r"; goto insert1 +send delay=10000 +autoload cdd +run 0 +goto end + +:insert1 +det mt2 +att -q mt2 %MT2B% +expect "NEXT\r\n\007" send "INSERT,1,4\r"; c +expect "\007" send "*S,SYSMON,$3034\r"; c +expect "\007" send "*S,SYSDAY,$3139\r"; c +expect "\007" send "*S,SYSYER,$3137\r"; c +expect "\007" send "\r"; c +expect "NEXT\r\n\007" send "DELETE,2,4\r"; c +expect "NEXT\r\n\007" send "INSERT,8,4\r"; c +expect "\007" send "*V SIMH DEVELOPMENT SYSTEM\r"; c +expect "\007" send "\r"; c +expect "NEXT\r\n\007" send "DELETE,9\r"; c +expect "NEXT\r\n\007" send "DUMP,17\r"; c +expect "NEXT\r\n\007" send "EXIT\r"; c +expect "J \r\n" send "*REW,6,17\r"; c +expect "J \r\n" send "*ADF,6,1\r"; goto libild +continue + +:libild +expect "J \r\n" send delay=5000,"*LIBILD\r"; c +expect "CONTROL LU = \007" send "\r"; c +expect "DEFS LU = \007" send "\r"; c +expect "INSTALL LU = \007" send "18\r"; c +expect "NEWLIB LU = \007" send "\r"; c +expect "LIB 01 LU = \007" send "16\r"; c +expect "LIB 02 LU = \007" send "6\r"; c +expect "LIB 03 LU = \007" send "\r"; c +expect "SKELETON LU = \007" send "17\r"; c +expect "CR WHEN READY. \r\n\007" send "\r"; c +expect "CR WHEN READY \r\n\007" send "\r"; c +expect "OUTPUT LIBRARY LU'S \007" send "*Z\r"; c +expect "J \r\n" send "*REW,6,16\r"; goto mtup +continue + +:mtup +det mt1 +att -q mt1 %MT1B% +expect "J \r\n" send "*mtup\r"; c +expect "NEXT: \007" send "OPEN,O18,NL,U,A,SF0\r"; c +expect "NEXT: \007" send "CLOSE,O18,RW\r"; c +expect "NEXT: \007" send "OPEN,O16,NL,U,A,SF0,,LB13000\r"; c +expect "NEXT: \007" send "OPEN,I6,NL,U,A,SF0,,LB13000\r"; c +expect "NEXT: \007" send "COPY,FC1\r"; c +expect "NEXT: \007" send "CLOSE,O16,RW\r"; c +expect "NEXT: \007" send "CLOSE,I6,RW\r"; c +expect "NEXT: \007" send "OPEN,O16,NL,U,A,SF1,,LB13000\r"; c +expect "NEXT: \007" send "OPEN,I18,NL,U,A,SF0,,LB13000\r"; c +expect "NEXT: \007" send "COPY,FC1\r"; c +expect "NEXT: \007" send "CLOSE,O16,RW\r"; c +expect "NEXT: \007" send "CLOSE,I18,RW\r"; c +expect "NEXT: \007" send "OPEN,I6,NL,U,A,SF2,,LB13000\r"; c +expect "NEXT: \007" send "OPEN,O16,NL,U,A,SF2,,LB13000\r"; c +expect "NEXT: \007" send "COPY,FC1\r"; c +expect "NEXT: \007" send "CLOSE,O16,RW\r"; c +expect "NEXT: \007" send "CLOSE,I6,RW\r"; c +expect "NEXT: \007" send "OPEN,I6,NL,U,A,SF3,,LB13000\r"; c +expect "NEXT: \007" send "OPEN,O16,NL,U,A,SF3,,LB13000\r"; c +expect "NEXT: \007" send "COPY,FC1\r"; c +expect "NEXT: \007" send "CLOSE,O16,RW\r"; c +expect "NEXT: \007" send "CLOSE,I6,RW\r"; c +expect "NEXT: \007" send "OPEN,I6,NL,U,A,SF4,,LB13000\r"; c +expect "NEXT: \007" send "OPEN,O16,NL,U,A,SF4,,LB13000\r"; c +expect "NEXT: \007" send "COPY,FC1\r"; c +expect "NEXT: \007" send "CLOSE,O16,RW\r"; c +expect "NEXT: \007" send "CLOSE,I6,RW\r"; c +expect "NEXT: \007" send "OPEN,I6,NL,U,A,SF5,,LB13000\r"; c +expect "NEXT: \007" send "OPEN,O16,NL,U,A,SF5,,LB13000\r"; c +expect "NEXT: \007" send "COPY,FC1\r"; c +expect "NEXT: \007" send "CLOSE,O16,RW\r"; c +expect "NEXT: \007" send "CLOSE,I6,RW\r"; c +expect "NEXT: \007" send "EXIT\r"; c +expect "J \r\n" send "*Z\r"; c +continue + +:end diff --git a/CDC1700/customization/custom5/sysdat.asm b/CDC1700/customization/custom5/sysdat.asm new file mode 100644 index 00000000..b460620a --- /dev/null +++ b/CDC1700/customization/custom5/sysdat.asm @@ -0,0 +1,2497 @@ + NAM SYSDAT EXXON DEVELOPMENT SYSTEM SUMMARY-122 +* SYSTEM DATA PROGRAM - MSOS 5.0 +* 1700 MASS STORAGE OPERATING SYSTEM VERSION 5.0 +* SMALL SYSTEMS DIVISION, LA JOLLA, CALIFORNIA +* COPYRIGHT CONTROL DATA CORPORATION 1976 +* +* SIMH DEVELOPMENT SYSTEM +* +* PROGRAM BASE - MSOS 4.3 +* +* S Y S T E M D A T A P R O G R A M +* +* +* TABLE OF CONTENTS +* +* 1. COMMUNICATION EXTERNALS +* +* 2. COMMUNICATION REGION (INCLUDING APPLICATIONS AREA) +* +* 3. INTERRUPT REGION +* +* 4. INTERRUPT MASK TABLE (MASKT) +* +* 5. EXTENDED COMMUNICATIONS REGION +* +* 6. STORAGE STACKS (INTSTK,VOLBLK, SCHSTK) +* +* 7. LOGICAL UNIT TABLES (LOG1A, LOG1, LOG2) +* +* 8. DIAGNOSTIC TABLES (DGNTAB, ALTERR) +* +* 9. STANDARD LOGICAL UNIT DEFINITIONS AND LINE 1 TABLE +* +* 10. PHYSICAL DEVICE TABLES WITH INTERRUPT RESPONSE ROUTINES +* +* 11. CORE ALLOCATION INFORMATION (CALTHD, LVLSTR, NN'S) +* +* 12. CORE PARTITION INFORMATION (PARTBL, THDS, USE) +* +* 13. SYSTEM COMMON DECLARATION +* +* 14. MISCELLANEOUS PROGRAMS +* +* 15. MISCELLANEOUS INFORMATION +* +* 16. SYSTEM FILE INFORMATION +* +* 17. PRESET REGION +* +* 18. START OF SYSTEM DIRECTORY +* + EJT +* C O M M U N I C A T I O N S E X T E R N A L S +* +* + EXT FNR FIND NEXT REQUEST + EXT COMPRQ COMPLETE REQUEST + EXT REQXT REQUEST EXIT + EXT VOLR VOLATILE RELEASE + EXT VOLA VOLATILE ASSIGNMENT + EXT LUABS LOGICAL UNIT ABSOLUTIZING + EXT SABS STARTING ADDRESS ABSOLUTIZING + EXT CABS COMPLETION ADDRESS ABSOLUTIZING + EXT NABS NUMBER OF WORDS ABSOLUTIZING + EXT DISPXX DISPATCHER + EXT MONI MONITOR + EXT MSIZV4 HIGHEST CORE LOCATION USED BY SYSTEM + EXT IPROC INTERNAL INTERRUPT PROCESSOR + EXT ALLIN COMMON INTERRUPT HANDLER + EJT +* C O M M U N I C A T I O N R E G I O N +* + ORG 0 + RTJ SYFAIL GO TO COMMON SYSTEM FAILURE ROUTINE +* +LPMSK NUM 0 LOGICAL PRODUCT MASK TABLE OF ONES +ONE NUM 1 ONE +THREE NUM 3 THREE +SEVEN NUM 7 SEVEN + NUM $F + NUM $1F + NUM $3F + NUM $7F + NUM $FF + NUM $1FF + NUM $3FF + NUM $7FF + NUM $FFF + NUM $1FFF + NUM $3FFF + NUM $7FFF +* +NZERO NUM $FFFF LOGICAL PRODUCT MASK TABLE OF ZEROS (NEG ZERO) + NUM $FFFE + NUM $FFFC + NUM $FFF8 + NUM $FFF0 + NUM $FFE0 + NUM $FFC0 + NUM $FF80 + NUM $FF00 + NUM $FE00 + NUM $FC00 + NUM $F800 + NUM $F000 + NUM $E000 + NUM $C000 + NUM $8000 + EJT +* C O M M U N I C A T I O N R E G I O N +* +ZERO NUM 0 ZERO +* +ONEBIT NUM 1 ONE BIT TABLE +TWO NUM 2 TWO +FOUR NUM 4 FOUR +EIGHT NUM 8 EIGHT + NUM $10 + NUM $20 + NUM $40 + NUM $80 + NUM $100 + NUM $200 + NUM $400 + NUM $800 + NUM $1000 + NUM $2000 + NUM $4000 + NUM $8000 +* +ZROBIT NUM $FFFE ZERO BIT TABLE + NUM $FFFD + NUM $FFFB + NUM $FFF7 + NUM $FFEF + NUM $FFDF + NUM $FFBF + NUM $FF7F + NUM $FEFF + NUM $FDFF + NUM $FBFF + NUM $F7FF + NUM $EFFF + NUM $DFFF + NUM $BFFF + NUM $7FFF +* +FIVE NUM 5 FIVE +SIX NUM 6 SIX +NINE NUM 9 NINE +TEN NUM 10 TEN + EJT +* C O M M U N I C A T I O N R E G I O N +* +* THIS AREA IS AVAILABLE FOR APPLICATIONS USE +* + NUM 0 $47 + NUM 0 $48 + NUM 0 $49 + NUM 0 $4A + NUM 0 $4B + NUM 0 $4C + NUM 0 $4D + NUM 0 $4E + NUM 0 $4F + NUM 0 $50 + NUM 0 $51 + NUM 0 $52 + NUM 0 $53 + NUM 0 $54 + NUM 0 $55 + NUM 0 $56 + NUM 0 $57 + NUM 0 $58 + NUM 0 $59 + NUM 0 $5A + NUM 0 $5B + NUM 0 $5C + NUM 0 $5D + NUM 0 $5E + NUM 0 $5F + NUM 0 $60 + NUM 0 $61 + NUM 0 $62 + NUM 0 $63 + NUM 0 $64 + NUM 0 $65 + NUM 0 $66 + NUM 0 $67 + NUM 0 $68 + NUM 0 $69 + NUM 0 $6A + NUM 0 $6B + NUM 0 $6C + NUM 0 $6D + NUM 0 $6E + NUM 0 $6F + EJT + SPC 4 +* C O M M U N I C A T I O N R E G I O N +* +* THIS AREA IS AVAILABLE FOR APPLICATIONS USE +* + NUM 0 $70 + NUM 0 $71 + NUM 0 $72 + NUM 0 $73 + NUM 0 $74 + NUM 0 $75 + NUM 0 $76 + NUM 0 $77 + NUM 0 $78 + NUM 0 $79 + NUM 0 $7A + NUM 0 $7B + NUM 0 $7C + NUM 0 $7D + NUM 0 $7E + NUM 0 $7F + NUM 0 $80 + NUM 0 $81 + NUM 0 $82 + NUM 0 $83 + NUM 0 $84 + NUM 0 $85 + NUM 0 $86 + NUM 0 $87 + NUM 0 $88 + NUM 0 $89 + NUM 0 $8A + NUM 0 $8B + NUM 0 $8C + NUM 0 $8D + NUM 0 $8E + NUM 0 $8F + EJT + SPC 2 +* C O M M U N I C A T I O N R E G I O N +* +* THIS AREA IS AVAILABLE FOR APPLICATIONS USE +* + NUM 0 $90 + NUM 0 $91 + NUM 0 $92 + NUM 0 $93 + NUM 0 $94 + NUM 0 $95 + NUM 0 $96 + NUM 0 $97 + NUM 0 $98 + NUM 0 $99 + NUM 0 $9A + NUM 0 $9B + NUM 0 $9C + NUM 0 $9D + NUM 0 $9E + NUM 0 $9F + NUM 0 $A0 + NUM 0 $A1 + NUM 0 $A2 + NUM 0 $A3 + NUM 0 $A4 + NUM 0 $A5 + NUM 0 $A6 + NUM 0 $A7 + NUM 0 $A8 + NUM 0 $A9 + NUM 0 $AA + NUM 0 $AB + NUM 0 $AC + NUM 0 $AD + NUM 0 $AE + NUM 0 $AF + NUM 0 $B0 + NUM 0 $B1 + NUM 0 $B2 + EJT +* C O M M U N I C A T I O N R E G I O N +* + ORG $B3 + ADC SCRTCH LOGICAL UNIT OF STANDARD SCRATCH DEVICE + ADC SCHSTK ADR OF TOP OF SCHEDULER STACK +AFNR ADC FNR ADR OF FIND NEXT REQUEST +ACOMPR ADC COMPRQ ADR OF COMPLETE REQUEST + ADC MASKT ADR OF MASK TABLE + ADC INTSTK ADR OF TOP OF INTERRUPT STACK + ADC REQXT ADR OF EXIT FOR MONITOR REQUESTS +AVOLR ADC VOLR ADR OF RELEASE VOLATILE ROUTINE +AVOLA ADC VOLA ADR OF ASSIGN VOLATILE ROUTINE + ADC LUABS ADR OF ABSOLUTIZING ROUTINE FOR LOGICAL UNIT + ADC SABS ADR OF ABSOLUTIZING ROUTINE FOR STARTING ADR + ADC CABS ADR OF ABSOLUTIZING ROUTINE FOR COMPLETION ADR + ADC NABS ADR OF ABSOLUTIZING ROUTINE FOR NUMBER OF WRDS + NUM 0 MSB OF STARTING SCRATCH SECTOR (ALWAYS ZERO) + NUM 0 LSB OF STARTING SCRATCH SECTOR (SET BY SI) + ADC LBUNIT LOGICAL UNIT OF STANDARD LIBRARY DEVICE + NUM 0 MSB OF PGM LIB DIRECTORY SECTOR (ALWAYS ZERO) + NUM 0 LSB OF PGM LIB DIRECTORY SECTOR (SET BY SI) +* + BZS ($E3-$C5+1) RESERVED FOR FTN (UNPROTECTED) + NUM 0 RESERVED FOR FTN + LOAD/GO SECTOR(UNPROTECTED) + NUM 0 RESERVED FOR FTN (UNPROTECTED) +* + BSS (1) LENGTH OF MASS RESIDENT SYSTEM DIR.(SET BY SI) + BSS (1) LENGTH OF CORE RESIDENT SYSTEM DIR.(SET BY SI) + NUM 0 REAL TIME CLOCK COUNTER + ADC EXTBV4 ADDR OF EXTENDED CORE TABLE +ADISP ADC DISPXX ADR OF DISPATCHER + ADC SLDIRY ADR OF SYSTEM DIRECTORY + NUM 0 TEMPORARY TOP+1 OF UNPROTECTED (SET BY SI) + NUM 0 TEMPORARY BOTTOM-1 OF UNPROTECTED (SET BY SI) + NUM 0 USED BY JOB PROCESSOR FOR LOADER RETURNS + NUM -1 CURRENT PRIORITY LEVEL + ADC VOLBLK STARTING LOCATION OF VOLATILE STORAGE + ADC LPRSET LENGTH OF PRESETS TABLE + ADC APRSET STARTING LOCATION OF PRESETS TABLE + ADC 0 ADR OF BREAKPOINT PROGRAM IN CORE(UNPROTECTED) +AMONI ADC MONI ADR OF MONITOR ENTRY FOR REQUESTS + ADC MSIZV4 HIGHEST CORE LOCATION USED BY SYSTEM + NUM 0 TOP+1 OF UNPROTECTED (SET BY SI) + NUM 0 BOTTOM-1 OF UNPROTECTED (SET BY SI) + ADC IPROC ADR OF INTERNAL INTERRUPT PROCESSOR + ADC STDINP LOGICAL UNIT OF STANDARD INPUT DEVICE (FTN 1) + ADC BINOUT LOGICAL UNIT OF STANDARD BINARY DEVICE (FTN 2) + ADC LSTOUT LOGICAL UNIT OF STANDARD PRINT DEVICE (FTN 3) + ADC OUTCOM LOGICAL UNIT OF OUTPUT COMMENT DEVICE (FTN 4) + ADC INPCOM LOGICAL UNIT OF INPUT COMMENT DEVICE (FTN 4) + ADC ALLIN ADR OF COMMON INTERRUPT HANDLER + BSS (1) I (MEMORY INDEX) REGISTER (UNPROTECTED) + EJT + SPC 6 +* I N T E R R U P T R E G I O N +* +* +* +LINE00 NUM 0 INTERRUPT LINE ENTRY + RTJ- ($F8) GO TO INTERRUPT HANDLER ROUTINE + NUM 15 PRIORITY LEVEL OF INTERRUPT + ADC IPROC INTERRUPT RESPONSE FOR THE PROTECT/PARITY ERR. +* +LINE01 NUM 0 INTERRUPT LINE ENTRY + RTJ- ($FE) GO TO INTERRUPT HANDLER ROUTINE + NUM 13 PRIORITY LEVEL OF INTERRUPT + ADC LIN1V4 INTERRUPT RESPONSE FOR THE LOW SPEED I / O +* +LINE02 NUM 0 INTERRUPT LINE ENTRY + RTJ- ($FE) GO TO INTERRUPT HANDLER ROUTINE + NUM 09 PRIORITY LEVEL OF INTERRUPT + ADC R1752 INTERRUPT RESPONSE FOR THE 1752 DRUM +* +LINE03 NUM 0 INTERRUPT LINE ENTRY + RTJ- ($FE) GO TO INTERRUPT HANDLER ROUTINE + NUM 09 PRIORITY LEVEL OF INTERRUPT + ADC R17332 INTERRUPT RESPONSE FOR THE 1733-2/856-2/4 DISK +* +LINE04 NUM 0 INTERRUPT LINE ENTRY + RTJ- ($FE) GO TO INTERRUPT HANDLER ROUTINE + NUM 10 PRIORITY LEVEL OF INTERRUPT + ADC R42312 INTERRUPT RESPONSE FOR THE 1742-30/120 PRINTER +* +LINE05 NUM 0 INTERRUPT LINE ENTRY + RTJ- ($FE) GO TO INTERRUPT HANDLER ROUTINE + NUM 10 PRIORITY LEVEL OF INTERRUPT + ADC INVINT INTERRUPT RESPONSE FOR THE INVALID INTERRUPTS +* +LINE06 NUM 0 INTERRUPT LINE ENTRY + RTJ- ($FE) GO TO INTERRUPT HANDLER ROUTINE + NUM 0 PRIORITY LEVEL OF INTERRUPT + ADC INVINT INTERRUPT RESPONSE FOR THE INVALID INTERRUPTS + SPC 1 +* +LINE07 NUM 0 INTERRUPT LINE ENTRY + RTJ- ($FE) GO TO INTERRUPT HANDLER ROUTINE + NUM 10 PRIORITY LEVEL OF INTERRUPT + ADC R17323 INTERRUPT RESPONSE FOR THE 1732-3/616 MAG TAPE +* +LINE08 NUM 0 INTERRUPT LINE ENTRY + RTJ- ($FE) GO TO INTERRUPT HANDLER ROUTINE + NUM 0 PRIORITY LEVEL OF INTERRUPT + ADC INVINT INTERRUPT RESPONSE FOR THE INVALID INTERRUPTS + SPC 1 +* +LINE09 NUM 0 INTERRUPT LINE ENTRY + RTJ- ($FE) GO TO INTERRUPT HANDLER ROUTINE + NUM 0 PRIORITY LEVEL OF INTERRUPT + ADC INVINT INTERRUPT RESPONSE FOR THE INVALID INTERRUPTS + SPC 1 +* +LINE10 NUM 0 INTERRUPT LINE ENTRY + RTJ- ($FE) GO TO INTERRUPT HANDLER ROUTINE + NUM 14 PRIORITY LEVEL OF INTERRUPT + ADC R1728 INTERRUPT RESPONSE FOR THE 1728-430 READ/PNCH +* +LINE11 NUM 0 INTERRUPT LINE ENTRY + RTJ- ($FE) GO TO INTERRUPT HANDLER ROUTINE + NUM 0 PRIORITY LEVEL OF INTERRUPT + ADC INVINT INTERRUPT RESPONSE FOR THE INVALID INTERRUPTS + SPC 1 +* +LINE12 NUM 0 INTERRUPT LINE ENTRY + RTJ- ($FE) GO TO INTERRUPT HANDLER ROUTINE + NUM 0 PRIORITY LEVEL OF INTERRUPT + ADC INVINT INTERRUPT RESPONSE FOR THE INVALID INTERRUPTS + SPC 1 +* +LINE13 NUM 0 INTERRUPT LINE ENTRY + RTJ- ($FE) GO TO INTERRUPT HANDLER ROUTINE + NUM 13 PRIORITY LEVEL OF INTERRUPT + ADC TIMINT INTERRUPT RESPONSE FOR THE SYSTEM TIME BASE + SPC 1 +* +LINE14 NUM 0 INTERRUPT LINE ENTRY + RTJ- ($FE) GO TO INTERRUPT HANDLER ROUTINE + NUM 0 PRIORITY LEVEL OF INTERRUPT + ADC INVINT INTERRUPT RESPONSE FOR THE INVALID INTERRUPTS + SPC 1 +* +LINE15 NUM 0 INTERRUPT LINE ENTRY + RTJ- ($FE) GO TO INTERRUPT HANDLER ROUTINE + NUM 0 PRIORITY LEVEL OF INTERRUPT + ADC INVINT INTERRUPT RESPONSE FOR THE INVALID INTERRUPTS + SPC 1 + EJT +* C O R E R E S I D E N T D E B U G E N T R I E S + SPC 2 + ORG $140 + SPC 1 + EXT COUTV4 + EXT COBOP + SPC 2 + JMP+ COUTV4 OFF-LINE CORE DUMP + SPC 4 + JMP+ COBOP SYSTEM CHECKOUT BOOTSTRAP + EJT +* I N T E R R U P T M A S K T A B L E +* +* + ENT MASKT INTERRUPT MASKS INDEXED BY PRIORITY LEVEL +* +* +* <----------------------------- INTERRUPT LINE NUMBER +* 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 +* **************************************************** +* P -1 * 0 0 1 0 0 1 0 0 1 0 0 1 1 1 1 1 * +* R 0 * 0 0 1 0 0 1 0 0 1 0 0 1 1 1 1 1 * +* I 1 * 0 0 1 0 0 1 0 0 1 0 0 1 1 1 1 1 * +* O 2 * 0 0 1 0 0 1 0 0 1 0 0 1 1 1 1 1 * +* R 3 * 0 0 1 0 0 1 0 0 1 0 0 1 1 1 1 1 * +* I 4 * 0 0 1 0 0 1 0 0 1 0 0 1 1 1 1 1 * +* T 5 * 0 0 1 0 0 1 0 0 1 0 0 1 1 1 1 1 * +* Y 6 * 0 0 1 0 0 1 0 0 1 0 0 1 1 1 1 1 * +* 7 * 0 0 1 0 0 1 0 0 1 0 0 1 1 1 1 1 * +* L 8 * 0 0 1 0 0 1 0 0 1 0 0 1 1 1 1 1 * +* E 9 * 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 1 * +* V 10 * 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 * +* E 11 * 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 * +* L 12 * 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 * +* . 13 * 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 * +* . 14 * 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 * +* V 15 * 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 * +* **************************************************** +* +* + NUM $249F PRIORITY LEVEL -1 +MASKT NUM $249F PRIORITY LEVEL 00 + NUM $249F PRIORITY LEVEL 01 + NUM $249F PRIORITY LEVEL 02 + NUM $249F PRIORITY LEVEL 03 + NUM $249F PRIORITY LEVEL 04 + NUM $249F PRIORITY LEVEL 05 + NUM $249F PRIORITY LEVEL 06 + NUM $249F PRIORITY LEVEL 07 + NUM $249F PRIORITY LEVEL 08 + NUM $2493 PRIORITY LEVEL 09 + NUM $2403 PRIORITY LEVEL 10 + NUM $2403 PRIORITY LEVEL 11 + NUM $2403 PRIORITY LEVEL 12 + NUM $0401 PRIORITY LEVEL 13 + NUM $0001 PRIORITY LEVEL 14 + NUM $0000 PRIORITY LEVEL 15 + EJT +* E X T E N D E D C O M M U N I C A T I O N S R E G I O N +* +* REFERENCED THRU LOCATION $E9 + SPC 3 + ENT MAXSEC + ENT MPFLAG + ENT MIINP + EXT JFILV4 + EXT RCTV + EXT END0V4 + EXT DATBAS + EXT SECTOR + EQU CSYLST(9) + EQU CSYINP(10) + EQU CSYPUN(11) + EQU SECT1(0) + EQU SECT3(0) + EQU SECT4($5BFA) + SPC 3 +EXTBV4 ADC 0 00 MODE SWITCH 32K=0 65K=1 + ADC CSYINP 01 STANDARD COSY INPUT LU NUMBER + ADC CSYPUN 02 STANDARD COSY OUTPUT LU NUMBER + ADC CSYLST 03 STANDARD COSY LIST LU NUMBER + ADC 0 04 FIRST SECTOR LSB OF SYSTEM CORE IMAGE + ADC 0 05 FIRST SECTOR LSB OF S. A. T. + ADC 0 06 FIRST SECTOR LSB OF CREP TABLE + ADC 0 07 FIRST SECTOR LSB OF CREP1 TABLE + ADC JFILV4 08 FIRST SECTOR LSB OF JOB FILE DIRECTORY + ADC RCTV 09 ADDRESS OF RCTV TABLE IN THE MONITOR + ADC 0 10 UNPROTECTED CORE FLAG 0=PART0 / 1=PART1 + ADC 0 11 UNPROTECTED SWAP ALLOWED 0=YES / 1=NO + ADC AYERTO 12 ADDRESS LOCATION CONTAINING THE YEAR + ADC AMONTO 13 ADDRESS LOCATION CONTAINING THE MONTH + ADC ADAYTO 14 ADDRESS LOCATION CONTAINING THE DAY + ADC END0V4 15 LAST ADDRESS OF PART 0 CORE + ADC 0 16 FIRST ADDRESS OF BLANK (SYSTEM) COMMON + ADC DATBAS 17 FIRST ADDRESS OF LABELED COMMON + ADC 0 18 COSY DRIVER CURRENT PHYSTAB ADDRESS + ADC 0 19 JOB TABLE INITIALIZATION FLAG + ADC 0 20 MASS MEMORY LOCATION OF ENGINEERING FILE + ADC SECT1 21 MSB OF MAXIMUM SCRATCH SECTOR +MAXSEC ADC SECTOR 22 LSB OF MAXIMUM SCRATCH SECTOR + ADC SECT3 23 MSB OF MAXIMUM LIBRARY SECTOR + ADC SECT4 24 LSB OF MAXIMUM LIBRARY SECTOR + ADC 0 25 LAST ADDRESS OF LABELED COMMON + ADC 0 26 UNUSED +MPFLAG ADC 0 27 ZERO IF NOT AN MP SYSTEM + ADC LOG1A 28 ADDRESS OF LOG1A TABLE +MIINP BZS MIINP(40) MANUAL INPUT BUFFER + EJT +* S Y S T E M I D E N T I F I C A T I O N +* + SPC 1 + ENT SYSID + EXT SYSMON MONTH SYSTEM WAS BUILT + EXT SYSDAY DAY SYSTEM WAS BUILT + EXT SYSYER YEAR SYSTEM WAS BUILT + SPC 4 +SYSID ALF 16, SIMH DEVELOPMENT SYSTEM + ADC SYSMON + ADC SYSDAY + ADC SYSYER + SPC 4 +* COMMON SYSTEM FAILURE ROUTINE + SPC 2 + ENT SYFAIL + SPC 1 +SYFAIL NOP 0 + IIN 0 INHIBIT INTERRUPTS + STA* SAVEA SAVE A + STQ* SAVEQ SAVE Q + TRM A MOVE M TO A + STA* SAVEM SAVE M + LDA* SYFAIL PICK UP ADDRESS OF CALLER + INA -2 CORRECT IT FOR 2 WORD RTJ + STA* SYFAIL STORE IT BACK + NUM $18FF HANG + SPC 2 +SAVEA NUM 0 +SAVEQ NUM 0 +SAVEM NUM 0 + EJT +* C O N T R O L P O I N T / B O U N D S R E G I S T E R +* P A R A M E T E R S +* + ENT UBPROT + ENT LBPROT + ENT UPBDTB + ENT LOBDTB + ENT TSCNAC + ENT TSCNMI + ENT SIM200 + ENT CCP + ENT CPSET + SPC + EQU UBPROT($7FFF),LBPROT($7FFF),UPBDTB($7FFF),LOBDTB($7FFF) + EQU TSCNAC($7FFF),TSCNMI($7FFF),SIM200($7FFF) + EQU CCP($7FFF) + SPC 2 +CPSET NUM 0 + JMP* (CPSET) + EJT +* S T O R A G E S T A C K S +* +* +NUMPRI EQU NUMPRI(16) NUMBER OF SYSTEM PRIORITY LEVELS +EXTVOL EQU EXTVOL(00) AMOUNT OF EXTRA VOLATILE STORAGE +* +NFTNLV EQU NFTNLV(3) NUMBER OF REENTRANT FORTRAN LEVELS +NEDLVL EQU NEDLVL(3) NUMBER OF REENTRANT ENCODE/DECODE LEVELS + SPC 3 +* +* I N T E R R U P T S T A C K +* + ENT INTSTK CONTENTS, 1 = Q-REGISTER +* 2 = A-REGISTER +* 3 = I-REGISTER +* 4 = P-REGISTER +* 5 = PRIORITY LEVEL AND OVERFLOW +* INDICATOR (BIT 15) +* +INTSTK BZS INTSTK(5*NUMPRI) + SPC 3 +* +* V O L A T I L E B L O C K S T A C K +* + ENT VOLBLK CONTENTS, 1 = Q-REGISTER + ENT VOLEND 2 = A-REGISTER +* 3 = I-REGISTER +* 4 = USER ASSIGNMENTS +* . +* N = USER ASSIGNMENTS +* +VOLBLK BZS VOLBLK(18*NUMPRI+98*NFTNLV+57*NEDLVL+EXTVOL+1) +VOLEND EQU VOLEND(*) END OF VOLATILE + SPC 3 +* +* S C H E D U L E R / T I M E R S T A C K +* + ENT SCHSTK CONTENTS, 1 = SCHEDULER CALL + ENT SCHLNG 2 = STARTING ADDRESS +* 3 = THREAD TO NEXT CALL +SCHSTK EQU SCHSTK(*) 4 = Q-REGISTER CONTENTS + SPC 1 + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 001 + EJT + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 002 + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 003 + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 004 + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 005 + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 006 + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 007 + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 008 + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 009 + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 010 + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 011 + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 012 + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 013 + EJT + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 014 + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 015 + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 016 + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 017 + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 018 + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 019 + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 020 + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 021 + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 022 + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 023 + ADC 0,0,*+2,0 SCHEDULER STACK ENTRY 024 + ADC 0,0,(-0),0 SCHEDULER STACK ENTRY 025 +SCHLNG EQU SCHLNG(*-SCHSTK) SCHEDULER STACK LENGTH + EJT +* L O G I C A L U N I T T A B L E S ( L O G 1 A ) +* +* + ENT LOG1A PHYSICAL DEVICES ADDRESSES BY LOGICAL UNIT + ENT NUMLU + SPC 1 +LOG1A ADC NUMLU NUMBER OF LOGICAL UNITS + ADC PCORE 1 CORE ALLOCATOR + ADC PDUMMY 2 DUMMY LOGICAL UNIT + ADC PDUMMY 3 DUMMY LOGICAL UNIT + ADC P1711 4 1711 TELETYPE, 713-10 CRT + ADC PCOSY1 5 COSY DRIVER, FIRST UNIT + ADC P73230 6 1732-3 616-73/93/95 MAG TAPE UNIT 0 + ADC PSUDO0 7 PSEUDO TAPE, UNIT 0 + ADC P73320 8 1733-2 856-2/4 DISK, UNIT 0 + ADC P42312 9 1742-30/120 LINE PRINTER +X73230 ADC P73230 10 DIAGNOSTIC 1732-3 616 MAG TAPE, UNIT 0 + ADC P1728 11 1728-430 CARD PUNCH +FTN742 ADC P42312 12 1742-30/120 FORTRAN LINE PRINTER + ADC P73321 13 1733-2 856-2/4 DISK, UNIT 1 + ADC P73322 14 1733-2 856-2/4 DISK, UNIT 2 + ADC P73323 15 1733-2 856-2/4 DISK, UNIT 3 + ADC P73231 16 1732-3 616-73/93/95 MAG TAPE UNIT 1 + ADC P73232 17 1732-3 616-73/93/95 MAG TAPE UNIT 2 + ADC P73233 18 1732-3 616-73/93/95 MAG TAPE UNIT 3 + ADC PSUDO1 19 PSEUDO TAPE, UNIT 1 + ADC PSUDO2 20 PSEUDO TAPE, UNIT 2 + ADC PSUDO3 21 PSEUDO TAPE, UNIT 3 + ADC PSDSK0 22 PSEUDO DISK, UNIT 0 + ADC PSDSK1 23 PSEUDO DISK, UNIT 1 + ADC PSDSK2 24 PSEUDO DISK, UNIT 2 + ADC PSDSK3 25 PSEUDO DISK, UNIT 3 + ADC P1752 26 1752 DRUM + ADC PCOSY2 27 COSY DRIVER, SECOND UNIT + ADC P1728 28 1728-430 CARD READER +X73231 ADC P73231 29 DIAGNOSTIC 1732-3 616 MAG TAPE, UNIT 1 +X73232 ADC P73232 30 DIAGNOSTIC 1732-3 616 MAG TAPE, UNIT 2 +X73233 ADC P73233 31 DIAGNOSTIC 1732-3 616 MAG TAPE, UNIT 3 +X42312 ADC P42312 32 DIAGNOSTIC 1742-30/120 LINE PRINTER +X1728 ADC P1728 33 DIAGNOSTIC 1728-430 READER / PUNCH +X1711 ADC P1711 34 DIAGNOSTIC 1711 TELETYPE, 713-10 CRT +NUMLU EQU NUMLU(*-LOG1A-1) + EJT +* L O G I C A L U N I T T A B L E S ( L O G 1 ) +* +* + ENT LOG1 LOGICAL UNIT INFORMATION BY LOGICAL UNIT +* BIT 14 = 1, IMPLIES LU SHARES DEVICE +* BIT 13 = 1, IMPLIES LU IS MARKED DOWN +* BITS 0 - 11 IS ALTERNATE LOGICAL UNIT +* ALTERNATE = 0, IMPLIES NONE +S EQU S($4000) SHARED BIT + SPC 1 +LOG1 ADC NUMLU NUMBER OF LOGICAL UNITS + ADC 0 1 CORE ALLOCATOR + ADC 0+S 2 DUMMY LOGICAL UNIT + ADC 0+S 3 DUMMY LOGICAL UNIT + ADC 2+S 4 1711 TELETYPE, 713-10 CRT + ADC 0 5 COSY DRIVER, FIRST UNIT + ADC 0+S 6 1732-3 616-73/93/95 MAG TAPE UNIT 0 + ADC 0 7 PSEUDO TAPE, UNIT 0 + ADC 0 8 1733-2 856-2/4 DISK, UNIT 0 + ADC 0+S 9 1742-30/120 LINE PRINTER + ADC 0+S 10 DIAGNOSTIC 1732-3 616 MAG TAPE, UNIT 0 + ADC 0+S 11 1728-430 CARD PUNCH + ADC 0+S 12 1742-30/120 FORTRAN LINE PRINTER + ADC 0 13 1733-2 856-2/4 DISK, UNIT 1 + ADC 0 14 1733-2 856-2/4 DISK, UNIT 2 + ADC 0 15 1733-2 856-2/4 DISK, UNIT 3 + ADC 0+S 16 1732-3 616-73/93/95 MAG TAPE UNIT 1 + ADC 0+S 17 1732-3 616-73/93/95 MAG TAPE UNIT 2 + ADC 0+S 18 1732-3 616-73/93/95 MAG TAPE UNIT 3 + ADC 0 19 PSEUDO TAPE, UNIT 1 + ADC 0 20 PSEUDO TAPE, UNIT 2 + ADC 0 21 PSEUDO TAPE, UNIT 3 + ADC 0 22 PSEUDO DISK, UNIT 0 + ADC 0 23 PSEUDO DISK, UNIT 1 + ADC 0 24 PSEUDO DISK, UNIT 2 + ADC 0 25 PSEUDO DISK, UNIT 3 + ADC 0 26 1752 DRUM + ADC 0 27 COSY DRIVER, SECOND UNIT + ADC 0+S 28 1728-430 CARD READER + ADC 0+S 29 DIAGNOSTIC 1732-3 616 MAG TAPE, UNIT 1 + ADC 0+S 30 DIAGNOSTIC 1732-3 616 MAG TAPE, UNIT 2 + ADC 0+S 31 DIAGNOSTIC 1732-3 616 MAG TAPE, UNIT 3 + ADC 0+S 32 DIAGNOSTIC 1742-30/120 LINE PRINTER + ADC 0+S 33 DIAGNOSTIC 1728-430 READER / PUNCH + ADC 0+S 34 DIAGNOSTIC 1711 TELETYPE, 713-10 CRT + EJT +* L O G I C A L U N I T T A B L E S ( L O G 2 ) +* +* + ENT LOG2 TOP OF I/O THREAD ADDRESSES BY LOGICAL UNIT + SPC 1 +LOG2 ADC NUMLU NUMBER OF LOGICAL UNITS + NUM $FFFF 1 CORE ALLOCATOR + NUM $FFFF 2 DUMMY LOGICAL UNIT + NUM $FFFF 3 DUMMY LOGICAL UNIT + NUM $FFFF 4 1711 TELETYPE, 713-10 CRT + NUM $FFFF 5 COSY DRIVER, FIRST UNIT + NUM $FFFF 6 1732-3 616-73/93/95 MAG TAPE UNIT 0 + NUM $FFFF 7 PSEUDO TAPE, UNIT 0 + NUM $FFFF 8 1733-2 856-2/4 DISK, UNIT 0 + NUM $FFFF 9 1742-30/120 LINE PRINTER + NUM $FFFF 10 DIAGNOSTIC 1732-3 616 MAG TAPE, UNIT 0 + NUM $FFFF 11 1728-430 CARD PUNCH + NUM $FFFF 12 1742-30/120 FORTRAN LINE PRINTER + NUM $FFFF 13 1733-2 856-2/4 DISK, UNIT 1 + NUM $FFFF 14 1733-2 856-2/4 DISK, UNIT 2 + NUM $FFFF 15 1733-2 856-2/4 DISK, UNIT 3 + NUM $FFFF 16 1732-3 616-73/93/95 MAG TAPE UNIT 1 + NUM $FFFF 17 1732-3 616-73/93/95 MAG TAPE UNIT 2 + NUM $FFFF 18 1732-3 616-73/93/95 MAG TAPE UNIT 3 + NUM $FFFF 19 PSEUDO TAPE, UNIT 1 + NUM $FFFF 20 PSEUDO TAPE, UNIT 2 + NUM $FFFF 21 PSEUDO TAPE, UNIT 3 + NUM $FFFF 22 PSEUDO DISK, UNIT 0 + NUM $FFFF 23 PSEUDO DISK, UNIT 1 + NUM $FFFF 24 PSEUDO DISK, UNIT 2 + NUM $FFFF 25 PSEUDO DISK, UNIT 3 + NUM $FFFF 26 1752 DRUM + NUM $FFFF 27 COSY DRIVER, SECOND UNIT + NUM $FFFF 28 1728-430 CARD READER + NUM $FFFF 29 DIAGNOSTIC 1732-3 616 MAG TAPE, UNIT 1 + NUM $FFFF 30 DIAGNOSTIC 1732-3 616 MAG TAPE, UNIT 2 + NUM $FFFF 31 DIAGNOSTIC 1732-3 616 MAG TAPE, UNIT 3 + NUM $FFFF 32 DIAGNOSTIC 1742-30/120 LINE PRINTER + NUM $FFFF 33 DIAGNOSTIC 1728-430 READER / PUNCH + NUM $FFFF 34 DIAGNOSTIC 1711 TELETYPE, 713-10 CRT + EJT +* D I A G N O S T I C T A B L E S +* +* + ENT ALTERR ALTERNATE DEVICE ERROR TABLE + SPC 1 +ALTERR ADC NUMLU ERROR TABLE SIZE + BZS (NUMLU) SPACE FOR MAXIMUM SIMULTANEOUS FAILURES + SPC 3 + ENT DGNTAB DIAGNOSTIC TIMER TABLE + SPC 1 +DGNTAB EQU DGNTAB(*) START OF TABLE + ADC PCORE 1 CORE ALLOCATOR + ADC P1711 4 1711 TELETYPE, 713-10 CRT + ADC P73230 6 1732-3 616-73/93/95 MAG TAPE UNIT 0 + ADC P73320 8 1733-2 856-2/4 DISK, UNIT 0 + ADC P42312 9 1742-30/120 LINE PRINTER + ADC P73321 13 1733-2 856-2/4 DISK, UNIT 1 + ADC P73322 14 1733-2 856-2/4 DISK, UNIT 2 + ADC P73323 15 1733-2 856-2/4 DISK, UNIT 3 + ADC P73231 16 1732-3 616-73/93/95 MAG TAPE UNIT 1 + ADC P73232 17 1732-3 616-73/93/95 MAG TAPE UNIT 2 + ADC P73233 18 1732-3 616-73/93/95 MAG TAPE UNIT 3 + ADC P1752 26 1752 DRUM + ADC P1728 28 1728-430 CARD READER + NUM $FFFF END OF TABLE + EJT + SPC 4 +* S T A N D A R D L O G I C A L U N I T S +* + ENT DUMALT +* +DUMALT EQU DUMALT(2) STANDARD DUMMY ALTERNATE +INPCOM EQU INPCOM(4) STANDARD INPUT COMMENT +OUTCOM EQU OUTCOM(4) STANDARD OUTPUT COMMENT +LBUNIT EQU LBUNIT(8) STANDARD LIBRARY UNIT +SCRTCH EQU SCRTCH(8) STANDARD SCRATCH UNIT +LSTOUT EQU LSTOUT(9) STANDARD LIST OUTPUT +STDINP EQU STDINP(10) STANDARD INPUT +BINOUT EQU BINOUT(11) STANDARD BINARY OUTPUT + EJT +* L I N E O N E T A B L E +* + SPC 1 +* + ENT LIN1V4 LINE 1 INTERRUPT ENTRY + SPC 1 +LIN1V4 LDQ* LN1TV4 PLACE THE PDT ADDRESS IN Q + LDA- 2,Q + STA- I + JMP- (I) TRANSFER CONTROL TO THE DRIVER CONTINUATOR + SPC 3 + ENT INVINT + SPC 1 +INVINT JMP- (ADISP) +* + SPC 4 + EQU LN1TV4(*) START OF TABLE + ADC P1711 1711 TELETYPE, 713-10 CRT + NUM $FFFF END OF TABLE + EJT +* P H Y S I C A L D E V I C E T A B L E S +* +* +* THE FOLLOWING SECTION CONTAINS THE PHYSICAL DEVICE TABLES +* AND INTERRUPT RESPONSE ROUTINES FOR EACH LOGICAL UNIT IN +* THE SYSTEM. +* +* LISTED BELOW ARE THE MANDATORY ENTRIES FOR ALL PHYSICAL +* DEVICE TABLES. ADDITIONAL ENTRIES REQUIRED BY EACH +* DRIVER MAY BE ADDED AFTER THE LAST ENTRY INDICATED. + SPC 3 +PHYSTB EQU PHYSTB(*) + EQU ELVL(0) 00 SCHEDULER CALL WITH DRIVER LEVEL + EQU EDIN(1) 01 DRIVER INITIATOR ENTRY + EQU EDCN(2) 02 DRIVER CONTINUATOR ENTRY + EQU EDPGM(3) 03 DRIVER DIAGNOSTIC ENTRY + EQU EDCLK(4) 04 DIAGNOSTIC CLOCK + EQU ELU(5) 05 LOGICAL UNIT + EQU EPTR(6) 06 PARAMETER LOCATION + EQU EWES(7) 07 CONVERTOR, EQUIPMENT, STATION + EQU EREQST(8) 08 REQUEST STATUS + EQU ESTAT1(9) 09 DRIVER STATUS + EQU ECCOR(10) 10 CURRENT LOCATION + EQU ELSTWD(11) 11 LAST LOCATION PLUS ONE + EQU ESTAT2(12) 12 DEVICE STATUS + EQU MASLGN(13) 13 DRIVER LENGTH (IF MASS MEMORY) + EQU MASSEC(14) 14 NAME ASSOCIATED WITH SECTOR NUMBER + EQU RETURN(15) 15 RESERVED FOR FNR AND CMR + SPC 3 +* LINK UNSELECTED PHYSICAL DEVICE TABLES + SPC 1 + ENT P18ECM + ENT P18PGA + ENT P18ADD + ENT P18MXP +P18ECM EQU P18ECM($7FFF) +P18PGA EQU P18PGA($7FFF) +P18ADD EQU P18ADD($7FFF) +P18MXP EQU P18MXP($7FFF) + EJT +* C O R E A L L O C A T O R +* + SPC 1 + ENT PCORE + EXT ICORE,ECORE + EQU SWAPT(0) SWAP TIME + SPC 1 +PCORE ADC $5207 00 SCHEDULER CALL + ADC ICORE 01 INITIATOR ADDRESS + ADC 0 02 CONTINUATOR ADDRESS - NOT USED + ADC ECORE 03 TIMEOUT ERROR ADDRESS + NUM -1 04 DIAGNOSTIC CLOCK + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION + NUM 0 07 CONVERTER, EQUIPMENT, STATION - NONE + NUM $00D6 08 REQUEST STATUS + NUM 0 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM 0 12 DEVICE STATUS + VFD X16/SWAPT-1 13 TIME BETWEEN SWAPS (NONE IF NEGATIVE) + NUM $7FFF 14 RESERVED + NUM 0 15 RESERVED FOR FNR AND CMR + EJT +* D U M M Y L O G I C A L U N I T +* + SPC 1 + EXT IDUMMY,CDUMMY,EDUMMY + SPC 1 +PDUMMY ADC $520A 00 SCHEDULER CALL + ADC IDUMMY 01 INITIATOR ADDRESS + ADC CDUMMY 02 CONTINUATOR ADDRESS + ADC EDUMMY 03 TIMEOUT ERROR ADDRESS + NUM -1 04 DIAGNOSTIC CLOCK - NOT USED + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION + NUM 0 07 CONVERTER, EQUIPMENT, STATION - NONE + NUM $01F6 08 REQUEST STATUS + NUM $8000 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM 0 12 DEVICE STATUS + NUM 0 13 RESERVED + NUM $7FFF 14 RESERVED + NUM 0 15 RESERVED FOR FNR AND CMR + EJT +* 1 7 1 1 T E L E T Y P E , 7 1 3 - 1 0 C R T +* + SPC 1 + EXT I1711,C1711,E1711 + EQU T713(04*$10) TYPE CODE - 713-10 CRT + EQU T1711(00*$10) TYPE CODE - 1711 TELETYPE + EQU U1711(X1711-LOG1A) + SPC 1 +P1711 ADC $520D 00 SCHEDULER CALL + ADC I1711 01 INITIATOR ADDRESS + ADC C1711 02 CONTINUATOR ADDRESS + ADC E1711 03 TIMEOUT ERROR ADDRESS + NUM -1 04 DIAGNOSTIC CLOCK + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION + NUM $0091 07 CONVERTER, EQUIPMENT, STATION + ADC $3006+T1711 08 REQUEST STATUS + NUM 0 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM 0 12 DEVICE STATUS + NUM 0 13 ERROR CODE AND STARTING LOCATION + NUM $7FFF 14 RESERVED + NUM 0 15 RESERVED FOR FNR AND CMR + NUM 0 16 DRIVER FLAGS + NUM 1 17 HARDWARE PARITY CHECK FLAG + ADC U1711 18 DIAGNOSTIC LU + EJT +* C O S Y D R I V E R +* + SPC 1 + EQU MCOSY1(1) +* + IFA MCOSY1,EQ,0 CORE RESIDENT DRIVER + EXT ICOSY + EQU LCOSY(0) + EQU SCOSY($7FFF) + EIF +* + IFA MCOSY1,EQ,1 MASS RESIDENT DRIVER + EXT MASDRV +ICOSY JMP+ MASDRV INITIATE DRIVER + EXT LCOSY + EXT SCOSY + EIF +* + EJT +* C O S Y D R I V E R , F I R S T U N I T +* + SPC 1 +PCOSY1 ADC $5208 00 SCHEDULER CALL + ADC ICOSY 01 INITIATOR ADDRESS + ADC 0 02 CONTINUATOR ADDRESS - NOT USED + ADC 0 03 TIMEOUT ERROR ADDRESS - NOT USED + NUM -1 04 DIAGNOSTIC CLOCK + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION + NUM 0 07 CONVERTER, EQUIPMENT, STATION - NONE + NUM $08B6 08 REQUEST STATUS + NUM 0 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM 0 12 DEVICE STATUS + ADC LCOSY 13 DRIVER LENGTH IF MASS MEMORY + ADC SCOSY 14 NAME ASSOCIATED WITH SECTOR NUMBER + NUM 0 15 RESERVED FOR FNR AND CMR + ADC PCOSY2 16 PHYSTB THREAD + NUM 0 17 SEQUENCE NUMBER + NUM 0 18 ID + NUM 0 19 ID-1 + NUM 0 20 ID-2 + NUM 0 21 NUMBER OF WORDS REQUESTED + NUM $5555 22 HOL-CHARACTER POINTER + NUM $5555 23 COSY-CHARACTER POINTER + NUM 0 24 R/W FLAG + NUM 1 25 PON5F + NUM 0 26 FSTCHR + NUM 0 27 ENDDCK + ADC INPBFA 28 COSY BUFFER LOCATION + ADC INPBFA 29 NEXT COSY WORD + NUM 0 30 HOL-BUFFER POINTER + NUM 1 31 INITIAL CALL FLAG + NUM 0 32 SEQUENCE FLAG NONZERO=NO SEQUENCE NUMBER +* + BZS INPBFA(192) 33 COSY BUFFER +* 224 COSY BUFFER + EJT +* C O S Y D R I V E R , S E C O N D U N I T +* + SPC 1 +PCOSY2 ADC $5208 00 SCHEDULER CALL + ADC ICOSY 01 INITIATOR ADDRESS + ADC 0 02 CONTINUATOR ADDRESS - NOT USED + ADC 0 03 TIMEOUT ERROR ADDRESS - NOT USED + NUM -1 04 DIAGNOSTIC CLOCK + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION + NUM 0 07 CONVERTER, EQUIPMENT, STATION - NONE + NUM $08B6 08 REQUEST STATUS + NUM 0 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM 0 12 DEVICE STATUS + ADC LCOSY 13 DRIVER LENGTH IF MASS MEMORY + ADC SCOSY 14 NAME ASSOCIATED WITH SECTOR NUMBER + NUM 0 15 RESERVED FOR FNR AND CMR + ADC PCOSY1 16 PHYSTB THREAD + NUM 0 17 SEQUENCE NUMBER + NUM 0 18 ID + NUM 0 19 ID-1 + NUM 0 20 ID-2 + NUM 0 21 NUMBER OF WORDS REQUESTED + NUM $5555 22 HOL-CHARACTER POINTER + NUM $5555 23 COSY-CHARACTER POINTER + NUM 0 24 R/W FLAG + NUM 1 25 PON5F + NUM 0 26 FSTCHR + NUM 0 27 ENDDCK + ADC INPBFB 28 COSY BUFFER LOCATION + ADC INPBFB 29 NEXT COSY WORD + NUM 0 30 HOL-BUFFER POINTER + NUM 1 31 INITIAL CALL FLAG + NUM 0 32 SEQUENCE FLAG NONZERO=NO SEQUENCE NUMBER +* + BZS INPBFB(192) 33 COSY BUFFER +* 224 COSY BUFFER + EJT +* 6 1 6 - 7 2 / 9 2 / 9 5 M A G T A P E +* + SPC 1 + EQU T6167(53*$10) TYPE CODE - 616-72 MAG TAPE + EQU T6169(54*$10) TYPE CODE - 616-92-95 MAG TAPE + EQU PHSREC(192) MAX. PHYSICAL RECORD SIZE FOR 7 TRACK + SPC 2 +BF1F33 BZS BF1F33(PHSREC*4/3+2) PACK/UNPACK BUFFER (7 TRACK) + SPC 1 + EQU M17323(1) +* + IFA M17323,EQ,0 CORE RESIDENT DRIVER + EXT I17323 + EXT C17323 + EXT E17323 + EQU L17323(0) + EQU S17323($7FFF) + EIF +* + IFA M17323,EQ,1 MASS RESIDENT DRIVER + EXT MASDRV + EXT MASCON + EXT MASERR +I17323 JMP+ MASDRV INITIATE DRIVER +C17323 JMP+ MASCON INTERRUPT RESPONSE +E17323 JMP+ MASERR TIMEOUT ERROR + EXT L17323 + EXT S17323 + EIF +* + SPC 2 +R17323 LDQ =XP73230 INTERRUPT RESPONSE FOR 616-72-92-95 MAG TAPE + JMP* (P73230+2) + EJT +* 6 1 6 - 7 2 / 9 2 / 9 5 M A G T A P E , U N I T 0 +* + EQU U73230(X73230-LOG1A) + SPC 1 +P73230 ADC $520A 00 SCHEDULER CALL + ADC I17323 01 INITIATOR ADDRESS + ADC C17323 02 CONTINUATOR ADDRESS + ADC E17323 03 TIMEOUT ERROR ADDRESS + NUM -1 04 DIAGNOSTIC CLOCK + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION + NUM $0381 07 CONVERTER, EQUIPMENT, STATION + ADC $0806+T6169 08 REQUEST STATUS + NUM 0 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM 0 12 DEVICE STATUS + ADC L17323 13 DRIVER LENGTH IF MASS MEMORY + ADC S17323 14 NAME ASSOCIATED WITH SECTOR NUMBER + NUM 0 15 RESERVED FOR FNR AND CMR + NUM $0448 16 REC. OPT., UNIT, FUNCTION, DENSITY CONTROL + ADC U73230 17 DIAGNOSTIC LU + ADC 0 18 ERROR CODE + NUM 0 19 RECOVERY RETURN ADDRESS + NUM 0 20 RECORD CHECKSUM + NUM $D554 21 FUNCTION DIRECTORY BITWORD + NUM 0 22 TEMPORARY CHECKSUM + ADC P73231 23 PHYSTB THREAD + ADC PHSREC 24 MAX PHY RECORD SIZE (7 TRACK) + ADC BF1F33 25 PACK/UNPACK BUFFER (7 TRACK) + EJT +* 6 1 6 - 7 2 / 9 2 / 9 5 M A G T A P E , U N I T 1 +* + EQU U73231(X73231-LOG1A) + SPC 1 +P73231 ADC $520A 00 SCHEDULER CALL + ADC I17323 01 INITIATOR ADDRESS + ADC C17323 02 CONTINUATOR ADDRESS + ADC E17323 03 TIMEOUT ERROR ADDRESS + NUM -1 04 DIAGNOSTIC CLOCK + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION + NUM $0381 07 CONVERTER, EQUIPMENT, STATION + ADC $0806+T6169 08 REQUEST STATUS + NUM 0 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM 0 12 DEVICE STATUS + ADC L17323 13 DRIVER LENGTH IF MASS MEMORY + ADC S17323 14 NAME ASSOCIATED WITH SECTOR NUMBER + NUM 0 15 RESERVED FOR FNR AND CMR + NUM $04C8 16 REC. OPT., UNIT, FUNCTION, DENSITY CONTROL + ADC U73231 17 DIAGNOSTIC LU + ADC 0 18 ERROR CODE + NUM 0 19 RECOVERY RETURN ADDRESS + NUM 0 20 RECORD CHECKSUM + NUM $D554 21 FUNCTION DIRECTORY BITWORD + NUM 0 22 TEMPORARY CHECKSUM + ADC P73232 23 PHYSTB THREAD + ADC PHSREC 24 MAX PHY RECORD SIZE (7 TRACK) + ADC BF1F33 25 PACK/UNPACK BUFFER (7 TRACK) + EJT +* 6 1 6 - 7 2 / 9 2 / 9 5 M A G T A P E , U N I T 2 +* + EQU U73232(X73232-LOG1A) + SPC 1 +P73232 ADC $520A 00 SCHEDULER CALL + ADC I17323 01 INITIATOR ADDRESS + ADC C17323 02 CONTINUATOR ADDRESS + ADC E17323 03 TIMEOUT ERROR ADDRESS + NUM -1 04 DIAGNOSTIC CLOCK + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION + NUM $0381 07 CONVERTER, EQUIPMENT, STATION + ADC $0806+T6169 08 REQUEST STATUS + NUM 0 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM 0 12 DEVICE STATUS + ADC L17323 13 DRIVER LENGTH IF MASS MEMORY + ADC S17323 14 NAME ASSOCIATED WITH SECTOR NUMBER + NUM 0 15 RESERVED FOR FNR AND CMR + NUM $0548 16 REC. OPT., UNIT, FUNCTION, DENSITY CONTROL + ADC U73232 17 DIAGNOSTIC LU + ADC 0 18 ERROR CODE + NUM 0 19 RECOVERY RETURN ADDRESS + NUM 0 20 RECORD CHECKSUM + NUM $D554 21 FUNCTION DIRECTORY BITWORD + NUM 0 22 TEMPORARY CHECKSUM + ADC P73233 23 PHYSTB THREAD + ADC PHSREC 24 MAX PHY RECORD SIZE (7 TRACK) + ADC BF1F33 25 PACK/UNPACK BUFFER (7 TRACK) + EJT +* 6 1 6 - 7 2 / 9 2 / 9 5 M A G T A P E , U N I T 3 +* + EQU U73233(X73233-LOG1A) + SPC 1 +P73233 ADC $520A 00 SCHEDULER CALL + ADC I17323 01 INITIATOR ADDRESS + ADC C17323 02 CONTINUATOR ADDRESS + ADC E17323 03 TIMEOUT ERROR ADDRESS + NUM -1 04 DIAGNOSTIC CLOCK + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION + NUM $0381 07 CONVERTER, EQUIPMENT, STATION + ADC $0806+T6169 08 REQUEST STATUS + NUM 0 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM 0 12 DEVICE STATUS + ADC L17323 13 DRIVER LENGTH IF MASS MEMORY + ADC S17323 14 NAME ASSOCIATED WITH SECTOR NUMBER + NUM 0 15 RESERVED FOR FNR AND CMR + NUM $05C8 16 REC. OPT., UNIT, FUNCTION, DENSITY CONTROL + ADC U73233 17 DIAGNOSTIC LU + ADC 0 18 ERROR CODE + NUM 0 19 RECOVERY RETURN ADDRESS + NUM 0 20 RECORD CHECKSUM + NUM $D554 21 FUNCTION DIRECTORY BITWORD + NUM 0 22 TEMPORARY CHECKSUM + ADC P73230 23 PHYSTB THREAD + ADC PHSREC 24 MAX PHY RECORD SIZE (7 TRACK) + ADC BF1F33 25 PACK/UNPACK BUFFER (7 TRACK) + EJT +* P S E U D O T A P E +* + SPC 1 + EQU PSTPD0(1) +* + IFA PSTPD0,EQ,0 CORE RESIDENT DRIVER + EXT IPSUDO + EQU LPSUDO(0) + EQU SPSUDO($7FFF) + EIF +* + IFA PSTPD0,EQ,1 MASS RESIDENT DRIVER + EXT MASDRV +IPSUDO JMP+ MASDRV INITIATE DRIVER + EXT LPSUDO + EXT SPSUDO + EIF +* + EJT +* P S E U D O T A P E , U N I T 0 +* + SPC 1 +PSUDO0 ADC $5208 00 SCHEDULER CALL + ADC IPSUDO 01 INITIATOR ADDRESS + ADC 0 02 CONTINUATOR ADDRESS - NOT USED + ADC 0 03 TIMEOUT ERROR ADDRESS - NOT USED + NUM -1 04 DIAGNOSTIC CLOCK - NOT USED + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION +PWES0 NUM 0 07 CONVERTER, EQUIPMENT, STATION - NONE + NUM $0A46 08 REQUEST STATUS + NUM 0 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM 1 12 DEVICE STATUS + ADC LPSUDO 13 DRIVER LENGTH IF MASS MEMORY + ADC SPSUDO 14 NAME ASSOCIATED WITH SECTOR NUMBER + NUM 0 15 RESERVED FOR FNR AND CMR + NUM 0 16 FILE NUMBER + NUM 0 17 TEMP FOR MOTION REQ PROCESSOR + NUM 0 18 TEMP FOR MOTION REQ PROCESSOR + BZS (12) 19 REQUEST BUFFER - REQBUF + NUM 0 31 BLOCK POINTER - BLKPTR + BZS (30) 32 POINTER BLOCK - PTRBLK +PSDRQ0 NUM 0 62 * + NUM $5400 63 * + NUM 0 64 * AREA TO BE STUFFED WITH + ADC PWES0 65 * FILE MANAGER AND DISK REQUESTS + BZS (6) 66 * + NUM $1400 72 * + RTJ* (PSDRQ0) 73 * + ADC 0 74 INPUT BUFFER ADDRESS + ADC PSUDO1 75 PHYSTB THREAD + EJT +* P S E U D O T A P E , U N I T 1 +* + SPC 1 +PSUDO1 ADC $5208 00 SCHEDULER CALL + ADC IPSUDO 01 INITIATOR ADDRESS + ADC 0 02 CONTINUATOR ADDRESS - NOT USED + ADC 0 03 TIMEOUT ERROR ADDRESS - NOT USED + NUM -1 04 DIAGNOSTIC CLOCK - NOT USED + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION +PWES1 NUM 0 07 CONVERTER, EQUIPMENT, STATION - NONE + NUM $0A46 08 REQUEST STATUS + NUM 0 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM 1 12 DEVICE STATUS + ADC LPSUDO 13 DRIVER LENGTH IF MASS MEMORY + ADC SPSUDO 14 NAME ASSOCIATED WITH SECTOR NUMBER + NUM 0 15 RESERVED FOR FNR AND CMR + NUM 0 16 FILE NUMBER + NUM 0 17 TEMP FOR MOTION REQ PROCESSOR + NUM 0 18 TEMP FOR MOTION REQ PROCESSOR + BZS (12) 19 REQUEST BUFFER - REQBUF + NUM 0 31 BLOCK POINTER - BLKPTR + BZS (30) 32 POINTER BLOCK - PTRBLK +PSDRQ1 NUM 0 62 * + NUM $5400 63 * + NUM 0 64 * AREA TO BE STUFFED WITH + ADC PWES1 65 * FILE MANAGER AND DISK REQUESTS + BZS (6) 66 * + NUM $1400 72 * + RTJ* (PSDRQ1) 73 * + ADC 0 74 INPUT BUFFER ADDRESS + ADC PSUDO2 75 PHYSTB THREAD + EJT +* P S E U D O T A P E , U N I T 2 +* + SPC 1 +PSUDO2 ADC $5208 00 SCHEDULER CALL + ADC IPSUDO 01 INITIATOR ADDRESS + ADC 0 02 CONTINUATOR ADDRESS - NOT USED + ADC 0 03 TIMEOUT ERROR ADDRESS - NOT USED + NUM -1 04 DIAGNOSTIC CLOCK - NOT USED + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION +PWES2 NUM 0 07 CONVERTER, EQUIPMENT, STATION - NONE + NUM $0A46 08 REQUEST STATUS + NUM 0 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM $C401 12 DEVICE STATUS + ADC LPSUDO 13 DRIVER LENGTH IF MASS MEMORY + ADC SPSUDO 14 NAME ASSOCIATED WITH SECTOR NUMBER + NUM 0 15 RESERVED FOR FNR AND CMR + NUM $7FF7 16 FILE NUMBER + NUM 0 17 TEMP FOR MOTION REQ PROCESSOR + NUM 0 18 TEMP FOR MOTION REQ PROCESSOR + BZS (12) 19 REQUEST BUFFER - REQBUF + NUM 0 31 BLOCK POINTER - BLKPTR + BZS (30) 32 POINTER BLOCK - PTRBLK +PSDRQ2 NUM 0 62 * + NUM $5400 63 * + NUM 0 64 * AREA TO BE STUFFED WITH + ADC PWES2 65 * FILE MANAGER AND DISK REQUESTS + BZS (6) 66 * + NUM $1400 72 * + RTJ* (PSDRQ2) 73 * + ADC 0 74 INPUT BUFFER ADDRESS + ADC PSUDO3 75 PHYSTB THREAD + EJT +* P S E U D O T A P E , U N I T 3 +* + SPC 1 +PSUDO3 ADC $5208 00 SCHEDULER CALL + ADC IPSUDO 01 INITIATOR ADDRESS + ADC 0 02 CONTINUATOR ADDRESS - NOT USED + ADC 0 03 TIMEOUT ERROR ADDRESS - NOT USED + NUM -1 04 DIAGNOSTIC CLOCK - NOT USED + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION +PWES3 NUM 0 07 CONVERTER, EQUIPMENT, STATION - NONE + NUM $0A46 08 REQUEST STATUS + NUM 0 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM $C401 12 DEVICE STATUS + ADC LPSUDO 13 DRIVER LENGTH IF MASS MEMORY + ADC SPSUDO 14 NAME ASSOCIATED WITH SECTOR NUMBER + NUM 0 15 RESERVED FOR FNR AND CMR + NUM $7FF8 16 FILE NUMBER + NUM 0 17 TEMP FOR MOTION REQ PROCESSOR + NUM 0 18 TEMP FOR MOTION REQ PROCESSOR + BZS (12) 19 REQUEST BUFFER - REQBUF + NUM 0 31 BLOCK POINTER - BLKPTR + BZS (30) 32 POINTER BLOCK - PTRBLK +PSDRQ3 NUM 0 62 * + NUM $5400 63 * + NUM 0 64 * AREA TO BE STUFFED WITH + ADC PWES3 65 * FILE MANAGER AND DISK REQUESTS + BZS (6) 66 * + NUM $1400 72 * + RTJ* (PSDRQ3) 73 * + ADC 0 74 INPUT BUFFER ADDRESS + ADC PSUDO0 75 PHYSTB THREAD + EJT +* P S E U D O D I S K U N I T 0 +* + SPC 1 + EXT IPSDSK,CPSDSK,EPSDSK + EQU SBIAS0(1) + SPC 1 +PSDSK0 ADC $5209 00 SCHEDULER CALL + ADC IPSDSK 01 INITIATOR ADDRESS + ADC CPSDSK 02 CONTINUATOR ADDRESS + ADC EPSDSK 03 TIMEOUT ERROR ADDRESS + NUM -1 04 DIAGNOSTIC CLOCK + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION + NUM 0 07 CONVERTER, EQUIPMENT, STATION - NONE + NUM $1486 08 REQUEST STATUS + NUM 0 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM 0 12 DEVICE STATUS + NUM 0 13 RESERVED + NUM 0 14 RESERVED + NUM 0 15 RESERVED FOR FNR AND CMR + NUM 0 16 NEW REQUEST + ADC CPSDSK 17 COMPLETION + NUM 0 18 THREAD + NUM 8 19 MASS MEMORY LOGICAL UNIT + NUM 0 20 NUMBER OF WORDS + NUM 0 21 BUFFER + NUM 0 22 NEW REQUEST MSB + NUM 0 23 NEW REQUEST LSB + NUM 0 24 CONTROL POINT FOR TIME SHARE SYSTEM + ADC SBIAS0 25 SECTOR BIAS + ADC SBIAS0*$60 26 WORD BIAS + NUM 9 27 COMPLETION LEVEL + EJT +* P S E U D O D I S K U N I T 1 +* + EQU SBIAS1(1) + SPC 1 +PSDSK1 ADC $5209 00 SCHEDULER CALL + ADC IPSDSK 01 INITIATOR ADDRESS + ADC CPSDSK 02 CONTINUATOR ADDRESS + ADC EPSDSK 03 TIMEOUT ERROR ADDRESS + NUM -1 04 DIAGNOSTIC CLOCK + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION + NUM 0 07 CONVERTER, EQUIPMENT, STATION - NONE + NUM $1486 08 REQUEST STATUS + NUM 0 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM 0 12 DEVICE STATUS + NUM 0 13 RESERVED + NUM 0 14 RESERVED + NUM 0 15 RESERVED FOR FNR AND CMR + NUM 0 16 NEW REQUEST + ADC CPSDSK 17 COMPLETION + NUM 0 18 THREAD + NUM 13 19 MASS MEMORY LOGICAL UNIT + NUM 0 20 NUMBER OF WORDS + NUM 0 21 BUFFER + NUM 0 22 NEW REQUEST MSB + NUM 0 23 NEW REQUEST LSB + NUM 0 24 CONTROL POINT FOR TIME SHARE SYSTEM + ADC SBIAS1 25 SECTOR BIAS + ADC SBIAS1*$60 26 WORD BIAS + NUM 9 27 COMPLETION LEVEL + EJT +* P S E U D O D I S K U N I T 2 +* + EQU SBIAS2(1) + SPC 1 +PSDSK2 ADC $5209 00 SCHEDULER CALL + ADC IPSDSK 01 INITIATOR ADDRESS + ADC CPSDSK 02 CONTINUATOR ADDRESS + ADC EPSDSK 03 TIMEOUT ERROR ADDRESS + NUM -1 04 DIAGNOSTIC CLOCK + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION + NUM 0 07 CONVERTER, EQUIPMENT, STATION - NONE + NUM $1486 08 REQUEST STATUS + NUM 0 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM 0 12 DEVICE STATUS + NUM 0 13 RESERVED + NUM 0 14 RESERVED + NUM 0 15 RESERVED FOR FNR AND CMR + NUM 0 16 NEW REQUEST + ADC CPSDSK 17 COMPLETION + NUM 0 18 THREAD + NUM 14 19 MASS MEMORY LOGICAL UNIT + NUM 0 20 NUMBER OF WORDS + NUM 0 21 BUFFER + NUM 0 22 NEW REQUEST MSB + NUM 0 23 NEW REQUEST LSB + NUM 0 24 CONTROL POINT FOR TIME SHARE SYSTEM + ADC SBIAS2 25 SECTOR BIAS + ADC SBIAS2*$60 26 WORD BIAS + NUM 9 27 COMPLETION LEVEL + EJT +* P S E U D O D I S K U N I T 3 +* + EQU SBIAS3(1) + SPC 1 +PSDSK3 ADC $5209 00 SCHEDULER CALL + ADC IPSDSK 01 INITIATOR ADDRESS + ADC CPSDSK 02 CONTINUATOR ADDRESS + ADC EPSDSK 03 TIMEOUT ERROR ADDRESS + NUM -1 04 DIAGNOSTIC CLOCK + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION + NUM 0 07 CONVERTER, EQUIPMENT, STATION - NONE + NUM $1486 08 REQUEST STATUS + NUM 0 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM 0 12 DEVICE STATUS + NUM 0 13 RESERVED + NUM 0 14 RESERVED + NUM 0 15 RESERVED FOR FNR AND CMR + NUM 0 16 NEW REQUEST + ADC CPSDSK 17 COMPLETION + NUM 0 18 THREAD + NUM 15 19 MASS MEMORY LOGICAL UNIT + NUM 0 20 NUMBER OF WORDS + NUM 0 21 BUFFER + NUM 0 22 NEW REQUEST MSB + NUM 0 23 NEW REQUEST LSB + NUM 0 24 CONTROL POINT FOR TIME SHARE SYSTEM + ADC SBIAS3 25 SECTOR BIAS + ADC SBIAS3*$60 26 WORD BIAS + NUM 9 27 COMPLETION LEVEL + EJT +* 1 7 3 3 - 2 / 8 5 6 D I S K +* + SPC 1 + ENT P332D0 + EXT I17332,C17332,E17332 + EQU T8562(15*$10) TYPE CODE - 1733-2 856-2 + EQU T8564(16*$10) TYPE CODE - 1733-2 856-4 + SPC 2 +R17332 LDQ =XP73320 INTERRUPT RESPONSE FOR 1733-2 DISK + JMP* (P73320+2) + EJT +* 1 7 3 3 - 2 / 8 5 6 D I S K - U N I T 0 +* + SPC 1 + EQU P332D0(*) +P73320 ADC $5209 00 SCHEDULER CALL + ADC I17332 01 INITIATOR ADDRESS + ADC C17332 02 CONTINUATOR ADDRESS + ADC E17332 03 TIMEOUT ERROR ADDRESS + NUM -1 04 DIAGNOSTIC CLOCK + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION + NUM $0181 07 CONVERTER, EQUIPMENT, STATION + ADC $1006+T8564 08 REQUEST STATUS + NUM $0200 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM 0 12 DEVICE STATUS + NUM 0 13 ERROR COUNTER + NUM 0 14 DATA TRANSFER FUNCTION + NUM 0 15 SECTOR NUMBER OR FNR RETURN + NUM $8100 16 NO COMPARE FLAG / DIRECTOR FUNCTION + NUM 0 17 TEMSEC - USED BY WORD ADDRESSING + NUM 0 18 OVERLAY AREA (SCHEDULER CALL) + NUM 0 19 OVERLAY AREA (COMPLETION ADDRESS) + NUM 0 20 OVERLAY AREA (THREAD) + NUM 0 21 OVERLAY AREA (LOGICAL UNIT) + ADC P73321 22 PHYSTB THREAD + NUM 0 23 RETURN ADDRESS FOR DATA TRANSFER + NUM $5BFB 24 FIRST SECTOR ADDRESS ON DISK 1 + NUM 0 25 LAST DATA TRANSFER FUNCTION + NUM 0 26 BUFFER SIZE FOR SPLIT TRANSFERS + NUM 0 27 CYLINDER ADDRESS FOR TRANSFER + NUM 1 28 MASK FOR THIS UNITS SEEK COMPLETE BIT + ADC BF332A 29 ADDRESS OF 96 WORD BUFFER + NUM 0 30 TEMPORARY FOR WORD ADDRESSING + NUM 0 31 TEMPORARY FOR WORD ADDRESSING + NUM 0 32 TEMPORARY FOR WORD ADDRESSING + NUM 0 33 REQUEST CODE + NUM 0 34 REQUEST PRIORITY + NUM 0 35 STARTING SECTOR FOR COMPARE OR RETRY + NUM 0 36 FWA OF TRANSFER FOR COMPARE OR RETRY + NUM 0 37 ERROR COUNTER + NUM 0 38 DATA TRANSFER FUNCTION CODE + NUM $FFFF 39 SECTOR NUMBER CURRENTLY IN BUFFER + NUM 0 40 LAST VALUE OF CYLINDER ADDRESS STATUS + NUM 0 41 LAST VALUE OF C W A STATUS + NUM 0 42 LAST VALUE OF CHECKWORD STATUS + NUM 0 43 LAST VALUE OF DRIVE CYLINDER STATUS +* + BZS BF332A(96) 44 BUFFER FOR WORD ADDRESSING +* 139 BUFFER FOR WORD ADDRESSING + EJT +* 1 7 3 3 - 2 / 8 5 6 D I S K - U N I T 1 +* + SPC 1 +P73321 ADC $5209 00 SCHEDULER CALL + ADC I17332 01 INITIATOR ADDRESS + ADC C17332 02 CONTINUATOR ADDRESS + ADC E17332 03 TIMEOUT ERROR ADDRESS + NUM -1 04 DIAGNOSTIC CLOCK + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION + NUM $0181 07 CONVERTER, EQUIPMENT, STATION + ADC $1006+T8564 08 REQUEST STATUS + NUM $0200 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM 0 12 DEVICE STATUS + NUM 0 13 ERROR COUNTER + NUM 0 14 DATA TRANSFER FUNCTION + NUM 0 15 SECTOR NUMBER OR FNR RETURN + NUM $8300 16 NO COMPARE FLAG / DIRECTOR FUNCTION + NUM 0 17 TEMSEC - USED BY WORD ADDRESSING + NUM 0 18 OVERLAY AREA (SCHEDULER CALL) + NUM 0 19 OVERLAY AREA (COMPLETION ADDRESS) + NUM 0 20 OVERLAY AREA (THREAD) + NUM 0 21 OVERLAY AREA (LOGICAL UNIT) + ADC P73322 22 PHYSTB THREAD + NUM 0 23 RETURN ADDRESS FOR DATA TRANSFER + NUM $5BFB 24 FIRST SECTOR ADDRESS ON DISK 1 + NUM 0 25 LAST DATA TRANSFER FUNCTION + NUM 0 26 BUFFER SIZE FOR SPLIT TRANSFERS + NUM 0 27 CYLINDER ADDRESS FOR TRANSFER + NUM 2 28 MASK FOR THIS UNITS SEEK COMPLETE BIT + ADC BF332B 29 ADDRESS OF 96 WORD BUFFER + NUM 0 30 TEMPORARY FOR WORD ADDRESSING + NUM 0 31 TEMPORARY FOR WORD ADDRESSING + NUM 0 32 TEMPORARY FOR WORD ADDRESSING + NUM 0 33 REQUEST CODE + NUM 0 34 REQUEST PRIORITY + NUM 0 35 STARTING SECTOR FOR COMPARE OR RETRY + NUM 0 36 FWA OF TRANSFER FOR COMPARE OR RETRY + NUM 0 37 ERROR COUNTER + NUM 0 38 DATA TRANSFER FUNCTION CODE + NUM $FFFF 39 SECTOR NUMBER CURRENTLY IN BUFFER + NUM 0 40 LAST VALUE OF CYLINDER ADDRESS STATUS + NUM 0 41 LAST VALUE OF C W A STATUS + NUM 0 42 LAST VALUE OF CHECKWORD STATUS + NUM 0 43 LAST VALUE OF DRIVE CYLINDER STATUS +* + BZS BF332B(96) 44 BUFFER FOR WORD ADDRESSING +* 139 BUFFER FOR WORD ADDRESSING + EJT +* 1 7 3 3 - 2 / 8 5 6 D I S K - U N I T 2 +* + SPC 1 +P73322 ADC $5209 00 SCHEDULER CALL + ADC I17332 01 INITIATOR ADDRESS + ADC C17332 02 CONTINUATOR ADDRESS + ADC E17332 03 TIMEOUT ERROR ADDRESS + NUM -1 04 DIAGNOSTIC CLOCK + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION + NUM $0181 07 CONVERTER, EQUIPMENT, STATION + ADC $1006+T8564 08 REQUEST STATUS + NUM $0200 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM 0 12 DEVICE STATUS + NUM 0 13 ERROR COUNTER + NUM 0 14 DATA TRANSFER FUNCTION + NUM 0 15 SECTOR NUMBER OR FNR RETURN + NUM $8500 16 NO COMPARE FLAG / DIRECTOR FUNCTION + NUM 0 17 TEMSEC - USED BY WORD ADDRESSING + NUM 0 18 OVERLAY AREA (SCHEDULER CALL) + NUM 0 19 OVERLAY AREA (COMPLETION ADDRESS) + NUM 0 20 OVERLAY AREA (THREAD) + NUM 0 21 OVERLAY AREA (LOGICAL UNIT) + ADC P73323 22 PHYSTB THREAD + NUM 0 23 RETURN ADDRESS FOR DATA TRANSFER + NUM $5BFB 24 FIRST SECTOR ADDRESS ON DISK 1 + NUM 0 25 LAST DATA TRANSFER FUNCTION + NUM 0 26 BUFFER SIZE FOR SPLIT TRANSFERS + NUM 0 27 CYLINDER ADDRESS FOR TRANSFER + NUM 4 28 MASK FOR THIS UNITS SEEK COMPLETE BIT + ADC BF332C 29 ADDRESS OF 96 WORD BUFFER + NUM 0 30 TEMPORARY FOR WORD ADDRESSING + NUM 0 31 TEMPORARY FOR WORD ADDRESSING + NUM 0 32 TEMPORARY FOR WORD ADDRESSING + NUM 0 33 REQUEST CODE + NUM 0 34 REQUEST PRIORITY + NUM 0 35 STARTING SECTOR FOR COMPARE OR RETRY + NUM 0 36 FWA OF TRANSFER FOR COMPARE OR RETRY + NUM 0 37 ERROR COUNTER + NUM 0 38 DATA TRANSFER FUNCTION CODE + NUM $FFFF 39 SECTOR NUMBER CURRENTLY IN BUFFER + NUM 0 40 LAST VALUE OF CYLINDER ADDRESS STATUS + NUM 0 41 LAST VALUE OF C W A STATUS + NUM 0 42 LAST VALUE OF CHECKWORD STATUS + NUM 0 43 LAST VALUE OF DRIVE CYLINDER STATUS +* + BZS BF332C(96) 44 BUFFER FOR WORD ADDRESSING +* 139 BUFFER FOR WORD ADDRESSING + EJT +* 1 7 3 3 - 2 / 8 5 6 D I S K - U N I T 3 +* + SPC 1 +P73323 ADC $5209 00 SCHEDULER CALL + ADC I17332 01 INITIATOR ADDRESS + ADC C17332 02 CONTINUATOR ADDRESS + ADC E17332 03 TIMEOUT ERROR ADDRESS + NUM -1 04 DIAGNOSTIC CLOCK + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION + NUM $0181 07 CONVERTER, EQUIPMENT, STATION + ADC $1006+T8564 08 REQUEST STATUS + NUM $0200 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM 0 12 DEVICE STATUS + NUM 0 13 ERROR COUNTER + NUM 0 14 DATA TRANSFER FUNCTION + NUM 0 15 SECTOR NUMBER OR FNR RETURN + NUM $8700 16 NO COMPARE FLAG / DIRECTOR FUNCTION + NUM 0 17 TEMSEC - USED BY WORD ADDRESSING + NUM 0 18 OVERLAY AREA (SCHEDULER CALL) + NUM 0 19 OVERLAY AREA (COMPLETION ADDRESS) + NUM 0 20 OVERLAY AREA (THREAD) + NUM 0 21 OVERLAY AREA (LOGICAL UNIT) + ADC P73320 22 PHYSTB THREAD + NUM 0 23 RETURN ADDRESS FOR DATA TRANSFER + NUM $5BFB 24 FIRST SECTOR ADDRESS ON DISK 1 + NUM 0 25 LAST DATA TRANSFER FUNCTION + NUM 0 26 BUFFER SIZE FOR SPLIT TRANSFERS + NUM 0 27 CYLINDER ADDRESS FOR TRANSFER + NUM 8 28 MASK FOR THIS UNITS SEEK COMPLETE BIT + ADC BF332D 29 ADDRESS OF 96 WORD BUFFER + NUM 0 30 TEMPORARY FOR WORD ADDRESSING + NUM 0 31 TEMPORARY FOR WORD ADDRESSING + NUM 0 32 TEMPORARY FOR WORD ADDRESSING + NUM 0 33 REQUEST CODE + NUM 0 34 REQUEST PRIORITY + NUM 0 35 STARTING SECTOR FOR COMPARE OR RETRY + NUM 0 36 FWA OF TRANSFER FOR COMPARE OR RETRY + NUM 0 37 ERROR COUNTER + NUM 0 38 DATA TRANSFER FUNCTION CODE + NUM $FFFF 39 SECTOR NUMBER CURRENTLY IN BUFFER + NUM 0 40 LAST VALUE OF CYLINDER ADDRESS STATUS + NUM 0 41 LAST VALUE OF C W A STATUS + NUM 0 42 LAST VALUE OF CHECKWORD STATUS + NUM 0 43 LAST VALUE OF DRIVE CYLINDER STATUS +* + BZS BF332D(96) 44 BUFFER FOR WORD ADDRESSING +* 139 BUFFER FOR WORD ADDRESSING + EJT +* 1 7 5 2 D R U M +* + EXT I1752,C1752,E1752 + SPC 2 +R1752 LDQ =XP1752 INTERRUPT RESPONSE FOR 1752 DRUM + JMP* (P1752+2) + EJT +* 1 7 5 2 D R U M +* + SPC 1 +P1752 ADC $5209 00 SCHEDULER CALL + ADC I1752 01 INITIATOR ADDRESS + ADC C1752 02 CONTINUATOR ADDRESS + ADC E1752 03 TIMEOUT ERROR ADDRESS + NUM -1 04 DIAGNOSTIC CLOCK + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION + NUM $0101 07 CONVERTER, EQUIPMENT, STATION + NUM $1036 08 REQUEST STATUS + NUM 0 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM 0 12 DEVICE STATUS + NUM 0 13 RESERVED + NUM $7FFF 14 RESERVED + NUM 0 15 RESERVED FOR FNR AND CMR + NUM 0 16 SECTOR NUMBER + NUM 0 17 DATA TRANSFER FUNCTION + NUM 0 18 COUNTER + NUM 0 19 FULL SECTOR COUNTER + NUM 0 20 SAVE ECCOR + NUM 0 21 SAVE ELSTWD + NUM 0 22 OVERLAY AREA (SCHEDULER CALL) + NUM 0 23 OVERLAY AREA (COMPLETION ADDRESS) + NUM 0 24 OVERLAY AREA (THREAD) + NUM 0 25 OVERLAY AREA (LOGICAL UNIT) + NUM 0 26 UNSUCCESSFUL I/O ATTEMPT COUNTER + NUM 0 27 EQUIPMENT STATUS (ON LAST ERROR) + NUM 0 28 CORE STATUS (ON LAST ERROR) + NUM 0 29 SECTOR STATUS (ON LAST ERROR) + NUM 0 30 DATA STATUS (ON LAST ERROR) + EJT +* 1 7 4 2 - 3 0 / 1 2 0 L I N E P R I N T E R +* + SPC 1 + EQU T4230(17*$10) TYPE CODE - 1742-30 + EQU T4212(18*$10) TYPE CODE - 1742-120 + EQU U42312(X42312-LOG1A) + EQU F42312(FTN742-LOG1A) + SPC 1 + EQU M42312(1) +* + IFA M42312,EQ,0 CORE RESIDENT DRIVER + EXT I42312 + EXT C42312 + EXT E42312 + EQU L42312(0) + EQU S42312($7FFF) + EIF +* + IFA M42312,EQ,1 MASS RESIDENT DRIVER + EXT MASDRV + EXT MASCON + EXT MASERR +I42312 JMP+ MASDRV INITIATE DRIVER +C42312 JMP+ MASCON INTERRUPT RESPONSE +E42312 JMP+ MASERR TIMEOUT ERROR + EXT L42312 + EXT S42312 + EIF +* + SPC 2 +R42312 LDQ =XP42312 INTERRUPT RESPONSE FOR 1742-30/120 PRINTER + JMP* (P42312+2) + EJT +* 1 7 4 2 - 3 0 / 1 2 0 L I N E P R I N T E R +* + SPC 1 +P42312 ADC $520A 00 SCHEDULER CALL + ADC I42312 01 INITIATOR ADDRESS + ADC C42312 02 CONTINUATOR ADDRESS + ADC E42312 03 TIMEOUT ERROR ADDRESS + NUM -1 04 DIAGNOSTC CLOCK + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION + NUM $0201 07 CONVERTER, EQUIPMENT, STATION + ADC $2804+T4212 08 REQUEST STATUS + NUM 0 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM 0 12 DEVICE STATUS + ADC L42312 13 DRIVER LENGTH IF MASS MEMORY + ADC S42312 14 NAME ASSOCIATED WITH SECTOR NUMBER + NUM 0 15 BLANK DETECTION INDICATOR + NUM 0 16 LINE COUNT + NUM 0 17 TEMPORARY STORAGE FOR CONTROL FUNC. + NUM 0 18 CHARACTER COUNT + ADC F42312 19 FORTRAN LOGICAL UNIT + NUM 0 20 NUMBER OF BLANKS TO BE SENT + NUM 60 21 MAXIMUM NUMBER OF LINES PER PAGE + NUM 136 22 NUMBER OF CHARACTERS PER LINE + ADC U42312 23 DIAGNOSTIC LU + EJT +* +* F O R T R A N L I N E P R I N T E R + SPC 2 +* PHYSTB SHARED WITH 1742-30/120 LINE PRINTER + EJT +* 1 7 2 8 / 4 3 0 C A R D R E A D E R / P U N C H +* + SPC 1 + EQU U1728(X1728-LOG1A) + SPC 1 + EQU M1728(1) +* + IFA M1728,EQ,0 CORE RESIDENT DRIVER + EXT I1728 + EXT C1728 + EXT E1728 + EQU L1728(0) + EQU S1728($7FFF) + EIF +* + IFA M1728,EQ,1 MASS RESIDENT DRIVER + EXT MASDRV + EXT MASCON + EXT MASERR +I1728 JMP+ MASDRV INITIATE DRIVER +C1728 JMP+ MASCON INTERRUPT RESPONSE +E1728 JMP+ MASERR TIMEOUT ERROR + EXT L1728 + EXT S1728 + EIF +* + SPC 2 +R1728 LDQ =XP1728 INTERRUPT RESPONSE FOR 1728-430 READ/PUNCH + JMP* (P1728+2) + EJT +* 1 7 2 8 / 4 3 0 C A R D R E A D E R / P U N C H +* + SPC 1 +P1728 ADC $520E 00 SCHEDULER CALL + ADC I1728 01 INITIATOR ADDRESS + ADC C1728 02 CONTINUATOR ADDRESS + ADC E1728 03 TIMEOUT ERROR ADDRESS + NUM -1 04 DIAGNOSTIC CLOCK + NUM 0 05 LOGICAL UNIT + NUM 0 06 PARAMETER LOCATION + NUM $0521 07 CONVERTER, EQUIPMENT, STATION + NUM $18C6 08 REQUEST STATUS + NUM 0 09 DRIVER STATUS + NUM 0 10 CURRENT LOCATION + NUM 0 11 LAST LOCATION PLUS ONE + NUM 0 12 DEVICE STATUS + ADC L1728 13 DRIVER LENGTH IF MASS MEMORY + ADC S1728 14 NAME ASSOCIATED WITH SECTOR NUMBER + NUM 0 15 PACKING CYCLE ADDRESS STORAGE + NUM $800F 16 READ/PUNCH SWITCH, EOF FORMAT (6789) + ADC BUF28 17 FIRST LOCATION OF 80 WORD I / O BUFFER + NUM 0 18 CURRENT CARD BUFFER LOCATION + NUM 0 19 SUBROUTINE RETURN ADDRESS + NUM 0 20 CARD SEQUENCE NUMBER + NUM 0 21 RECORD LENGTH + NUM 0 22 CHECKSUM ACCUMULATOR + NUM 0 23 TEMPORARY STORAGE + NUM 0 24 OUTPUT OFFSET SWITCH + NUM 0 25 ERROR RETURN + NUM 0 26 HOLLERITH ERROR FLAG + ADC U1728 27 DIAGNOSTIC LU +* + BZS BUF28(80) 28 INPUT / OUTPUT BUFFER +* 107 INPUT / OUTPUT BUFFER + EJT +* 1 7 4 3 - 2 C O M M U N I C A T I O N S +* +* C O N T R O L L E R, U N I T 0 +* +* REMOVED FROM SYSTEM +* + ENT P74300 + EQU P74300($7FFF) + EJT +* R E S I D E N T C O R E D A T A +* + ENT LSTLOC + EXT BGNMON + SPC 1 +LSTLOC ADC BGNMON BEGINNING LOCATION OF CORE RESIDENT SYSTEM + SPC 2 +* C O R E A L L O C A T I O N D A T A +* + ENT CALTHD CORE ALLOCATOR THREAD + ENT LVLSTR LEVEL START ALLOCATION TABLE + EXT AREAC START OF ALLOCATABLE AREA + EXT LEND END OF ALLOCATABLE AREA +* +CALTHD ADC 0 TOTAL AVAILABLE ALLOCATABLE CORE + ADC AREAC START OF ALLOCATABLE AREA +* +LVLSTR ADC AREAC START OF ALLOCATABLE CORE FOR LEVEL 0 + ADC AREAC START OF ALLOCATABLE CORE FOR LEVEL 1 + ADC AREAC START OF ALLOCATABLE CORE FOR LEVEL 2 + ADC AREAC START OF ALLOCATABLE CORE FOR LEVEL 3 + ADC AREAC START OF ALLOCATABLE CORE FOR LEVEL 4 + ADC AREAC START OF ALLOCATABLE CORE FOR LEVEL 5 + ADC AREAC START OF ALLOCATABLE CORE FOR LEVEL 6 + ADC AREAC START OF ALLOCATABLE CORE FOR LEVEL 7 + ADC AREAC START OF ALLOCATABLE CORE FOR LEVEL 8 + ADC AREAC START OF ALLOCATABLE CORE FOR LEVEL 9 + ADC AREAC START OF ALLOCATABLE CORE FOR LEVEL 10 + ADC AREAC START OF ALLOCATABLE CORE FOR LEVEL 11 + ADC AREAC START OF ALLOCATABLE CORE FOR LEVEL 12 + ADC AREAC START OF ALLOCATABLE CORE FOR LEVEL 13 + ADC AREAC START OF ALLOCATABLE CORE FOR LEVEL 14 + ADC AREAC START OF ALLOCATABLE CORE FOR LEVEL 15 + ADC LEND END OF ALLOCATABLE CORE +* + ENT N5,N6,N7,N8,N9,N10,N11,N12,N13,N14,N15 + SPC 1 +* NOTE - THE SIZE OF AREAS 1, 2, 3, AND 4 ARE SPECIFIED +* DURING SYSTEM INITIALIZATION +* +N5 EQU N5() NUMBER OF CORE LOCATIONS FOR AREA 5 +N6 EQU N6() NUMBER OF CORE LOCATIONS FOR AREA 6 +N7 EQU N7() NUMBER OF CORE LOCATIONS FOR AREA 7 +N8 EQU N8() NUMBER OF CORE LOCATIONS FOR AREA 8 +N9 EQU N9() NUMBER OF CORE LOCATIONS FOR AREA 9 +N10 EQU N10() NUMBER OF CORE LOCATIONS FOR AREA 10 +N11 EQU N11() NUMBER OF CORE LOCATIONS FOR AREA 11 +N12 EQU N12() NUMBER OF CORE LOCATIONS FOR AREA 12 +N13 EQU N13() NUMBER OF CORE LOCATIONS FOR AREA 13 +N14 EQU N14() NUMBER OF CORE LOCATIONS FOR AREA 14 +N15 EQU N15() NUMBER OF CORE LOCATIONS FOR AREA 15 + EJT +* P A R T I T I O N C O R E D A T A +* + ENT PARTBL,BUSY,DIP,LSTPRT,THDS,USE + SPC 1 + EQU LSTPRT(2) LAST PARTITION IN SYSTEM +* +PARTBL NUM $BF20 STARTING ADDRESS OF PARTITION 0 + NUM $C310 STARTING ADDRESS OF PARTITION 1 + NUM $CAE0 STARTING ADDRESS OF PARTITION 2 + NUM $FFFF STARTING ADDRESS OF PARTITION 3 + NUM $FFFF STARTING ADDRESS OF PARTITION 4 + NUM $FFFF STARTING ADDRESS OF PARTITION 5 + NUM $FFFF STARTING ADDRESS OF PARTITION 6 + NUM $FFFF STARTING ADDRESS OF PARTITION 7 + NUM $FFFF STARTING ADDRESS OF PARTITION 8 + NUM $FFFF STARTING ADDRESS OF PARTITION 9 + NUM $FFFF STARTING ADDRESS OF PARTITION 10 + NUM $FFFF STARTING ADDRESS OF PARTITION 11 + NUM $FFFF STARTING ADDRESS OF PARTITION 12 + NUM $FFFF STARTING ADDRESS OF PARTITION 13 + NUM $FFFF STARTING ADDRESS OF PARTITION 14 + NUM $FFFF STARTING ADDRESS OF PARTITION 15 +* + NUM $FFFF STARTING ADDRESS OF PARTITION 16 - SWAP AREA + SPC 2 +THDS NUM $FFFF TOP OF REQUEST THREAD FOR PARTITION 0 + NUM $FFFF TOP OF REQUEST THREAD FOR PARTITION 1 + NUM $FFFF TOP OF REQUEST THREAD FOR PARTITION 2 + NUM 0 TOP OF REQUEST THREAD FOR PARTITION 3 + NUM 0 TOP OF REQUEST THREAD FOR PARTITION 4 + NUM 0 TOP OF REQUEST THREAD FOR PARTITION 5 + NUM 0 TOP OF REQUEST THREAD FOR PARTITION 6 + NUM 0 TOP OF REQUEST THREAD FOR PARTITION 7 + NUM 0 TOP OF REQUEST THREAD FOR PARTITION 8 + NUM 0 TOP OF REQUEST THREAD FOR PARTITION 9 + NUM 0 TOP OF REQUEST THREAD FOR PARTITION 10 + NUM 0 TOP OF REQUEST THREAD FOR PARTITION 11 + NUM 0 TOP OF REQUEST THREAD FOR PARTITION 12 + NUM 0 TOP OF REQUEST THREAD FOR PARTITION 13 + NUM 0 TOP OF REQUEST THREAD FOR PARTITION 14 + NUM 0 TOP OF REQUEST THREAD FOR PARTITION 15 +* + NUM 0 TOP OF REQUEST THREAD FOR PARTITION 16 - SWAP + SPC 2 +USE BZS USE(16) PARTITION-IN-USE INDICATORS + SPC 2 +BUSY NUM $FFF8 BUSY INDICATOR - BIT 0 = PARTITION 0 +DIP NUM -0 PARTITION CORE DRIVER ACTIVE INDICATOR + EJT +* S Y S T E M C O M M O N D E C L A R A T I O N +* +* THIS ENTRY SPECIFIES THE AMOUNT OF SYSTEM (BLANK) COMMON + SPC 4 + EQU NCOM($03E8) + SPC 1 +COMMON COM COMMON(NCOM) + EJT +* M I S C E L L A N E O U S P R O G R A M S +* +* S Y S T E M I D L E L O O P + SPC 2 + ENT IDLE BASIC SYSTEM IDLE LOOP + ENT IDLER SYSTEM IDLE SUBROUTINE + ENT INSTLU SYSTEM INSTALLATION L. U. + SPC 2 +IDLE LDA* STRTUP IS THIS THE INITIAL IDLE ENTRY + SAN IDLE1 NO + RTJ* STRTUP YES, PERFORM STARTUP FUNCTIONS +IDLE1 RTJ* IDLER + JMP* IDLE +IDLER NUM 0 + IIN 0 USED AT LEVEL -1 OR LEVEL 2 + RAO* IDLCTR + EIN 0 + JMP* (IDLER) +IDLCTR NUM 0 IDLE LOOP COUNTER + SPC 2 + EXT LIBEDT LIBRARY EDIT + EXT RELFLE SYSTEM CORE SWAP ROUTINE + EXT INPTV4 JOB PROCESSOR STANDARD INPUT DEVICE + EQU INSTLU(6) + SPC 1 +STRTUP NUM 0 + LDQ- $EB + ADQ =XLIBEDT OBTAIN THE DIRECTORY ADDRESS OF LIBEDT + LDA- (ZERO),Q HAVE THE REQUEST PRIORITIES BEEN SET UP + SAN STRTP1 YES + LDA =XINSTLU + STA+ INPTV4 SET THE STD. INPUT TO THE INSTALLATION L.U. + JMP* (STRTUP) AND EXIT + SPC 1 +STRTP1 EQU STRTP1(*) +* +* NOTE - ANY ADDITIONAL SYSTEM STARTUP FUNCTIONS +* MAY BE ADDED HERE. +* + RTJ- (AMONI) SCHEDULE RELFLE TO FORCE A SWAP + ADC $5203 + ADC RELFLE + JMP* (STRTUP) + EJT +* M I S C E L L A N E O U S P R O G R A M S +* +* I N T E R R U P T R E S P O N S E F O R T I M E R +* + ENT TMRTYP,TMCODE TYPE OF SYSTEM TIME BASE + EXT TIMEUP TMINT INTERRUPT ENTRY + EQU X($7FFF) VALUE FOR UNSELECTED ENTRY POINTS + EQU TMCODE(7) +TMRTYP ADC TMCODE TIME BASE CODE + SPC 2 + ENT E10336,O10336,F10336 +E10336 NUM $0681 +O10336 NUM 1667 100 KCS / 60 +F10336 NUM $8080 ENABLE INTERRUPT AND START CLOCK +A10336 NUM $0002 ACKNOWLEDGE INTERRUPT + SPC 1 +TIMINT LDA* A10336 ACK. THIS INTERRUPT + LDQ* E10336 + OUT TIMREJ-* + JMP TIMEUP EXIT TO TMINT +TIMREJ NOP 0 TIMER REJECT + JMP- (ADISP) EXIT + SPC 2 +* +* LINK ALL UNSELECTED ENTRY POINTS +* + ENT E1572F,E1572,O1572,E1573,H15721,E15721,D15721,O15721,EQ3644 + ENT E15761 + ENT DMICOD,EMPSRT,TBLADR + EQU E1572F(X),E1572(X),O1572(X),E1573(X),H15721(X) + EQU E15721(X),D15721(X),O15721(X),EQ3644(X) + EQU E15761(X) + EQU DMICOD(X),EMPSRT(X),TBLADR(X) + EJT +* M I S C E L L A N E O U S P R O G R A M S +* +* A / Q C H A N N E L A L L O C A T I O N +* + SPC 2 + ENT RQAQ REQUEST ENTRY FOR A/Q + ENT RLAQ RELEASE ENTRY FOR A/Q + SPC 1 +RQAQ NUM 0 ENTRY USED IF NO A/Q ALLOCATION + IIN 0 + LDQ- I TRANSFER PDT ADDRESS TO Q + EIN 0 + JMP* (RQAQ) RETURN + SPC 1 + EQU RLAQ(RQAQ) EQUATE BOTH ENTRIES + EJT +* M I S C E L L A N E O U S I N F O R M A T I O N +* +* M A S S R E S I D E N T D R I V E R S B U F F E R +* +* THIS BUFFER WILL CONTAIN THE MASS RESIDENT DRIVER(S) +* WHEN THEY ARE IN CORE. THE SMALLEST ALLOWABLE SIZE IS +* EQUAL TO THE LARGEST MASS RESIDENT DRIVER IN THE SYSTEM. +* OPTIMUM THROUGHPUT REQUIRES SIZING EQUAL TO THE TWO +* LARGEST MASS RESIDENT DRIVERS IN THE SYSTEM. + SPC 2 + ENT BUFF,BUFFE + EQU MBFSZ($A00) + SPC 2 +BUFF BZS BUFF(MBFSZ) + EQU BUFFE(*) + SPC 2 +* C O M M O N G H O S T I N T E R R U P T R O U T I N E + SPC 1 + ENT CGHOST + SPC 1 +CGHOST NOP 0 + JMP- (ADISP) + EJT +* M I S C E L L A N E O U S I N F O R M A T I O N +* +* F O R T R A N R E E N T R A N T I N F O R M A T I O N +* + ENT FMASK,FLIST + EXT E4SAVE + EXT ARGU0 + SPC 1 +FMASK NUM $0070 FORTRAN REENTRANT LEVELS (BIT 0 = LEVEL 0) + SPC 1 +* TABLE OF FORTRAN ENTRY POINTS SAVED TO MAINTAIN REENTRANCY + SPC 1 +* ENTRY POINT PROGRAM DESCRIPTION +* ----------- ------- ---------- + SPC 1 +FLIST ADC FEND + ADC E4SAVE Q8EXPR LOCATION $E4 STORAGE + ADC ARGU0 Q8QIO TEMPORARY STORAGE +FEND EQU FEND(*-FLIST-1) + EJT +* F O R T R A N R E E N T R A N T I N F O R M A T I O N +* + SPC 4 +* THIS ENTRY IS PROVIDED TO ALLOW COMPATIBILITY BETWEEN THE +* NON-REENTRANT (BACKGROUND) FORTRAN AND REENTRANT FORTRAN + SPC 1 + ENT Q8STP + SPC 1 +Q8STP NOP 0 FORTRAN STOP + JMP- (ADISP) + EJT +* M I S C E L L A N E O U S I N F O R M A T I O N +* +* 1 7 8 1 - 1 H A R D W A R E F L O A T I N G +* +* P O I N T I N F O R M A T I O N +* + SPC 4 +* THESE ENTRIES ALLOW PROPER SYSTEM LINKAGE IF THE 1781-1 +* IS NOT SELECTED. + SPC 2 + ENT E17811,F17811 +E17811 NUM $7FFF + EQU F17811($7FFF) + EJT +* M I S C E L L A N E O U S I N F O R M A T I O N +* +* T I M E / D A T E P A R A M E T E R S T O R A G E +* + SPC 3 + ENT AYERTO CURRENT YEAR (ASCII) + ENT AMONTO CURRENT MONTH (ASCII) + ENT ADAYTO CURRENT DAY (ASCII) + ENT YERTO CURRENT YEAR (INTEGER) + ENT MONTO CURRENT MONTH (INTEGER) + ENT DAYTO CURRENT DAY (INTEGER) + ENT HORTO CURRENT HOUR (INTEGER) + ENT MINTO CURRENT MINUTE (INTEGER) + ENT SECON CURRENT SECOND (INTEGER) + ENT CONTA CURRENT COUNT (INTEGER) + ENT HORMIN CURRENT 24-HOUR TIME + ENT TOTMIN CURRENT DAY ELAPSED MINUTES + SPC 3 +AYERTO NUM 0 00 CURRENT YEAR (ASCII) +AMONTO NUM 0 01 CURRENT MONTH (ASCII) +ADAYTO NUM 0 02 CURRENT DAY (ASCII) +YERTO NUM 0 03 CURRENT YEAR (INTEGER) +MONTO NUM 0 04 CURRENT MONTH (INTEGER) +DAYTO NUM 0 05 CURRENT DAY (INTEGER) +HORTO NUM 0 06 CURRENT HOUR (INTEGER) +MINTO NUM 0 07 CURRENT MINUTE (INTEGER) +SECON NUM 0 08 CURRENT SECOND (INTEGER) +CONTA NUM 0 09 CURRENT COUNT (INTEGER) +HORMIN NUM 0 10 CURRENT 24-HOUR TIME +TOTMIN NUM 0 11 CURRENT DAY ELAPSED MINUTES + EJT +* M I S C E L L A N E O U S I N F O R M A T I O N +* +* S Y S T E M T I M E R P A R A M E T E R S + SPC 4 + ENT TIMCPS BASIC SYSTEM CLOCK FREQUENCY + SPC 1 +TIMCPS EQU TIMCPS(60) TIMER CYCLES PER SECOND + SPC 4 + ENT TIMEC TIMER CYCLES PER 1/10 SECOND MINUS 1 + SPC 1 +TIMEC EQU TIMEC(TIMCPS/10-1) + SPC 4 + ENT TODLVL TIME OF DAY(TOD) PROGRAM REQ. CODE + PRIORITY + SPC 1 +TODLVL EQU TODLVL($5006) D-BIT = 1, REQUEST CODE 8, PRIORITY 6 + SPC 4 + ENT NSCHED MAX. NO. OF COMPLETIONS PER TIMER INTERVAL + SPC 1 +NSCHED NUM 5 MAXIMUM 5 COMPLETIONS PER INTERVAL + SPC 4 + ENT TMRLVL DIAGNOSTIC TIMER PRIORITY LEVEL + SPC 1 +TMRLVL EQU TMRLVL(13) LEVEL 13 + EJT +* M I S C E L L A N E O U S I N F O R M A T I O N +* +* S Y S T E M P R O G R A M O V E R L A Y S I Z E S + SPC 2 + ENT LSIZV4 INITIAL OVERLAY SIZE OF LIBEDT + ENT PSIZV4 SIZE OF AREA 3 + ENT ODBSIZ INITIAL OVERLAY SIZE OF ODEBUG + SPC 4 + EQU LSIZV4($4B8) INITIAL OVERLAY SIZE OF LIBEDT + EQU PSIZV4($4B8) SIZE OF AREA 3 + EQU ODBSIZ($369) INITIAL OVERLAY SIZE OF ODEBUG + EJT +* M I S C E L L A N E O U S I N F O R M A T I O N +* +* S C M M I N C O R E F L A G +* + ENT SCMMLC + SPC 2 +SCMMLC NUM 0 NON-ZERO IF S C M M RUNNING + EJT +* M I S C E L L A N E O U S I N F O R M A T I O N +* +* O N L I N E D E B U G I N C O R E F L A G +* + ENT CHRSFG + SPC 2 +CHRSFG NUM 0 NON-ZERO IF ODEBUG RUNNING + EJT +* M I S C E L L A N E O U S I N F O R M A T I O N +* +* S Y S T E M C H E C K O U T P A R A M E T E R S + SPC 4 +* THE STARTING SECTOR OF THE FAILED CORE IMAGE IS SPECIFIED BY +* THE NAME COBOPS. THIS AREA MUST BE SIZED TO ACCOMODATE A +* FAILED IMAGE OF THE SIZE SPECIFIED BY NAME MSIZV4. THE FAILED +* IMAGE MUST RESIDE ON THE LIBRARY MASS MEMORY UNIT. IF THE +* MASS MEMORY LIBRARY UNIT IS A CARTRIDGE DISK, THE IMAGE AREA +* CANNOT OVERLAP FROM ONE PLATTER TO THE OTHER. + SPC 2 + ENT COBOPS +COBOPS EQU COBOPS($5A00) START SECTOR OF FAILED IMAGE + SPC 4 +* THIS ENTRY IS PROVIDED TO LINK THE NO-FORTRAN DISPATCHER +* ENTRY POINT + SPC 1 + ENT NDISP + SPC 1 + EQU NDISP($7FFF) + SPC 4 +* THIS ENTRY IS PROVIDED TO LINK THE TIMESHARE PROTECT INTERRUPT +* PROCESSOR ENTRY POINT + SPC 1 + ENT TSIPRC + SPC 1 + EQU TSIPRC($7FFF) + EJT +* M I S C E L L A N E O U S I N F O R M A T I O N +* +* F I L E M A N A G E R D A T A +* + SPC 2 + ENT FISLU LOGICAL UNIT OF FIS DIRECTORY AND BLOCKS + ENT MAXMMA MAXIMUM NO. OF MASS MEMORY ATTEMPTS ON ERROR + ENT RPTPER REQUEST PROCESSOR TIMEOUT PERIOD + ENT FDTPER FILE/DIRECTORY TIMEOUT PERIOD + ENT FIDSEC FIS DIRECTORY, S SECTOR ADDRESS + ENT FIBLSA SECTOR ADDRESS OF LAST FIS BLOCK + ENT FIBNIX INDEX TO THE NEXT AVAILABLE LOCATION IN FIBLSA + ENT FSLIST START OF FILE SPACE LIST + ENT FSLLTH FILE SPACE LIST LENGTH + ENT FSLEND END OF FILE SPACE LIST + ENT ADRFMS BEGINNING OF FILE MANAGER SPACE ON LIB UNIT + SPC 2 + EQU FISLU(LBUNIT) LOGICAL UNIT OF FIS DIRECTORY AND BLOCKS + EQU MAXMMA(1) MAXIMUM NO. OF MASS MEMORY ATTEMPTS ON ERROR + EQU FDTPER(1) FILE/DIRECTORY TIMEOUT PERIOD (1/10 SEC.) + EQU RPTPER(1) REQUEST PROCESSOR TIMEOUT PERIOD (1/10 SEC.) + SPC 2 +ADRFMS ADC $5BFB BEGINNING OF FILE MANAGER SPACE ON LIB UNIT + SPC 1 +******** THE FOLLOWING MUST BE IN ORDER ******** +FIDSEC ADC 0 1. FIS DIRECTORY, S SECTOR ADDRESS +FIBLSA ADC 0 2. SECTOR ADDRESS OF THE LAST FIS BLOCK +FIBNIX ADC 0 3. INDEX TO NEXT AVAILABLE LOCATION IN FIBLSA +FSLIST EQU FSLIST(*) 4. START OF FILE SPACE LIST + SPC 1 +******** START OF LOGICAL UNIT ENTRIES ******** + SPC 2 +* L O G I C A L U N I T D A T A , U N I T 0 +* + ENT NUMFS0 + EQU NUMFS0($1F40) NUMBER OF FILE SECTORS - UNIT 0 + SPC 1 +LUE0 VFD X9/LUEL0,X7/LBUNIT LU ENTRY LENGTH(7/15), LOGICAL UNIT(0-6) + ADC 0 ADDRESS OF FILE SPACE POOL + ADC 0 NUMBER OF AVAILABLE SECTORS + ADC NUMFS0 NUMBER OF SECTORS IN THIS FILE SPACE + NUM 0,1 THREAD OF ONE SECTOR LONG + NUM 0,2 THREAD OF TWO SECTORS LONG + NUM 0,3 THREAD OF THREE SECTORS LONG +LUEL0 EQU LUEL0(*-LUE0) + EJT +* L O G I C A L U N I T D A T A , U N I T 1 +* + ENT BEGLU1 + ENT NUMFS1 + EQU LUNIT1(22) LOGICAL UNIT OF FILE MANAGER UNIT 1 + EQU BEGLU1(1) BEGINNING FILE SECTOR - UNIT 1 + EQU NUMFS1($37F5) NUMBER OF FILE SECTORS - UNIT 1 + SPC 1 +LUE1 VFD X9/LUEL1,X7/LUNIT1 LU ENTRY LENGTH(7/15), LOGICAL UNIT(0-6) + ADC BEGLU1 ADDRESS OF FILE SPACE POOL + ADC 0 NUMBER OF AVAILABLE SECTORS + ADC NUMFS1 NUMBER OF SECTORS IN THIS FILE SPACE + NUM 0,1 THREAD OF ONE SECTOR LONG + NUM 0,2 THREAD OF TWO SECTORS LONG + NUM 0,3 THREAD OF THREE SECTORS LONG +LUEL1 EQU LUEL1(*-LUE1) + SPC 2 +FSLLTH EQU FSLLTH(*-FSLIST) FILE SPACE LIST LENGTH + SPC 1 +FSLEND NUM -0 END OF FILE SPACE LIST + EJT +* F I L E M A N A G E R D A T A +* + SPC 2 +* LINK UNSELECTED ENTRY POINTS + SPC 2 + ENT BEGLU2,NUMFS2 + EQU BEGLU2($7FFF),NUMFS2($7FFF) + ENT BEGLU3,NUMFS3 + EQU BEGLU3($7FFF),NUMFS3($7FFF) + ENT BEGLU4,NUMFS4 + EQU BEGLU4($7FFF),NUMFS4($7FFF) + ENT BEGLU5,NUMFS5 + EQU BEGLU5($7FFF),NUMFS5($7FFF) + ENT BEGLU6,NUMFS6 + EQU BEGLU6($7FFF),NUMFS6($7FFF) + ENT BEGLU7,NUMFS7 + EQU BEGLU7($7FFF),NUMFS7($7FFF) + ENT BEGLU8,NUMFS8 + EQU BEGLU8($7FFF),NUMFS8($7FFF) +* +* S O R T - M E R G E L O G I C A L U N I T S +* + SPC 1 + ENT SMCLU1 + ENT SMCLU2 + ENT SMCLU3 + ENT SMCLU4 + SPC 1 +SMCLU1 EQU SMCLU1(8) SORT MERGE L.U. 1 +SMCLU2 EQU SMCLU2(8) SORT MERGE L.U. 2 +SMCLU3 EQU SMCLU3(8) SORT MERGE L.U. 3 +SMCLU4 EQU SMCLU4(8) SORT MERGE L.U. 4 + EJT +* M I S C E L L A N E O U S I N F O R M A T I O N +* +* J O B P R O C E S S O R F I L E P A R A M E T E R S +* + SPC 3 + ENT JLLUV4 LOGICAL UNIT OF JOB PROCESSOR FILES + ENT JBFLV4 NUMBER OF JOB PROCESSOR FILES + ENT FBASV4 FIRST FILE NUMBER USED BY JOB PROCESSOR + ENT PKEYV4 JOB FILE PURGE KEY + SPC 3 +JLLUV4 ADC LBUNIT LOGICAL UNIT OF JOB PROCESSOR FILES + SPC 2 + EQU JBFLV4(500) NUMBER OF JOB PROCESSOR FILES + SPC 1 + EQU FBASV4($7F2B-JBFLV4) +* +* NOTE - FILES $7FFD THRU $7FFF ARE RESERVED FOR THE MSOS +* VERIFICATION TESTS, FILES $7FF5 THRU $7FFC ARE +* RESERVED FOR FOREGROUND PSEUDO TAPES, FILES $7FF3 +* THRU $7FF4 ARE RESERVED FOR THE TEXT EDITOR, AND +* FILES $7F2B THRU $7FF2 ARE RESERVED FOR RPGII. + SPC 2 + EQU PKEYV4($3030) JOB FILE PURGE KEY + EJT +* P R E S E T R E G I O N +* +* PRESET PROTECTED ENTRY POINTS FOR USE BY UNPROTECTED PGMS +* +APRSET EQU APRSET(*) + ENT JPRET + SPC 2 +* J O B P R O C E S S O R P R E S E T + SPC 2 + EXT JPRETN + ALF 3,JPRETN +JPRET ADC JPRETN JOB PROCESSOR RETURN +* + SPC 2 +* S N A P D U M P P R E S E T + SPC 2 + EXT SNAPOL + ALF 3,SNAPOL + ADC SNAPOL REGISTER SNAPSHOT +* + SPC 2 +* F I L E M A N A G E R P R E S E T S + SPC 2 + EXT DEFFIL + ALF 3,DEFFIL + ADC DEFFIL DEFINE FILE +* + EXT RELFIL + ALF 3,RELFIL + ADC RELFIL RELEASE FILE +* + EXT DEFIDX + ALF 3,DEFIDX + ADC DEFIDX DEFINE INDEXED FILE +* + EXT LOKFIL + ALF 3,LOKFIL + ADC LOKFIL LOCK FILE +* + EXT UNLFIL + ALF 3,UNLFIL + ADC UNLFIL UNLOCK FILE +* + EXT STOSEQ + ALF 3,STOSEQ + ADC STOSEQ STORE SEQUENTIAL RECORD +* + EXT STODIR + ALF 3,STODIR + ADC STODIR STORE DIRECT +* + EXT STOIDX + ALF 3,STOIDX + ADC STOIDX STORE INDEXED RECORD +* + EXT RTVSEQ + ALF 3,RTVSEQ + ADC RTVSEQ RETRIEVE SEQUENTIAL RECORD +* + EXT RTVDIR + ALF 3,RTVDIR + ADC RTVDIR RETRIEVE DIRECT +* + EXT RTVIDX + ALF 3,RTVIDX + ADC RTVIDX RETRIEVE INDEXED RECORD +* + EXT RTVIDO + ALF 3,RTVIDO + ADC RTVIDO RETRIEVE INDEXED-ORDERED RECORD + SPC 2 +* F I L E M A N A G E R F L A G P R E S E T + SPC 2 + EXT FMPFLG + ALF 3,FMPFLG + ADC FMPFLG + SPC 1 +LPRSET EQU LPRSET(*-APRSET) + EJT + SPC 10 +* S Y S T E M L I B R A R Y D I R E C T O R Y +* +* COMPILED FROM *Y, *YM BY SYSTEM INITIALIZER +SLDIRY EQU SLDIRY(*) + END diff --git a/CDC1700/customization/custom5/sysdat.tap b/CDC1700/customization/custom5/sysdat.tap new file mode 100644 index 0000000000000000000000000000000000000000..e1bd993dd23e9077e1acfe62323de89faaa44fb1 GIT binary patch literal 219744 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

Y5Hta5W0! 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 X2E}`- + + diff --git a/descrip.mms b/descrip.mms index f2d38775..03fa74f1 100644 --- a/descrip.mms +++ b/descrip.mms @@ -698,7 +698,7 @@ CDC1700_SOURCE = $(CDC1700_DIR)CDC1700_CPU.C,$(CDC1700_DIR)CDC1700_DIS.C,$(CDC17 $(CDC1700_DIR)CDC1700_SYS.C,$(CDC1700_DIR)CDC1700_DEV1.C,$(CDC1700_DIR)CDC1700_MT.C,\ $(CDC1700_DIR)CDC1700_DC.C,$(CDC1700_DIR)CDC1700_IOFW.C,$(CDC1700_DIR)CDC1700_LP.C,\ $(CDC1700_DIR)CDC1700_DP.C,$(CDC1700_DIR)CDC1700_CD.C,$(CDC1700_DIR)CDC1700_SYM.C,\ - $(CDC1700_DIR)CDC1700_RTC.C $(CDC1700_DIR)CDC1700_MSOS5.C + $(CDC1700_DIR)CDC1700_RTC.C $(CDC1700_DIR)CDC1700_MSOS5.C $(CDC1700_DIR)CDC1700_DRM.C CDC1700_OPTIONS = /INCL=($(SIMH_DIR),$(CDC1700_DIR))/DEF=($(CC_DEFS)) # diff --git a/makefile b/makefile index e334fd71..7e8def82 100644 --- a/makefile +++ b/makefile @@ -1570,7 +1570,8 @@ CDC1700 = ${CDC1700D}/cdc1700_cpu.c ${CDC1700D}/cdc1700_dis.c \ ${CDC1700D}/cdc1700_dc.c ${CDC1700D}/cdc1700_iofw.c \ ${CDC1700D}/cdc1700_lp.c ${CDC1700D}/cdc1700_dp.c \ ${CDC1700D}/cdc1700_cd.c ${CDC1700D}/cdc1700_sym.c \ - ${CDC1700D}/cdc1700_rtc.c ${CDC1700D}/cdc1700_msos5.c + ${CDC1700D}/cdc1700_rtc.c ${CDC1700D}/cdc1700_drm.c \ + ${CDC1700D}/cdc1700_msos5.c CDC1700_OPT = -I ${CDC1700D} ###