1
0
mirror of https://github.com/rcornwell/ctss.git synced 2026-01-12 00:02:48 +00:00
2018-08-08 20:44:50 -04:00

2191 lines
121 KiB
Plaintext

$JOB CTSSSET
$BLOCK BCD,0084
$UNITS
$DATE 121510
$EXECUTE FORTRAN
* ID START
* XEQ
CALL START
END
* FAP
$BLOCK BCD,1344
* W.J. PODUSKA, R.C. DALEY ... DISK/DRUM SETUP ROUTINE FOR FILE SYSTEM
REM
TITLE
ENTRY START
RECN EQU 435 PHYSICAL RECORD SIZE
DREC SYN RECN-3 NO. OF DATA WORD PER RECORD
DUM1 EQU 31 SIZE OF FIRST DUMMY RECORD
DUM2 EQU 14 SIZE OF SECOND DUMMY RECORD
DUM3 EQU 16 SIZE OF THIRD DUMMY RECORD
DUML EQU 1 SIZE OF LAST DUMMY RECORD
M EQU 8 NO. OF FIRST LOGICAL DRUM
REM
IOP OPSYN PTW SPECIFIES I/O LIST FOR ADAPTER
IOD OPSYN PZE SPECIFIES END OF I/O LIST
PAR OPSYN PTH USED TO SPECIFY PARAMETER TO .PACK, .UNPAK
REM
REM .......... INITIALIZATION SECTION .......................
REM
START HTR *+1
TSX $.DINIT,4 INITIALIZE DISK/DRUM I/O PACKAGE
$ENABLE ..
TSX $.SETER,4 SET UP I/O ERROR RETURN
ERROR ..
REM
AXT RECN,4 SET UP ZERO BUFFER
STZ ZEROES+RECN,4 ..
TIX *-1,4,1 ..
EJECT
REM
REM .......... READ CONTROL CARD AND DISPATCH SECTION .......
REM
READ SWT 1
TRA *+2
TRA CARDRD READ ONLINE CARDS IF SW1 DOWN.
TSX $RTDINP,4 READ FIRST OR NEXT BCD CARD FROM
CARD,,14 .. MONITOR INPUT TAPE
$EXIT .. EXIT ON EOF RETURN
PCC TSX $PRINT,4 PRINT CARD ON LINE
CARD,,12 ..
REM
TSX FIRST,4 GET FIRST FIELD FROM THIS CARD
ILLEGL .. ILLEGAL CARD IF FIELD VOID
XCL PICK UP LEFT ADJUSTED VERSION
REM
SEARCH AXT TABN,1 SEARCH TABLE FOR CONTROL WORD.
LAS TABL+TABN,1 COMPARE.
TRA *+2 NOT THIS ONE.
TRA* TABL+TABN+1,1 FOUND, EXIT.
TIX *-3,1,2 INDEX AND TRY AGAIN.
REM
ILLEGL TSX $PRINT,4 HERE WHEN ILLEGAL CONTROL CARD FOUND
BDCARD,,6 .. PRINT ERROR COMMENT ON LINE
HTR READ WAIT BEFORE WE CONTINUE
REM
BDCARD BCI 6, REQUEST CARD HAS IMPROPER FORMAT.
REM
TABL SYN * CONTROL WORD DISPATCH TABLE
BCI 1,* REMARK ENTRY.
READ ..
BCI 1,STOP STOP ENTRY.
STOP ..
BCI 1,QUIT TERMINATION ENTRY
$EXIT ..
BCI 1,DSKFMT DISK FORMAT ENTRY.
DSKFMT ..
BCI 1,DRMFMT DRUM FORMAT ENTRY.
DRMFMT ..
BCI 1,DSKCHK DISK SURFACE ANALYSIS
DSKCHK ..
BCI 1,DRMCHK DRUM SURFACE ANALYSIS
DRMCHK ..
BCI 1,DSKREC DISK RECORD ADDRESS ENTRY.
DSKREC ..
BCI 1,DRMREC DRUM RECORD ADDRESS ENTRY.
DRMREC ..
BCI 1,LOADER CTSS LOADER ENTRY
LOADER ..
BCI 1,SETMFD M.F.D. SETUP ENTRY.
SETMFD ..
BCI 1,DUMP DUMP TRACK CONTENTS
DUMP ..
TABN EQU *-TABL TABLE LENGTH.
EJECT
REM
REM STOP ..... STOP AND WAIT FOR SOME OPERATOR ACTION .....
REM
STOP WPRA SPACE UP PAGE ON LINE
SPRA 2 ..
HTR READ AND WAIT
REM
* * * * * * * * * * * * * * * * * * * * * * * *
REM
REM DSKFMT ... WRITE FORMAT TRACKS ON 1302 DISK .............
REM
DSKFMT TSX NEXT,4 GET NEXT ARGUMENT.
ILLEGL .. ERROR IF THIS FIELD VOID
TSX INT,4 CONVERT TO BINARY,
ALS 18 MOVE TO POSITION,
STD DSKLST SET UP DISK MODULE NO.
REM
TSX NEXT,4 PICK UP CYLINDER NO. FROM CARD
ILLEGL .. ERROR IF THIS FIELD VOID
TSX INT,4 CONVERT CYLINDER NO. TO BINARY
PAX 0,4 CHECK FOR LEGAL CYLINDER NO.
TXL ILLEGL,4,0 .. ERROR IF .E. 0
TXH ILLEGL,4,250 .. ERROR IF .G. 250
XCA CYLINDER NO. TO MQ
MPY =80 .. CONVERT TO RECORD ADDRESS
XCA ..
SUB =80 ..
STA DSKLST INTO MZE RECNO,,MODNO
REM
AXT 1,1 SET COUNT TO '1' IN CASE COUNT NOT GIVEN
TSX NEXT,4 GET CYLINDER COUNT IF ANY
DSKLP .. SKIP IF COUNT NOT SPECIFIED
TSX INT,4 OTHERWISE CONVERT COUNT TO BINARY
PAX 0,1 COUNT TO IR1
TXH ILLEGL,1,250 ERROR IF COUNT .G. 250
REM
DSKLP TSX $.WRFMT,4 WRITE FORMAT ONCE.
DSKLST ..
TRKER ..
TSX $.WRFMT,4 WRITE FORMAT TWICE.
DSKLST ..
TRKER ..
TSX $.DWRCK,4 NOW CHECK WRITING.
LXA DSKLST,4 INCREMENT RECORD BY 80
TXI *+1,4,80 .. FOR NEXT CYLINDER
SXA DSKLST,4 ..
TIX DSKLP,1,1 LOOP THROUGH CYLINDERS.
REM
TSX $.DWAIT,4 WAIT UNTIL LAST FORMAT IS CHECKED
TRA READ AND GO PICK UP NEXT CONTROL CARD
REM
DSKLST MZE **,,** RECNO,,MODNO
IOP FMT1,,FMT1L .. WRITE 1302 FORMAT
IOD ..
EJECT
FMT1 BCI 8,444444333333333333433333333333334111111111111122
BCI 8,222222222222211111111111112111111111111121111111
DUP 1,RECN
BCI 1,111111
BCI 8,222222222222222111111111111121111111111111211111
DUP 1,DUM1
BCI 1,111111
BCI 8,112222222222222221111111111111211111111111112111
DUP 1,DUM2
BCI 1,111111
BCI 8,111122222222222222211111111111112111111111111121
DUP 1,RECN
BCI 1,111111
BCI 9,111111222222222222222111111111111121111111111111211111
DUP 1,DUM3
BCI 1,111111
BCI 8,112222222222222221111111111111211111111111112111
DUP 1,DUML
BCI 1,111111
BCI 1,111121
FMT1L SYN *-FMT1
REM
EJECT
REM
REM DRMFMT ... WRITE FORMAT TRACK ON 7320 DRUM .............
REM
DRMFMT TSX NEXT,4 PICK UP DRUM MODULE NO. FROM CARD
ILLEGL .. ERROR IF THIS FIELD IS VOID
TSX INT,4 CONVERT TO BINARY
ALS 18 INTO DECREMENT
STD DRMLST SET UP DRUM MODULE NO.
REM
TSX $.WRFMT,4 NOW WRITE FORMAT.
DRMLST ..
TRKER ..
TSX $.DWRCK,4 CHECK WRITING.
REM
TSX $.DWAIT,4 WAIT UNTIL FORMAT IS CHECKED
TRA READ AND RETURN TO GET NEXT CONTROL CARD
REM
DRMLST MZE 0,,** RECNO,,MODNO
IOP FMT2,,FMT2L .. WRITE 7320 DRUM FORMAT
IOD ..
REM
FMT2 BCI 6,444333333333433333333334111111111122
BCI 6,222222222211111111112111111111121111
DUP 1,RECN
BCI 1,111111
BCI 6,222222222222111111111121111111111211
DUP 1,DUM3
BCI 1,111111
BCI 6,112222222222221111111111211111111112
DUP 1,DUML
BCI 1,111111
BCI 1,111121
FMT2L SYN *-FMT2
REM
EJECT
REM
REM DSKCHK/DRMCHK ... TRACK SURFACE ANALYSIS ..............
REM
DSKCHK AXT DSKLEN,4 HERE TO CHECK 1302 DISK SURFACES
TRA COMCHK ..
REM
DRMCHK AXT DRMLEN,4 HERE TO CHECK 7320 DRUM SURFACES
REM
COMCHK SXD TCOPY,4 SET UP WORD COUNT FOR COPY COMMAND
AXC 0,1
CAL =O777777777777 SET UP TEST BUFFERS
LDQ =O252525252525 ..
LDI =O525252525252 ..
CHKFIL STZ TEST1,1 .. BUFFER OF BINARY '00'
SLW TEST2,1 .. BUFFER OF BINARY '11'
STQ TEST3,1 .. BUFFER OF BINARY '01'
STI TEST4,1 .. BUFFER OF BINARY '10'
TNX *+2,4,1 ..
TXI CHKFIL,1,-1 ..
REM
TSX NEXT,4 PICK UP MODULE NO. FROM CARD
ILLEGL .. ERROR IF THIS FIELD VOID
TSX INT,4 CONVERT TO BINARY
ALS 18 INTO DECREMENT
STD TSTREC SET UP MODULE NO.
REM
TSX NEXT,4 PICK UP RECORD ADDRESS FROM CARD
ILLEGL .. ERROR IF THIS FIELD VOID
TSX INT,4 CONVERT TO BINARY
ARS 1 INSURE EVEN RECORD ADDRESS
ALS 1 ..
STA TSTREC ..
REM
AXT 1,1 SET UP IN CASE COUNT MISSING
TSX NEXT,4 PICK UP COUNT IF SPECIFIED
SURTST .. SKIP IF NO COUNT SPECIFIED
TSX INT,4 CONVERT COUNT TO BINARY
PAX 0,1 .. INTO IR1
REM
SURTST AXT TEST1,4 FIRST TEST WITH BINARY '00'
SXA TCOPY,4 ..
TSX $.WRHAO,4 ..
TSTREC ..
TRKER ..
TSX $.DWRCK,4 .. WRITE-CHECK
REM
AXT TEST2,4 SECOND TEST WITH BINARY '11'
SXA TCOPY,4 ..
TSX $.WRHAO,4 ..
TSTREC ..
TRKER ..
TSX $.DWRCK,4 .. WRITE-CHECK
EJECT
AXT TEST3,4 THIRD TEST WITH BINARY '01'
SXA TCOPY,4 ..
TSX $.WRHAO,4 ..
TSTREC ..
TRKER ..
TSX $.DWRCK,4 .. WRITE-CHECK
REM
AXT TEST4,4 FOURTH TEST WITH BINARY '10'
SXA TCOPY,4 ..
TSX $.WRHAO,4 ..
TSTREC ..
TRKER ..
TSX $.DWRCK,4 .. WRITE-CHECK
REM
CAL TSTREC BUMP RECORD ADDRESS
ADD =2 ..
STA TSTREC ..
TIX SURTST,1,1 COUNT TRACKS
REM
TSX $.DWAIT,4 WAIT UNTIL LAST TRACK IS CHECKED
TRA READ AND PICK UP NEXT CONTROL CARD
REM
TSTREC MZE **,,** WRITE AND WRITE-CHECK RECORD ADDRESS
TCOPY IOP **,,** .. COPY COMMAND
IOD ..
REM
DSKLEN EQU 1+1+RECN+1+DUM1+1+DUM2+1+RECN+1+DUM3+1+DUML
DRMLEN EQU 1+1+RECN+1+DUM1+1+DUML
MAXLEN SYN DSKLEN SIZE OF LARGEST POSSIBLE TRACK
REM
EJECT
REM
REM DSKREC/DRMREC ... SET UP HOME AND RECORD ADDRESSES ......
REM
DSKREC AXT R1LST,1 DISK ENTRY, GET POINTER,
TRA COMREC AND GO TO COMMON SECTION.
REM
DRMREC AXT R2LST,1 DRUM ENTRY, GET POINTER,
REM
COMREC SXA RECPNT,1 SET UP ADDRESS OF RECORD POINTER
SXA DDRECP,1 ..
TSX NEXT,4 PICK UP DISK OR DRUM MODULE NO. FROM CARD
ILLEGL .. ERROR IF THIS FIELD VOID
TSX INT,4 CONVERT MODULE NO. TO BINARY
ALS 18 INTO DECREMENT
STD* RECPNT SET UP DISK OR DRUM MODULE NO.
REM
TSX NEXT,4 PICK UP RECORD ADDRESS FROM CARD
ILLEGL .. ERROR IF THIS FIELD VOID
TSX INT,4 CONVERT RECORD ADDRESS TO BINARY
ARS 1 MAKE SURE RECORD ADDRESS IS EVEN
ALS 1 ..
STA* RECPNT SET UP STARTING RECORD ADDRESS
REM
AXT 1,1 SET UP IN CASE COUNT MISSING
STZ CHECK AND SET SWITCH FOR NO WRITE CHECKING
TSX NEXT,4 PICK UP COUNT IF SPECIFIED
R1LP .. SKIP IF NO COUNT SPECIFIED
TSX INT,4 CONVERT COUNT TO BINARY
PAX 0,1 COUNT TO IR1
REM
TSX NEXT,4 PICK UP WRITE CHECK OPTION IF SPECIFIED
R1LP .. SKIP IF NOT SPECIFIED
ERA =H0CHECK WAS WRITE CHECK OPTION SPECIFIED
TNZ R1LP NO, SKIP
STL CHECK YES, SET SWITCH FOR WRITE-CHECKING
REM
R1LP TSX $.UNPAK,4 CONVERT RECORD ADDRESS TO
DDRECP PAR ** .. UNPACKED FORMAT
XCL MTTTTR TO MQ
RQL 6 CHANGE TO TTTTRM
XCL BACK TO AC
SLW RA1 INSERT FIRST ADDRESS.
ERA =O1300 FORM SECOND RECORD ADDRESS.
SLW RA2 INSERT.
TSX $.WRHAO,4 NOW WRITE OUT RECORD ADDRESSES.
RECPNT ** .. POINTER TO RECORD ADDRESS AND COMMANDS
TRKER ..
SWT 6 WRITE CHECK IF SENSE SWITCH 6 IS DOWN
ZET CHECK .. OR IF SPECIFIED BY CONTROL CARD
TSX $.DWRCK,4 ..
TSX $.DWAIT,4 WAIT UNTIL ENTIRE OPERATION COMPLETE
CAL* RECPNT INCREMENT RECORD ADDRESS (WATCH SIGN BIT)
ACL =2 ..
STA* RECPNT ..
TIX R1LP,1,1 LOOP THROUGH TRACKS.
TRA READ GO PICK UP NEXT CONTROL CARD
REM
R1LST MZE **,,** WRITE DISK RECORD ADDRESSES
IOP =HXXXXXX,,1 .. HA2
IOP RA1,,1 .. RECORD ADDRESS 1
IOP ZEROES,,RECN .. FIRST RECORD
IOP ZEROES,,DUM1+DUM2+2 .. 2 DUMMY RECORDS AND ADDRESSES
IOP RA2,,1 .. RECORD ADDRESS 2
IOP ZEROES,,RECN .. SECOND RECORD
IOP ZEROES,,DUM3+DUML+2 .. 2 DUMMY RECORDS AND ADDRESSES
IOD ..
REM
R2LST MZE **,,** WRITE DRUM RECORD ADDRESS
IOP =HXXXXXX,,1 .. HA2
IOP RA1,,1 .. RECORD ADDRESS 1
IOP ZEROES,,RECN .. FIRST AND ONLY DATA RECORD
IOP ZEROES,,DUM3+1 .. DUMMY RECORD ADDRESS AND RECORD
IOP ZEROES,,DUML+1 .. DUMMY RECORD ADDRESS AND LAST RECORD
IOD ..
REM
RA1 PZE - RECORD ADDRESS 1.
RA2 PZE - RECORD ADDRESS 2.
CHECK PZE ** NON-ZERO FOR WRITE CHECKING
REM
EJECT
REM
REM LOADER ... WRITE CTSS LOADER ON FIRST CYLINDER OF
REM .. FIRST DISK MODULE (DEFINED BY CONTROL CARD).
REM
LOADER TSX NEXT,4 PICK UP DISK MODULE NO. FROM CARD
ILLEGL .. ERROR IF THIS FIELD VOID
TSX INT,4 CONVERT DISK MODULE NO. TO BINARY
ALS 18 .. INTO DECREMENT
STD WRTSSL MODULE NO. TO RECORD ADDRESS
REM
TSX $PRINT,4 PRINT 'SET SWITCHES FOR 65K MODE'
65K,,8 ..
WPRA SPACE UP PAGE ON LINE
SPRA 2 ..
HTR *+1 WAIT FOR OPERATOR
REM
AXT -1,4 CLEAR MEMORY 'B'
SEB ..
STZ -1,4 ..
TIX *-1,4,1 ..
SEA
REM
LOAD1 TSX $RTBINP,4 READ FIRST OR NEXT BINARY CARD FROM TAPE
CARD,,28 ..
ILLEOF .. EOF ILLEGAL AT THIS TIME
CAL CARD GET CARD WORD COUNT
ANA =O77077777 ..
PDX 0,4 .. INTO IR4
TXL LOAD4,4,0 TRANSFER CARD IF WORD COUNT ZERO
STA LOAD3 SET UP CARD LOADING ORIGIN
AXT 0,1
CAL CARD COMPUTE CHECKSUM
LOAD2 ACL CARD+2,1 .. AND LOAD CARD INTO MEMORY 'B'
LDQ CARD+2,1 ..
SEB ..
LOAD3 STQ **,1 ..
SEA ..
TNX *+2,4,1 ..
TXI LOAD2,1,-1 ..
ERA CARD+1 VERIFY CHECKSUM
TZE LOAD1 GET NEXT CARD IF CHECKSUM OK
REM
CAL CARD HERE FOR BAD CHECKSUM
LGR 15 LOADING ADDRESS TO MQ
AXT 5,4
ZAC CONVERT LOADING ADDRESS TO OCTAL IN BCD
ALS 3 ..
LGL 3 ..
TIX *-2,4,1 ..
ALS 6 LEAVE ROOM FOR COMMA AT END
ORA =H00000, .. ADD COMMA AT END
SLW CHKBAD+4 LOADING ADDRESS TO ERROR COMMENT
TSX $PRINT,4 PRINT ERROR COMMENT (CHECKSUM ERROR)
CHKBAD,,8 ..
HTR LOAD1 WAIT FOR DECISION ON ERROR
LOAD4 AXT -1,4 HERE FOR TRANSFER CARD
ZAC COMPUTE CHECKSUM FOR MEMORY 'B' IMAGE
SEB ..
ACL -1,4 ..
TIX *-1,4,1 ..
SEA
SLW CHKSUM SAVE CHECKSUM
CAL CARD PICK UP ABSOLUTE TRANSFER ADDRESS
STA LABLX INSERT INTO LABEL TRANSFER WORD
TSX $.WRCYL,4 WRITE OUT CORE IMAGE OF CTSS LOADER
WRTSSL ..
TRKER ..
TSX $.DWAIT,4 WAIT UNTIL WRITTEN
REM
TSX $PRINT,4 PRINT 'SET SWITCHES IN 32K MODE'
32K,,8 ..
WPRA SPACE UP PAGE ON LINE
SPRA 2 ..
HTR READ READ NEXT CARD ON RESTART
REM
WRTSSL MZE 0,,** WRITE OUT CTSS LOADER CORE IMAGE
IOP LABEL,,7 .. STARTING ADDRESS
IOP 0,1,-1 .. MEMORY 'B' CORE IMAGE (0-77776)
IOD ..
REM
ILLEOF TSX $PRINT,4 HERE ON EOF READING BINARY DECK
BADEOF,,9 .. PRINT ERROR COMMENT
HTR LOAD1 READ NEXT BINARY CARD ON RESTART
REM
LABEL CPYD 0,1,32767 'LABEL' FOR CYLINDER LOADER
XMT 38,,1 CLEAR CHANNEL INTERRUPT CELL
PZE 0,,0 ..
WTR 0 DISCONNECT CHANNEL
CHKSUM PZE ** CORE 'B' CHECK SUM
SEB FOR EXIT TO CORE 'B' FROM CYLOD000
LABLX TIB ** ADDRESS DETERMINED BY TRANSFER CARD
REM
65K BCI 8, SET SWITCHES IN '65K' MODE AND PRESS START.
32K BCI 8, SET SWITCHES IN '32K' MODE AND PRESS START.
CHKBAD BCI 9, CHECKSUM ERROR IN CARD 00000, PRESS START TO IGNORE.
BADEOF BCI 9, ILLEGAL EOF IN BINARY DECK, PRESS START TO IGNORE.
REM
EJECT
REM
REM SETMFD .... SET UP M.F.D. AND RECORD USAGE FILES ........
REM
SETMFD TSX NEXT,4 GET NO. OF DRUM MODULES FROM CARD
ILLEGL .. BLANK FIELD RETURN
TSX INT,4 CONVERT TO BINARY
PAX 0,4 CHECK NO. OF DRUM MODULES
TXL ILLEGL,4,0 .. ILLEGAL IF NMODS .E. 0
TXH ILLEGL,4,10 .. ILLEGAL IF NMODS .G. 10
XCA COMPUTE NO. OF WORDS FOR 'DRUMUT(FILE)'
MPY =400 ..
DVP =36 ..
STO REMAIN .. SAVE REMAINDER IF ANY
XCA ..
ZET REMAIN ..
ADD =1 .. ALWAYS ROUND 'UP'
STA DRMLC1 SET UP LCOUNT IN MFD ENTRY
ALS 18 AND IN DECREMENT OF LAST RECORD LABEL
STD DRMLC2 ..
REM
TSX NEXT,4 GET NO. OF DISK MODULES FROM CARD
ILLEGL .. BLANK FIELD RETURN
TSX INT,4 CONVERT TO BINARY
SLW NMODS SAVE NO. OF DISK MODULES
PAX 0,4 CHECK NUMBER OF DISK MODULES
TXL ILLEGL,4,0 .. ILLEGAL IF NMODS .E. 0
TXH ILLEGL,4,10 .. ILLEGAL IF NMODS .G. 10
XCA COMPUTE NO. OF WORDS FOR 'DISKUT(FILE)'
MPY =10000 ..
DVP =36 ..
STO REMAIN .. SAVE REMAINDER IF ANY
XCA ..
ZET REMAIN ..
ADD =1 .. ALWAYS ROUND 'UP'
STO TWORDS ..
LDQ NMODS ..
MPY =250 ..
DVP =36 ..
STO REMAIN .. SAVE REMAINDER IF ANY
XCA ..
ZET REMAIN ..
ADD =1 .. ALWAYS ROUND 'UP'
ADD TWORDS ..
STO TWORDS SAVE TOTAL NO. OF WORDS TO 'DISKUT(FILE)'
REM
XCA COMPUTE NO. OF RECORDS IN 'DISKUT(FILE)'
ZAC ..
DVP RECSIZ ..
STO REMAIN ..
XCA ..
ZET REMAIN .. ALWAYS ROUND 'UP'
ADD =1 ..
STA NRECS SET UP TO REMOVE THIS NO. OF RECORDS
ALS 18 NORECS TO DECREMENT
STD DSKNRC SET UP NORECS IN MFD ENTRY
CAL DRMUSD REMOVE THESE RECORDS FROM SERVICE
NRECS ARS ** ..
ARS 2 .. REMOVE 2 MORE FOR M.F.D. AND DRUMUT
SLW DRMUSD ..
CAL REMAIN SET UP NO. OF WORDS IN LAST TRACK OF DISKUT
TNZ *+3 ..
CAL RECSIZ .. SUBSTITUTE RECSIZ FOR '0'
SLW REMAIN ..
STA DSKNRC .. LCOUNT IS ADDRESS OF NORECS
CAL NRECS COMPUTE ADDRESS OF LAST TRACK OF DISKUT
ANA =O77777 ..
ACL POINTR ..
SUB =1 ..
LGR 18 ..
SLQ POINTR ..
REM
TSX $.DWRIT,4 WRITE OUT M.F.D. (FILE)
WRMFD ..
TRKER .. ILLEGAL TRACK RETURN
REM
LXA DRMLC1,4 COMPUTE WORD COUNT FOR DRUMUT (FILE)
TXI *+1,4,3 .. INCLUDE POINTER WORDS
SXD DRMUTL,4 ..
TSX $.DWRIT,4 WRITE OUT DRUMUT (FILE)
WDRMUT ..
TRKER .. ILLEGAL TRACK RETURN
REM
LXA TWORDS,1 SET UP DISK USAGE TABLE
WRDSKU TNX WRDKU2,1,DREC SKIP IF THIS WILL FIT ON LAST RECORD
CAL DKUREC OTHERWISE COMPUTE NEXT RECORD OF DISKUT
ACL =2 ..
SLW DKUNEX ..
TSX $.UNPAK,4 CONVERT NEXT RECORD ADDRESS
PAR DKUNEX ..
SLW TNEXT SET UP CHAIN TO NEXT RECORD
TSX $.DWRIT,4 WRITE OUT THIS RECORD OF DISKUT
DKUREC ..
TRKER ..
WRDKU1 TRA *+1 FIRST TIME THRU ONLY
LXA DKUCPY,4 BUMP STARTING ADDRESS TO START AT
TXI *+1,4,3 .. BUFFER OF ALL BITS
SXA DKUCPY,4 ..
STL WRDKU1 CLOSE THIS PATH
REM
TSX $.DWAIT,4 WAIT UNTIL RECORD WRITTEN
TSX $.UNPAK,4 SET NEXT RECORD TO POINT BACK
PAR DKUREC .. TO THIS RECORD
SLW TLAST ..
CAL DSKLBL SET UP NEXT RECORD LABEL
ADD =1 ..
SLW DSKLBL ..
CAL DKUNEX SET NEXT RECORD TO BE CURRENT RECORD
SLW DKUREC ..
TRA WRDSKU
EJECT
WRDKU2 STZ TNEXT HERE TO WRITE LAST RECORD
SXD DSKLBL,1 SET UP 'LCOUNT' IN LABEL OF LAST RECORD
SXD DKUCPY,1 ..
TSX $.DWRIT,4 WRITE OUT LAST RECORD OF DISKUT
DKUREC ..
TRKER ..
TSX $.DWAIT,4 WAIT UNTIL LAST RECORD WRITTEN
REM
TRA READ END OF SETMFD, GET NEXT CONTROL CARD
REM
NMODS PZE 0
REMAIN PZE 0
TWORDS PZE 0
DKUNEX PZE 0
RECSIZ PZE DREC NO. OF DATA WORDS PER PHYSICAL RECORD
REM
REM
* * * * * * * * * * * * * * * * * * * * * * * *
REM
REM .............. MASTER FILE DIRECTORY ..................
REM
WRMFD MZE 0,0,M TRACK ZERO OF DRUM.
IOP MFDP,,MFDPCT .. WRITE OUT MFD
IOD ..
REM
MFDP BCI 1,000000 NULL LAST.
BCI 1,000000 NULL NEXT.
PZE 1,0,MFDCNT FIRST TRACK.
REM
MFD PZE 0 THREE HEADER WORDS FOR DALEY.
PZE 0 ..
PZE 0 ..
REM
ENTRY1 BCI 1,M.F.D. MFD ENTRY.
BCI 1,(FILE) ..
VFD 9/65,4/2,5/3,18/0 DUMMY DATE-TIME.
VFD 9/65,4/2,5/3,18/0 DUMMY DATE-AUTHOR.
VFD O18/210000,3/1,15/DREC MODE-ILOCK-F-RCNT.
PZE MFDCNT,1,1 LCOUNT,P,NORECS.
VFD 18/M*10000+0,18/M*10000+0 LAST-FIRST
REM
ENTRY2 BCI 1,DRUMUT DRUM USAGE TABLE ENTRY.
BCI 1,(FILE) ..
VFD 9/65,4/2,5/3,18/0 DUMMY DATE-TIME.
VFD 9/65,4/2,5/3,18/0 DUMMY DATE-AUTHOR.
VFD O18/210000,3/1,15/DREC MODE-ILOCK-F-RCNT.
DRMLC1 PZE **,1,1 LCOUNT,P,NORECS
VFD 18/M*10000+1,18/M*10000+1 LAST-FIRST
REM
ENTRY3 BCI 1,DISKUT DISK USAGE TABLE ENTRY.
BCI 1,(FILE) ..
VFD 9/65,4/2,5/3,18/0 DUMMY DATE-TIME.
VFD 9/65,4/2,5/3,18/0 DUMMY DATE-AUTHOR.
VFD O18/210000,3/1,15/DREC MODE-ILOCK-F-RCNT.
DSKNRC PZE **,1,** LCOUNT,P,NORECS
POINTR VFD 18/000000,18/M*10000+2 LAST-FIRST
MFDCNT SYN *-MFD LENGTH OF ACTIVE MFD.
MFDPCT SYN *-MFDP TOTAL LENGTH OF MFD TRACK
REM
* * * * * * * * * * * * * * * * * * * * * * * *
REM
REM .......... DRUMUT (FILE), DRUM USAGE TABLE ............
REM
WDRMUT MZE 2,0,M TRACK 2 OF DRUM.
DRMUTL IOP DRMUTP,,** .. WRITE OUT DRUM USAGE TABLE
IOD ..
REM
DRMUTP BCI 1,000000 NULL LAST.
BCI 1,000000 NULL NEXT.
DRMLC2 PZE 1,,** RECORD LABEL (LCOUNT FILLED IN)
REM
DRMUSD DUP 1,120 MAXIMUM BITS FOR LARGEST DRUM USAGE TABLE
OCT 777777777777 .. FIRST WORD PROGRAM MODIFIED.
REM
* * * * * * * * * * * * * * * * * * * * * * * *
REM
REM .......... DISKUT (FILE), DISK USAGE TABLE .........
REM
DKUREC MZE 4,0,M START AT DRUM RECORD 4, (TRACK 2)
IOP TLAST,,3 .. COPY CHAIN WORDS
DKUCPY IOP DSKUTP,,DREC .. ADDRESS MODIFIED AFTER FIRST RECORD
IOD ..
REM
TLAST PZE - POINTER TO PRECEDING RECORD IF ANY
TNEXT PZE - POINTER TO NEXT RECORD IF ANY
DSKLBL PZE 1,,** RECORD LABEL
REM
DSKUTP OCT 000000000000 FIRST 40 TRACKS USED BY CTSS LOADER
OCT 037777777777 ..
OCT 777777777777 ..
DUP 1,DREC ALL BITS FOR REST OF DISK USAGE TABLE
OCT 777777777777 ..
REM
EJECT
REM
REM DUMP ... DUMP DISK OR DRUM TRACKS WITH RECORD ADDRESSES
REM
DUMP TSX NEXT,4 PICK UP MODULE NO. FROM CARD
ILLEGL .. ERROR IF THIS FIELD VOID
TSX INT,4 CONVERT TO BINARY
ALS 18 .. INTO DECREMENT
STD DMPREC MODULE NO. TO RECORD ADDRESS
REM
TSX NEXT,4 PICK UP STARTING RECORD FROM CARD
ILLEGL .. ERROR IF THIS FIELD VOID
TSX INT,4 CONVERT TO BINARY
ARS 1 INSURE EVEN RECORD ADDRESS
ALS 1 ..
STA DMPREC SET UP STARTING RECORD ADDRESS
REM
AXT 1,1 SET UP IN CASE COUNT MISSING
TSX NEXT,4 PICK UP TRACK COUNT IF SPECIFIED
DUMP1 .. SKIP IF COUNT NOT SPECIFIED
TSX INT,4 OTHERWISE, CONVERT COUNT TO BINARY
PAX 0,1 COUNT TO IR1
REM
DUMP1 TSX $WTDOUT,4 WRITE HEADER ON MONITOR OUTPUT TAPE
HEADER,,15 ..
REM
DUMP2 AXT TL,4 CLEAR TRACK AREA
STZ TRK+TL,4 ..
TIX *-1,4,1 ..
TSX $.RDHAO,4 READ ENTIRE TRACK (HA2 AND ADDRESSES)
DMPREC ..
TRKER ..
TSX $.DWAIT,4 WAIT UNTIL TRACK IS READ
CAL DMPREC PICK UP RECORD ADDRESS
ANA =O77777 ..
ARS 1 CHANGE TO TRACK ADDRESS
TSX BTDC,4 CONVERT TRACK NO. TO BCD
ALS 6 LEAVE ROOM FOR ',' AT END
ORA =H 0000, ..
SLW HA2COM+2 INTO TRACK COMMENT
LDQ HA2 CONVERT HOME ADDRESS 2 TO OCTAL
TSX BTOC,4 ..
SLW HA2COM+4 ..
TSX BTOC,4 ..
SLW HA2COM+5 ..
TSX $WTDOUT,4 DOUBLE SPACE BEFORE TRACK HEADER
SPACE2,,3 ..
TSX $WTDOUT,4 WRITE TRACK HEADER ON OUTPUT TAPE
HA2COM,,7 ..
TSX DPREC,4 DUMP OUT RECORD '0'
RECA1,,RECN+1 ..
TSX DPREC,4 DUMP OUT RECORD '1'
RECA2,,RECN+1 ..
CAL DMPREC BUMP RECORD ADDRESS FOR NEXT TRACK
ACL =2 ..
STA DMPREC ..
TIX DUMP2,1,1 BACK FOR NEXT TRACK IF MORE TO GO
REM
TRA READ GET NEXT CONTROL CARD WHEN DONE
REM
DMPREC MZE **,,** READ ENTIRE TRACK
IOP TRK,,TL ..
IOD ..
REM
TRK SYN * TRACK BUFFER
HA2 BSS 1 .. HOME ADDRESS 2
RECA1 BSS RECN+1 .. RECORD ADDRESS AND RECORD 1
BSS DUM1+1 .. DUMMY RECORD ADDRESS AND RECORD
BSS DUM2+1 .. DUMMY RECORD ADDRESS AND RECORD
RECA2 BSS RECN+1 .. RECORD ADDRESS AND RECORD 2
TL SYN *-TRK .. TRACK BUFFER COUNT
REM
SPACE2 BCI 3,0
HA2COM BCI 7,0***** TRACK 0000, HA2= 000000000000.
REM
EJECT
REM
REM DPREC ... UTILITY ROUTINE TO DUMP RECORD ON TAPE
REM
DPREC SXA DPRX1,1
SXA DPRX2,2
SXA DPRX4,4
CAL 1,4 PZE RECADR,,RECLEN+1
ARS 18
ACL 1,4 ADDRESS + COUNT
STA DPR2
PDX 0,1 COUNT TO IR1
TXI *+1,1,-1 REDUCE COUNT BY ONE
LDQ* 1,4 PICK UP RECORD ADDRESS
TSX BTOC,4 CONVERT TO OCTAL IN BCD
SLW RECCOM+3 ..
TSX BTOC,4 ..
SLW RECCOM+4 ..
TSX $WTDOUT,4 WRITE OUT RECORD HEADER
RECCOM,,6 ..
TSX $WTDOUT,4 SPACE ONE LINE
SPACE1,,3 ..
CAL =1 INITIALIZE RECORD WORD NO.
SLW RECWRD ..
REM
DPR1 AXT 22,4 BLANK OUT LINE BUFFER
LDQ =H ..
STQ CARD+22,4 ..
TIX *-1,4,1 ..
CAL RECWRD CONVERT WORD NO. OF FIRST WORD ON THIS LINE
TSX BTDC,4 .. TO BCD IN DECIMAL
ALS 6 LEAVE ROOM FOR '.' AT END
ORA =H 000. FORM WORD NO. (BCI 1, XXX.)
SLW CARD INTO LINE IMAGE
CAL RECWRD BUMP WORD NO. FOR NEXT LINE
ADD =7 ..
SLW RECWRD ..
AXT 21,2 SET UP NO. OF DATA WORDS PER LINE
STZ PRTSW RESET PRINT SWITCH
DPR2 CAL **,1 GET FIRST OR NEXT WORD FROM RECORD
TZE *+2 SKIP IF ZERO
STL PRTSW OTHERWISE SET SWITCH TO PRINT THIS LINE
XCL WORD TO MQ
TSX BTOC,4 CONVERT TO BCD IN OCTAL
SLW CARD+23,2 ..
TSX BTOC,4 ..
SLW CARD+24,2 ..
TNX DPR3,2,3 SKIP ON END OF LINE
TIX DPR2,1,1 END OF RECORD TEST
DPR3 NZT PRTSW IS LINE ALL ZEROS
TRA DPR4 YES, SKIP PRINTING OF THIS LINE
TSX $WTDOUT,4 NO, PRINT THIS LINE
CARD,,22 ..
DPR4 TIX DPR1,1,1 GET NEXT LINE IF MORE INPUT
DPRX1 AXT **,1 OTHERWISE
DPRX2 AXT **,2 RESTORE
DPRX4 AXT **,4 IRS
TRA 2,4 AND RETURN
REM
PRTSW PZE ** NON-ZERO TO PRINT LINE
RECWRD PZE - NO. OF FIRST WORD ON THIS LINE
REM
SPACE1 BCI 3,
RECCOM BCI 6,0 RECORD ADDRESS 000000000000.
REM
EJECT
REM
REM FIRST/NEXT ... UTILITY ROUTINES TO SCAN CONTROL CARD ....
REM
FIRST SXA SX1,1 SAVE XR1, FIRST WORD ENTRY.
AXT 12,1 COUNT 12 WORDS PER CARD.
STZ WORD CLEAR SYMBOL,
STZ BLKTST CLEAR BLANK TEST,
TRA SLDQ AND ENTER LOOP.
REM
NEXT SXA SX1,1 SAVE XR1, NEXT WORD ENTRY.
SCNX1 AXT **,1 RESTORE INDEX VALUE.
LDQ MQ GET PARTIAL WORD.
STZ WORD CLEAR SYMBOL.
STZ BLKTST CLEAR BLANK TEST.
TRA TIXL AND ENTER LOOP.
REM
SLDQ LDQ CARD+12,1 GET NEXT WORD,
TXI *+1,1,6*12-12 AND SETUP COUNT.
NLOOP ZAC CLEAR AC,
LGL 6 AND MOVE IN NEXT CHARACTER.
LAS =H00000 CHECK FOR BLANK.
TRA *+2 NO, SKIP.
TRA BLNK BLANK, EXIT.
STL BLKTST NO MORE BLANKS ACCEPTED.
LGR 6 BUILD SYMBOL.
CAL WORD ..
LGL 6 ..
SLW WORD ..
TIXL TIX NLOOP,1,12 COUNT CHARACTERS.
TIX SLDQ,1,1 COUNT WORDS.
SXA SCNX1,1 END OF CARD, RESET COUNT.
LXA SX1,1 RESTORE XR1,
ZAC SYMBOL IS ZERO,
TRA* 1,4 VOID RETURN.
REM
BLNK NZT BLKTST IS BLANK TERMINATOR.Q
TRA TIXL NO, IGNORE.
STQ MQ TERMINATOR, SAVE MQ.
SXA SCNX1,1 SAVE COUNT.
SX1 AXT **,1 RESTORE USER'S IR1
CAL WORD PICK UP LAST 6 CHARACTERS IN THIS FIELD
LDQ =H BLANKS TO MQ
LGR 6 LEFT ADJUST WORD IN MQ
TNZ *-1 ..
CAL WORD ALSO RETURN WORD RIGHT ADJUSTED IN LAC
TRA 2,4 ..
REM
BLKTST PZE ** NON-ZERO AFTER BEGINNING OF FIELD FOUND
MQ PZE - MQ SAVED ON RETURN
WORD PZE - LAST SIX CHARS. OF FIELD
REM
EJECT
REM
REM ROUTINE TO READ ONLINE CARDS
REM
CARDRD TCOA * WAIT FOR CHANNEL A TO STOP,
TEFA * THEN TURN OFF E-O-F INDICATOR.
RCDA
RCHA RDCARD READ IN A CARD,
TCOA * WAIT A WHILE,
TEFA $EXIT AND LEAVE IF LAST.
REM
AXT 12,4
STZ CARD+12,4 CLEAR BUFFER
TIX *-1,4,1
REM
AXT 4,4
CT9 AXC 13,2
LDI CTG
CT10 CAL* CTD+4,4
TXI *+1,2,2
ORA* CTD+4,4
SLW CTH
TXI *+1,2,-12
LDI* CTD+4,4
TXI *+1,2,2
OFT* CTD+4,4
CT11 TRA ERR
OSI* CTD+4,4
STI CTI
TXI *+1,2,20
LDI* CTD+4,4
TXI *+1,2,-16
AXT 7,1
CT12 OFT* CTD+4,4
CT13 TRA ERR
OSI* CTD+4,4
TXI *+1,2,2
TIX CT12,1,1
IIS CTH
OFT* CTD+4,4
TRA ERR
OSI* CTD+4,4
OSI CTH
TXI *+1,2,-16
PIA
ANA* CTD+4,4
SLW CTH
ANA CTI
TNZ ERR
CAL* CTD+4,4
OAI
OSI CTI
ANA CTI
SLW* CTD+4,4
PIA
COM
ORA CTH
TXI *+1,2,-6
SLW* CTD+4,4
CT20 AXT 6,1
CAL* CTD+4,4
SLW CTH
CT21 LDQ CTH
SXA X1,1
AXT 6,1
CT22 ALS 5
LGL 1
TIX CT22,1,1
X1 AXT **,1
STQ CTH
XCL
PCT23 MPY CTA-1,2
LLS 35
ACL* CTE+4,4
SLW* CTE+4,4
TIX CT21,1,1
CT24 TXH CT25,2,-3
TXI CT20,2,2
CT25 TIX CT9,4,2
TRA PCC
REM
ERR TSX $PRINT,4 HERE FOR ILLEGAL BCD IN CARD.
CHS,,CHS1
HTR CARDRD
REM
CHS BCI 8, ILLEGAL BCD CARD. PUSH START TO IGNORE IT.
CHS1 EQU *-CHS
REM
RDCARD IOCD 9ROWL,,24
REM
CTA OCT 11
PZE
OCT 10
PZE
OCT 7
PZE
OCT 6
PZE
OCT 5
CTD PZE 9ROWL-1,2
OCT 4
PZE 9ROWL,2
OCT 3
CTE PZE CARD+6,1
OCT 2
PZE CARD+12,1
CTF OCT 1
CTG PZE
OCT 12
CTH PZE
OCT 40
CTI PZE
OCT 20
CTJ PZE
OCT 60
9ROWL BSS 76
EJECT
REM
REM INT ..... UTILITY ROUTINE TO CONVERT BCD NO. TO BINARY
REM
INT SXA INTX4,4
STZ NUM
XCL BCD WORD TO MQ
AXT 6,4
INT1 ZAC CONVERT TO BINARY
LGL 3 ..
ADM NUM ..
LGL 3 ..
ADM NUM ..
ACL NUM ..
SLW NUM ..
TIX INT1,4,1 ..
INTX4 AXT **,4 BINARY NO. ALREADY IN AC
TRA 1,4 RETURN
REM
NUM PZE - TEMP FOR BUILDING BINARY INTEGER
REM
* * * * * * * * * * * * * * * * * * * * * * * *
REM
REM BTDC ... UTILITY ROUTINE TO CONVERT BINARY TO DECIMAL
REM
BTDC SXA BTDCX,4
XCL BINARY INTEGER TO MQ
STZ NUM ZERO BCD TEMP
AXT 36,4
BTDC1 ZAC CONVERT TO BCD IN DECIMAL
DVP =10 ..
ALS 36,4 ..
ORS NUM ..
TIX BTDC1,4,6 ..
CAL NUM RETURN BCD INTEGER IN AC
BTDCX AXT **,4 ..
TRA 1,4 ..
REM
* * * * * * * * * * * * * * * * * * * * * * * *
REM
REM BTOC ... UTILITY ROUTINE TO CONVERT BINARY TO OCTAL
REM
BTOC SXA BTOCX,4
ZAC BINARY NO. ALREADY IN MQ
AXT 6,4
BTOC1 ALS 3 CONVERT TO BCD IN OCTAL
LGL 3 ..
TIX BTOC1,4,1 ..
BTOCX AXT **,4 RETURN, BCD VALUE ALREADY IN AC
TRA 1,4 ..
REM
EJECT
REM
REM ERROR ... HERE FROM ERROR RETURN FROM DISK/DRUM ADAPTER
REM
ERROR TRA 1,4 IGNORE ERROR CALL FOR TIME BEING
REM
* * * * * * * * * * * * * * * * * * * * * * * *
REM
REM TRKER ... HERE FOR ILLEGAL TRACK ADDRESS RETURN
REM
TRKER TSX $PRINT,4 PRINT ERROR MESSAG ON LINE
BADTRK,,9 ..
HTR READ GET NEXT CONTROL CARD ON START
REM
BADTRK BCI 9, BAD TRACK ADDRESS, PRESS START TO READ NEXT CARD.
REM
* * * * * * * * * * * * * * * * * * * * * * * *
REM
ZEROES BSS RECN BUFFER OF ALL ZEROES
REM
TEST1 BSS MAXLEN SURFACE ANALYSIS TEST PATERNS
TEST2 BSS MAXLEN ..
TEST3 BSS MAXLEN ..
TEST4 BSS MAXLEN ..
REM
HEADER BCI 1,1 HEADER TO PRINT CARD IMAGE OFF LINE
CARD BSS 28 CARD IMAGE BUFFER
REM
DETAIL
$BLOCK BCD,0084
END
* FAP
$BLOCK BCD,1344
* M1416 786 R. DALEY .... DISK/DRUM INPUT/OUTPUT PACKAGE FOR 2302/7320DDIO0001
LINK OFF DDIO0002
DETAIL DDIO0003
ENTRY .DINIT TO INITIALIZE DISK/DRUM CHANNELS DDIO0004
ENTRY .DWAIT TO WAIT UNTIL PREVIOUS I/O COMPLETED DDIO0005
ENTRY .REFER TO REFER CONTROL ON COMPLETED I/O DDIO0006
ENTRY .SETER TO REFER CONTROL ON I/O ERROR FROM .DWAIT DDIO0007
ENTRY .DRSET TO RESTART STRAT. MOD. AFTER LOST TRAPS DDIO0008
ENTRY .FORCE TO FORCE TRAP IF NO I/O IN OPERATION DDIO0009
ENTRY .WRFMT TO WRITE WITH FORMAT OPERATION DDIO0010
ENTRY .WRHAO TO WRITE WITH HA1 OPERATION DDIO0011
ENTRY .WRTRO TO WRITE WITH FULL TRACK OPERATION DDIO0012
ENTRY .WRCYL TO WRITE WITH CYLINDER OPERATION DDIO0013
ENTRY .DWRIT TO WRITE WITH SINGLE RECORD OPERATION DDIO0014
ENTRY .DWRCK TO WRITE-CHECK PREVIOUS WRITE OPERATION DDIO0015
ENTRY .RDHAO TO READ WITH HA1 OPERATION DDIO0016
ENTRY .RDTRO TO READ WITH FULL TRACK OPERATION DDIO0017
ENTRY .RDCYL TO READ WITH CYLINDER OPERATION DDIO0018
ENTRY .DREAD TO READ WITH SINGLE RECORD OPERATION DDIO0019
ENTRY .UNPAK TO UNPACK RECORD ADDRESS DDIO0020
ENTRY .PACK TO PACK RECORD ADDRESS INTO 18 BITS DDIO0021
REM DDIO0022
EXTERN ALLSAV,ALLRST,WRTOPR,CMEXIT DDIO0023
REM DDIO0024
CHANLS EQU 3 NO. OF CHANNELS DDIO0025
BSZ EQU 50 SIZE OF DRAIN BUFFER (FOR 'ION') DDIO0026
B EQU 0 MEMORY B SWITCH ('0' FOR A, '1' FOR B) DDIO0027
IOSMOD EQU 0 NON-ZERO IF I/O ADAPTER PART OF FILE SYSTEMDDIO0028
DENB BOOL 4 DISK/DRUM ENABLE WORD, CHANNEL C ONLY DDIO0029
REM DDIO0030
REM DISK/DRUM MODULE TABLE DDIO0031
REM DDIO0032
MODTBL OCT 3001212 ACCESS 0, MODULE 0, CHANNEL C DDIO0033
OCT 3000112 ACCESS 1, MODULE 0, CHANNEL C DDIO0034
OCT 3001201 ACCESS 0, MODULE 1, CHANNEL C DDIO0035
OCT 3000101 ACCESS 1, MODULE 1, CHANNEL C DDIO0036
OCT 3001204 ACCESS 0, MODULE 4, CHANNEL C DDIO0037
OCT 3000104 ACCESS 1, MODULE 4, CHANNEL C DDIO0038
OCT 3001205 ACCESS 0, MODULE 5, CHANNEL C DDIO0039
OCT 3000105 ACCESS 1, MODULE 5, CHANNEL C DDIO0040
OCT -3001202 ACCESS 0, MODULE 2, CHANNEL C DDIO0041
HIMOD EQU *-MODTBL-1 HIGHEST LOGICAL MODULE NUMBER DDIO0042
REM DDIO0043
WHEN MACRO A,TFIND,LOC,OP,ADDR,TAG,DECR WHENEVER MACRO DDIO0044
IFF 1,TFIND,T DDIO0045
GENIF A,0,0,LOC,OP,ADDR,TAG,DECR, DDIO0046
IFF 1,TFIND,F DDIO0047
GENIF A,0,1,LOC,OP,ADDR,TAG,DECR, DDIO0048
WHEN END DDIO0049
REM DDIO0050
GENIF MACRO IF1,IF2,IF3,LOC,OP,ADDR,TAG,DECR DDIO0051
IFF IF1,IF2,IF3 DDIO0052
GENOP LOC,OP,ADDR,TAG,DECR, DDIO0053
GENIF END DDIO0054
REM DDIO0055
GENOP MACRO LOC,OP,ADDR,TAG,DECR GENERATE OPERATION DDIO0056
PMC ON DDIO0057
LOC OP ADDR,TAG,DECR DDIO0058
PMC OFF DDIO0059
GENOP END DDIO0060
REM DDIO0061
OVLBGN MACRO USED AT START OF SECTION TO BE OVERLAPPED DDIO0062
IFF IOSMOD .. OVERLAP IF IOSMOD .G. 0 DDIO0063
UNLIST .. SUSPEND LISTING OF OVERLAPPED SECTION DDIO0064
IFF IOSMOD .. DDIO0065
OVLORG SET * .. SAVE CURRENT LOCATION COUNTER DDIO0066
OVLBGN END DDIO0067
REM DDIO0068
OVLEND MACRO USED AT END OF SECTION TO BE OVERLAPPED DDIO0069
IFF IOSMOD .. DDIO0070
ORG OVLORG .. RE-ORIGIN AT SAVED LOCATION COUNTER DDIO0071
IFF IOSMOD .. DDIO0072
LIST .. RESTORE LISTING DDIO0073
OVLEND END DDIO0074
REM DDIO0075
REM DDIO0077
REM .DINIT .... INITIALIZATION ENTRY FOR DISK/DRUM ADAPTER DDIO0078
REM DDIO0079
.DINIT LMTM INITIALIZE DISK/DRUM CHANNELS DDIO0080
CAL* 1,4 GET LOCATION OF COMMON ENABLE WORD DDIO0081
STA ENABLE .. AND SAVE IT DDIO0082
AXC 1,6 INITIALIZE CHANNEL POINTER DDIO0083
AXT CHANLS,7 NO. OF CHANNELS TO IR7 DDIO0084
LDI DTRAP. TRA ON TRAP TO SI DDIO0085
LDQ DINTR. TCH ON INTERRUPT TO MQ DDIO0086
DI1 CAL DENBWD SET UP DISK/DRUM CHANNELS DDIO0087
ARS CHANLS,7 .. DDIO0088
LBT .. DDIO0089
TRA DI2 .. SKIP IF NO DISK/DRUM ON THIS CHANNEL DDIO0090
CAL CTIL,6 .. DDIO0091
WHEN B,T,,SEA,,,,, .. DDIO0092
PAC 0,5 .. SET UP TRAP LOCATIONS DDIO0093
STZ 0,5 .. DDIO0094
STI 1,5 .. DDIO0095
PDC 0,5 .. SET UP CHANNEL INTERRUPT LOCATIONS DDIO0096
STZ 0,5 .. DDIO0097
STQ 1,5 .. DDIO0098
WHEN B,T,,SEB,,,,, .. DDIO0099
XEC RICOP,6 .. RESET THIS CHANNEL DDIO0100
AXC SETUP,5 .. AND DDIO0101
XEC RSCOP,6 .. SET CHANNEL IN 6-BIT MODE DDIO0102
DI2 TNX *+2,7,1 .. DDIO0103
TXI DI1,6,-1 .. DDIO0104
CAL DENBWD ADD DISK/DRUM ENABLE TO COMMON ENABLE WORD DDIO0105
ORS* ENABLE .. TO COMMON ENABLE WORD DDIO0106
ENB* ENABLE ENABLE FOR ALL TRAPS DDIO0107
TRA 2,4 AND RETURN DDIO0108
REM DDIO0109
REM DDIO0111
.REFER CAL 1,4 ENTRY TO REFER ALL TRAPS TO USER DDIO0112
STA USRTRP .. AT LOCATION SPECIFIED BY 1,4 DDIO0113
STA REFRSW .. DDIO0114
TRA 2,4 DDIO0115
REM DDIO0116
.SETER CAL 1,4 ENTRY TO SET USER ENTRY ON DISK/DRUM ERROR DDIO0117
ANA =O77777 .. GET ADDRESS OF USER ERROR ROUTINE DDIO0118
TNZ *+2 .. SKIP IF ADDRESS PROVIDED DDIO0119
CAL =O400001 .. OTHERWISE SUBSTITUTE TRA 1,4 DDIO0120
STA UERROR .. SET UP CALL TO USER DDIO0121
STT UERROR .. ON ALL DISK/DRUM ERROS DDIO0122
TRA 2,4 DDIO0123
REM DDIO0124
.DRSET STZ BUSY BLAST OUT BUSY FLAG DDIO0125
CAL =2 ERROR CALL IF TRAP EXPECTED BY STRAT. MOD. DDIO0126
TRA FRC1 .. DDIO0127
REM DDIO0128
.FORCE ZET BUSY ENTRY TO FORCE TRAP IF CHANNELS INACTIVE DDIO0129
TRA 1,4 RETURN IF CHANNELS BUSY DDIO0130
PXD ,0 NO ERRORS DDIO0131
FRC1 NZT REFRSW IS USER INTERRUPT PROCEDURE DEFINED DDIO0132
TRA 1,4 NO, RETURN DDIO0133
ENB =0 YES, DISABLE ALL TRAPS DDIO0134
SLW FRCTMP SAVE ERROR FLAG DDIO0135
STL TRAPSW INDICATE TRAP IN PROCESS DDIO0136
SXA FRCIR4,4 SAVE IR4 DDIO0137
TSX ALLSAV,4 SAVE REST OF MACHINE CONDITIONS DDIO0138
TSX USRTRP,4 GO TO USER INTERRUPT PROCEDURE DDIO0139
PTH FRCTMP .. ERROR FLAG DDIO0140
TSX ALLRST,4 RESTORE MACHINE CONDITIONS DDIO0141
FRCIR4 AXT **,4 .. DDIO0142
STZ TRAPSW CLEAR TRAP-IN-PROCESS INDICATOR DDIO0143
ENB* ENABLE REENABLE ALL TRAPS DDIO0144
TRA 1,4 AND RETURN DDIO0145
REM DDIO0146
* * * * * * * * * * * * * * * * * * * * * * * * DDIO0147
REM DDIO0148
.DWAIT TSX DWAIT,7 ENTRY TO WAIT UNTIL I/O COMPLETED DDIO0149
NZT TRAPSW RESTORE STATUS OF ENABLE REGISTER DDIO0150
ENB* ENABLE IF NECESSARY DDIO0151
TRA 1,4 RETURN WHEN DONE DDIO0152
REM DDIO0153
DWAIT NZT TRAPSW IS ROUTINE CALLED DURING TRAP-TIME DDIO0154
ENB* ENABLE NO, MAKE SURE TRAPS CAN BE TAKEN DDIO0155
ZET BUSY LOOP UNTIL CHANNEL IS FREE DDIO0156
TRA *-1 .. DDIO0157
ENB =0 NOW DISABLE ALL TRAPS DURING FOLLOWING OPERDDIO0158
NZT ERROR WAS THERE AN ERROR DDIO0159
TRA 1,7 NO, RETURN DDIO0160
SXA DWAITX,4 YES, SAVE USER'S IR4 DDIO0161
CAL ERROR PICK UP ERROR FLAG DDIO0162
STZ ERROR AND RESET ERROR DDIO0163
TSX UERROR,4 CALL USER'S ERROR ROUTINE (FLAG IN AC) DDIO0164
DWAITX AXT **,4 RESTORE USER'S IR4 DDIO0165
TRA 1,7 AND RETURN TO CALLER DDIO0166
EJECT DDIO0167
REM DDIO0168
OVLBGN DDIO0169
REM DDIO0170
.WRFMT TSX DWAIT,7 ENTRY TO WRITE FORMAT TRACK DDIO0171
TSX CVTRK,7 CONVERT USER RECORD ADDRESS DDIO0172
LGR 12 LAST TWO CHARACTERS ALREADY IN MQ DDIO0173
LDI DSEK SET UP SEEK ORDER DDIO0174
OAI ORD-ORD-ACC-MOD-TRK-TRK, TRK-TRK----- DDIO0175
STI SEEKW .. DDIO0176
STQ SEEKW+1 .. DDIO0177
LDI DWRF SET UP WRITE FORMAT ORDER DDIO0178
OAI ORD-ORD-ACC-MOD-TRK-TRK, TRK-TRK----- DDIO0179
STI R.WORD .. DDIO0180
STQ R.WORD+1 .. DDIO0181
CAL CTLW LOAD WRITE COMMAND DDIO0182
TRA SETCOM GO SET UP FOR WRITE OPERATION DDIO0183
REM DDIO0184
.WRHAO TSX DWAIT,7 ENTRY TO WRITE WITH HOME ADDRESS OPERATION DDIO0185
TSX CVTRK,7 CONVERT USER RECORD ADDRESS DDIO0186
LGR 12 LAST TWO CHARACTERS ALREADY IN MQ DDIO0187
LDI DSEK SET UP SEEK ORDER DDIO0188
OAI ORD-ORD-ACC-MOD-TRK-TRK, TRK-TRK----- DDIO0189
STI SEEKW .. DDIO0190
STQ SEEKW+1 .. DDIO0191
LDI DVHA SET UP WRITE HOME ADDRESS ORDER DDIO0192
OAI ORD-ORD-ACC-MOD-TRK-TRK, TRK-TRK----- DDIO0193
STI R.WORD .. DDIO0194
STQ R.WORD+1 .. DDIO0195
CAL CTLW LOAD WRITE COMMAND DDIO0196
TRA SETCOM GO SET UP FOR WRITE OPERATION DDIO0197
REM DDIO0198
.WRTRO TSX DWAIT,7 ENTRY TO WRITE FULL TRACK WITH ADDRESSES DDIO0199
TSX CVTRK,7 CONVERT USER RECORD ADDRESS DDIO0200
LDQ =HXX0000 HA2 REPLACES LAST CHARACTERS OF RECORD ADDRDDIO0201
LGR 12 LOW-ORDER TRACK ADDRESS TO MQ DDIO0202
LDI DSEK SET UP SEEK ORDER DDIO0203
OAI ORD-ORD-ACC-MOD-TRK-TRK, TRK-TRK----- DDIO0204
STI SEEKW .. DDIO0205
STQ SEEKW+1 .. DDIO0206
LDI DVTA SET UP TRACK WITH ADDRESSES ORDER DDIO0207
OAI ORD-ORD-ACC-MOD-TRK-TRK, TRK-TRK-HA2-HA2---DDIO0208
STI R.WORD .. DDIO0209
STQ R.WORD+1 .. DDIO0210
CAL CTLW LOAD WRITE COMMAND DDIO0211
TRA SETCOM GO SET UP FOR WRITE OPERATION DDIO0212
REM DDIO0213
.WRCYL TSX DWAIT,7 ENTRY TO WRITE WITH CYLINDER OPERATION DDIO0214
TSX CVTRK,7 CONVERT USER RECORD ADDRESS DDIO0215
LDQ =HXX0000 HA2 REPLACES LAST CHARS OF RECORD ADDRESS DDIO0216
LGR 12 LOW-ORDER TRACK ADDRESS TO MQ DDIO0217
LDI DSEK SET UP SEEK ORDER DDIO0218
OAI ORD-ORD-ACC-MOD-TRK-TRK, TRK-TRK----- DDIO0219
STI SEEKW .. DDIO0220
STQ SEEKW+1 .. DDIO0221
LDI DVCY SET UP CYLINDER OPERATION DDIO0222
OAI ORD-ORD-ACC-MOD-TRK-TRK, TRK-TRK-HA2-HA2---DDIO0223
STI R.WORD .. DDIO0224
STQ R.WORD+1 .. DDIO0225
CAL CTLW LOAD WRITE COMMAND DDIO0226
TRA SETCOM GO SET UP FOR WRITE OPERATION DDIO0227
REM DDIO0228
OVLEND DDIO0229
REM DDIO0230
.DWRIT TSX DWAIT,7 ENTRY TO WRITE SINGLE RECORD DDIO0231
TSX CVTRK,7 CONVERT USER RECORD ADDRESS DDIO0232
LGR 12 LAST TWO CHARACTERS ALREADY IN MQ DDIO0233
LDI DSEK SET UP SEEK ORDER DDIO0234
OAI ORD-ORD-ACC-MOD-TRK-TRK, TRK-TRK----- DDIO0235
STI SEEKW .. DDIO0236
STQ SEEKW+1 .. DDIO0237
LDI DVSR SET UP SINGLE RECORD ORDER DDIO0238
OAI ORD-ORD-ACC-MOD-REC-REC, REC-REC-REC-REC---DDIO0239
STI R.WORD .. DDIO0240
STQ R.WORD+1 .. DDIO0241
CAL CTLW LOAD WRITE COMMAND DDIO0242
TRA SETCOM GO SET UP FOR WRITE OPERATION DDIO0243
REM DDIO0244
OVLBGN DDIO0245
REM DDIO0246
.RDHAO TSX DWAIT,7 ENTRY TO READ WITH HOME ADDRESS 2 DDIO0247
TSX CVTRK,7 CONVERT USER RECORD ADDRESS DDIO0248
LGR 12 LAST TWO CHARACTERS ALREADY IN MQ DDIO0249
LDI DSEK SET UP SEEK ORDER DDIO0250
OAI ORD-ORD-ACC-MOD-TRK-TRK, TRK-TRK----- DDIO0251
STI SEEKW .. DDIO0252
STQ SEEKW+1 .. DDIO0253
LDI DVHA SET READ HOME ADDRESS ORDER DDIO0254
OAI ORD-ORD-ACC-MOD-TRK-TRK, TRK-TRK----- DDIO0255
STI R.WORD .. DDIO0256
STQ R.WORD+1 .. DDIO0257
CAL CTLR LOAD READ COMMAND DDIO0258
TRA SETCOM GO SET UP FOR READ OPERATION DDIO0259
REM DDIO0260
.RDTRO TSX DWAIT,7 ENTRY TO READ FULL TRACK WITH ADDRESSES DDIO0261
TSX CVTRK,7 CONVERT USER RECORD ADDRESS DDIO0262
LDQ =HXX0000 HA2 REPLACES LAST CHARACTERS OF RECORD ADDRDDIO0263
LGR 12 LOW-ORDER TRACK ADDRESS TO MQ DDIO0264
LDI DSEK SET UP SEEK ORDER DDIO0265
OAI ORD-ORD-ACC-MOD-TRK-TRK, TRK-TRK----- DDIO0266
STI SEEKW .. DDIO0267
STQ SEEKW+1 .. DDIO0268
LDI DVTA SET UP TRACK WITH ADDRESSES ORDER DDIO0269
OAI ORD-ORD-ACC-MOD-TRK-TRK, TRK-TRK-HA2-HA2---DDIO0270
STI R.WORD .. DDIO0271
STQ R.WORD+1 .. DDIO0272
CAL CTLR LOAD READ COMMAND DDIO0273
TRA SETCOM GO SET UP FOR READ OPERATION DDIO0274
REM DDIO0275
.RDCYL TSX DWAIT,7 ENTRY TO READ WITH CYLINDER OPERATION DDIO0276
TSX CVTRK,7 CONVERT USER RECORD ADDRESS DDIO0277
LDQ =HXX0000 HA2 REPLACES LAST CHARS OF RECORD ADDRESS DDIO0278
LGR 12 LOW-ORDER TRACK ADDRESS TO MQ DDIO0279
LDI DSEK SET UP SEEK ORDER DDIO0280
OAI ORD-ORD-ACC-MOD-TRK-TRK, TRK-TRK----- DDIO0281
STI SEEKW .. DDIO0282
STQ SEEKW+1 .. DDIO0283
LDI DVCY SET UP CYLINDER OPERATION DDIO0284
OAI ORD-ORD-ACC-MOD-TRK-TRK, TRK-TRK-HA2-HA2---DDIO0285
STI R.WORD .. DDIO0286
STQ R.WORD+1 .. DDIO0287
CAL CTLR LOAD READ COMMAND DDIO0288
TRA SETCOM GO SET UP FOR READ OPERATION DDIO0289
REM DDIO0290
OVLEND DDIO0291
REM DDIO0292
.DREAD TSX DWAIT,7 ENTRY TO READ SINGLE RECORD DDIO0293
TSX CVTRK,7 CONVERT USER RECORD ADDRESS DDIO0294
LGR 12 LAST TWO CHARACTERS ALREADY IN MQ DDIO0295
LDI DSEK SET UP SEEK ORDER DDIO0296
OAI ORD-ORD-ACC-MOD-TRK-TRK, TRK-TRK----- DDIO0297
STI SEEKW .. DDIO0298
STQ SEEKW+1 .. DDIO0299
LDI DVSR SET UP SINGLE RECORD ORDER DDIO0300
OAI ORD-ORD-ACC-MOD-REC-REC, REC-REC-REC-REC---DDIO0301
STI R.WORD .. DDIO0302
STQ R.WORD+1 .. DDIO0303
CAL CTLR LOAD READ COMMAND DDIO0304
REM DDIO0305
SETCOM SLW CTLR.W SET READ OR WRITE COMMAND IN CHANNEL PROG. DDIO0306
CAL 1,4 EFFECTIVE ADDRESS (EFA PTR,T) DDIO0307
STT *+1 COMPUTE EFFECTIVE ADDRESS DDIO0308
PCA 0,** .. DDIO0309
ACL 1,4 .. DDIO0310
PAC 0,6 -POINTER TO IR6 DDIO0311
AXC 0,5 DDIO0312
GETCM1 LDI 1,6 GET FIRST OR NEXT COMMAND FROM USER'S LIST DDIO0313
LFT 700000 IS IT 'IOD' (PREFIX ZERO) DDIO0314
TXI GETCM3,6,-1 NO, GO SET UP CPYP FOR THIS COMMAND DDIO0315
TXH GETCM2,5,0 YES, SKIP IF AT LEAST ONE COMMAND FOUND DDIO0316
STZ COPYPR,5 OTHERWISE ZERO FIRST COPY COMMAND DDIO0317
TXI GETCM2,5,-1 AND BUMP POINTER DDIO0318
GETCM2 CAL CPYD CHANGE LAST CPYP TO CPYD COMMAND DDIO0319
ORS COPYPR-1,5 .. DDIO0320
CAL TWT SET UP TWT AT END OF COPY COMMANDS DDIO0321
SLW COPYPR,5 .. DDIO0322
TRA STCHAN GO START UP DISK/DRUM CHANNEL PROGRAM DDIO0323
REM DDIO0324
GETCM3 LNT 200000 IS COMMAND 'IOP' (PTW) DDIO0325
TRA GETCM4 NO, SKIP DDIO0326
RIS =O700000600000 YES DDIO0327
OSI CPYP .. CHANGE TO CPYP DDIO0328
STI COPYPR,5 AND SAVE IN CHANNEL PROGRAM DDIO0329
TXI GETCM1,5,-1 GO BACK TO CHECK FOR NEXT COMMAND DDIO0330
REM DDIO0331
GETCM4 PIA HERE FOR 'ION' (PON) DDIO0332
PDX 0,7 WORD COUNT TO IR7 DDIO0333
GETCM5 TNX GETCM6,7,BSZ SKIP IF .LE. BSZ DDIO0334
CAL DRN1 OTHERWISE, DRAIN OFF 'BSZ' WORDS DDIO0335
SLW COPYPR,5 .. DDIO0336
TXI GETCM5,5,-1 CONTINUE UNTIL WORD COUNT EXHAUSTED DDIO0337
REM DDIO0338
GETCM6 SXD DRN2,7 COPY LAST BLOCK INTO DRAIN BUFFER ALSO DDIO0339
CAL DRN2 .. DDIO0340
SLW COPYPR,5 .. INTO CHANNEL PROGRAM DDIO0341
TXI GETCM1,5,-1 GO BACK TO CHECK FOR NEXT COMMAND DDIO0342
REM DDIO0343
STCHAN STL BUSY SET CHANNEL BUSY SWITCH DDIO0344
RSCHN1 *** SKTRAK START UP DISK DRUM CHANNEL PROGRAM DDIO0345
NZT TRAPSW TEST IF CALL MADE DURING TRAP DDIO0346
ENB* ENABLE NO, RE-ENABLE TRAPS DDIO0347
TRA 3,4 AND RETURN DDIO0348
REM DDIO0349
* * * * * * * * * * * * * * * * * * * * * * * * DDIO0350
REM DDIO0351
.DWRCK TSX DWAIT,7 ENTRY TO WRITE-CHECK PREVIOUS OPERATION DDIO0352
CAL CTLW SET UP WRITE COMMAND DDIO0353
SLW CTLR.W .. DDIO0354
LDI R.WORD ORD-ORD-ACC-MOD-TRK-TRK, TRK-TRK----- DDIO0355
RIL 777700 MASK OUT PREVIOUS ORDER CODE DDIO0356
OSI DWRC SET WRITE-CHECK ORDER DDIO0357
STI R.WORD DDIO0358
STL RECAL INSURE NO RECALIBRATION DDIO0359
STL BUSY SET CHANNEL BUSY SWITCH DDIO0360
RSCHN2 *** CKTRAK START CHANNEL PROGRAM TO WRITE-CHECK DDIO0361
NZT TRAPSW AS IT WAS IN THE BEGINNING, DDIO0362
ENB* ENABLE IS NOW ... DDIO0363
TRA 1,4 AND RETURN DDIO0364
REM DDIO0365
EJECT DDIO0366
REM DDIO0367
CVTRK CLA* 1,4 ROUTINE TO SET UP TRACK ADDRESS DDIO0368
TPL CVTRK1 SKIP IF RECORD ADDRESS ALREADY CONVERTED DDIO0369
SXA CVTX4,4 OTHERWISE, SAVE USER'S IR4 DDIO0370
TSX UNPACK,4 AND CONVERT RECORD ADDRESS DDIO0371
CVTX4 AXT **,4 RESTORE USER'S IR4 DDIO0372
REM DDIO0373
CVTRK1 XCL TRACK ADDRESS TO MQ DDIO0374
ZAC DDIO0375
LGL 6 PICK UP LOGICAL MODULE NUMBER DDIO0376
PAC 0,5 -LOGICAL MODULE NO. TO IR5 DDIO0377
TXI *+1,5,10 SUBSTITUTE '0' FOR OCTAL '12' DDIO0378
TXL CVTRK2,5,0 .. SKIP IF -MODNO+12= 0 DDIO0379
TXI *+1,5,-10 .. DDIO0380
TXL BADREC,5,-HIMOD-1 ERROR IF MODNO .G. HIMOD DDIO0381
CVTRK2 LGR 6 REPLACE LOGICAL MODULE NUMBER DDIO0382
RQL 6 .. AT END OF RECORD ADDRESS DDIO0383
CLA MODTBL,5 PICK UP PHYSICAL MODULE AND CHANNEL NO. DDIO0384
TPL *+2 SKIP IF DISK UNIT DDIO0385
STL RECAL HERE IF DRUM, SET FOR NO RECALIBRATION DDIO0386
PDC 0,5 -CHANNEL NO. TO IR5 DDIO0387
ANA =O7777 NECESSARY ONLY TO PREVENT AC OVERFLOW DDIO0388
LGL 24 BRING HIGH ORDER 4 BITS OF RECORD ADDRESS DDIO0389
STQ RECSAV SAVE LOW-ORDER RECORD ADDRESS DDIO0390
LDQ RSCOP,5 GET RSC OPERATION FOR THIS CHANNEL DDIO0391
SLQ RSCHN1 .. DDIO0392
SLQ RSCHN2 .. DDIO0393
SCA CHANNO,5 SAVE CHANNEL NUMBER DDIO0394
LDQ RECSAV RELOAD LOW-ORDER RECORD ADDRESS DDIO0395
TRA 1,7 RETURN TO READ OR WRITE SET UP ROUTINE DDIO0396
REM DDIO0397
BADREC NZT TRAPSW AND EVER SHALL BE, DDIO0398
ENB* ENABLE WORLD WITHOUT END (AMEN) DDIO0399
TRA* 2,4 BAD RECORD ADDRESS, TAKE ERROR RETURN DDIO0400
REM DDIO0401
EJECT DDIO0402
REM DDIO0403
REM .PACK/.UNPAK ... PACK AND UNPACK TRACK AND RECORD ADDRESSDDIO0404
REM DDIO0405
.PACK AXC 0,5 ROUTINE TO PACK LOGICAL RECORD ADDRESS DDIO0406
ZET TRAPSW IS A TRAP CURRENTLY IN PROCESS DDIO0407
AXC 1,5 IF SO, SET TO USE TMP+1 FOR TEMP STORAGE DDIO0408
CAL* 1,4 CONVERT '12' TO OCTAL '00' IN RECORD ADDR. DDIO0409
ADD =H666666 .. 12 GOES TO 20 (OCTAL) DDIO0410
ANA =H++++++ .. SAVE 20S ONLY DDIO0411
ARS 1 .. 20S TO 10S DDIO0412
SLW TMP,5 .. SAVE 10S DDIO0413
ARS 2 .. 10S TO 02S DDIO0414
ORA TMP,5 .. 02S TO 12S IN AC DDIO0415
ERA* 1,4 .. MASK OUT ALL 12S IN RECORD ADDRESS DDIO0416
XCL BCD RECORD ADDRESS TO MQ DDIO0417
RQL 30 MOVE RECORD BIT TO FIRST CHARACTER POSITIONDDIO0418
AXT 6,6 DDIO0419
STZ TMP,5 DDIO0420
PAC1 ZAC CONVERT RECORD (RMTTTT) TO BINARY (18 BITS)DDIO0421
LGL 3 .. DDIO0422
ADM TMP,5 .. DDIO0423
LGL 3 .. DDIO0424
ADM TMP,5 .. DDIO0425
ACL TMP,5 .. DDIO0426
SLW TMP,5 .. DDIO0427
TIX PAC1,6,1 .. DDIO0428
TRA 2,4 AND RETURN (PACKED ADDRESS IN AC) DDIO0429
REM DDIO0430
.UNPAK CLA* 1,4 ROUTINE TO UNPACK TRACK ADDRESS DDIO0431
TXI UNPACK,4,-1 .. FROM 18-BIT BINARY FORMAT DDIO0432
REM DDIO0433
UNPACK AXC 0,5 ASSUME NOT IN TRAP MODE DDIO0434
ZET TRAPSW IS A TRAP CURRENTLY IN PROCESS DDIO0435
AXC 1,5 IF SO, SET TO USE TMP+1 FOR TEMP STORAGE DDIO0436
TMI UPAC3 SKIP IF MZE RECNO,,MODNO DDIO0437
XCL DDIO0438
AXT 36,6 OTHERWISE ASSUME 18-BIT FORMAT DDIO0439
STZ TMP,5 DDIO0440
UPAC2 ZAC CONVERT TRACK TO BCD FORMAT DDIO0441
DVP =10 .. DDIO0442
ALS 36,6 .. DDIO0443
ORS TMP,5 .. DDIO0444
TIX UPAC2,6,6 .. DDIO0445
TRA UPAC5 SKIP TO RETURN TRACK IN LAC DDIO0446
REM DDIO0447
UPAC3 PDX 0,6 HERE FOR MZE RECNO,,MODNO DDIO0448
LDQ =0 .. MODNO SAVED IN IR6 DDIO0449
LGR 1 CONVERT RECORD BIT DDIO0450
ALS 5 .. TO 6-BIT CHARACTER DDIO0451
LGR 5 .. DDIO0452
ANA =O77777 .. GET TRACK ADDRESS ALONE IN AC DDIO0453
XCL .. DDIO0454
PAI .. SAVE RECORD CHARACTER IN SI DDIO0455
PXD 0,6 MODULE NUMBER TO AC DECREMENT DDIO0456
ALS 6 PLACE IN SECOND CHARACTER POSITION DDIO0457
OAI ADD MODULE CHAR. TO RECORD CHAR. DDIO0458
STI TMP,5 SAVE RECORD AND MODULE CHARACTERS DDIO0459
AXT 24,6 DDIO0460
UPAC4 ZAC CONVERT TRACK ADDRESS TO BCD FORMAT DDIO0461
DVP =10 .. DDIO0462
ALS 24,6 .. DDIO0463
ORS TMP,5 .. DDIO0464
TIX UPAC4,6,6 .. DDIO0465
UPAC5 LDQ TMP,5 PICK UP UNPACKED TRACK ADDRESS DDIO0466
RQL 6 MOVE RECORD CHARACTER TO LAST POSITION DDIO0467
XCL CONVERT '00' TO '12' OCTAL DDIO0468
PAI .. SAVE COPY OF TRACK ADDRESS IN SI DDIO0469
ORA =H------ .. 00S TO 40S (OCTAL) DDIO0470
SUB =H111111 .. 40S TO 37S DDIO0471
ANA =H++++++ .. 37S TO 20S DDIO0472
ARS 1 .. 20S TO 10S DDIO0473
SLW TMP,5 .. SAVE 10S DDIO0474
ARS 2 .. 10S TO 02S DDIO0475
ORA TMP,5 .. 02S TO 12S DDIO0476
OAI .. REPLACE 00S WITH 12S IN SI DDIO0477
PIA RETURN CONVERTED TRACK ADDRESS IN AC DDIO0478
TRA 1,4 .. DDIO0479
EJECT DDIO0480
REM DDIO0481
REM DCTRAP ...... HERE ON DATA CHANNEL TRAP FROM DISK OR DRUMDDIO0482
REM DDIO0483
DCTRAP WHEN B,T,,SEB,,,,, DDIO0484
ENB =0 INSURE ALL TRAPS DISABLED DDIO0485
SXA DCTIR4,4 SAVE IR4 DDIO0486
STI DCTSI AND SENSE INDICATORS DDIO0487
LAC CHANNO,4 PICK UP NO. OF CHANNEL CAUSING TRAP DDIO0488
WHEN B,T,,SEA,,,,, DDIO0489
LDI* CTIL,4 PICK UP TRAP RETURN ADDRESS AND FLAGS DDIO0490
WHEN B,T,,SEB,,,,, DDIO0491
STI DCTRTN SAVE TRAP RETURN LOCATION DDIO0492
NZT DERRSW WAS THERE AN ERROR ON THIS CHANNEL DDIO0493
TRA DCTOK NO, SKIP TO SET UP COMPLETION INTERRUPT DDIO0494
STZ DERRSW YES, RESET ERROR SWITCH DDIO0495
LXA RECAL,4 GET RECALIBRATION COUNT DDIO0496
TXH CRUMP,4,3 GIVE UP IF TOO MANY TRACK ERRORS DDIO0497
TXI *+1,4,1 OTHERWISE UPDATE ERROR COUNT DDIO0498
SXA RECAL,4 .. AND TRY AGAIN TO RECALIBRATE DDIO0499
LDI SEEKW GET MODULE NO. FROM SEEK WORD DDIO0500
RIS =O777700007777 DDIO0501
OSI =O101200001113 DDIO0502
STI SEEKCE SET UP ORDER TO SEEK CE TRACK DDIO0503
RIS =O777700007777 DDIO0504
OSI =O101200001212 DDIO0505
STI SEEK0. SET UP ORDER TO SEEK TRACK ZERO DDIO0506
LAC CHANNO,4 RELOAD -CHANNEL NO. TO IR4 DDIO0507
XEC STCOP,4 AND START UP RECALIBRATION PROGRAM DDIO0508
TRA DCTXIT AND EXIT FROM TRAP DDIO0509
REM DDIO0510
DCTOK STZ RECAL HERE FOR SUCCESSFUL COMPLETION OF I/O DDIO0511
STZ BUSY RESET CHANNEL BUSY SWITCH DDIO0512
NZT REFRSW IS A COURTESY CALL REQUIRED DDIO0513
TRA DCTXIT NO, EXIT FROM TRAP DDIO0514
TSX ALLSAV,4 YES, SAVE REST OF MACHINE CONDITIONS DDIO0515
LDI =0 LOAD SUCCESSFUL COMPLETION FLAG FOR USER DDIO0516
REM DDIO0517
DCTINT STI RTNFLG SAVE ERROR FLAG IF ANY FOR USER DDIO0518
STZ ERROR RESET ERROR FLAG IF ANY DDIO0519
STL TRAPSW INDICATE SIMULATED TRAP IN PROGRESS DDIO0520
TSX USRTRP,4 REFLECT INTERRUPT TO USER PROGRAM DDIO0521
PTH RTNFLG .. WITH ERROR FLAGS IF ANY DDIO0522
STZ TRAPSW RESET TRAP SWITCH DDIO0523
TSX ALLRST,4 RESTORE SAVED MACHINE CONDITIONS DDIO0524
REM DDIO0525
DCTXIT LDI DCTSI HERE TO RETURN FROM TRAP DDIO0526
TSX CMEXIT,4 EXIT THROUGH COMMON EXIT ROUTINE DDIO0527
DCTIR4 AXT **,4 .. DDIO0528
DCTRTN .. DDIO0529
REM DDIO0530
CRUMP STZ RECAL HERE AFTER UNSUCCESSFUL ATTEMPT TO READ DDIO0531
STZ BUSY .. OR WRITE ON DISK/DRUM, RESET BUSY SWITCHDDIO0532
TSX ALLSAV,4 SAVE REST OF MACHINE CONDITIONS DDIO0533
LDI CTLR.W PICK UP READ OR WRITE COMMAND DDIO0534
CAL =HREAD SET UP TYPE OF ERROR (READ OR WRITE) DDIO0535
RNT 200000 .. CTLR HAS '2' IN TAG DDIO0536
CAL =HWRITE .. DDIO0537
SLW ERRCM1+2 .. DDIO0538
CAL CHANNO GET CHANNEL NUMBER (1-8) DDIO0539
ORA =HNNEL + CONVERT TO CHANNEL LETTER 'NNEL X' DDIO0540
SLW ERRCM1+5 .. INTO ERROR COMMENT DDIO0541
AXT 2,1 DDIO0542
CDCT1 LDQ R.WORD+2,1 CONVERT OCTAL '12' TO OCTAL '00' DDIO0543
AXT 6,2 .. DDIO0544
CDCT2 ZAC .. DDIO0545
LGL 6 .. DDIO0546
LAS =O12 .. CHECK FOR OCTAL 12 DDIO0547
TRA *+2 .. DDIO0548
ZAC .. REPLACE 12 WITH ZERO DDIO0549
LGR 6 .. DDIO0550
RQL 6 .. DDIO0551
TIX CDCT2,2,1 .. DDIO0552
STQ R.WORD+2,1 .. DDIO0553
TIX CDCT1,1,1 .. DDIO0554
CAL R.WORD PICK UP OPERATION, ACCESS AND MODULE DDIO0555
LDQ R.WORD+1 .. LOW-ORDER TRACK ADDRESS IN MQ DDIO0556
LGR 12 SAVE TRACK ADDRESS IN MQ DDIO0557
ALS 6 ADJUST OPERATION IN AC DDIO0558
ORA =H 0000 .. ADD IN BLANKS DDIO0559
SLW ERRCM1+8 SET OPERATION ACCESS AND MODULE IN MESSAGE DDIO0560
STQ ERRCM1+9 SET TRACK/RECORD ADDRESS IN ERROR COMMENT DDIO0561
LDQ SENSE CONVERT SENSE DATA DDIO0562
TSX CVTOCT,4 .. DDIO0563
SLW ERRCM2+2 .. DDIO0564
TSX CVTOCT,4 .. DDIO0565
SLW ERRCM2+3 .. DDIO0566
LDQ SENSE+1 .. DDIO0567
TSX CVTOCT,4 .. DDIO0568
SLW ERRCM2+5 .. DDIO0569
TSX CVTOCT,4 .. DDIO0570
SLW ERRCM2+6 .. DDIO0571
WPRA EJECT PAGE ON LINE DDIO0572
SPRA 1 .. DDIO0573
TSX WRTOPR,4 PRINTF DISK/DRUM ERROR COMMENT DDIO0574
ERRCM1,,11 .. DDIO0575
TSX WRTOPR,4 .. DDIO0576
ERRCM2,,7 .. DDIO0577
LAC CHANNO,4 -CHANNEL NO. TO IR4 DDIO0578
XEC RICOP,4 RESET THIS CHANNEL DDIO0579
WPRA EJECT PAGE ON LINE DDIO0580
SPRA 1 .. DDIO0581
LDI =1 FIND TYPE OF ERROR DDIO0582
CAL SENSE .. RELOAD FIRST SENSE WORD DDIO0583
ANA =O072727270000 .. REMOVE UNWANTED BITS DDIO0584
ERA =O020001000000 .. CHECK FOR PARITY ERROR DDIO0585
TZE *+2 .. SKIP IF PARITY ERROR DDIO0586
LDI =2 .. OTHERWISE SET FLAG FOR FATAL ERROR DDIO0587
STI ERROR SAVE ERROR FLAG (1=PARITY 2=FATAL) DDIO0588
ZET REFRSW IS USER INTERRUPT COURTESY CALL REQUIRED DDIO0589
TRA DCTINT YES, GO TO USER INTERRUPT PROCEDURE DDIO0590
TSX ALLRST,4 NO, RESTORE SAVED MACHINE CONDITIONS DDIO0591
TRA DCTXIT AND EXIT FROM TRAP DDIO0592
REM DDIO0593
CVTOCT SXA CVOCTX,4 CONVERT BINARY TO OCTAL IN BCD DDIO0594
ZAC DDIO0595
AXT 6,4 DDIO0596
CVOCT ALS 3 FORM BCD WORD IN AC DDIO0597
LGL 3 .. DDIO0598
TIX CVOCT,4,1 .. DDIO0599
CVOCTX AXT **,4 DDIO0600
TRA 1,4 DDIO0601
EJECT DDIO0602
REM DDIO0603
REM SKTRAK/CKTRAK/SETUP ..... 7909 CHANNEL PROGRAMS ..... DDIO0604
REM DDIO0605
WHEN B,T,,BCORE,,,,, DDIO0606
REM DDIO0607
SKTRAK LCC 20 ROUTINE TO SEEK-READ OR SEEK-WRITE A TRACK DDIO0608
RSTART CTL SEEKW SEEK FOR TRACK DDIO0609
WTR * AND WAIT FOR INTERRUPT DDIO0610
REM DDIO0611
CKTRAK LCC 0 ROUTINE TO WRITE-CHECK TRACK JUST WRITTEN DDIO0612
TCH CTLR.W .. DDIO0613
REM DDIO0614
INTRPT TCM TFOUND,,4 HERE FOR INTERRUPT, WAS IT ATTENTION 1 DDIO0615
TDC RETRY HERE FOR ERROR, TRY AGAIN DDIO0616
SNS HERE AFTER 20 RETRIES DDIO0617
CPYD SENSE,,2 GET ERROR DATA DDIO0618
DERTWT XMT DERRSW,,1 SET DISK ERROR SWITCH DDIO0619
PZE * .. DDIO0620
TWT SEEKRC AND TRAP CPU DDIO0621
REM DDIO0622
RETRY LIPT RSTART HERE TO TRY AGAIN AFTER ERROR DDIO0623
REM DDIO0624
TFOUND LIPT *+1 TRACK FOUND, ALLOW ERROR INTERRUPTS DDIO0625
CTLR.W *** ** CHANNEL READ/WRITE PROGRAM DDIO0626
COPYPR BSS 20 .. COPY COMMANDS IF ANY, FOLLOWED BY TWT DDIO0627
REM DDIO0628
SEEKRC LIPT *+1 ROUTINE TO RECALIBRATE ACCESS ON ERROR DDIO0629
XMT INTRPT,,1 SET UP NEW INTERRUPT PROCEDURE DDIO0630
TCH CETFND .. DDIO0631
CTL SEEKCE SEEK CE TRACK DDIO0632
WTR * WAIT FOR INTERRUPT DDIO0633
CETFND TCM FIND0.,,4 HERE ON INTERRUPT, DID WE FIND CE TRACK DDIO0634
DSKNG. XMT INTRPT,,1 NO, RESET INTERRUPT PROCEDURE DDIO0635
TCM TFOUND,,4 .. DDIO0636
TCH DERTWT AND GO TO TRAP CPU AGAIN DDIO0637
REM DDIO0638
FIND0. LIPT *+1 HERE WHEN CE TRACK FOUND DDIO0639
XMT INTRPT,,1 SET UP NEW INTERRUPT PROCEDURE DDIO0640
TCH TK0FND .. DDIO0641
CTL SEEK0. SEEK TRACK ZERO DDIO0642
WTR * WAIT FOR INTERRUPT DDIO0643
TK0FND TCM TRBACK,,4 HERE ON INTERRUPT, DID WE FIND TRACK ZERO DDIO0644
TCH DSKNG. NO, GO TO TRAP CPU DDIO0645
TRBACK XMT INTRPT,,1 YES, RESET INTERRUPT PROCEDURE DDIO0646
TCM TFOUND,,4 .. DDIO0647
LIPT SKTRAK GO BACK TO RETRY 20 TIMES DDIO0648
REM DDIO0649
SETUP CTL =O121100000000 SETUP ROUTINE, SET FILE IN 6-BIT MODE DDIO0650
WTR * .. DDIO0651
REM DDIO0652
DINTR. TCH INTRPT CONSTANT FOR INTERRUPT LOCATIONS DDIO0653
TWT TWT -1 COMMAND TO END CHANNEL ROUTINE DDIO0654
DRN1 CPYP DRAIN,,BSZ SIMULATE 'ION' COPY BSZ WORDS TO DRAIN DDIO0655
DRN2 CPYP DRAIN,,** .. COPY LAST N WORDS TO DRAIN DDIO0656
CTLR CTLR R.WORD CHANNEL READ COMMAND DDIO0657
CTLW CTLW R.WORD CHANNEL WRITE COMMAND DDIO0658
REM DDIO0659
WHEN B,T,,ACORE,,,,, DDIO0660
REM DDIO0661
CPYP CPYP 0,,0 CONSTANT FOR COPY AND PROCEDE DDIO0662
CPYD CPYD 0,,0 CONSTANT FOR COPY AND DISCONNECT DDIO0663
REM DDIO0664
* * * * * * * * * * * * * * * * * * * * * * * * DDIO0665
REM DDIO0666
DSEK OCT 101200000000 7631 FILE CONTROL ORDERS DDIO0667
DVSR OCT 100200000000 .. VERIFY SINGLE RECORD DDIO0668
DWRF OCT 100300000000 .. WRITE FORMAT DDIO0669
DVCY OCT 100500000000 .. VERIFY CYLINDER OPERATION DDIO0670
DWRC OCT 100600000000 .. WRITE CHECK DDIO0671
DVTA OCT 101000000000 .. VERIFY TRACK WITH ADDRESSES DDIO0672
DVHA OCT 101100000000 .. VERIFY WITH HOME ADDRESSES DDIO0673
REM DDIO0674
DENBWD PZE DENB DISK/DRUM ENABLE WORD DDIO0675
ENABLE PZE ** POINTER TO COMMON ENABLE WORD DDIO0676
REM DDIO0677
WHEN B,F,DTRAP.,TTR,DCTRAP,,,, DDIO0678
WHEN B,T,DTRAP.,TIB,DCTRAP,,,, DDIO0679
REM DDIO0680
SEEKW OCT 0,0 7631 SEEK ORDER DDIO0681
R.WORD OCT 0,0 7631 READ/WRITE ORDER DDIO0682
REM DDIO0683
SEEKCE OCT 101200001113,121200000000 7631 ORDER TO SEEK CE TRACK DDIO0684
SEEK0. OCT 101200001212,121200000000 7631 ORDER TO SEEK TRACK ZERO DDIO0685
REM DDIO0686
SENSE OCT 0,0 SENSE STORAGE IF DISK ERROR DDIO0687
TMP OCT 0,0 TEMPS. FOR .PACK .UNPAK DDIO0688
BUSY PZE 0 DISK/DRUM CHANNEL BUSY SWITCH DDIO0689
CHANNO PZE 0 NO. OF CHANNEL CURRENTLY IN OPERATION DDIO0690
DERRSW PZE 0 SWITCH SET BY CHANNEL ON ERROR DDIO0691
RECSAV PZE 0 TEMP FOR CVTRK DDIO0692
ERROR PZE 0 DISK/DRUM ERROR SWITCH (1=PARITY 2=FATAL) DDIO0693
RECAL PZE 0 COUNTS RECALIBRATIONS DDIO0694
REM DDIO0695
DCTSI PZE 0 SENSE INDICATORS SAVED HERE ON TRAP DDIO0696
DCTRTN PZE 0 RETURN LOCATION SAVED HERE ON TRAP DDIO0697
TRAPSW PZE 0 NON-ZERO ON COURTESY DURING TRAP DDIO0698
REFRSW PZE 0 NON-ZERO IF COURTESY CALL REQUIRED DDIO0699
FRCTMP PZE 0 TEMP FOR .FORCE, .DRSET (ERROR FLAG) DDIO0700
RTNFLG PZE 0 FLAG RETURNED TO USER ON COURTESY CALL DDIO0701
USRTRP TTR ** LOCATION OF USER INTERRUPT ROUTINE DDIO0702
UERROR TTR ** LOCATION OF USER ERROR ROUTINE DDIO0703
REM DDIO0704
EJECT DDIO0705
REM DDIO0706
RICOP SYN *-1 CHANNEL RIC INSTRUCTIONS DDIO0707
RICA .. DDIO0708
RICB .. DDIO0709
RICC .. DDIO0710
RICD .. DDIO0711
RICE .. DDIO0712
RICF .. DDIO0713
RICG .. DDIO0714
RICH .. DDIO0715
REM DDIO0716
ORG RICOP+CHANLS+1 OVERLAY UNNECESSARY INSTRUCTIONS DDIO0717
REM DDIO0718
RSCOP SYN *-1 CHANNEL RSC INSTRUCTION TABLE DDIO0719
RSCA 0,5 .. DDIO0720
RSCB 0,5 .. DDIO0721
RSCC 0,5 .. DDIO0722
RSCD 0,5 .. DDIO0723
RSCE 0,5 .. DDIO0724
RSCF 0,5 .. DDIO0725
RSCG 0,5 .. DDIO0726
RSCH 0,5 .. DDIO0727
REM DDIO0728
ORG RSCOP+CHANLS+1 OVERLAY UNNECESSARY INSTRUCTIONS DDIO0729
REM DDIO0730
STCOP SYN *-1 CHANNEL STC INSTRUCTION TABLE DDIO0731
STCA .. DDIO0732
STCB .. DDIO0733
STCC .. DDIO0734
STCD .. DDIO0735
STCE .. DDIO0736
STCF .. DDIO0737
STCG .. DDIO0738
STCH .. DDIO0739
REM DDIO0740
ORG STCOP+CHANLS+1 OVERLAY UNNECESSARY INSTRUCTIONS DDIO0741
REM DDIO0742
CTIL SYN *-1 CHANNEL TRAP AND INTERRUPT LOCATIONS DDIO0743
PZE 10,,34 ..A DDIO0744
PZE 12,,36 ..B DDIO0745
PZE 14,,38 ..C DDIO0746
PZE 16,,40 ..D DDIO0747
PZE 18,,42 ..E DDIO0748
PZE 20,,44 ..F DDIO0749
PZE 22,,46 ..G DDIO0750
PZE 24,,48 ..H DDIO0751
REM DDIO0752
ORG CTIL+CHANLS+1 OVERLAY UNNECESSARY INSTRUCTIONS DDIO0753
REM DDIO0754
TITLE DDIO0755
REM DDIO0756
ERRCM1 BCI 8, DISK/DRUM READ ERROR ON CHANNEL X, OPERATION= DDIO0757
BCI 3, XXXX XXXXXX. DDIO0758
ERRCM2 BCI 7, SENSE DATA 000000000000 000000000000 DDIO0759
REM DDIO0760
DRAIN BSS BSZ DRAIN BUFFER TO SIMULATE 'ION' DDIO0761
REM DDIO0762
DETAIL DDIO0763
$BLOCK BCD,0084
END DDIO0764
* FAP
$BLOCK BCD,1344
* M1416 786 ... R. DALEY ... DDPAC ... USED AS SUBROUTINE PACK FOR DDIOA
TITLE
REM
ENTRY EXIT EXIT TO FMS MONITOR
ENTRY PRINT ON LINE PRINT ROUTINE
ENTRY EPRINT PRINT ERROR CONDITION ON TRAP
ENTRY WRTOPR .. SAME AS EPRINT
ENTRY RTDINP READ MONITOR INPUT TAPE (BCD MODE)
ENTRY RTBINP READ MONITOR INPUT TAPE (BINARY MODE)
ENTRY WTDOUT WRITE MONITOR OUTPUT TAPE (BCD MODE)
ENTRY CMEXIT COMMON EXIT ROUTINE FROM ALL TRAPS
ENTRY ALLSAV SAVE BASIC MACHINE CONDITIONS ON TRAP
ENTRY ALLRST RESTORE BASIC MACHINE CONDITIONS
ENTRY ENABLE POINTER TO COMMON ENABLE WORD
REM
REM
U TAPENO A5 MONITOR INPUT TAPE UNIT
O TAPENO B1 MONITOR OUTPUT TAPE UNIT
REM
* * * * * * * * * * * * * * * * * * * * * * * *
REM
REM ... EXIT ... EXIT TO FMS MONITOR SYSTEM ..........
REM
EXIT ENB =0 DISABLE ALL TRAPS
TCOA * WAIT UNTIL ALL CHANNEL ACTIVITY CEASES
TCOB * ..
RDCA AND RESET CHANNELS A,
RDCB .. AND B
REM
ENK IF KEYS 0-2 DOWN, STOP.
XCL
LAS =O700000000000
NOP
HTR 0
REM
AXT 10,4 RELOAD FMS FROM A1
EXIT1 REWA 1 ..
RTBA 1 ..
RCHA LDFIOP ..
TCOA * ..
TRCA A1BAD ..
TEFA A1BAD ..
RTBA 1 .. SKIP CARD TO TAPE RECORD
RTBA 1 .. SKIP DUMP RECORD
TRA 1 EXIT TO FIOP TO LOAD SIGN-ON RECORD
REM
A1BAD TIX EXIT1,4,1 COUNT ERRORS
HTR EXIT1 STOP ON TOO MANY ERRORS
REM
* * * * * * * * * * * * * * * * * * * * * * * *
REM
REM ... PRINT ... NORMAL ON LINE PRINT ROUTINE
EJECT
PRINT SXA PRINX4,4
ENB =0 DISABLE ALL TRAPS FOR CALL TO EPRINT
CAL 1,4 PZE FIRST,,N
SLW *+2 PASS CALL TO EPRINT
TSX EPRINT,4 CALL EPRINT TO PRINT THIS LLNE
**,,** ..
ENB ENABLE REENABLE AFTER CALL TO EPRINT
PRINX4 AXT **,4 AND RETURN
TRA 2,4 ..
REM
* * * * * * * * * * * * * * * * * * * * * * * *
REM
REM ... EPRINT ... ON LINE PRINT ROUTINE FOR I/O ERRORS .....
REM
WRTOPR SYN * ..
EPRINT SXA NPIR1,1
SXA NPIR2,2
SXA NPIR4,4
TCOA * SAVE STATUS OF CHANNEL 'A'
STZ SVIOCK ..
IOT ..
STL SVIOCK ..
SCHA SVCHAN ..
CAL 1,4 PZE FIRST,,N
ARS 18
ACL 1,4
PDX 0,4 WORD COUNT TO IR4
TXL NPEND,4,0 SKIP IF WORD COUNT .E. 0
STA NPRC3 WORD COUNT + STARTING ADDRESS
CAL NOP SET UP FOR FIRST PASS
SLW PSPR ..
CAL SPR9 ..
SLW PSPR1 ..
REM
1PASS AXT 24,2 CLEAR WORKING STORAGE
STZ CIBUF+24,2 ..
TIX *-1,2,1 .. C(IR2)=1 AFTER LOOP
NPRC1 CAL =-0 INITIALIZE COLUMN MARKER
NPRC2 SLW PRCOL ..
SXA NPSV4,4 SAVE WORD COUNT
NPRC3 LDQ **,4 PICK UP FIRST OR NEXT BCD WORD
AXT 6,4 SET CHARACTER COUNT
NPRC4 ZAC
LGL 6 GET A CHARACTER
ALS 1 DOUBLE IT
PAX 0,1 INTO IR1
CAL PRCOL
ARS 6,4 POSITION COLUMN MARKER
TXL PDIGIT,1,24 SKIP IF DIGIT ONLY
TXL PNZONE,1,95
TXL NPRC5,1,96 SKIP IF BLANK
REM
PNZONE TXH PNMIN,1,62 SKIP IF 11 OR 0 ZONE
ORS CIBUF+23,2 OR IN THE 12 ZONE
TIX PDIGIT,1,32 REMOVE 12 PUNCH
TRA NPRC5 SKIP IF + ONLY (NO DIGIT)
PNMIN TXH PNZER,1,94 SKIP IF 0 ZONE
ORS CIBUF+21,2 OR IN THE 11 ZONE
TIX PDIGIT,1,64 REMOVE 11 ZONE
TRA NPRC5 SKIP IN - ONLY (NO DIGIT)
PNZER ORS CIBUF+19,2 OR IN THE 0 ZONE
TXI PDIGIT,1,-96 REMOVE 0 ZONE
REM
PDIGIT TXL PNDIG,1,18 SKIP IF NORMAL DIGIT
ORS CIBUF+3,2 HERE FOR 8-3, 8-4, OR IN THE 8 PUNCH
TXI *+1,1,-16 REMOVE THE 8 PUNCH
PNDIG TXL *+2,2,0 SKIP IF IN RIGHT HALF OF CARD IMAGE
ORS CIBUF+18,1 OTHERWISE 'OR' DIGIT TO LEFT HALF OF IMAGE
TXH *+2,2,0 SKIP IF IN LEFT HALF OF CARD IMAGE
ORS CIBUF+19,1 OTHERWISE 'OR' DIGIT TO RIGHT HALF
NPRC5 TIX NPRC4,4,1 COUNTS CHARACTERS
ARS 1 SET COLUMN MARKER FOR NEXT WORD
NPSV4 AXT **,4 RESTORE BCD WORD COUNT
TXI *+1,4,-1 REDUCE WORD COUNT BY ONE
TXL PNOW,4,0 SKIP TO END WHEN WORD COUNT EXHAUSTED
TNZ NPRC2 GET NEXT WORD UNTIL COLUMN MARKER MOVES OUT
TXL PNOW,2,0 SKIP TO END WHEN CARD IMAGE COMPLETE
AXT 0,2 OTHERWIZE SET UP FOR RIGHT HALF
TRA NPRC1
REM
PNOW WPRA PRINT THIS CARD IMAGE ON LINE
PSPR *** .. NOP OR SPRA 9
RCHA NPIOC ..
TXL NPEND,4,0 SKIP TO END WHEN WORD COUNT EXHAUSTED
CAL PSPR OTHERWISE SWITCH NOP AND SPR 9
LDQ PSPR1 ..
STQ PSPR ..
SLW PSPR1 ..
TCOA * WAIT UNTIL CHANNEL FINISHED
TRA 1PASS AND RETURN TO CONVERT REST OF LINE
REM
NPEND TCOA * RESTORE STATUS OF CHANNEL 'A'
CAL SVCHAN ..
PDC 0,4 ..
ANA =O700000377777 ..
LDQ -1,4 ..
SLW -1,4 ..
RCHA -1,4 ..
STQ -1,4 ..
TCOA * ..
NZT SVIOCK ..
IOT ..
NOP
NPIR1 AXT **,1
NPIR2 AXT **,2
NPIR4 AXT **,4
TRA 2,4 RETURN TO CALLER
REM
* * * * * * * * * * * * * * * * * * * * * * * *
EJECT
REM ... RTDINP/RTBINP ... READ CARD FROM MONITOR INPUT TAPE
REM
RTDINP CAL RTDU ENTRY TO READ IN BCD MODE
TRA READ1 ..
REM
RTBINP CAL RTBU ENTRY TO READ IN BINARY MODE
REM
READ1 SLW READU SET UP BCD OR BINARY READ INSTRUCTION
SXA RTIR4,4
CAL 1,4 SET UP I/O COMMAND FROM 1,4
STA RDCOM .. ADDRESS OF USER'S INPUT BUFFER
STD RDCOM .. WORD COUNT
REM
FRSTSW TRA *+1 FIRST PASS SWITCH
TCOU * INITIALIZE ON FIRST PASS ONLY
TRCU *+1 .. RESET TAPE CHECK TRIGGER
TEFU *+1 .. RESET EOF TRIGGER
STL FRSTSW SET TO SKIP INITIALIZATION SECTION
REM
RETRY AXT 20,4 TAPE ERROR RETRY COUNT
READU *** RTDU OR RTBU, READ NEXT CARD FROM TAPE
RCHU RDCOM ..
TCOU * ..
TRCU ERRU .. SKIP ON TAPE ERROR
RTIR4 AXT **,4 RESTORE CALLER'S IR4
TEFU* 2,4 TAKE EOF EXIT ON END OF FILE
TRA 3,4 OTHERWISE TAKE NORMAL RETURN (3,4)
REM
ERRU BSRU HERE FOR TAPE ERROR, BACKSPACE
TIX READU,4,1 AND RETRY UP TO 20 TIMES
WPRA HERE FOR TOO MANY ERRORS
SPRA 1 SPACE UP PAGE ON LINE
TSX PRINT,4 AND PRINT ERROR COMMENT
BADU,,12 ..
WPRA SPACE UP PAGE AGAIN
SPRA 1 ..
HTR RETRY AND STOP, RETRY 20 MORE TIMES ON START
REM
* * * * * * * * * * * * * * * * * * * * * * * *
REM
REM ... WTDOUT ... WRITE MONITOR OUTPUT TAPE (BCD MODE)
REM
WTDOUT TRA *+1 FIRST PASS SWITCH
TCOO * WAIT AND TURN OFF ALL TAPE TRIGGERS
TRCO *+1 ..
TEFO *+1 ..
STL WTDOUT CLOSE THIS PATH
REM
CAL 1,4 PZE LINE,,COUNT
STA WRCOM SET UP USER WRITE COMMAND
STD WRCOM ..
SXA WRIR4,4 SAVE USER'S IR4
REM
REWRIT AXT 20,4 TAPE ERROR RETRY COUNT
WRITEO WTDO TRY TO WRITE THIS RECORD
RCHO WRCOM ..
TCOO * ..
TRCO ERRO SKIP ON TAPE CHECK
WRIR4 AXT **,4 OTHERWISE
TRA 2,4 RETURN
REM
ERRO BSRO HERE FOR TAPE ERROR, BACKSPACE
TIX WRITEO,4,1 AND RETRY UP TO 20 TIMES
WPRA SPACE UP PAGE ON LINE
SPRA 1 ..
TSX PRINT,4 AND PRINT ERROR COMMENT
BADO,,12 ..
WEFO END THIS TAPE
WEFO ..
WPRA SPACE UP PAGE AGAIN
SPRA 1 ..
HTR REWRIT AND STOP, WAIT FOR OPERATOR
REM
* * * * * * * * * * * * * * * * * * * * * * * *
REM
REM ... CMEXIT ... COMMON EXIT ROUTINE FROM ALL TRAPS .......
REM
CMEXIT ENB =0 INSURE ALL TRAPS DISABLED
STI CMXSI SAVE INDICATORS
LDI* 2,4 PICK UP RETURN FLAGS
RIR 700000 INSURE TAG ZERO
STI CMXRTN SAVE RETURN LOCATION
XEC 1,4 RESTORE USER'S IR4 FROM 1,4
LFT 20000 WAS ECC SET FOR MEMORY 'A'
TRA CMRTNB NO, SET ECC TO MEMORY 'B'
LDI CMXSI YES, RELOAD INDICATORS
ENB ENABLE AND RETURN TO INTERRUPTED PROGRAM
TRA* CMXRTN ..
REM
CMRTNB LDI CMXSI HERE TO RETURN WITH ECC SET FOR MEMORY 'B'
ENB ENABLE RETURN TO INTERRUPTED PROGRAM
LRI =0 .. (DUMMY TO PROTECT THIS SEQUENCE FROM TRA
SEB .. SET ECC FOR MEMORY 'B'
TRA* CMXRTN ..
REM
* * * * * * * * * * * * * * * * * * * * * * * *
REM
REM ... ALLSAV ... SAVE BASIC MACHINE CONDITIONS ............
REM
ALLSAV SXA TRPIR1,1 SAVE BASIC MACHINE CONDITIONS
SXA TRPIR2,2 ..
SXA TRPIR3,3 ..
AXT 0,3 .. SAVE TAG MODE
AXT 1,1 ..
STZ TRPMTM ..
TXL 7TAG,3,0 .. SKIP IF IN 7-TAG (7094) MODE
STL TRPMTM .. OTHERWISE SET 3-TAG (7090) MODE
LMTM ..
SXA TRPIR3,3 .. RESAVE IR3
7TAG SXA TRPIR5,5 ..
SXA TRPIR6,6 ..
SXA TRPIR7,7 ..
EMTM .. RESTORE 3-TAG (7090) MODE
STI TRPSI .. SAVE SENSE INDICATORS
STQ TRPMQ .. MQ
SLW TRPLAC .. LOGICAL AC
ARS 2 ..
STO TRPSQ .. S AND Q BITS
STZ TRPOV .. AC OVERFLOW CONDITION
TNO *+2 ..
STL TRPOV ..
TRA 1,4 AND RETURN
REM
* * * * * * * * * * * * * * * * * * * * * * * *
REM
REM ... ALLRST ... RESTORE BASIC MACHINE CONDITIONS .........
REM
ALLRST LMTM INSURE 7-TAG (9094) MODE
TRPIR1 AXT **,1 ..
TRPIR2 AXT **,2 ..
TRPIR3 AXT **,3 ..
TRPIR5 AXT **,5 ..
TRPIR6 AXT **,6 ..
TRPIR7 AXT **,7 ..
ZET TRPMTM .. RESTORE TAG MODE
EMTM ..
LDQ TRPSQ .. RESTORE S AND Q BITS
CLA * .. AND INSURE OVERFLOW LIGHT IS ON
LLS 1 ..
ALS 36 ..
ORA TRPLAC .. RESTORE LOGICAL AC
LDQ TRPMQ .. RESTORE MQ
LDI TRPSI .. RESTORE SI
NZT TRPOV .. RESTORE CORRECT OVERFLOW STATUS
TOV *+1 ..
TRA 1,4 AND RETURN
REM
* * * * * * * * * * * * * * * * * * * * * * * *
REM
REM ... ENABLE ... COMMON ENABLE WORD FOR ALL TRAPS .......
REM
ENABLE OCT 0 COMMON ENABLE WORD
REM
* * * * * * * * * * * * * * * * * * * * * * * *
REM
REM ..... CONSTANT AND VARIABLE STORAGE FOR 'DDPAC' ........
REM
REM
CMXRTN PZE 0 TEMP FOR RETURN FROM 'CMEXIT'
CMXSI PZE 0 SENSE INDICATORS SAVED BY 'CMEXIT'
REM
TRPIR4 PZE 0 MACHINE CONDITIONS SAVED ON TRAP
TRPMTM PZE ** ..
TRPSI PZE 0 ..
TRPMQ PZE 0 ..
TRPLAC PZE 0 ..
TRPSQ PZE 0 ..
TRPOV PZE 0 ..
PRCOL PZE 0 TEMPS FOR EPRINT
PSPR1 PZE 0 ..
SVCHAN PZE 0 ..
SVIOCK PZE 0 ..
REM
SPR9 SPRA 9 CONSTANT FOR EPRINT
NOP NOP CONSTANT FOR EPRINT
RTDU RTDU CONSTANT FOR RTDINP
RTBU RTBU CONSTANT FOR RTBINP
REM
CIBUF BSS 24 CARD IMAGE BUFFER FOR 'EPRINT'
REM
LDFIOP IOCP 0,,3 LOAD FIOP INTO MEMORY 'A'
TCH 0 ..
NPIOC IOCD CIBUF,,24 I/O COMMAND TO WRITE OUT CARD IMAGE
RDCOM IORT **,,** COMMAND TO READ FROM MONITOR INPUT TAPE
WRCOM IOCD **,,** COMMAND TO WRITE ON MONITOR OUTPUT TAPE
REM
BADU BCI 7,******* MONITOR INPUT TAPE WILL NOT READ,
BCI 5,PRESS START TO RETRY. ********
BADO BCI 7,***** MONITOR OUTPUT TAPE WILL NOT WRITE,
BCI 5,CHANGE AND PRESS START. ******
REM
DETAIL
$BLOCK BCD,0084
END
*DATA
~
$IBSYS
$STOP