mirror of
https://github.com/rcornwell/ctss.git
synced 2026-01-12 00:02:48 +00:00
2191 lines
121 KiB
Plaintext
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
|