LDA .17 JSB TMRR,I WAIT 15 MILLISEC JMP OTCD3 OTCD4 EQU * LDB SW12 CHECK BIT 12 JSB SWRC,I IS IT SET? JMP *+2 YES-WAIT 10 MS JMP OTCD1 GO-WAIT FOR FLAG LDA .10D JSB TMRR,I WAIT 10 MILLISEC OTCD3 EQU * LDA MSKRW JSB BITCK IS THE UNIT REWINDING? JMP *-2 YES-GO WAIT FOR IT TO CLEAR JMP OUTCD,I EXIT OTCD1 EQU * OTCD5 SFC CMMD WAIT FOR COMMAND FLAG JMP OTCD3 FLAG SET-EXIT LDB SW15 FLAG NOT SET JSB SWRC,I IS BIT 15 SET? JMP T3022 YES ABORT JMP OTCD5 NO-GO CHECK FLAG AGAIN * .10D DEC 10 .30D DEC 30 * * DMA TRANSFER ROUTINE * * * --PROGRAM OPERATION-- * * 1. LOAD SWITCH REGISTER BIT 3 * * 2. LOAD THE SWITCH REGISTER (0-7) WITH THE PATTERN OF * THE BYTE TO BE WRITTEN. * * 3. PRESS RUN * * --------------------- * * THE PROGRAM WRITES A 2048(MAXIMUM) BYTE RECORD, THEN BACK- * SPACES AND READS THE RECORD . * * SETTING SWITCH 15 TO ONE ON THE SWITCH REGISTER, BRINGS * THE PROGRAM TO A NORMAL HALT (106046). * OTHER WISE THE PROGRAM CONTINUES TRANSFERRING RECORDS UN- * TIL AN END-OF-TAPE IS DETECTED, AT WHICH TIME THE TAPE IS * AUTOMATICALLY REWOUND. * SPC 1 ********************************************************* * * * DMA TRANSFER * T3006 NOP JSB MSGH,I OUTPUT MESSAGE DEF H152 AND HALT JMP T3036 SKIP OVER MESSAGE H152 EQU * ASC 11,H152 SELECT DMA BYTE/ * T3036 EQU * LDB SW15 CHECK BIT 15 JSB SWRC,I IS IT SET? JMP T3006,I YES-EXIT TO CONTROL LDA DMAFG CHECK IF COMPUTER HAS DMA SZA,RSS IS IT ZERO? JMP T3006,I YES- NO DMA LDA FGDMA GET DMA FLAG STA T3047 SAVE IT FOR EXIT SZA WAS THE FLAG SET? JMP T3045 YES-GO USE THAT CHANNEL LDA .2 NO - SETUP DMA CH 2 STA FGDMA GO SET FLAG T3045 EQU * LDB SW15 JSB SWRC,I IS SWITCH 15 SET FOR ABORT JMP T3048 YES-GO TO EXIT ROUTINE LIA SW LOAD A WITH SWITCH REG AND MK377 GET BITS 7-0 STA T3037 SAVE IT ALF,ALF ROTATE BYTE TO UPPER ADA T3037 SETUP COMPUTER WORD STA T3037 SAVE IT LDA BFMAX GET MAX BUFFER STA T3038 SAVE IT LDA .1 ONE WORD PATTERN LDB T3037-1 POINTER TO COMPUTER WORD JSB FILL,I FILL THE OUTPUT BUFFER DEF T3039 RETURN ADDRESS T3038 NOP BUFFER LENGTH DEF T3001 ERROR RETURN DEF *+1 POINTER TO WORD T3037 NOP COMPUTER WORD T3039 EQU * CONTINUE CCA STA SKPSW SET SW REG SKIP FLAG JSB SIOW,I WRITE A RECORD JSB BSRWF BACKSPACE RECORD JSB SIOR,I READ THE RECORD CLA STA SKPSW CLEAR SW REG CHECK FLAG JSB EOTRW CHECK FOR EOT JMP T3045 LOOP * T3048 EQU * LDA T3047 LOAD OLD DMA FLAG STA FGDMA RESTORE DMA FLAG JMP T3006,I EXIT ROUTINE * T3047 NOP SAVE FOR OLD DMA FLAG * * * * END OF TEST 30 * * * * * STANDARD I/O WRITE TRANSFER ROUTINE * * * CALL: * THE RECORD WORD LENGTH='BUFLG' * THE OUTPUT BUFFER'S S.A.='FWA' * SIOTW NOP LDA .M3 STA SIOW7 SETUP RECORD COUNTER LDA .M10 SETUP GAP COUNTER STA SIOW8 CLA STA SIOW9 CLEAR REWRITE COUNTER STA SIOW1 CLEAR TOTAL # OF REWRITES STA ERRFG CLEAR ERROR MESSAGE FLAG * JSB STATS GET STATUS AND MSKFP IS FILE PROTECTED (NO RING)? SZA,RSS JMP SIOW4 NO-CONTINUE CLB SETUP EXPECTED STATUS JSB ERMS,I YES - REPORT ERROR DEF E042 JMP SIOW4 CONTINUE E042 EQU * ASC 10,E042 NO WRITE RING/ SIOW4 EQU * LDA FGDMA CHECK DMA I/O FLAG SZA IS IT ZERO? JMP SIOW2 YES-GOTO DMA WRITE JSB .WRIT WRITE THE RECORD JMP SIOW3 SKIP OVER DMA ROUTINE SIOW2 EQU * JSB DMAWT,I WRITE RECORD UNDER DMA SIOW3 EQU * LDA FWAM BUFFER ADDRESS LDB BUFLG BUFFER LENGTH JSB SIOCR GO COMPARE CRCC + LRCC LDA WRERR LOAD WRITE ERROR FLAG SZA IS THERE A WRITE ERROR? JMP SIOW5 YES-GOTO REWRITE ROUTINE SIOW6 EQU * LDA SIOW1 LOAD TOTAL # OF REWRITES SZA,RSS IS IT ZERO? JMP SIOW. YES-OK TO CONTINUE JSB MS,I NO-REPORT # OF REWRITES DEF SIOW. RETURN DEF H057 POINTER TO MESSAGE SIOW1 NOP REWRITES COUNTER SIOW. EQU * JMP SIOTW,I EXIT * SIOW5 EQU * LDA ERRFG LOAD SKIP ERROR MSG FLAG CPA WRERR IS IT = TO WRITE ERROR FLAG? JMP SIW10 YES-SKIP ERROR MESSAGE CLB NO-SETUP EXPECTED STATUS JSB ERMS,I REPORT WRITE ERROR DEF E065 LDA WRERR LOAD CURRENT WRITE ERROR STA ERRFG STORE IT IN SKIP-ERROR MSG SIW10 EQU * LDB SW09 CHECK SWITCH 9 JSB SWRC,I IS IT SET? JMP SIOW6 YES-EXIT JSB BSRWF BACKSPACE THE RECORD ISZ SIOW1 INCREMENT TOTAL # OF REWRITES ISZ SIOW9 INCREMENT REWRITE COUNTER ISZ SIOW7 IS THIS THE 3RD TIME? JMP SIOW4 NO-GO TRY AGAIN LDA .M3 YES-RESET RECORD COUNTER STA SIOW7 JSB WTGAP GAP OVER BAD SPOT ISZ SIOW8 INCREMENT GAP COUNTER JMP SIOW4 LOOP IF NOT THE 10TH TIME JMP SIOW6 ERROR EXIT * H057 EQU * ASC 09,H057 # REWRITE(S)/ * SIOW9 NOP REWRITE COUNTER SIOW8 NOP GAP COUNTER SIOW7 NOP 3 X RECORD COUNTER ERRFG NOP SKIP-ERROR MESSAGE FLAG * * * COMPARES CRCC FROM TAPE WITH CRCC FROM BUFFER *CALL: * LDA * LDB * JSB SIOCR * SIOCR NOP STA AREG SAVE A AND B REG. STB BREG LDA ERRFG LOAD ERROR MESSAGE SKIP FLAG SZA IS IT ZERO? JMP SIOCR,I NO-SKIP CRCC CHECK LDB CRCFG LOAD CRCC SKIP FLAG SZB IS IT SET? JMP SIOCR,I YES-EXIT LDB BREG NO-CONTINUE SZB,RSS IS BUFFER LENGTH ZERO? JMP SIOCR,I YES-EXIT LDA FG183 IS IT A 13183? SZA JMP SIOCR,I YES-EXIT LDA AREG NO-LOAD A AND B REG. LDB BREG * JSB .CRCC,I GENERATES CRCC FROM BUFFER STA SIO26 SAVE IT SIO27 EQU * LIA DATA LOAD CRCC FROM TAPE CPA SIO26 COMPARE TAPE AND BUFFER CRCC JMP SIO29 THEY COMPARE-CONTINUE CLB SETUP EXPECTED STATUS JSB ERMS,I FAILED-REPORT ERROR DEF E141 JMP SIO29 E141 EQU * ASC 08,E141 CRCC ERROR/ SIO29 EQU * LIA DATA CHECK LRCC AND MK377 ISOLATE LOWER BYTE SZA,RSS IS LRCC RESIDUAL ZERO? JMP SIO28 YES-EXIT CLB SETUP EXPECTED STATUS JSB ERMS,I NO-REPORT ERROR DEF E135 JMP SIO28 E135 EQU * ASC 08,E135 LRCC ERROR/ SIO28 EQU * JMP SIOCR,I EXIT * SIO26 NOP GENERATED CRCC * * * STANDARD I/O READ TRANSFER ROUTINE * * * CALL: * THE INPUT BUFFER'S S.A. IS IN BWAL THEN ADD 1='INBUF' * THE RECORD WORD LENGTH IS ALREADY LOADED IN "BUFLG" * SIOTR NOP LDA .M10 STA SIO31 SETUP MAXIMUM REREADS COUNTER CLA STA SIO32 CLEAR REREADS COUNTER STA ERRFG CLEAR ERROR MESSAGE FLAG LDB FWAM GET FWAM ADB BFMAX COMPUTE LWA ADDRESS SIO34 EQU * STB INBUF STORE INPUT BUFFER ADDRESS SIO30 EQU * LDA FGDMA CHECK DMA I/O FLAG SZA IS IT ZERO? JMP SIO14 YES-GOTO DMA READ JSB .READ READ THE RECORD JMP SIO15 SKIP OVER DMA ROUTINE SIO14 EQU * JSB DMARD,I READ RECORD UNDER DMA SIO15 EQU * * ALLOWS SKIP OF CRCC FOR EOF LDA MSKEF JSB BITCK WAS AN EOF READ? JMP SIO35 YES-SKIP OVER CRCC LDA INBUF BUFFER ADDRESS LDB INBFL BUFFER LENGTH JSB SIOCR GO COMPARE CRCC + LRCC SIO02 EQU * LDB SW09 CHECK SWITCH 9 FOR ABORT JSB SWRC,I IS IT SET? JMP SIO04 YES-EXIT LDA RDERR SZA,RSS IS READ ERROR FLAG SET? JMP SIO33 NO-CONTINUE LDA ERRFG LOAD SKIP ERROR MSG FLAG CPA RDERR IS IT = TO READ ERROR FLAG? JMP SIO36 YES-SKIP ERROR MESSAGE CLB NO-SETUP EXPECTED STATUS JSB ERMS,I REPORT READ ERROR DEF E066 LDA RDERR LOAD CURRENT WRITE ERROR STA ERRFG STORE IT IN SKIP-ERROR MSG SIO36 EQU * JSB BSRWF YES-BACKSPACE RECORD ISZ SIO32 INCREMENT REREAD COUNTER ISZ SIO31 IS THIS THE LAST TIME? JMP SIO30 NO-DO IT AGAIN JSB FSRWF SPACE OVER BAD RECORD JMP SIO33 ERROR EXIT H060 EQU * ASC 09,H060 # REREAD(S)/ * SIO31 NOP MAXIMUM REREADS COUNTER * SIO33 EQU * LDA SIO32 LOAD REREAD COUNTER SZA,RSS IS IT ZERO? JMP SIO35 YES-EXIT JSB MS,I NO-REPORT # OF REREADS DEF SIO35 RETURN DEF H060 POINTER TO MESSAGE SIO32 NOP REREAD COUNTER SIO35 EQU * SIO04 EQU * YES-CONTINUE JMP SIOTR,I EXIT * * * NON-DMA WRITE DRIVER * * * CALL: * THE RECORD WORD LENGTH='BUFLG' * THE OUTPUT BUFFER'S S.A.='FWA' * .WRIT NOP CLA STA WRERR CLEAR WRITE ERROR FLAG LDB FWAM SETUP FOR OUTPUT BUFFER ADDRESS LDA BUFLG GET LENGTH ADA B SETUP LWA +1 OF BUFFER STA COUNT SET THE WORD COUNTER LDB WCC START THE WRITE JSB OCMMD LDB FWAM .WR01 STC DATA,C SET THE DATA TRANSFER LDA FGINT LOAD INTERRUPT FLAG SZA,RSS IS IT ZERO? JMP .WR12 NO-CONTINUE IN NON-INTERRUPT JSB LDINT,I LOAD ERROR MESSAGES INTO TRAP CELLS LDA CMD SETUP FOR COMMAND CHANNEL JSB INTJP,I INTERRUPT DEF TCCMD INTERRUPT BASE PAGE LINK DEF .WR11 POINTER TO INTERRUPT JMP LDA DTA SETUP FOR DATA CHANNEL JSB INTJB,I INTERRUPT SERVICE ROUTINE DEF TCDAT INTERRUPT BASE PAGE LINK DEF .WR13 POINTER TO DATA TRANSFER ROUTINE LDB FWAM LOAD BUFFER ADDRESS JMP .WR15 GO WAIT FOR INTERRUPTS * .WR12 EQU * NON-INTERRUPT CONTINUATION MORWT CLA CLEAR TIME OUT COUNTER .WR02 SFS DATA IS DATA FLAG SET JMP .WR08 NO-GO WAIT FOR FLAG LDA B,I LOAD A WITH OUTPUT WORD .WR04 OTA DATA,C WRITE THE WORD INB ADVANCE THE BUFFER POINTER CPB COUNT IS THIS THE LWA OF THE BUFFER? JMP .WR05 YES-GO TO END OF RECORD ROUTINE JMP MORWT NO- GO GET NEXT WORD .WR08 EQU * WAIT FOR DATA FLAG LOOP .WR06 EQU * SFC CMMD IS THE COMMAND FLAG SET? JMP .WR11 YES-GO REPORT ERROR INA,SZA INCREMENT TIME OUT COUNTER JMP .WR02 NOT ZERO-GO CHECK DATA FLAG .WR10 EQU * TIME OUT-EXIT JSB CLEAR CLEAR CONTROLLER JSB DATFG REPORT DATA FLAG LOST .WR05 CLC DATA,C NORMAL END OF RECORD JSB FLGWT WAIT FOR THE OPERATION TO FINISH JSB LDINT,I LOAD TRAP CELLS WITH ERROR MSG JSB STATS GET STATUS AND MSKIO CHECK FOR PARITY AND DATA ERRORS SZA,RSS IS IT NON ZERO? JMP .WR07 NO-STATUS OK-CONTINUE WRITE LDA STATU GET STATUS STA WRERR YES-SAVE STATUS .WR07 EQU * JMP .WRIT,I EXIT .WR11 EQU * JSB CLEAR CLEAR CONTROLLER JSB CMDFG GO REPORT ERROR JMP .WR07 EXIT * * INTERRUPT-DATA TRANSFER ROUTINE .WR13 NOP LDA B,I .WR17 EQU * OTA DATA,C OUTPUT DATA WORD INB CPB COUNT IS IT THE LAST WORD? JMP .WR05 YES-EXIT THRU NORMAL END CLA CLEAR TIME OUT COUNTER JMP .WR13,I EXIT * * INTERRUPT WAIT ROUTINE .WR15 EQU * CLA CLEAR TIME OUT COUNTER .WR16 EQU * INA,SZA IS THE DATA TIME-OUT COUNTER=0? JMP .WR16 NO- WAIT FOR INTERRUPT JMP .WR10 YES-REPORT DATA FLAG TIME OUT ERROR * * * CMDFG-REPORTS SPURIOUS COMMAND FLAG * CMDFG NOP CLB SETUP EXPECTED STATUS JSB ERMS,I REPORT COMMAND FLAG SET DEF E133 JMP CMDFG,I EXIT * E133 EQU * ASC 09,E133 COMMAND FLAG/ * * * * NON-DMA READ DRIVER * * * CALL: * THE RECORD WORD LENGTH='BUFLG' * THE INPUT BUFFER S.A.='INBUF' * .READ NOP JSB .CLBF,I CLEAR INPUT BUFFER AREA CLA STA RDERR CLEAR READ ERROR FLAG STA INBFL CLEAR INPUT BUFFER LENGTH LDA BFMAX YES-LOAD MAX BUFFER SIZE ADA INBUF COMPUTE LWA OF BUFFER STA .RDCT STORE IT IN READ COUNTER LDB RD10,I START THE READ JSB OCMMD .RD01 STC DATA,C START THE DATA TRANSFER LDA FGINT LOAD INTERRUPT FLAG SZA,RSS IS IT ZERO? JMP .RD15 NO-CONTINUE IN NON-INTERRUPT JSB LDINT,I LOAD ERROR MESSAGES INTO TRAP CELLS LDA CMD SETUP FOR COMMAND CHANNEL JSB INTJP,I INTERRUPT DEF TCCMD INTERRUPT BASE PAGE LINK DEF .RD05 POINTER TO INTERRUPT JMP LDA DTA SETUP FOR DATA CHANNEL JSB INTJB,I INTERRUPT SERVICE ROUTINE DEF TCDAT INTERRUPT BASE PAGE LINK DEF .RD09 POINTER TO DATA TRANSFER ROUTINE LDB INBUF LOAD BUFFER ADDRESS JMP .RD16 GO WAIT FOR INTERRUPTS * .RD15 EQU * NON-INTERRUPT CONTINUATION * LDB INBUF GET INPUT BUFFER ADDRESS MORED CLA .RD02 SFS DATA WAIT FOR DATA FLAG JMP .RD08 FLAG CLEAR-GOTO WAIT LOOP .RD03 LIA DATA,C LOAD DATA WORD STA B,I STORE WORD IN BUFFER INB ADVANCE THE BUFFER POINTER CPB .RDCT IS IT LWA IN BUFFER? JMP .RD04 YES-GO TO END OF RECORD JMP MORED NO-GO GET NEXT WORD .RD08 EQU * CHECK FOR DATA FLAG TIME OUT .RD06 EQU * SFC CMMD IS COMMAND FLAG SET? JMP .RD05 YES-GO TERMINATE RECORD INA,SZA INCREMENT AND CHECK FOR ZERO JMP .RD02 NO TIME OUT-GO CHECK FLAG AGAIN * YES- TIME OUT EXIT .RD13 EQU * STB .RDTP SAVE LWA OF BUFFER JSB CLEAR CLEAR CONTROLLER JSB DATFG REPORT DATA FLAG LOST JMP .RD17 GO COMPUTE BUFFER LENGTH .RD04 EQU * CLC DATA,C END OF RECORD STB .RDTP SAVE LWA OF BUFFER JSB FLGWT WAIT FOR THE OPERATION TO FINISH .RD05 EQU * STB .RDTP SAVE LWA OF BUFFER .RD17 EQU * JSB LDINT,I PUT ERROR MSG IN TRAP CELLS LDA MSKEF JSB BITCK IS EF BIT SET? JMP .RD07 YES-JUMP OVER DATA ERROR CHECK JSB STATS GET STATUS AND MSKIO CHECK FOR DATA ERRORS SZA,RSS IS IT NON ZERO? JMP .RD07 NO- STATUS OK-CONTINUE READ LDA STATU GET STATUS STA RDERR YES-SAVE STATUS .RD07 EQU * LDB .RDTP GET LWA OF BUFFER LDA INBUF GET FWA OF BUFFER CMA,INA MAKE IT NEGATIVE ADA B COMPUTE BUFFER LENGTH STA INBFL SAVE INPUT BUFFER LENGTH JMP .READ,I * RD10 EQU * DEF RRF READ COMMAND ADDRESS * * DATA TRANSFER ROUTINE FOR INTERRUPT * .RD09 NOP .RD14 EQU * LIA DATA,C LOAD IN THE DATA STA B,I STORE IT IN THE BUFFER* INB INCREMENT BUFFER POINTER CPB .RDCT IS RECORD LARGER THAN AVAILABLE CORE? JMP .RD04 YES-EXIT RECORD CLA NO-RESET DATA FLAG TIME OUT COUNTER. JMP .RD09,I GO WAIT FOR NEXT INTERRUPT * * WAIT FOR INTERRUPT ROUTINE * .RD16 EQU * CLA CLEAR DATA FLAG TIME OUT COUNTER .RD12 EQU * INA,SZA IS IT A TIME OUT? JMP .RD12 NO-WAIT FOR INTERRUPT JMP .RD13 YES-GO TERMINATE READ * * * NON-ERROR MESSAGES REPORTING * * CALLING SEQUENCE: * JSB MSG (MS,I) * DEF RTN * DEF * NOP * . * RTN EQU * * MSG NOP LDA ERSKP CKECK ERROR MSG SKIP FLAG SZA IS IT SET? JMP MSGEX YES-EXIT LDB SW10 CHECK IF SUPRESSED JSB SWRC,I JMP MSGEX YES LDA MSG NO - OUTPUT MESSAGE JSB OPMSG OUTPUT MESSAGE MSGEX LDA MSG,I GET RETURN ADDRESS JMP A,I RETURN TO CALLER * SKP OPMSG NOP ENTRY TO OUTPUT A MESSAGE INA LDB A,I GET FORMAT ADDRESS INA STA NUA SAVE NUMBER ADDRESS STB FPTA SAVE FORMAT STARTING ADDRESS SZB,RSS IS THERE A MESSAGE JMP OPMSG,I NO CLA,CLE SLOW OUTPUT DEVICE MSGA LDB FPTA RETRIEVE MESSAGE JSB FMTR2,I START FORMAT MSGL0 SZA,RSS IS THERE ANY NUMBERS REQUESTED JMP OPMSG,I NO LDB NUA,I YES GET NUMBER CCA JSB FMTR2,I OUTPUT IT ISZ NUA MOVE TO NEXT NUMBER JMP MSGL0 NUA NOP FPTA NOP * * * DMA READ DRIVER *CALL: * JSB DMARD,I HIGH CORE CALL * JSB .DMRD LOW CORE CALL * THE RECORD WORD LENGTH='BUFLG' * THE INPUT BUFFER S.A. ='INBUF' * N.B. IF BUFFER LENGTH IS ZERO, LENGTH IS SET TO MAX BUFFER * .DMRD NOP JSB .CLBF,I CLEAR INPUT BUFFER AREA CLA STA RDERR CLEAR READ ERROR FLAG LDA FGDMA FETCH CHANNEL # STA .DMR1 SETUP CHANNEL NUMBER LDA INBUF GET INPUT BUFFER ADDRESS ADA ..1MG SETUP BUFFER FOR INPUT FROM DMA STA .DMR2 LDA INBFL LOAD INPUT BUFFER LENGTH CPA BUFLG IS IT PRESET TO OUTPUT BUFFER LENGTH? JMP *+2 YES-READ IN ONLY BUFLG AMOUNT LDA BFMAX SET BUFFER LENGTH TO MAXIMUM STA .DMR3 CLA STA INBFL CLEAR INPUT BUFFER LENGTH JSB .DMUP,I GO TO DMA READ ROUTINE .DMR1 NOP CHANNEL NUMBER .DMR2 NOP BUFFER ADDRESS .DMR3 NOP BUFFER LENGTH JMP .DMR5 ERROR RETURN .DMR4 EQU * JMP .DMRD,I EXIT .DMR5 EQU * JSB STATS GET STATUS STA RDERR SET READ ERROR FLAG JMP .DMR4 GOTO EXIT ROUTINE * * * DMA WRITE DRIVER *CALL: * JSB DMAWT,I HIGH CORE CALL * JSB .DMWT LOW CORE CALL * * * THE RECORD WORD LENGTH ='BUFLG' * THE OUTPUT BUFFER'S S.A='FWA' * .DMWT NOP CLA STA WRERR CLEAR WRITE ERROR FLAG LDA FGDMA FETCH CHANNEL # STA .DMW1 SETUP CHANNEL NUMBER LDA FWAM GET INPUT BUFFER ADDRESS STA .DMW2 LDA BUFLG GET BUFFER LENGTH STA .DMW3 JSB .DMUP,I GOTO DMA WRITE ROUTINE .DMW1 NOP CHANNEL NUMBER .DMW2 NOP BUFFER ADDRESS .DMW3 NOP BUFFER LENGTH JMP .DMW5 ERROR RETURN .DMW4 EQU * JMP .DMWT,I EXIT .DMW5 EQU * JSB STATS GET STATUS STA WRERR SET WRITE ERROR FLAG JMP .DMW4 * * * DMAUP- SETUP DMA FOR READ OR WRITE * NOTE INTERRUPTS ARE NOT USED *CALL: * P JSB .DMUP,I HIGH CORE * P JSB DMAUP LOW CORE * P+1 * P+2 * P+3 * P+4 * P+5 * DMAUP NOP LDA DMAUP,I GET CHANNEL # STA CHNUM LDA FGINT GET INTERRUPT FLAG SZA,RSS IS IT ZERO? JMP DMP23 YES-JUMP OVER TRAP CELL SETUP LDA CMD GET SELECT FOR TRAP CELL JSB INTJP,I SETUP JMP IN TRAP CELL DEF TCCMD BASE PAGE LINK DEF DMP20 DESTINATION OF JMP LDA DTA GET SELECT CODE FOR TRAP CELL JSB INTJP,I SETUP JMP IN TRAP CELL DEF TCDAT BASE PAGE LINK DEF DMP10 DESTINATION OF JMP LDA CHNUM GET DMA CHANNEL # ADA .4 CPA .7 IS IT DMA CH 3? JMP DMP22 YES-GO SET IT UP JSB INTJP,I SETUP TRAP CELL FOR DMA DEF TCDA1 INTERRUPT BASE PAGE LINK DEF DMP11 POINTER TO DMA COMPLETION JMP DMP23 JUMP OVER CH 3 SETUP DMP22 EQU * JSB INTJP,I SETUP TRAP CELL FOR DMA DEF TCDA2 INTERRUPT BASE PAGE LINK DEF DMP11 POINTER TO DMA COMPLETION DMP23 EQU * LDA DMP02 LOAD DMA COMMAND JSB SETCH ADD NEW CHANNEL # STA DMP02 REPLACE DMA COMMAND LDA DMP03 LOAD DMA COMMAND JSB SETCH ADD NEW CHANNEL # STA DMP03 REPLACE DMA COMMAND STA DMP05 REPLACE DMA COMMAND STA DMP12 REPLACE DMA COMMAND LDA DMP04 LOAD DMA COMMAND JSB SETCH ADD NEW CHANNEL # STA DMP04 REPLACE DMA COMMAND LDA DMP13 LOAD DMA COMMAND JSB SETCH ADD NEW CHANNEL # STA DMP13 REPLACE DMA COMMAND STA DMP14 REPLACE DMA COMMAND