|
|
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: 33344 (0x8240)
Notes: pts_type(SC)
Names: »DRTP03.SC«
└─⟦110b7ed5e⟧ Bits:30009664 Philips computer tape "600106"
└─⟦this⟧ »TOSSWORK/DRTP03.SC«
IDENT DRTP03 REL 9.2 79-11-16 870105040920 =6,COMB OF REL 8,9&10 PRR 10.1 79-11-14 =5,SET PR PAR ERR, REL DOC ERR PRR 10.1 79-10-04 =4,GEN UPDATE REL 10 REL 9.1 79-09-26 =3,ANK A2,/7F PRR 9.1 79-08-14 =2,GEN UPDATE PRR 9.1 79-06-20 =1,GEN UPDATE PRR 9.1 79-06-17 * ******************************************************* * * * PHILIPS TERMINAL SYSTEM PTS * * * * DRTP03 = DRIVER TELLER TERMINAL PRINTER * * * * ADAPTED FOR TOSS RELEASE INDICATED IN "REL EQU X" * * * ******************************************************* * * THIS DRIVER HANDLES TELLER TERMINAL PRINTER PTS 6371 * * AND CONSISTS OF THE FOLLOWING PARTS: * * A C T P : ACTIVATION PART * * I H T P : INTERRUPT HANDLER * * R C T P : RECOVERY ROUTINE * * THE ACTIVATION PART PREPARES ORDERS AND SENDS * A FIXED FORMATTED STRING TO THE PRINTER * EJECT * * THE FOLLOWING ORDERS ARE TREATED: * * ORDER 00 : TEST STATUS * ORDER 06 : WRITE * ORDER 0B : POSITION DOCUMENT * ORDER 24 : SET PRINTER PARAMETERS * ORDER 27 : SET DOCUMENT PARAMETERS * ORDER 37 : TRANSFER DOCUMENT PARAMETERS * ORDER 38 : RELEASE DOCUMENT * * THE FOLLOWING RETURN CODES ARE USED: * * BIT 0 : REQUEST ERROR * BIT 2 : END OF JOURNAL **IN REL 10...** =6(=4) * BIT 10 : END OF JOURNAL **IN REL 8 & 9** =6 * BIT 10 : DOCUMENT OUT =4 * 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 TPAD3 ADDRESS BLOCK * * * ************* * EXTERNALS * ************* * * EXTRN TDISP DISPATCHING FROM INTERRUPT EXTRN DISIOE DISPATCH I/O ERROR EXTRN DISEND END I/O AND DISPATCH EXTRN OUTPUT OUTPUT ONE CHARACTER EXTRN LDREG RESTORE REGISTERS EXTRN SAVE8 SAVE REG. A1-A8 EXTRN GETCHR GET CHARACTER FROM ECB BUFFER EXTRN DWTST DWT STATUS DISPLACEMENT EXTRN DWTECB DWT ECB DISPLACEMENT EXTRN DWTOR DWT ORDER DISPLACEMENT EXTRN DTTP03 DOCUMENT TABLE ADDRESS EXTRN TLTP03 DOCUMENT TABLE LENGTH EXTRN STREG STORE REG = GET STATUS INPUT CHAR EXTRN DWTTP DWT TIMER POINTER EXTRN SETIMP SET TIMER ROUTINE EJECT * * ************* * CONSTANTS * ************* * REL EQU 9 ADAPTED FOR TOSS REL X =6 * STB EQU /82 START OF TEXT BLOCK ETB EQU /97 END OF TEXT BLOCK SPEC EQU /0E SPECIAL CHARACTER EXE EQU /06 EXECUTE TP71 ORDER ETX EQU /03 END OF TEXT RESET EQU /0C RESET CHARACTER U =4 TIME EQU 10 TIME OUT (1S) IFF REL=8 U =6 IFF REL=9 U =6 ENDJ EQU /2000 END OF JOURNAL STATUS =6 XIF U =6 IFT REL=8 U =6 ENDJ EQU /20 END OF JOURNAL STATUS =6 XIF U =6 IFT REL=9 U =6 ENDJ EQU /20 END OF JOURNAL STATUS =6 XIF U =6 * * PRINTER ORDERS (PO) SENT TO PRINTER * POTEST EQU /00 TEST POPPAR EQU /04 SET PRINTER PARAMETERS POTDOC EQU /07 TRANSFER DOCUMENT PARAMETERS POPDOC EQU /0B POSITION DOCUMENT POWDOC EQU /09 WRITE DOCUMENT POWJRL EQU /0D WRITE JOURNAL PORDOC EQU /08 RELEASE DOCUMENT PODSTA EQU /05 DIAGNOSTIC STATUS PORECV EQU /01 RECOVERY EJECT * ************************ * CONDITIONAL ASSEMBLY * ************************ * * THE STANDARD NATIONAL CHARACTER SET IS CHOOSEN * BY SETTING X:A TO 0-11 ACCORDING TO THE LIST BELOW =4 * * NCV=0 GREAT BRITAIN * 1 GERMANY * 2 FRANCE * 3 SPAIN * 4 ITALY * 5 SWEDEN, FINLAND * 6 DENMARK, NORWAY 1 * 7 PORTUGAL * 8 YOGUSLAVIA * 9 USA * 10 DENMARK, NORWAY 2 * 11 FRANCE 2 (NOT YET IMPLEMENTED IN THE PRINTERS) =4 * X:A EQU 0 STDNCV EQU X:A * * THE LOWER CASE SET CAN BE INCLUDED AS STANDARD * BY SETTING X:B=1 * X:B EQU 0 STDL EQU X:B * * THE STANDARD CHARACTER PITCH FOR THE DOCUMENT * STATION IS CHOOSEN BY SETTING X:C TO =4 * 0=15 CH/INCH, 1=12 CH/INCH OR 2=10 CH/INCH =4 * X:C EQU 2 STDCPD EQU X:C * * THE JOURNAL STATION CAN BE EXCLUDED * BY SETTING X:D=0 * X:D EQU 1 JOURNL EQU X:D * * THE STANDARD CHARACTER PITCH FOR THE JOURNAL * STATION IS CHOOSEN BY SETTING X:E TO =4 * 0=15 CH/INCH, 1=12 CH/INCH OR 2=10 CH/INCH =4 * X:E EQU 0 STDCPJ EQU X:E * * THE "SET PARAMETER" ORDERS 24 AND 27 CAN BE INCLUDED =6 * BY SETTING X:F=1 =6 * X:F EQU 0 U =6 PARORD EQU X:F * * A PROGRAM VERSION USING TOSS MMU PAGING * IS OBTAINED BY SETTING MMUPAG EQU 1. * MMUPAG EQU 0 * * * A PROGRAM VERSION USING THE EXTENDED INSTRUCTION * SET IS OBTAINED BY SETTING CPU852 EQU 0. * CPU852 EQU 1 * * MMU BUFFER SIZE * X:G EQU 095 U =4 DVBLEN EQU X:G * PRIPAR FORM 1=1,2=0,1=STDL,4=STDNCV,2=1,2=STDCPJ,2=1,2=STDCPD =4 EJECT * * ********************* * DWT-DISPLACEMENTS * ********************* * * * DWTDRD EQU /10 START OF DRIVER DEFINED PART * IFT MMUPAG=0 START EQU DWTDRD XIF * IFT MMUPAG=1 START EQU DWTDRD+4 XIF * DWTPP EQU START+18 PRINTER PARAMETERS DWTPPJ EQU START+20 PRINT POS JOURNAL DWTAPJ EQU DWTPPJ+1 ACTUAL PRINT POS JOURNAL DWTRPJ EQU DWTPPJ REQUESTED PRINT POS JOURNAL DWTPPD EQU START+22 PRINT POS DOCUMENT DWTAPD EQU DWTPPD+1 ACTUAL PRINT POS DOCUMENT DWTRPD EQU DWTPPD REQUESTED PRINT POS DOCUMENT DWTLN EQU START+24 LINE NUMBER ON DOCUMENT DWTALN EQU DWTLN+1 ACTUAL LINE NUMBER ON DOCUMENT DWTRLN EQU DWTLN REQUESTED LINE NUMBER ON DOCUMENT DWTDP EQU START+26 DOCUMENT PARAMETERS * * ********************* * ECB-DISPLACEMENTS * ********************* * ECBBA EQU 2 BUFFER ADDRESS IN ECB ECBRL EQU 4 REQUESTED LENGTH IN ECB ECBEL EQU 6 EFFECTIVE LENGTH IN ECB ECBRC EQU 8 RETURN CODE IN ECB ECBCW EQU 10 CONTROL WORD IN ECB EJECT * ********** * TABLES * ********** * * DATA DVBLEN MMU BUFFER SIZE DATA 2 DEVICE INDEX TPAD3 EQU * ADDRESS BLOCK DATA ACTP ACTIVATION DRIVER IFF REL=8 U =6 DATA 0 ABORT ROUTINE ADDRESS XIF U =6 DATA IHTP INTERRUPT HANDLER DATA RCTP RECOVERY ROUTINE TPTAB EQU * IFT JOURNL=1 DATA /0006 IFT PARORD=1 DATA /2424 XIF IFT PARORD=1 DATA /2528 XIF DATA /0107,/0C38,/3939 TPLEN EQU *-TPTAB 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 * LC A2,DWTOR,A6 GET DWT INDEX ANK A2,1 MASK LC A3,DWTST+1,A6 GET OLD DEVICE VALUE ANK A3,/FE ORR A3,A2 SC A3,DWTST+1,A6 STORE INDEX ADR A7,A2 ADD DWT INDEX TO ORDER SC A7,DWTOR+1,A6 STORE MODIFIED ORDER ACT005 LDK A3,TPLEN-1 ACT010 CC A7,TPTAB,A3 CHECK IF LEGAL ORDER RF(E) ACT020 VALID ORDER SUK A3,1 RB(NN) ACT010 TRY NEXT * ABL DISIOE ILLEGAL ORDER * * ACT020 EQU * ADR A3,A3 GET INDEX ABI TPFUC,A3 EXECUTE ORDER TPFUC EQU * DATA TSTSTA,WRTJRL IFT PARORD=1 DATA PRTPAR,PRTPAR XIF IFT PARORD=1 DATA PRTPAR,DOCPAR XIF DATA TSTSTA,WRTDOC,POSDOC,TRFDOC,RELDOC,RELDOC EJECT * * * ORDER 00 : TEST STATUS * * TSTSTA EQU * LDR A1,A6 SAVE DWT AS PARAMETER LDKL A4,DWTTP ADR A4,A6 SET UP TIMER POINTER CF A15,SETIMP START TIMER OF 1S DATA TSST20,TIME TIME OUT ADRESS AND VALUE LDK A3,POTEST LOAD TEST ORDER CF A5,ORDER AND SEND CF A5,EXECUT EXECUTE ORDER IN PRINTER LDK A3,8 TM A3,A2 RF(Z) TSST10 NOT PRINTER ANSWER LDK A3,3 TM A3,A2 RF(Z) TSST10 NOT JE OR GE LDK A3,PODSTA JE OR GE EXECUTE CF A5,ORDER DIAGNOSTICSTATUS CF A5,EXECUT TSST10 EQU * INH CM* DWTTP,A6 RESET TIMER CM DWTTP,A6 RESET TIMER POINTER CM ECBCW,A8 CLEAR CTRL WORD =2 ABL STATUS UPDATE STATUS TSST20 LDR A6,A1 GET DWT ADDRESS LDK A2,1 INDICATE NOT OPERABLE RB TSST10 IFT JOURNL=1 EJECT * * * ORDER 06 : WRITE JOURNAL * * WRTJRL EQU * LDK A3,POWJRL SET UP PRINTER WRITE JOURNAL ORDER CF A5,ORDER AND SEND LD A1,DWTST,A6 ANKL A1,/400 RF(NZ) WRJL10 LF EXECUTED LDK A3,1 SET UP ECB BUFFER POINTER CF A15,GETCHR GET CONTROL CHARACTER LDR A1,A1 RF(NP) WRJL70 REQ LENGTH TOO SHORT LDR A1,A2 SET UP CTRL CHAR IN A1 SUK A1,/2B RF(Z) WRJL10 CTRL CHAR =/2B CM DWTPPJ,A6 CLEAR PRINT POS LDK A2,2 SUK A1,5 RF(Z) WRJL05 CTRL CHAR =/30 LDK A2,1 SUK A1,1 RF(NZ) WRJL05 CTRL CHAR NOT =/31 LDK A2,3 WRJL05 CF A5,OUT SEND LF INF CF A5,EXECUT EXECUTE ORDER IN PRINTER LDK A1,7 TM A1,A2 RF(NZ) WRJL90 GE,JE OR RE LDKL A1,/400 ORS A1,DWTST,A6 IND LF EXECUTED LDK A1,2 CW A1,ECBRL,A8 RF(E) WRJL90 NO BUFFER TO PRINT RB WRTJRL WRJL10 LDK A2,0 CF A5,OUT SEND 0 LF LDKL A4,/100 SET UP NORMAL CHAR COUNTER IN A4 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 CHAR AND UPDATE PRINT POS AND SEND * DEPENDING ON TYPE OF CHARACTER * SUK A1,/10 RB(N) WRJL20 CHAR </10 RF(Z) WRJL30 CHAR = /10 SUK A1,9 RF(NZ) WRJL25 CHAR NOT /19 (=EXPAND) XRKL A4,/300 SWITCH CHAR COUNTER IN A4 RF WRJL40 SEND EXPAND CHAR WRJL25 SUK A1,7 RF(N) WRJL40 CHAR </20 SEND SUK A1,/5F RF(Z) WRJL40 CHAR =/7F SEND RF(N) WRJL30 CHAR = NORMAL SUK A1,/2F RF(Z) WRJL28 CHAR =/AE CF A5,ERROR ILLEGAL CHAR = SEND RESET LDK A2,/80 IND CODE CHECK ERROR RF WRJL90 WRJL28 LDK A2,/0E RF WRJL40 * UPDATE PRINT POSITION WRJL30 ADS A4,DWTRPJ,A6 ADD 1 OR 2 TO REQ PRINT POS * SEND CHARACTER TO DEVICE WRJL40 CF A5,OUTPUT SEND CHARACTER RB WRJL20 GET NEXT CHARACTER * SEND ETX WRJL50 CF A5,EXECUT EXECUTE ORDER IN PRINTER RF WRJL90 WRJL70 CF A5,ERROR SEND RESET WRJL80 LDK A2,4 IND REQ ERROR WRJL90 ABL STATUS XIF EJECT * * * ORDER 06 : WRITE DOCUMENT * * WRTDOC EQU * LC A4,DWTALN,A6 GET ACTUAL LINE ANK A4,/FF ABL(Z) WRDO80 DOC NOT POSITIONED LDK A3,1 SET BUFFER INDEX CF A15,GETCHR GET CONTROL CHARACTER LDR A1,A1 ABL(NP) WRDO80 REQ LENGTH < 2 SUK A2,/2B RF(Z) WRDO05 CTRL CHAR = /2B CM DWTPPD,A6 CLEAR PRINT POS ADK A4,2 SET REQ LINE = ACT LINE + 2 SUK A2,5 RF(Z) WRDO05 CTRL CHAR = /30 SUK A4,1 SET REQ LINE = ACT LINE + 1 SUK A2,1 RF(NZ) WRDO05 CTRL CHAR NOT = /31 LDK A4,1 SET REQ LINE = 1 WRDO05 CC A4,DWTDP+2,A6 ABL(G) WRDO80 REQ LINE > MAX LINES SC A4,DWTRLN,A6 SET UP REQ LINE NO LDKL A4,/100 SET UP NORMAL CHAR COUNTER IN A4 WRDO10 LDK A3,POWDOC SET UP PRINTER ORDER CF A5,ORDER AND SEND LC A2,DWTRLN,A6 GET REQ LINE NO 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 AND UPDATE PRINT POS AND SEND * DEPENDING ON TYPE OF CHARACTER SUK A1,/10 RB(N) WRDO20 CHAR < /10 RF(Z) WRDO30 CHAR = /10 SEND WRDO22 SUK A1,9 RF(NZ) WRDO27 CHAR NOT /19 (=EXPAND) XRKL A4,/300 SWITCH CHAR COUNTER IN A4 RF WRDO40 SEND EXPAND CHAR WRDO27 SUK A1,7 RF(N) WRDO40 CHAR < /20 SEND SUK A1,/5F RF(N) WRDO30 CHAR = NORMAL RF(Z) WRDO40 CHAR = /7F SEND SUK A1,/2F RF(Z) WRDO28 CHAR = /AE CF A5,ERROR SEND RESET LDK A2,/80 IND CODE CHECK ERROR RF WRDO90 WRDO28 LDK A2,SPEC SET UP CHAR /0E RF WRDO40 * UPDATE PRINT POS WRDO30 ADS A4,DWTRPD,A6 ADD 1 OR 2 TO REQ PRINT POS * SEND CHARACTER TO PRINTER WRDO40 CF A5,OUTPUT SEND CHARACTER RB WRDO20 GET NEXT CHAR * SEND ETX WRDO50 CF A5,EXECUT EXECUTE ORDER IN PRINTER RF WRDO90 WRDO70 CF A5,ERROR SEND RESET WRDO80 LDK A2,4 IND REQ ERROR WRDO90 ABL STATUS UPDATE STATUS EJECT * * * ORDER 0B : POSITION DOCUMENT * CONTROL WORD CONTAINS REQUESTED LINE NO * * POSDOC EQU * LD A4,ECBCW,A8 GET REQ LINE NO CC A4,DWTDP+2,A6 RF(G) PDOC30 REQ LINE > MAX LINES SC A4,DWTRLN,A6 SET UP REQ LINE NO LDK A3,POPDOC SET UP PRINTER POSITION DOCUMENT ORDER CF A5,ORDER AND SEND LDR A2,A4 SET UP LINE NO CF A5,OUT AND SEND CF A5,EXECUT EXECUTE ORDER IN PRINTER CM DWTPPD,A6 CLEAR PRINT POS LC A1,DWTDP,A6 TIME OUT USED ? =4 ANK A1,/78 U =4 RF(NZ) PDOC20 YES =4 LDK A1,/40 NO, DOC OUT SIGNALLED ? =4 TM A1,A2 U =4 RB(NZ) POSDOC YES, TRY ONCE MORE =4 PDOC20 ABL STATUS UPDATE STATUS PDOC30 LDK A2,4 INDICATE REQ ERROR RB PDOC20 EJECT * * * ORDER 37 : TRANSFER DOCUMENT PARAMETERS * CONTROL WORD CONTAINS DOCUMENT TABLE NUMBER * * TRFDOC EQU * LD A1,ECBCW,A8 ADK A1,1 LDR A4,A1 SLL A4,3 ADR A4,A1 ADR A4,A1 CWK A4,TLTP03 RF(G) ODOC10 REQ DOC TABLE NOT DEFINED SUK A4,10 ADJUST DOCTAB POINTER LD A1,DWTALN,A6 RF(Z) ODOC20 DOC. NOT POSITIONED =OK ODOC10 LDK A2,4 IND REQ ERROR RF ODOC40 ODOC20 LDK A3,POTDOC LOAD PRINTER TRANSFER DOC PARAMETERS ORDER CF A5,ORDER AND SEND LDK A3,DWTDP SET UP POINTER ODOC30 LC A2,DTTP03,A4 LDR A1,A6 ADR A1,A3 SCR A2,A1 U =4 CF A5,OUT ADK A4,1 ADK A3,1 CWK A3,DWTDP+10 RB(NE) ODOC30 WHOLE TABLE NOT SENT CF A5,EXECUT EXECUTE ORDER IN PRINTER ANK A2,5 MASK OFF GE AND RE U =1 ODOC40 ABL STATUS UPDATE STATUS U =1 U =1 IFT PARORD=1 EJECT * * * ORDER 24 : SET PRINTER PARAMETERS * CONTROL WORD CONTAINS: * BIT 0 : INDICATE CHANGE OF CH FONT AND NCV =4 * BIT 01-03 : CHARACTER FONT =4 * BIT 04-07 : NATIONAL CHARACTER VARIATION =4 * BIT 08-11 : CHARACTER PITCH FOR JOURNAL STATION =4 * BIT 12-15 : CHARACTER PITCH FOR DOCUMENT STATION =4 * * PRTPAR EQU * LDK A2,0 LD A4,DWTPP,A6 GET OLD DWT VALUE LD A1,ECBCW,A8 GET CONTROL WORD RF(NN) PPAR10 NO NEW L/NCV SET UP IN CTRL WORD ECR A2,A1 ANK A2,/FF SC A2,DWTPP,A6 STORE NEW L/NCV IN DWT PPAR10 LDK A2,0 LDR A3,A1 ANK A3,/F0 GET CTRL WORD RF(NZ) PPAR15 NEW CPJ SET UP IN CTRL WORD =1 LDR A3,A4 ANK A3,/F0 U =5(=1) PPAR15 EQU * U =5(=1) ORR A2,A3 STORE NEW CPJ IN A2 =5 XRR A3,A4 U =5 ANK A3,/F0 NEW AND OLD CPJ EQUAL ? =5 RF(Z) PPAR22 YES =5 CM DWTPPJ,A6 NO, RESET PRINT POS FOR JOURNAL =5 PPAR22 EQU * U =5 LDR A3,A1 ANK A3,/F GET CTRL WORD RF(NZ) PPAR25 NEW CPD SET UP IN CTRL WORD =1 LDR A3,A4 ANK A3,/F GET CPD FROM DWT U =5(=1) PPAR25 EQU * U =5(=1) ORR A2,A3 STORE NEW CPD IN A2 =5 XRR A3,A4 U =5 ANK A3,/F NEW AND OLD CPD EQUAL ? =5 RF(Z) PPAR32 YES =5 CM DWTPPD,A6 NO, RESET PRINT POS FOR DOC =5 PPAR32 EQU * U =5 SC A2,DWTPP+1,A6 STORE NEW PARAMETERS IN DWT LDK A3,POPPAR LOAD PRINTER PRINTER PARAMETER ORDER CF A5,ORDER AND SEND LC A2,DWTPP,A6 U =4(=2) CF A5,OUT SEND L/NCV LC A2,DWTPP+1,A6 ANK A2,/77 CF A5,OUT SEND CPJ/CPD CF A5,EXECUT EXECUTE ORDER IN PRINTER ANK A2,1 MASK OUT GE =1 U =1 U =1 U =1 U =1 PPAR40 ABL STATUS UPDATE STATUS EJECT * * * ORDER 27 : SET DOCUMENT PARAMETERS * CONTROL WORD CONTAINS TABLE NO OF GIVEN PARAMETERS * * DOCPAR EQU * LD A1,ECBCW,A8 GET CONTROL WORD ADK A1,1 LDR A4,A1 SLL A4,3 ADR A4,A1 ADR A4,A1 CWK A4,TLTP03 RF(G) DPAR80 DEFINED TABLE TOO SMALL SUK A4,10 ADJUST DOCTAB POINTER LD A3,ECBBA,A8 GET BUFFER ADDRESS CF A5,BYTE1 GET DOC TYPE SUK A1,3 RF(P) DPAR80 ILLEGAL VALUE U =2 SC A2,DTTP03,A4 CF A5,BYTE1 GET TIME OUT VALUE SLL A2,11 ORS A2,DTTP03,A4 CF A5,DOC GET LINE SPACING SUK A2,15 RF(P) DPAR80 TOO LARGE CF A5,DOC GET NO OF LINES SUK A2,0 RF(Z) DPAR80 NO LINES CF A5,DOC GET BOTTOM LINES SUK A2,14 RF(N) DPAR80 TOO SMALL CF A5,DOC GET MARGIN SUK A2,0 RF(Z) DPAR80 TOO SMALL SUK A2,80 RF(P) DPAR80 TOO LARGE ADK A4,1 CF A5,BYTE1 GET MARGIN FINE SUK A1,0 RF(Z) DPAR80 TOO SMALL SUK A1,7 RF(P) DPAR80 TOO LARGE SC A2,DTTP03,A4 CF A5,BYTE1 GET LEFT MARGIN SUK A1,1 RF(P) DPAR80 ILLEGAL VALUE SLL A2,3 ORS A2,DTTP03,A4 CF A5,BYTE1 GET CRITICAL MARGIN SUK A1,1 RF(P) DPAR80 ILLEGAL VALUE SLL A2,5 ORS A2,DTTP03,A4 CF A5,BYTE1 GET HIGH PRINT PRESSURE SUK A1,1 RF(P) DPAR80 ILLEGAL VALUE SLL A2,6 ORS A2,DTTP03,A4 LC* A1,ECBBA,A8 GET DOC TYPE ANK A1,/F RF(Z) DPAR60 DOC TYPE = 0 CF A5,DOC GET UPPER EDGE SUK A2,15 RF(N) DPAR80 TOO SMALL SUK A2,67 RF(P) DPAR80 TOO LARGE CF A5,DOC GET BOTTOM EDGE SUK A2,0 RF(Z) DPAR30 OK SUK A2,24 RF(N) DPAR80 TOO SMALL DPAR30 LC* A1,ECBBA,A8 GET DOC TYPE ANK A1,/F SUK A1,2 RF(N) DPAR70 DOC TYPE = 1 RF(P) DPAR40 DOC TYPE = 3 CF A5,DOC GET DOCUMENT WIDTH SUK A2,40 RF(N) DPAR80 TOO SMALL SUK A2,57 RF(P) DPAR80 TOO SMALL RF DPAR50 DPAR40 CF A5,DOC GET UPPER LINES SUK A2,0 RF(Z) DPAR80 TOO SMALL SUK A2,40 RF(P) DPAR80 TOO LARGE DPAR50 CF A5,DOC GET CENTER WIDTH RF DPAR75 OK DPAR60 LDK A2,0 DT=0 SET 4 LAST PARAMETERS=0 ADK A4,1 ST A2,DTTP03,A4 ADK A4,1 DPAR70 LDK A2,0 DT=1 SET 2 LAST PARAMETERS=0 ADK A4,1 ST A2,DTTP03,A4 DPAR75 LDK A1,0 IND STATUS OK FOR RETURN CODE RF DPAR90 DPAR80 LDKL A1,/8000 IND REQ ERROR FOR RETURN CODE DPAR90 ABL STAT50 SET RETURN CODE * GET ONE BYTE FROM ECB BUFFER TO A1 AND A2 * CONVERTED TO HEXA FROM ASCII BYTE1 LCR A2,A3 GET CHARACTER CF A5,CHECK TEST IF NUMERIC ANK A2,/F GET HEXA LDR A1,A2 SAVE IN A1 ALSO ADK A3,1 INC ECB BUFFER POINTER RTN A5 * GET TWO BYTES FROM ECB BUFFER TO A2 * CONVERTED TO HEXA AND STORED IN DOC TABLE DOC LDK A1,0 CLEAR HEXA VALUE ADK A4,1 INC TABLE POINTER LCR A2,A3 GET CHARACTER FROM ECB BUFFER CF A5,CHECK TEST IF NUMERIC ANK A2,/F DOC10 SUK A2,1 RF(N) DOC20 TENTH FINISHED ADK A1,10 UPDATE TENTH RB DOC10 DOC20 ADK A3,1 INC ECB BUFFER POINTER LCR A2,A3 GET NEXT CHARACTER FROM ECB BUFFER CF A5,CHECK TEST IF NUMERIC ANK A2,/F ADR A2,A1 ADD TO PREV HEXA VALUE SC A2,DTTP03,A4 STORE IN DOC TABLE ADK A3,1 INC ECB BUFFER POINTER RTN A5 * * CHECK IF CHARACTER IS NUMERIC CHECK ANK A2,/FF MASK OUT CHARACTER SUK A2,/30 RF(N) CHCK10 TOO LOW ERROR SUK A2,9 RF(P) CHCK10 TOO HIGH ERROR ADK A2,/39 RESTORE CHARACTER RTN A5 CHCK10 ADK A5,4 UPDATE STACK POINTER RB DPAR80 XIF EJECT * * * ORDER 38 : RELEASE DOCUMENT * * RELDOC EQU * LDK A3,PORDOC LOAD PRINTER REL DOC ORDER CF A5,ORDER AND SEND CF A5,EXECUT EXECUTE ORDER IN PRINTER U =5(=4) EJECT * * * UPDATE OF STATUS AND DWT * * STATUS EQU * LDK A1,0 CLEAR STATUS REGISTER LDK A3,/10 TM A3,A2 RF(NZ) STAT70 DIAGNOSTIC STATUS LDK A3,/87 TM A3,A2 RF(Z) STAT20 NOT RE, GE, JE OR CE CF A5,SETBK SET BACK REQ POS AND LINE LDK A3,1 U =5 TM A3,A2 RF(Z) STAT10 NOT GE =5 ORK A1,1 IND NOT OPERABLE STAT10 LDK A3,/80 TM A3,A2 RF(Z) STAT15 NOT CE ORK A1,4 IND CODE CHECK ERROR STAT15 LDK A3,4 TM A3,A2 RF(Z) STAT20 NOT REQ ERROR SRC A3,3 ADJUST REQ ERROR ORR A1,A3 STAT20 LD A3,DWTST,A6 ANK A3,1 RF(Z) STAT60 JOURNAL LDK A3,/40 DOCUMENT TM A3,A2 RF(Z) STAT30 NOT DOC OUT ORKL A1,/20 INDICATE DOC OUT =5 CM DWTLN,A6 CLEAR LINE NO FOR DOC CM DWTPPD,A6 CLEAR PRINT POS DOCUMENT RF STAT40 STAT30 LC A3,DWTRLN,A6 SC A3,DWTALN,A6 STAT40 LC A3,DWTRPD,A6 SC A3,DWTAPD,A6 STAT45 ST A3,ECBEL,A8 SET UP EFFECTIVE LENGTH=ACT PRINT POS STAT50 LDKL A3,/FB01 RESET STATUS BITS INH ANS A3,DWTST,A6 IFF REL=8 U =6 IFF REL=9 U =6 SUK A7,/39 REL DOC ORDER ? =5 RF(NZ) STAT55 NO =5 ANK A1,1 YES IND ONLY NOT OP IF SET =5 STAT55 EQU * U =5 XIF U =6 ABL DISEND STAT60 LDK A3,/20 TM A3,A2 RF(Z) STAT62 NOT END OF JOURNAL =5 ORKL A1,ENDJ IND END OF JOURNAL =6(=4) STAT62 LDK A3,2 U =5 TM A3,A2 U =5 RF(Z) STAT65 NOT JOURNAL ERROR (JE) =5 ORKL A1,1 IND NOT OPERABLE =5 STAT65 LC A3,DWTRPJ,A6 SC A3,DWTAPJ,A6 RB STAT45 STAT70 SC A2,ECBCW+1,A8 SET UP DIAGN STAT IN CTRL WORD =2 LDK A1,1 IND ECB RETURN CODE= 1 RB STAT50 SET UP RETURN CODE EJECT * * S U B R O U T I N E S * * * * O R D E R * SEND STB, STX AND ORDER CODE TO PRINTER * ORDER EQU * LDK A2,STB SEND STB CF A5,OUTPUT LDR A2,A3 CF A5,OUTPUT SEND PRINTER ORDER RTN A5 * * E X E C U T E * SEND ETB AND ETX TO PRINTER * EXECUT EQU * LDK A2,ETB SEND ETB CF A5,OUTPUT LDK A2,ETX SEND ETX CF A5,OUTPUT CF A5,STREG GET STATUS CHARACTER RTN A5 * * ERROR * SENDS RESET CODE TO PRINTER * ERROR EQU * LDK A2,RESET CF A5,OUTPUT RTN A5 * * 0 U T * ADD CONST. AND SEND * OUT EQU * U =3 ANK A2,/7F U =3 ADK A2,/10 U =3 CWK A2,/7F U =1 RF(NG) OUT10 CHARACTER NOT GREATER THAN /7F =1 LDK A2,/7F IF GREATER SET CHAR TO /7F =1 OUT10 EQU * U =1 CF A5,OUTPUT RTN A5 * * SETBK * SET BACK REQ LINE AND POS TO ACTUAL LINE AND POS * SETBK LC A3,DWTALN,A6 SC A3,DWTRLN,A6 LC A3,DWTAPD,A6 SC A3,DWTRPD,A6 LC A3,DWTAPJ,A6 SC A3,DWTRPJ,A6 RTN A5 EJECT * * I H T P * * INTERRUPT HANDLER: PROCESS OF INTERRUPT * * * IHTP EQU * LDR A1,A1 RF(NZ) IHTP20 LINE NOT OPERABLE ECR A1,A2 ANK A1,/70 RF(Z) IHTP40 ACK LDKL A1,/FF3F ANRS A1,A6 CLEAR PAPER INF IN DWT LDR A1,A2 ANK A1,/60 MASK OUT PAPER INF FROM PRINTER ANSWER XRK A1,/60 INVERT BITS SLC A1,1 ADJUST POS ORRS A1,A6 SET UP NEW PAPER INFORMATION LDK A1,/18 TM A1,A2 RF(NZ) IHTP40 DATA REQUEST OR DIAGNOSTIC STATUS 1 IHTP20 ABL TDISP GO TO DISPATCHER IHTP40 ABL LDREG RETURN FROM CF A5,OUTPUT/STREG EJECT * * R C T P * * RECOVERY ROUTINE: REPRINTS RUNNING REQUEST AT POWER ON * RCTP CF A15,SAVE8 SAVE REG. A1-A8 LDKL A1,/7FFF INDICATE DEVICE BUSY ANS A1,DWTST,A6 LDK A3,PORECV SET UP PRINTER RECOVERY ORDER LD A1,DWTPP,A6 RF(N) RCTP10 NOT SYSTEM START UP RECOVERY =2 LD A3,STDPP SET UP ST PR PAR IN DWT =2 ST A3,DWTPP,A6 U =2 LDK A4,8 SET UP DOC PAR TABLE 0 IN DWT =2 LDR A3,A6 U =2 ADK A3,DWTDP+8 U =2 RCTP05 LD A1,DTTP03,A4 U =2 STR A1,A3 U =2 SUK A3,2 U =2 SUK A4,2 U =2 RB(NN) RCTP05 U =2 LDK A3,PORECV+1 SET UP SYSTEM START UP RECOVERY =2 RCTP10 CF A5,ORDER SEND ORDER LD A3,DWTPP,A6 GET PRINTER PARAMETERS =2 U =2 U =2 U =2 RCTP20 ECR A2,A3 U =4(=2) CF A5,OUT SEND L/NCV LDR A2,A3 ANK A2,/77 CF A5,OUT SEND CPJ/CPD LC A2,DWTAPJ,A6 GET ACTUAL POS JOURNAL CF A5,OUT AND SEND LC A2,DWTAPD,A6 GET ACTUAL POS DOCUMENT LDR A3,A2 SAVE DOC POS ANK A2,/3F MASK OFF MSB CF A5,OUT SEND APD LDR A2,A3 GET DOC POS BACK ANK A2,/40 MASK OUT MSB CF A5,OUT SEND AP6 LC A2,DWTALN,A6 GET ACTUAL LINE NO CF A5,OUT AND SEND U =2 U =2 U =2 U =2 U =2 U =2 U =2 U =2 U =2 U =2 RCTP40 LDK A4,10 LDR A3,A6 ADK A3,DWTDP RCTP50 LCR A2,A3 GET DOC PARAMETER U =4 CF A5,OUT AND SEND ADK A3,1 INC DOC TABLE POINTER SUK A4,1 DEC CHARACTER COUNTER RB(NZ) RCTP50 WHOLE TABLE NOT SENT RCTP60 CF A5,EXECUT EXECUTE RECOVERY IN PRINTER CF A5,SETBK SET BACK REQ POS AND LINE LDK A1,/40 TM A1,A2 RF(Z) RCTP70 DOC NOT OUT CM DWTLN,A6 CLEAR LINE NO FOR DOC CM DWTPPD,A6 CLEAR PRINT POS DOC RCTP70 LD A1,DWTECB,A6 ABL(NZ) ACT005 REQ RUNNING ABL DISEND REQ NOT RUNNING END