|
|
DataMuseum.dkPresents historical artifacts from the history of: Philips Data Systems |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Philips Data Systems Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 23248 (0x5ad0)
Notes: pts_type(SC)
Names: »DRTP04.SC«
└─⟦13e5fd45a⟧ Bits:30009699 Philips computer tape "600507"
└─⟦this⟧ »TOSSWORK/DRTP04.SC«
└─⟦bc20f3abf⟧ Bits:30009670 Philips computer tape "600126"
└─⟦this⟧ »TOSSWORK/DRTP04.SC«
IDENT DRTP04 REL 11.0 81-06-17 870105041100 =1,CORR. FOR ODD ECBADDR REL 11.0 81-01-26 * ******************************************************* * * * PHILIPS TERMINAL SYSTEM PTS * * * * DRTP04 = DRIVER TELLER TERMINAL PRINTER * * * * * ******************************************************* * * THIS DRIVER HANDLES TELLER TERMINAL PRINTER FT80 * * AND CONSISTS OF THE FOLLOWING PARTS: * * A C T P : ACTIVATION PART * * R C T P : RECOVERY ROUTINE * * THE ACTIVATION PART SELECTS THE ACTUAL ORDER PROCESSOR. * A STRING IS SET UP AND TRANSFERED TO THE PRINTER. * THE STRING BEGINS WITH A DEDICATED PRINTER CHARACTER. * THE CONTENTS OF THE STRING IS EITHER A FIXED FORMATTED * BUFFER OR FOR ORDER WRITE THE USER BUFFER. * THE STRING IS TERMINATED WITH AN EXECUTION CHARACTER. * AFTER EXECUTION THE PRINTER RESPONDS WITH A STATUS * CHARACTER INDICATING THE RESULT OF THE EXECUTED ORDER. * * THE RECOVERY ROUTINE IS ENTERED AFTER PROGRAM LOADING, * AFTER POWER ON FROM TERMINAL SIDE AND AFTER TRANSMISSION * TIME OUT. * THE RECOVERY ROUTINE SENDS A FIXED FORMATTED STRING TO * THE PRINTER. THIS STRING CONTAINS THE ACTUAL PARAMETERS * AND STATUS FOR THE PRINTER. EJECT * * THE FOLLOWING ORDERS ARE TREATED: * * ORDER 00 : TEST STATUS * ORDER 06 : WRITE * ORDER 22 : CUT RECEIPT * ORDER 24 : SET PRINTER PARAMETERS * ORDER 26 : PERFORATE RECEIPT * * THE FOLLOWING RETURN CODES ARE USED: * * BIT 0 : REQUEST ERROR * BIT 2 : END OF JOURNAL * BIT 7 : RECOVERY EXECUTED * BIT 10 : DOCUMENT OUT * BIT 13 : CODE CHECK ERROR * BIT 15 : NOT OPERABLE * * * NORMAL REGISTER USAGE: * * REGISTER A1: WORK REGISTER * A2: INPUT/OUTPUT * A3: BUFFER POINTER * A4: OUTPUT COUNTER * A5: STACK POINTER * A6: DWT-ADDRESS * A7: ORDER * A8: ECB-ADDRESS * * EJECT * *********** * ENTRIES * *********** * * ENTRY TPAD4 ADDRESS BLOCK * * * ************* * EXTERNALS * ************* * * EXTRN LDISP DISPATCHING FROM INTERRUPT EXTRN LENDER DISPATCH I/O ERROR EXTRN LENDIS END I/O AND DISPATCH EXTRN OUTPUT OUTPUT ONE CHARACTER EXTRN GETCHR GET CHARACTER FROM ECB BUFFER EXTRN DWTST DWT STATUS DISPLACEMENT EXTRN DWTECB DWT ECB DISPLACEMENT EXTRN DWTOR DWT ORDER DISPLACEMENT EXTRN DWTSB2 STACK BASE EXTRN DWTDEV DEVICE STATUS EXTRN INPUT GET STATUS INPUT CHAR EXTRN STABLK DEF. START OF BLOCK EXTRN ENDBLK DEF. END OF BLOCK EXTRN ECBBA BUFFER ADDRESS EXTRN ECBRL REQUESTED LENGTH EXTRN ECBEL EFFECTIVE LENGTH EXTRN ECBRC RETURN CODE EXTRN ECBCW CONTROL WORD EJECT * ************* * CONSTANTS * ************* * * DEDICATED PRINTER CHARACTERS (/00-/0F) * POTEST EQU /00 TEST PORECV EQU /01 RECOVERY (NOT USED) RESTRT EQU /02 RESTART (NOT USED) ETX EQU /03 EXECUTE ORDER POPPAR EQU /04 SET PRINTER PARAMETERS PODSTA EQU /05 DIAGNOSTIC STATUS EXE EQU /06 EXECUTE (NOT USED) POTDOC EQU /07 TRANSFER DOCUMENT PARAMETERS (NOT USED) PORDOC EQU /08 RELEASE DOCUMENT POWDOC EQU /09 WRITE DOCUMENT POWREC EQU /0A WRITE RECEIPT POPDOC EQU /0B POSITION DOCUMENT RESET EQU /0C RESET ORDER POWJRL EQU /0D WRITE JOURNAL SPEC EQU /0E NOT USED TEST EQU /0F TEST (NOT USED) * ENDJ EQU /2000 END OF JOURNAL STATUS DOCOUT EQU /20 DOCUMENT OUT STATUS EJECT * ************************ * CONDITIONAL ASSEMBLY * ************************ * * THE STANDARD NATIONAL CHARACTER SET IS CHOSEN * BY SETTING X:A TO 0-10 ACCORDING TO THE LIST BELOW * * NCV = 0 GREAT BRITAIN * 1 GERMANY * 2 FRANCE 1 * 3 SPAIN * 4 ITALY * 5 SWEDEN, FINLAND * 6 DENMARK, NORWAY 1 * 7 PORTUGAL * 8 YUGOSLAVIA OR FRANCE 2 (DEPENDING ON CHAR GEN) * 9 USA * 10 DENMARK, NORWAY 2 * X:A EQU 0 STDNCV EQU X:A * * THE RECEIPT STATION CAN BE EXCLUDED * BY SETTING X:B=0 * X:B EQU 1 M2PRT EQU X:B * * MMU BUFFER SIZE * X:C EQU 095 DVBLEN EQU X:C * * A REQUEST IS ALLWAYS ENDED FOR NOT OPERABLE PRINTERS * BY SETTING X:D=1 X:D EQU 0 REQEND EQU X:D * * * * PRIPAR FORM 1=1,2=0,5=STDNCV,8=0 EJECT * ********************* * DWT-DISPLACEMENTS * ********************* * * * PP EQU /2 PRINTER PARAMETERS * EJECT * ********** * TABLES * ********** * * * ADDRESS BLOCK * DATA DVBLEN MMU BUFFER SIZE DATA 2 DEVICE INDEX TPAD4 EQU * ADDRESS BLOCK DATA ACTP ACTIVATION DRIVER DATA 0 ABORT ROUTINE ADDRESS DATA 0 INTERRUPT HANDLER DATA RCTP RECOVERY ROUTINE * * VALID ORDERS WITH ACTIVATION ADDRESSES * TPTAB EQU * DATA TPTAB0 DEVICE INDEX 0 TABLE DATA TPTAB1 DEVICE INDEX 1 TABLE DATA TPTAB2 DEVICE INDEX 2 TABLE DATA TPTAB3 DEVICE INDEX 3 TABLE * TPTAB0 EQU * DEVICE INDEX 0 DATA 0 TEST STATUS (JOURNAL) DATA TSTSTA DATA 6 WRITE JOURNAL DATA WRTJRL DATA /24 SET PRINTER PARAMETERS DATA PRTPAR DATA /FFFF END OF ORDERS * TPTAB1 EQU * DEVICE INDEX 1 DATA 0 TEST STATUS (DOCUMENT) DATA TSTSTA DATA 6 WRITE DOCUMENT DATA WRTDOC DATA /24 SET PRINTER PARAMETERS DATA PRTPAR DATA /FFFF END OF ORDERS * TPTAB2 EQU * DEVICE INDEX 2 IFT M2PRT=1 DATA 0 TEST STATUS (RECEIPT) DATA TSTSTA U DATA 6 WRITE RECEIPT DATA WRTREC DATA /22 CUT RECEIPT DATA CUTREC DATA /26 PERFORATE RECEIPT DATA PERREC DATA /24 SET PRINTER PARAMETERS DATA PRTPAR XIF DATA /FFFF END OF ORDERS * TPTAB3 EQU * DEVICE INDEX 3 DATA /FFFF END OF ORDERS * * SYSTEM STANDARD PRINTER PARAMETERS * STDPP PRIPAR STANDARD PRINTER PARAMETERS EJECT * * * A C T P * * THIS IS THE ACTIVATION PART OF THE DRIVER * CHECKS VALIDITY OF ORDERS AND JUMPS TO ORDER PROCESSOR * * * ACTP EQU * ACTIVATION ENTRY * * * GET DWT INDEX: 0=JOURNAL, 1=DOCUMENT, 2=RECEIPT * LC A2,DWTOR,A6 GET DWT INDEX ANK A2,3 MASK SLL A2,6 SHIFT LD A3,DWTDEV,A6 GET OLD DEVICE INDEX ANKL A3,/FF1F RESET OLD INDEX AND LF IND ORR A3,A2 ST A3,DWTDEV,A6 STORE NEW INDEX ACT005 LD A1,DWTDEV,A6 GET DEVICE INDEX ANK A1,/C0 SRL A1,5 GET CORESPONDING ORDER TABLE LD A2,TPTAB,A1 ACT010 LDR* A3,A2 ABL(N) LENDER NO MORE VALID ORDERS SUR A3,A7 TEST IF ORDER VALID RF(E) ACT020 VALID ORDER FOUND ADK A2,4 TRY NEXT ORDER RB ACT010 ACT020 EQU * ABI 2,A2 EXECUTE ORDER EJECT * * * ORDER 00 : TEST STATUS * * TSTSTA EQU * CM ECBCW,A8 CLEAR CONTROL WORD LDK A2,3 BLOCK LENGTH LDK A3,POTEST LOAD TEST ORDER CF A5,ORDER AND SEND CF A5,EXECUT EXECUTE ORDER IN PRINTER LDR A1,A2 GET PRINTER STATUS ANK A1,/1 TEST PRINTER STATUS RF(Z) TSST10 NO PERMANENT ERRORS TSST05 EQU * LDK A2,3 BLOCK LENGTH LDK A3,PODSTA LOAD DIAGNOSTIC ORDER CF A5,ORDER AND SEND CF A5,EXECUT EXECUTE ORDER IN PRINTER SC A2,ECBCW+1,A8 SET UP DIAGN STATUS IN ECB LDK A1,1 INDICATE NOT OPERABLE RF TSST80 TSST10 LDR A1,A2 GET PRINTER STATUS LD A3,DWTDEV,A6 GET DEVICE INDEX ANK A3,/C0 TEST DEVICE INDEX RF(NZ) TSST40 DEVICE INDEX > 0 ANK A1,/20 TEST PRINTER STATUS RF(Z) TSST80 NO ERRORS LDKL A1,ENDJ END OF JOURNAL RF TSST80 TSST40 EQU * ANK A3,/80 TEST DEVICE INDEX RF(NZ) TSST70 DEVICE INDEX > 1 ANK A1,/40 TEST PRINTER STATUS RF(Z) TSST80 NO ERRORS LDK A1,DOCOUT DOCUMENT OUT RF TSST80 TSST70 LDK A1,0 RECEIPT, NO ERRORS DETECTABLE TSST80 ABL LENDIS END REQUEST EJECT * * * ORDER 06 : WRITE JOURNAL * * WRTJRL EQU * LD A1,ECBRL,A8 GET REQUESTED LENGTH SUK A1,2 TEST REQUESTED LENGTH RF(N) WRJL80 REQUEST ERROR LD A2,ECBBA,A8 GET CONTROL CHARACTER =1 LC A2,1,A2 * =1 ANK A2,/FF LDK A4,0 SET UP 0 LF SUK A2,/2B TEST CTRL CHAR RF(Z) WRJL10 CTRL CHAR =/2B LDK A4,2 SET UP 2 LF SUK A2,5 RF(Z) WRJL10 CTRL CHAR =/30 LDK A4,1 SET UP 1 LF WRJL10 EQU * LD A2,ECBRL,A8 ADK A2,2 BLOCK LENGTH LDK A3,POWJRL LOAD WRITE JOURNAL ORDER CF A5,ORDER AND SEND LDR A2,A4 RELOAD LF INF CF A5,OUT AND SEND LDK A3,2 SET UP BUFFER POINTER WRJL20 CF A15,GETCHR GET CHARACTER FROM ECB BUFFER LDR A1,A1 RF(Z) WRJL50 BUFFER FINISHED LDR A1,A2 GET CHAR IN A1 * EXAMINE CHARACTER SUK A1,/10 RB(N) WRJL20 CHAR </10 SUK A1,/6F RB(Z) WRJL20 CHAR=/7F RF(N) WRJL40 CHAR = NORMAL SUK A1,/2F RF(Z) WRJL40 CHAR =/AE LDK A1,4 IND CODE CHECK ERROR ORS A1,ECBRC,A8 IN RETURN CODE RB WRJL20 * SEND CHARACTER TO DEVICE WRJL40 CF A5,OUTPUT SEND CHARACTER ABL(NZ) ERTP JMP IF ERROR RB WRJL20 GET NEXT CHARACTER * SEND ETX WRJL50 CF A5,EXECUT EXECUTE ORDER IN PRINTER SUK A4,2 RF(NZ) WRJL60 NOT 2 LF REQUESTED LDR A4,A2 SAVE FIRST STATUS LDK A2,4 BLOCK LENGTH LDK A3,POWJRL LOAD WRITE JOURNAL ORDER CF A5,ORDER AND SEND LDK A2,1 SET UP 1 LF CF A5,OUT SEND LF INF CF A5,EXECUT EXECUTE 1 LF IN PRINTER ORR A2,A4 COMBINE FIRST AND SECOND STATUS WRJL60 LDR A1,A2 GET PRINTER STATUS ANK A1,/25 TEST PRINTER STATUS RF(Z) WRJL70 NO ERRORS ANK A1,1 TEST PRINTER STATUS RF(NZ) WRJL70 NOT OPERABLE ANK A2,4 TEST PRINTER STATUS RF(NZ) WRJL80 REQUEST ERROR LDKL A1,ENDJ END OF JOURNAL WRJL70 ABL LENDIS END REQUEST WRJL80 ABL LENDER END REQUEST WITH REQUEST ERROR EJECT * * * ORDER 06 : WRITE DOCUMENT * * WRTDOC EQU * LD A1,ECBRL,A8 GET REQUESTED LENGTH SUK A1,2 TEST REQUESTED LENGTH RF(N) WRDO80 REQUEST ERROR WRDO10 EQU * LD A2,ECBRL,A8 ADK A2,2 BLOCK LENGTH LDK A3,POWDOC SET UP PRINTER ORDER CF A5,ORDER AND SEND LDK A2,0 SET UP DUMMY LF CF A5,OUT AND SEND LDK A3,2 SET UP BUFFER POINTER WRDO20 CF A15,GETCHR GET CHARACTER FROM ECB BUFFER LDR A1,A1 RF(Z) WRDO50 BUFFER FINISHED LDR A1,A2 GET CHARACTER * EXAMINE CHARACTER SUK A1,/10 RB(N) WRDO20 CHAR < /10 SUK A1,/6F RF(N) WRDO40 CHAR = NORMAL RB(Z) WRDO20 CHAR = /7F SUK A1,/2F RF(Z) WRDO40 CHAR = /AE LDK A1,4 INDICATE CODE CHECK ERROR ORS A1,ECBRC,A8 IN RETURN CODE RB WRDO20 * SEND CHARACTER TO PRINTER WRDO40 CF A5,OUTPUT SEND CHARACTER ABL(NZ) ERTP JMP IF ERROR RB WRDO20 GET NEXT CHAR * SEND ETX WRDO50 CF A5,EXECUT EXECUTE ORDER IN PRINTER LDR A1,A2 GET PRINTER STATUS ANK A1,/45 TEST PRINTER STATUS RF(Z) WRDO70 NO ERRORS ANK A1,1 TEST PRINTER STATUS RF(NZ) WRDO70 NOT OPERABLE ANK A2,4 TEST PRINTER STATUS RF(NZ) WRDO80 REQUEST ERROR RB WRTDOC DOCUMENT OUT REPEAT ORDER WRDO70 ABL LENDIS END REQUEST WRDO80 ABL LENDER END REQUEST WITH REQUEST ERROR EJECT * * * ORDER 06 : WRITE RECEIPT * * IFT M2PRT=1 WRTREC EQU * LD A1,ECBRL,A8 GET REQUESTED LENGTH SUK A1,2 TEST REQUESTED LENGTH RF(N) WRRC80 REQUEST ERROR LD A2,ECBBA,A8 GET CONTROL CHARACTER =1 LC A2,1,A2 U =1 ANK A2,/FF LDK A4,0 SET UP 0 LF SUK A2,/2B RF(Z) WRRC10 CTRL CHAR = /2B LDK A4,8 SET UP 8 LF SUK A2,6 RF(Z) WRRC10 CTRL CHAR = /31 LDK A4,5 SET UP 5 LF (FAST) SUK A2,1 RF(Z) WRRC10 CTRL CHAR = /32 LDK A4,2 SET UP 2 LF ADK A2,2 RF(Z) WRRC10 CTRL CHAR =/30 LDK A4,1 SET UP 1 LF WRRC10 EQU * LD A2,ECBRL,A8 ADK A2,2 BLOCK LENGTH LDK A3,POWREC LOAD WRITE RECEIPT ORDER CF A5,ORDER AND SEND LDR A2,A4 RELOAD LF INF CF A5,OUT AND SEND LF INFORMATION LDK A3,2 SET UP BUFFER POINTER WRRC20 CF A15,GETCHR GET CHARACTER FROM ECB BUFFER LDR A1,A1 RF(Z) WRRC50 BUFFER FINISHED LDR A1,A2 GET CHAR IN A1 * EXAMINE CHARACTER SUK A1,/10 RB(N) WRRC20 CHAR </10 SUK A1,/6F RB(Z) WRRC20 CHAR=/7F RF(N) WRRC40 CHAR = NORMAL SUK A1,/2F RF(Z) WRRC40 CHAR =/AE LDK A1,4 IND CODE CHECH ERROR ORS A1,ECBRC,A8 IN RETURN CODE RB WRRC20 * SEND CHARACTER TO DEVICE WRRC40 CF A5,OUTPUT SEND CHARACTER ABL(NZ) ERTP JMP IF ERROR RB WRRC20 GET NEXT CHARACTER * SEND ETX WRRC50 CF A5,EXECUT EXECUTE ORDER IN PRINTER SUK A4,2 RF(NZ) WRRC60 NOT 2 LF REQUESTED LDR A4,A2 SAVE FIRST STATUS LDK A2,4 BLOCK LENGTH LDK A3,POWREC LOAD WRITE RECEIPT ORDER CF A5,ORDER AND SEND LDK A2,1 SET UP 1 LF CF A5,OUT SEND LF INF CF A5,EXECUT EXECUTE 1 LF IN PRINTER ORR A2,A4 COMBINE FIRST AND SECOND STATUS WRRC60 LDR A1,A2 GET PRINTER STATUS ANK A1,5 TEST PRINTER STATUS RF(Z) WRRC70 NO ERRORS ANK A1,1 TEST PRINTER STATUS RF(Z) WRRC80 REQUEST ERROR WRRC70 ABL LENDIS END REQUEST WRRC80 ABL LENDER END REQUEST WITH REQUEST ERROR XIF EJECT * * * ORDER 22 : CUT RECEIPT * * IFT M2PRT=1 CUTREC EQU * LDK A2,4 BLOCK LENGTH LDK A3,POWREC SET UP WRITE RECEIPT ORDER CF A5,ORDER AND SEND LDK A2,6 SET UP CUT (=6 LF) CF A5,OUT AND SEND CF A5,EXECUT EXECUTE ORDER IN PRINTER LDR A1,A2 GET PRINTER STATUS ANK A1,1 MASK STATUS CREC70 ABL LENDIS END REQUEST XIF EJECT * * * ORDER 26 : PERFORATE RECEIPT * * IFT M2PRT=1 PERREC EQU * LDK A2,4 BLOCK LENGTH LDK A3,POWREC SET UP WRITE RECEIPT ORDER CF A5,ORDER AND SEND LDK A2,7 SET UP PERFORATE (=7 LF) CF A5,OUT AND SEND CF A5,EXECUT EXECUTE ORDER IN PRINTER LDR A1,A2 GET PRINTER STATUS ANK A1,1 MASK STATUS PREC70 ABL LENDIS END REQUEST XIF EJECT * * * ORDER 24 : SET PRINTER PARAMETERS * CONTROL WORD CONTAINS: * BIT 00 : INDICATE CHANGE * BIT 01-02 : NOT USD * BIT 03 : SMALL LETTER IND * BIT 04-07 : NATIONAL CHARACTER VARIATION * BIT 08-15 : NOT USED * * PRTPAR EQU * LD A1,ECBCW,A8 GET CONTROL WORD RF(NN) PPAR10 NO NEW L/NCV SET UP IN CTRL WORD ST A1,DWTDEV+PP,A6 STORE NEW L/NCV IN DWT PPAR10 EQU * LDK A2,5 BLOCK LENGTH LDK A3,POPPAR LOAD PRINTER PRINTER PARAMETER ORDER CF A5,ORDER AND SEND LC A2,DWTDEV+PP,A6 CF A5,OUT SEND L/NCV LC A2,DWTDEV+PP+1,A6 CF A5,OUT SEND DUMMY CF A5,EXECUT EXECUTE ORDER IN PRINTER LDR A1,A2 GET PRINTER STATUS ANK A1,1 TEST PRINTER STATUS PPAR70 ABL LENDIS END REQUEST EJECT * * S U B R O U T I N E S * * * * O R D E R * SEND START OF BLOCK CHAR TO COM. AND ORDER CODE TO PRINTER * ORDER EQU * CF A5,STABLK START OF BLOCK RF(NZ) ERTP JMP IF ERROR LDK A2,RESET SEND RESET JUST IN CASE CF A5,OUTPUT RF(NZ) ERTP JMP IF ERROR LDR A2,A3 RF OUT10 SEND PRINTER ORDER * * E X E C U T E * SEND EXECUTE CHAR (/03) TO PRINTER AND END OF BLOCK CHAR TO COM. * EXECUT EQU * LDK A2,ETX SEND EXECUTE CHAR TO PRINTER CF A5,OUTPUT RF(NZ) ERTP JMP IF ERROR CF A5,ENDBLK END OF BLOCK RF(NZ) ERTP JMP IF ERROR CF A5,INPUT GET STATUS CHARACTER EXE10 SC A2,DWTDEV,A6 SAVE IN DWT STATUS RTN A5 * * 0 U T * ADD CONST. AND SEND * OUT EQU * ANK A2,/7F ADK A2,/10 CWK A2,/7F RF(NG) OUT10 CHARACTER NOT GREATER THAN /7F LDK A2,/7F IF GREATER SET CHAR TO /7F OUT10 EQU * CF A5,OUTPUT RF(NZ) ERTP JMP IF ERROR RTN A5 * * ERROR ROUTINE FOR STABLK,OUTPUT & ENDBLK * * ERTP EQU * ANK A1,/12 OUTP.ERROR OR LRC-ERROR ? RF(Z) ERTP10 NO LDKL A5,DWTSB2 STACK BASE ADR A5,A6 ADD DWT ADDRESS RF RCTP DO RECOVERY ERTP10 EQU * IFF REQEND=1 LDR A7,A7 TEST ORDER OR RECOVERY ? ABL(NZ) LDISP NO XIF LDK A1,1 SET NOT OPERABLE ABL LENDIS END OF REQ. EJECT * * R C T P * * THIS IS THE RECOVERY ROUTINE FOR THE DRIVER * DWT ORDER IS RESET IF NO REQUEST RUNING * DWT IS SET BUSY * AFTER PROGRAM LOADING SYSTEM PARAMETERS ARE SET UP IN DWT * TEST STRING IS SENT TO PRINTER TO GET SYNCRONISM * A FIXED FORMATTED RECOVERY STRING IS THEN SENT TO PRINTER * THIS STRING CONTAINS THE ACTUAL PARAMETERS AND THE ACTUAL * STATUS FOR THE PRINTER. * A RUNING REQUEST IS AT LAST REPEATED. * RCTP EQU * LD A1,DWTECB,A6 GET ECB ADDRESS RF(NZ) RCTP02 REQUEST RUNNING LDK A7,0 RESET ORDER RCTP02 EQU * LDKL A1,/7FFF INDICATE DEVICE BUSY ANS A1,DWTST,A6 LD A1,DWTDEV+PP,A6 RF(N) RCTP08 NOT SYSTEM START UP RECOVERY LD A3,STDPP SET UP ST PR PAR IN DWT ST A3,DWTDEV+PP,A6 RCTP08 EQU * LDK A2,3 BLOCK LENGTH LDK A3,POTEST LOAD PRINTER ORDER TEST STATUS CF A5,ORDER AND SEND CF A5,EXECUT EXECUTE ORDER IN PRINTER RCTP10 EQU * LDK A2,5 BLOCK LENGTH LDK A3,POPPAR SET UP PRINTER RECOVERY ORDER CF A5,ORDER AND SEND LD A3,DWTDEV+PP,A6 GET PRINTER PARAMETERS RCTP20 ECR A2,A3 CF A5,OUT SEND LFCTRL/NCV LDR A2,A3 CF A5,OUT SEND DUMMY CODE RCTP60 CF A5,EXECUT EXECUTE RECOVERY IN PRINTER RCTP70 LD A1,DWTECB,A6 ABL(Z) LENDIS REQ NOT RUNNING LDKL A1,/100 IND RECOVERY EXECUTED ST A1,ECBRC,A8 IN RETURN CODE ABL ACT005 REPEAT REQUEST END