ASMB,R,L,C * * NAME: DD.20 * SOURCE: 92071-18084 * RELOC: 92071-16084 * PGMR: T.A.L. * * *************************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1980. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT* * * THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY. * * *************************************************************** * * NAM DD.20,0 92071-16084 REV.2041 800821 * * ENT DD.20 EXT $DV6,$DV15,$DV16,$DV17,$DV18,$DV19,$DV22 EXT $DVTP,$CVT3,$CVT,$ONER,$ONEW,$DV1 * GEN 21,EDD.20,TX:20,TO:3000,DT:20B,QU:FI GEN 2,DX:1 * GEN 7,M2645:1,DP:1:1 GEN 7,M2645:2,DP:1:2 * A EQU 0 B EQU 1 SKP * DD.20 NOP STA DIREC SAVE DIRECTIVE JSB SETAD SETUP EXTENSION ADDR PTR'S LDA DIREC GET DIRECTIVE AND B7 SZA ABORT? JMP GO NO * * ABORT * * STA DVX14,I ZERO CHARACTER ACCUMULATOR LDA B4 CALL INTERFACE DRIVER JSB CEXIT WITH ABORT CODE JMP DDCM2 DEVICE COMPLETE * * GO CPA B1 INITIATE? JMP INIT YES CPA B2 CONTINUATION? JMP CONT YES CPA B3 TIMEOUT? JMP DDCM2 YES, DEVICE COMPLETE JMP DDCOM DEVICE COMPLETE * * B1 OCT 1 B2 OCT 2 B3 OCT 3 B7 OCT 7 M9 DEC -9 DIREC NOP DIRECTIVE * * * INITIATION * * INIT LDA ESC& GET STA DVX4,I SAVE IT LDA $DVTP,I GET CTU (1 OR 2) IOR PLU MERGE STA DVX5,I SAVE LDA $DV15,I GET SUBFUNCTION STA DVX15,I SAVE IT JSB ASCWT ASCII WRITE (SYSTEM ADDR. SPACE) LDA DVX15,I GET RQ AND B3 CPA B3 CONTROL REQUEST? JMP CNTRL YES LDA $DV6,I GET DEVICE STATUS AND LBYTE REMOVE OLD STATUS STA $DV6,I LDA DVX15,I GET SUBFUNCTION AND ECHO REMOVE ECHO BIT 8 STA DVX15,I SAVE INITIAL SUBFUNCTION MINUS ECHO BIT AND B3 GET RQ LDB $DV16,I GET BUFFER ADDR STB DVX2,I SAVE INITIAL ADDR. LDB DVX4 GET ESC SEQUENCE ADDR. STB $DV16,I SAVE IT LDB $DV17,I GET XLOG STB DVX10,I SAVE INITIAL XLOG (-CHARS OR +WORDS) SSB CHARACTERS? JMP *+3 YES, SAVE THEM CMB,INB NO, CONVERT TO BLS - CHARACTERS STB DVX3,I SAVE -CHAR LENGTH CPA B1 READ REQUEST? JMP READ YES * * * WRITE REQUEST * * WRITE LDA DVX3,I GET -CHAR LENGTH CMA,INA MAKE CHARACTERS POSITIVE LDB DVX15,I GET SUBFUNCTION BLF,BLF RBL SSB ASCII? RSS NO, CHARACTER LENGTH OK ADA B2 YES, ADD TWO TO LENGTH FOR 'CRLF' LDB M257 ADB A SSB LENGTH > 256? SZA,RSS ZERO XLOG? JMP ERROR YES, ILLEGAL REQUEST ERROR CCE E=1 FOR DECIMAL JSB $CVT3 CONVERT +CHAR'S TO ASCII LDA DN IOR $CVT+1 STA DVX6,I SAVE LDA $CVT+2 STA DVX7,I SAVE TO WRITE LDA W GET STA DVX8,I SAVE LDA M9 STA $DV17,I BUFFER LENGTH CLA,INA ALLOW TIMEOUT JSB CEXIT INITIATE WRITE ESCAPE SEQUENCE * LDB ENQ GET ENQUIRY RACK STB $DV19,I SAVE 'ENQ' OR ZERO LDA DVX15,I GET RQ XOR B3 MAKE SURE ITS A ASCII READ AND SBIT (SYSTEM ADDR. SPACE) STA $DV15,I SAVE IT LDA DVX16 GET 1 BYTE READ ADDRESS STA $DV16,I SAVE IT CCA BUFFER LENGTH STA $DV17,I SAVE IT CLA STA $DV18,I ZERO ASIC CONTROL WORD INA ALLOW TIMEOUT JSB CEXIT SEND 'ENQ', READ 'ACK' * CLB CLEAR 'ENQ' LDA DVX16,I GET BYTE READ AND LBYTE REMOVE LOW BYTE CPA ACK 'ACK' RECEIVED? RSS YES, CONTINUE JMP RACK NO, RETRY FOR ACK ONLY * LDA DVX15,I GET SUBFUNCTION AND CBIT7 ADD 'CRLF' STA $DV15,I (USER ADDR. SPACE) LDA DVX2,I GET INITIAL BUFFER ADDRESS STA $DV16,I SAVE IT LDA DVX3,I GET INITIAL BUFFER LENGTH STA $DV17,I SAVE IT CLA STA $DV18,I ZERO ASIC CONTROL WORD INA ALLOW TIMEOUT JSB CEXIT INITIATE WRITE * LDA $DV17,I GET XLOG (+CHAR'S) STA DVX14,I SAVE IN EXTENSION JSB STAT SETUP FOR 2 CHAR READ JSB CEXIT SEND DC1, READ 'S' OR 'F' CLB ZERO ERROR CODE LDA DVX12,I GET COMPLETION STATUS AND LBYTE REMOVE LOW BYTE CPA S SUCCESSFUL? JMP DONE YES STB DVX14,I NO, ZERO XLOG JSB DYST GET DYNAMIC STATUS * DONE STB $DV16,I SETUP ERROR CODE JMP DDCOM DEVICE COMPLETE * STAT NOP SETUP FOR 2 CHAR READ LDA DVX12 GET READ ADDRESS STA $DV16,I SAVE IT LDA M2 BUFFER LENGTH STA $DV17,I SAVE IT LDA DVX15,I GET RQ AND RQASC MAKE SURE ITS A ASCII READ INA RQ=1 AND SBIT (SYSTEM ADDR. SPACE) STA $DV15,I SAVE IT CLA STA $DV18,I ZERO ASIC CONTROL WORD LDA DC1 SETUP DC1 STA $DV19,I IN OPTIONAL PARAMETER CLA,INA ALLOW TIMEOUT JMP STAT,I RETURN * * BIT6 OCT 100 BINARY BIT 6 CBIT7 OCT 177577 ADD 'CRLF' ECHO OCT 177377 ZERO ECHO BIT 8 PLU OCT 70060 M2 DEC -2 S OCT 51400 ILREQ OCT 140001 ILLEGAL REQUEST RS.CR OCT 17015 RECORD SEPERATOR CARRIDGE RETURN ACK OCT 3000 'ACKNOWLEDGE' SBIT OCT 177767 ZERO S BIT (BIT 3) * * * READ REQUEST * * READ LDA B3 SZB,RSS ZERO XLOG? JMP FSRF YES, FORWARD SPACE ONE RECORD LDA S2 GET STA DVX6,I SAVE IT LDA R GET STA DVX7,I SAVE IT LDA M7 BUFFER LENGTH STA $DV17,I SAVE IT CLA,INA ALLOW TIMEOUT JSB CEXIT SEND READ ESCAPE SEUQENCE * LDA DVX15,I GET INITIAL SUBFUNCTION IOR BIT6 SET BINARY BIT AND SBIT (SYSTEM ADDR. SPACE) STA $DV15,I SAVE IT LDA DVX16 GET DRIVER EXTENSION ADDR STA $DV16,I SAVE IT LDA M5 BUFFER LENGTH STA $DV17,I SAVE IT LDA B1415 SETUP FOR SPECIAL CHAR (CR) STA $DV18,I IN ASIC CONTROL WORD LDB DC1 SETUP FOR STB $DV19,I DC1 CODE IN UPPER BYTE CLA,INA ALLOW TIMEOUT JSB CEXIT SEND DC1, READ 5 BYTES * CLA ZERO ASIC CONTROL WORD LDB DVX15,I GET INITIAL SUBFUNCTION STB $DV15,I (USER ADDR. SPACE) LDB DVX16,I GET LAST CHARACTERS READ CPB RS.CR RSCR? JMP ZEROL YES, END OF READ STA $DV18,I SAVE ASIC CONTROL WORD LDA DVX2,I GET INITIAL BUFFER ADDR STA $DV16,I SAVE IT LDA DVX16,I GET FIRST AND SECOND BYTES LDB DVX17,I GET THIRD AND FOURTH BYTES BLF MERGE THE FOUR RRL 4 BYTES IN ORDER BLF TO FIND RRL 4 BUFFER LENGTH ALF RRR 4 CMA,INA,SZA,RSS BUFFER LENGTH ZERO? JMP ZEROL YES, READ STATUS STA B SAVE LENGTH CMB,INB MAKE LENGTH POSITIVE (+CHAR'S) STB DVX13,I SAVE REQUEST LENGTH (+CHARS) ADB DVX3,I ADD ORIGIONAL LENGTH (-CHAR'S) SSB,RSS REQUEST LENGTH >= BUFFER LENGTH? LDA DVX3,I YES, USE BUFFER LENGTH STA $DV17,I SAVE LENGTH (-CHARS) SSB REMAINING LENGTH POSITIVE? CLB NO, ZERO INTERRUPTS TO BIT BUCKET LDA DC1 DC1 IN UPPER BYTE IOR B MERGE REMAINING INTERRUPTS TO BIT BUCKET STA $DV19,I SAVE DC1 + INTERRUPTS TO BIT BUCKET CLA,INA ALLOW TIMEOUT JSB CEXIT SEND DC1, READ DVT17 BYTES * LDA $DV15,I GET SUBFUNCTION LSR 6 LDB $DV17,I GET XLOG (+CHARS) SLA ASCII? JMP XLOG NO, DO NOT ADJUST XLOG LDA DVX13,I YES, GET REQUEST LENGTH (+CHARS) ADA M1 SUBTRACT ONE ADA DVX3,I ADD BUFFER LENGTH (-CHARS) SZA,RSS (RL-1) = BL? ADB M1 YES, XLOG = XLOG -1 SSA (RL-1) < BL? ADB M2 YES, XLOG = XLOG - 2 XLOG SSB XLOG NEGATIVE? CLB YES, ZERO XLOG STB DVX14,I SAVE XLOG (+CHAR'S) CLE,ERB E=0/1, ODD/EVEN ADB DVX11,I FIND LAST CHAR ADDR. SEZ,RSS LAST CHAR EVEN? JMP DDCOM NO, DEVICE COMPLETE STB TEMP SAVE CHARACTER ADDR PTR JSB $ONER YES, GET LAST WORD DEF DVX15,I DEF $DV1,I AND LBYTE REMOVE LOWER BYTE (SPEC CHAR) LDB $DV15,I GET SUBFUNCTION BLF,BLF RBL SSB,RSS BINARY? IOR B40 NO, PAD WITH A BLANK LDB TEMP GET CHARACTER ADDR PTR JSB $ONEW RESTORE WORD DEF DVX15,I DEF $DV1,I JMP DDCOM DEVICE COMPLETE * M1 DEC -1 B40 OCT 40 DC1 OCT 10400 DC1 CODE IN UPPER BYTE B1415 OCT 140000 SPECIAL CHAR (CR) LBYTE OCT 177400 LOWER BYTE MASK * * * ZERO LENGTH READ/DYNAMIC STATUS SETUP * TICST LDA S GET RSS ZEROL STA DVX14,I ZERO XLOG STA DVX12,I SAVE OR NON JSB DYST GET DYNAMIC STATUS JMP DONE SETUP ERROR CODE * * * CONTROL REQUEST * * CNTRL LDA DVX15,I GET LSR 6 SUBFUNCTION AND B77 SZA,RSS RESET CTU? JMP RW YES, DO REWIND CPA B1 WRITE EOF? JMP RW YES CPA B2 BACKSPACE 1 RECORD? JMP BSRF YES CPA B3 FORWARD SPACE 1 RECORD? JMP FSRF YES CPA B4 REWIND? JMP RW YES CPA B5 REWIND? JMP RW YES CPA B6 DYNAMIC STATUS? JMP TICST YES CPA B10 WRITE EOF IF NOT PREV. WRITTEN JMP EOF YES CPA B13 FORWARD SPACE 1 FILE? JMP FSRF YES CPA B14 BACKSPACE 1 FILE? JMP BSRF YES CPA B26 WRITE END OF DATA (EOD)? JMP RW YES CPA B27 LOCATE ABSOLUTE FILE IPRAM1? JMP ABSF YES ZERR CLA,RSS ZERO ERROR CODE ERROR LDA ILREQ ILL. REQ. DON'T DOWN/DO FLUSH STA $DV16,I SAVE ERROR CODE JMP DDCM2 DEVICE COMPLETION * B4 OCT 4 B5 OCT 5 B6 OCT 6 B10 OCT 10 B13 OCT 13 B14 OCT 14 B26 OCT 26 B27 OCT 27 B77 OCT 77 B320 OCT 320 * * END OF FILE (FUNCTION CODE = 10) * * EOF LDA S GET IN UPPER BYTE STA DVX12,I SET TO SUCCESSFUL JSB DYST GET DYNAMIC STATUS LDA $DV6,I GET DEVICE STATUS AND B320 SZA AT EOF, LP, OR REWINDING? JMP ZERR YES, DO NOT WRITE EOF CLA,INA WRITE EOF * * REWIND/WRITE EOF/WRITE EOD (FUNCTION CODE = 1,4,5 OR 26) * * RW LDB U0 REWIND CPA B1 WRITE EOF? LDB U5 YES CPA B26 WRITE EOD? LDB U6 YES STB DVX6,I SAVE LDB C STB DVX7,I SAVE "C" LDB M7 STB $DV17,I BUFFER LENGTH SEND LDB DVX4 GET ESCAPE SEQUENCE ADDR. STB $DV16,I SAVE IT CLA,INA ALLOW TIMEOUT SEND1 JSB CEXIT INITIATE REQUEST * JSB STAT SETUP FOR 2 CHAR READ JSB CEXIT SEND DC1, READ 'S' OR 'F' JSB DYST GET DYNAMIC STATUS JMP DONE SETUP ERROR CODE * * FORWARD/BACKWARD SPACE N RECORD/FILE (FUNCTION CODE = 2,3,13 OR 14) * * FSRF LDB ONEP FORWARD SPACE ONE RECORD/FILE JSB FBRF SETUP ESCAPE SEQUENCE JMP SEND1 DO IT * BSRF LDB ONEP BACKSPACE ONE RECORD/FILE JSB FBRF SETUP ESCAPE SEQUENCE JSB CEXIT DO IT * JSB STAT SETUP FOR 2 CHAR READ JSB CEXIT SEND DC1, READ 'S' OR 'F' JSB DYST GET DYNAMIC STATUS * LDA $DV6,I GET STATUS AND BIT4 GET LOAD POINT BIT SZA AT LOAD POINT? JMP DONE YES, DONE LDA $DV6,I GET STATUS AND BIT7 GET EOF BIT SZA,RSS AT EOF? JMP RECFL NO, CHECK FOR RECORD OR FILE BS2R JSB ASCWT ASCII WRITE (SYSTEM ADDR. SPACE) LDB TWOP LDA B2 BACKSPACE TWO RECORDS JSB FBRF SETUP ESCAPE SEQUENCE JSB CEXIT DO IT * JSB STAT SETUP FOR 2 CHAR READ JSB CEXIT SEND DC1, READ 'S' OR 'F' JSB DYST GET DYNAMIC STATUS * LDA $DV6,I GET STATUS AND BIT4 GET LOAD POINT BIT SZA AT LOAD POINT? JMP DONE YES, DONE LDA $DV6,I GET STATUS AND BIT7 GET EOF BIT SZA AT EOF? JMP DONE YES, DONE JSB ASCWT ASCII WRITE (SYSTEM ADDR. SPACE) LDA B3 FORWARD SPACE ONE RECORD JMP FSRF DO IT * RECFL LDA DVX15,I GET LSR 6 INITIAL SUBFUNCTION AND B77 CPA B2 BACKSPACE ONE RECORD? JMP DONE YES, DONE JSB ASCWT ASCII WRITE (SYSTEM ADDR. SPACE) LDB ONEP NO, THEN FORWARD SPACE LDA B3 ONE RECORD JSB FBRF SETUP ESCAPE SEQUENCE JSB CEXIT DO IT * JSB STAT SETUP FOR 2 CHAR READ JSB CEXIT SEND DC1, READ 'S' OR 'F' JSB DYST GET DYNAMIC STATUS * JSB ASCWT ASCII WRITE (SYSTEM ADDR. SPACE) LDB ONEP BACKSPACE ONE FILE LDA B14 JSB FBRF SETUP ESCAPE SEQUENCE JSB CEXIT DO IT * JSB STAT SETUP FOR 2 CHAR READ JSB CEXIT SEND DC1, READ 'S' OR 'F' JSB DYST GET DYNAMIC STATUS * JMP BS2R BACKSPACE TWO RECORDS * FBRF NOP SPACE N RECORDS/FILES STB DVX7,I SAVE LDB UFRWD CPA B2 FORWARD SPACE? LDB UBKWD NO, BACKSPACE CPA B14 LDB UBKWD BACKSPACE STB DVX6,I SAVE LDB ONEC CPA B13 RECORD? LDB TWOC NO, FILE CPA B14 LDB TWOC FILE STB DVX8,I SAVE <1C OR 2C> LDB M10 STB $DV17,I BUFFER LENGTH LDB DVX4 GET ESCAPE SEQUENCE ADDR. STB $DV16,I SAVE IT CLA,INA ALLOW TIMEOUT JMP FBRF,I RETURN * * ASCII WRITE SUBROUTINE * * ASCWT NOP LDA DVX15,I GET SUBFUNCTION AND RQASC CLEAR BITS 6,7,8 & RQ IOR B202 MAKE SURE ITS A ASCII WRITE AND SBIT (SYSTEM ADDR. SPACE) STA $DV15,I INHIBIT 'CRLF' CLA STA $DV18,I ZERO ASIC CONTROL WORD STA $DV19,I ZERO OPTIONAL PARAMETER JMP ASCWT,I RETURN * M5 DEC -5 M7 DEC -7 M8 DEC -8 M10 DEC -10 B202 OCT 202 RQASC OCT 177074 ZERO BITS 6,7,8 & RQ * * DYNAMIC STATUS (FUNCTION CODE = 6) * * DYST NOP LDA DYST STORE RETURN ADDRESS STA DVX20,I AT DVX20 JSB ASCWT ASCII WRITE (SYSTEM ADDR. SPACE) LDA UP STA DVX6,I SAVE <^> LDA M5 BUFFER LENGTH STA $DV17,I SAVE IT LDA DVX4 GET ESCAPE SEQUENCE ADDR. STA $DV16,I SAVE IT CLA,INA ALLOW TIMEOUT JSB CEXIT SEND STATUS ESCAPE SEQUENCE * LDA $DV15,I MAKE SURE XOR B3 ITS A STA $DV15,I ASCII READ LDA DVX16 GET READ ADDR. STA $DV16,I SAVE IT LDA M8 BUFFER LENGTH STA $DV17,I SAVE IT LDA DC1 SETUP DC1 CODE STA $DV19,I IN OPTIONAL PARAMETER CLA STA $DV18,I ZERO ASIC CONTROL WORD INA ALLOW TIMEOUT JSB CEXIT SEND DC1, READ 8 BYTES STATUS * LDA $DV6,I GET DEVICE STATUS AND LBYTE REMOVE OLD STATUS STA $DV6,I * LDA DVX18,I GET STATUS BYTES 0 & 1 LDB DVX19,I GET STATUS BYTE 2 BLF MERGE THE RRL 8 THREE BYTES ALF TO FORM RRR 8 STATUS WORD AND B7777 REMOVE UPPER FOUR BITS STA $DV18,I SAVE STATUS WORD * * EXAMINE STATUS * * LDB B4 SET BIT 2 AND BIT6 GET WRITE PROTECT BIT SZA WRITE PROTECT? JSB DV6ER YES, SET 'WP' IN DV6 LDB B10 SET BIT 3 LDA $DV18,I GET STATUS WORD AND B10 GET SOFT ERROR BIT SZA SOFT ERROR? JSB DV6ER YES, SET 'SE' IN DV6 LDB BIT6 SET BIT 6 LDA $DV18,I GET STATUS WORD AND BIT4 GET TAPE BUSY BIT SZA TAPE BUSY? JSB DV6ER YES, SET 'DB' IN DV6 LDA $DV18,I GET STATUS WORD SLA TAPE INSERTED? JMP CON YES, CONTINUE LDA $DV6,I GET DEVICE STATUS IOR B2 SET 'OF' IN DV6 AND CBIT6 CLEAR 'DB' IN DV6 STA $DV6,I SAVE NEW STATUS CON LDA $DV18,I GET STATUS WORD AND B5002 GET EOF,EOT & EOV BITS LDB BIT7 SET BIT 7 SZA EOF, EOT, OR EOV? JSB DV6ER YES, SET 'EOF' IN DV6 LDA $DV18,I GET STATUS WORD AND B2000 GET LOAD POINT BIT LDB BIT4 SET BIT 4 SZA LOAD POINT? JSB DV6ER YES, SET 'BOM' IN DV6 LDA $DV18,I GET STATUS WORD AND B1002 GET EOT & EOV BITS LDB B40 SET BIT 5 SZA EOT OR EOV? JSB DV6ER YES, SET 'EOM' IN DV6 LDB B2 NR ERROR MESSAGE LDA $DV18,I GET STATUS WORD SLA,RSS TAPE INSERTED? JMP ERR NO, SET 'NR' DV16=2 LDB B6 WP ERROR MESSAGE IOR =B177277 INA,SZA,RSS WRITE PROT & WRITE ERR SET? JMP ERR YES, SET 'WP' DV16=6 LDB B5 PE ERROR MESSAGE LDA $DV18,I GET STATUS WORD AND B444 SZA WRITE ERR, RD ERR OR HARD ERR? JMP ERR YES, SET 'PE' DV16=5 LDB B4 ET ERROR MESSAGE LDA $DV18,I GET STATUS WORD AND B1000 GET EOT BIT SZA,RSS EOT? CLB NO, SET DV16=0 ERR LDA DVX12,I GET 'S','U' OR 'F' SZA,RSS ZERO LENGTH READ? JMP ZLNRD YES, CHECK STATUS BITS AND LBYTE REMOVE LOW BYTE CPA S SUCCESSFUL? JMP SUCCS YES CPA U USER INTERRUPT? LDB RTRY YES, RESTART ZLNRD LDA $DV18,I GET STATUS AND B7467 MASK SFT ERR,WRT PROT,CMND EXECUTION CPA B4001 EOF, TAPE INSERTED SET? CLB YES, ZERO ERROR CODE CPA B3 EOV, TAPE INSERTED SET? SUCCS CLB YES, ZERO ERROR CODE LDA DVX20,I GET RETURN ADDRESS JMP A,I RETURN * DV6ER NOP LDA $DV6,I GET DEVICE STATUS IOR B ADD STATUS BIT STA $DV6,I SAVE NEW STATUS JMP DV6ER,I RETURN * BIT4 OCT 20 'BOM' BIT BIT7 OCT 200 'EOF' BIT B444 OCT 444 'WRITE ERR','RD ERR','HARD ERR' BITS B1000 OCT 1000 'EOT' BIT B1002 OCT 1002 'EOT','EOV' BITS B2000 OCT 2000 'LOAD POINT' BIT B4001 OCT 4001 'EOF','TI' BITS B5002 OCT 5002 'EOF','EOT','EOV' BITS B7467 OCT 7467 MASK 'SE','WP','CE' BITS B7777 OCT 7777 RTRY OCT 100077 DON'T DOWN/DON'T FLUSH, RESTART U OCT 52400 'U', USER INTERRUPT CBIT6 OCT 177677 CLEAR BIT 6 * * * LOCATE ABSOLUTE FILE IPRM1 (FUNCTION CODE = 27) * * ABSF LDA $DV16,I GET ABSOLUTE FILE SSA NEGATIVE FILE #? JMP DDCM2 YES, DEVICE COMPLETE LDB M257 ADB A SSB,RSS FILE > 256 JMP DDCM2 YES, DEVICE COMPLETE CCE E=1 FOR DECIMAL FILE # JSB $CVT3 CONVERT FILE # TO ASCII LDA UN IOR $CVT+1 STA DVX6,I SAVE LDA $CVT+2 STA DVX7,I SAVE FILE NUMBER LDA P2 STA DVX8,I SAVE LDA C STA DVX9,I SAVE LDA M11 STA $DV17,I BUFFER LENGTH JMP SEND * M11 DEC -11 M257 DEC -257 * * DDCOM LDA DVX14,I GET TOTAL XLOG (+CHARS) INA ROUNDOFF ARS CONVERT TO WORDS LDB DVX10,I GET ORIGIONAL XLOG SSB WORDS? LDA DVX14,I NO, SAVE CHAR'S STA $DV17,I YES, SAVE WORDS DDCM2 CLA JMP DD.20,I DEVICE COMPLETE * * * CONTINUATION EXIT * * CEXIT NOP LDB CEXIT STORE RETURN ADDR STB DVX1,I AT DVX1 LDB $DV16,I GET BUFFER ADDR STB DVX11,I SAVE ADDR OF CURRENT READ ISZ DD.20 JMP DD.20,I INTERFACE INITIATE SKP * * * CONTINUATION * * CONT LDA $DV16,I GET ERROR CODE AND B77 SZA ANY ERRORS? JMP DDCM2 YES, DEVICE COMPLETE LDB DVX1,I JMP B,I CONTINUE REQUEST * * * ROUTINE FOR DEFINING STORAGE IN DEVICE DVR EXT. * * SETAD NOP LDA $DV22,I GET ADDR POINTING TO ADDR OF DVT EXT CPA DVX1 EXTENSION SETUP? JMP SETAD,I YES, RETURN LDB D.20 SET FOR 20 MISC. STORAGE STB TEMP LDB DVX SETUP STA B,I DVX1-DVX20 INA ADDRESS INB POINTERS ISZ TEMP JMP *-4 JMP SETAD,I RETURN * D.20 DEC -20 TEMP NOP TEMPORARY STORAGE * * * REWIND/WRITE EOF/WRITE EOD * ESC& ************************** * P1(P2) * U0(U5)(U6) * C * ESC& OCT 15446 P1 OCT 70061 U0 OCT 72460 C OCT 41400 * P2 OCT 70062 U5 OCT 72465 U6 OCT 72466 * * FORWARD/BACKWARD SPACE 1 RECORD/FILE * ESC& ************************************ * P1(P2) * UFRWD(UBKWD) * ONEP OR TWOP * ONEC(TWOC) * UFRWD OCT 72453 ONEP OCT 30560 <1SMALL"P"> TWOP OCT 31160 <2SMALL"P"> ONEC OCT 30503 <1C> * UBKWD OCT 72455 TWOC OCT 31103 <2C> * * FIND THE NTH FILE ON CTU (1 OR 2) * ESC& ********************************* * P1(P2) * UN * P2 * C * UN OCT 72400 * * WRITE N BYTES TO CTU (1 OR 2) * ESC& ***************************** * P1(P2) * DN * W * DN OCT 62000 W OCT 53400 ENQ OCT 2400 * * READ FROM CTU (1 OR 2) TO COMPUTER * ESC& ********************************** * P1(P2) * S2 * R * S2 OCT 71462 R OCT 51000 * * FETCH STATUS OF CTU (1 OR 2) * ESC& **************************** * P1(P2) * UP * UP OCT 57000 <^> * * EXTENSION FOR MISC. STORAGE * * DVX DEF DVX1 DVX1 NOP CONTINUATION ADDR DVX2 NOP BUFF ADDR OF CURRENT REQUEST DVX3 NOP BUFF LENGTH (-CHAR'S) DVX4 NOP ESC& DVX5 NOP P1(P2) DVX6 NOP REMAINING DVX7 NOP CONTROL DVX8 NOP ESCAPE DVX9 NOP SEQUENCE DVX10 NOP INITIAL LENGTH DVX11 NOP ADDR OF CURRENT READ DVX12 NOP ADDRESS OF 'S' OR 'F' DVX13 NOP REQUEST LENGTH (+CHARS) DVX14 NOP CHARACTER ACCUMULATOR DVX15 NOP INITIAL SUBFUNCTION DVX16 NOP BUFFER ADDR DVX17 NOP FOR DVX18 NOP 1-8 DVX19 NOP BYTE READ DVX20 NOP CONTINUATION ADDR FOR DYNAMIC STATUS * * DRIVER PARAMETER STORAGE * * * $DVTP CTU LEFT OR RIGHT * * END