|
|
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: 30252 (0x762c)
Notes: pts_type(SC)
Names: »PRINT.SC«
└─⟦928b1fd3e⟧ Bits:30009671 Philips computer tape "600131"
└─⟦this⟧ »UPDATE/PRINT.SC«
IDENT PRINT REL 11.0 DK 81-10-11 870150541100 =2 NEW LABEL 81-04-08 =1, EOC ON FIRST READ 81-01-26 ******************************************************************* * * * MODULE PRINT : * MODULE HANDLING THE PRINTOUTS BOTH FROM * * DISPLAY AND MAIN-FRAME * * (EMULATION 3270 SNA/SDLC, BSC * * * ******************************************************************* EJECT ******************************************************** * * LIST OF ROUTINES * * PRINT MAIN ROUTINE * IOACT ACTIVATE IN CURRENT MODE * IOCPL COMPLETE IN CURRENT MODE * DCPINP DC PRINTER INPUT * ICPINP INTERTASK INPUT * ICPRED INTERTASK READ * ICPWRT INTERTASK WRITE * ICABOR INTERTASK ABORT * COPP COPY SCREEN BUFFER TO PRINTER * TABLE OF PRINTERORDERS * NL NEW LINE * FFDUM SIMULATED FORM FEED * FFVAL FORM FEED * CR CARRIAGE RETURN * EM END MESSAGE * INVAL INVALID PRINTER ORDER * FFCHK CHECK IF FF IS VALID * PRLINE PRINT LINE * INIT INIT ROUTINE * TSTPRT TEST HARDWARE * GETTAB GET ORDER INDEX * *********************************************************** EJECT ******************************************************************* * * * ENTRY POINTS * * * ******************************************************************* ENTRY PRINT START LABEL FROM DATA DIVISION (CREDIT) ENTRY COPP COPY SCREEN BUFFER TO PRINTER =2 ******************************************************************* * * * EXTERNAL REFERENCES * * * ******************************************************************* EXTRN COMINI COMMON INITIATE ROUTINE (DSPSNA) EXTRN OPINIT OPEN CONNECTION INITIATE (DCSNA9 EXTRN OPSYS OPEN SYSTEM (DCSNA) EXTRN OPEN OPEN (DCBSC) EXTRN CONCT CONNECT PASSIVE (DCBSC) EXTRN SETTIM SET REQUEST TIMER (DCBSC) EXTRN ATMASB SEARCH ATTRIBUTE BACKWARDS EXTRN TSTMES TEST MESSAGE (DCSNA) EXTRN READW READ WITH WAIT (DCSNA) EXTRN READNW READ WITH NO WAIT (DCSNA) EXTRN GETBUF GET BUFFER (PAD) EXTRN RELBUF RELEASE BUFFER (PAD) EXTRN UNPACK UNPACK DC BUFFER (PAD) EXTRN ECBINI INIT IF ECB:S (DSPSNA) EXTRN ICSET SET INTERTASK TIMEOUT (KEYB) EXTRN ICWRT INTERTASK WRITE (KEYB) EXTRN ICREAD INTERTASK READ (KEYB) EXTRN SETSTA SET STATUS (DCBSC) EJECT *************************************************************** * * * CONDITIONAL ASSEMBLY * * * *************************************************************** X:A EQU 0 SNA HANDLING IF:=1 SNA EQU 0 X:D EQU 1 NUMBER OF DC LINES (1-2) NBRLIN EQU 1 X:O EQU 0 TEST MODE IF:=1 TEST EQU 0 EJECT ******************************************************************* * * * DECLARATIONS OF DATA AND EQUATES * * ******************************************************************* * * TABLE OF PRINTER TYPES * PRTTAB EQU * DATA /0004 NUMBER OF PRINTERTYPES DATA 'TT',0 GTP DATA 'LL',2 LINE PRINTER DATA 'GG',4 GP 74 DATA 'CC',6 COPY 80 * * DEFAULT VALUES FOR DIFF. PRINTERS * BYTE1= NUMBER OF LINES/PAGE * BYTE2= NUMBER OF CHAR./LINE * PRTLEN DATA /2382 GTP DATA /2382 LP DATA /2382 GP 74 DATA /2382 COPY 80 * * LINE LENGTHS FROM WCC * LINLEN DATA /0028,/4050 40, 64 AND 80 CHAR/LINE * * EQUATES FOR ECB HANDLING * ECBBA EQU 2 BUFFER ADDRESS ECBRL EQU 4 REQUESTED LENGTH ECBEL EQU 6 EFFECTIVE LENGTH ECBRC EQU 8 RETURN CODE ECBCW EQU 10 CONTROL WORD * * PRINTER MODES * LOCAL EQU 0 LOCAL MODE SHARED EQU 2 SHARED MODE * * PRINTER STATUS IN PRTMOD * PRTERR EQU /4000 PRINTER ERROR * * COPY INTERNAL STATUS IN A10 * NXTCHA EQU /8000 GET NEXT CHAR. ENDPRT EQU /4000 END PRINTING NTONLY EQU /2000 NOT ONLY SPACES CRREC EQU /1000 CR RECEIVED * * RELATIVE POS. IN ECB-BLOCK * IC EQU 2 INTERTASK * * SCREEN SIZE * LBVDU EQU 1920 * * RECEIVE STATUS * LICREC EQU /2000 . =1 EJECT * * RELATIVE ADDRESSES IN * TERMINAL WORKBLOCK * BVDU EQU 2 SCREEN BUFFER WCC EQU BVDU+1950 WCC LINCNT EQU WCC+4 LINE COUNTER DCLENG EQU LINCNT+2 LENGTH OF RECEIVED BUFFER PRTID EQU DCLENG+6 PRINTER TASKID PRTTYP EQU PRTID+2 PRINTER TYPE MAIN EQU PRTTYP+4 WHAT DC LINE ECBBLK EQU MAIN+6 ECB BLOCK BUFPNT EQU ECBBLK+14 BUFFER POINTER REGI EQU BUFPNT+2 SAVE AREA PRTMOD EQU REGI+32 PRINTER MODE ECBPRT EQU PRTMOD+4 PRINTER ECB ECBICR EQU ECBPRT+6 INTERTASK READ ECB ECBICW EQU ECBICR+2 INTERTASK WRITE ECB ECBDC EQU ECBICW+2 ECB DC ECBDC1 EQU ECBDC ECB DC LINE 1 ECBDC2 EQU ECBDC1+2 ECB DC LINE 2 * * RELATIVE ADDRESSES IN * COMMON WORKBLOCK * IFF TEST=1 TSKTAB EQU 24 DEVICE TABLE XIF IFT TEST=1 TSKTAB EQU 219 XIF EJECT ******************************************************************* * * * PRINT MAIN ROUTINE PRINTER * * * ******************************************************************* PRINT EQU * CF A14,INIT INIT ROUTINE IFT SNA=1 CF A14,OPINIT OPEN CONNECTION INITIATE RF(N) PRI100 DC NOT PRESENT CF A14,OPSYS OPEN SYSTEM XIF IFF SNA=1 CF A14,OPEN OPEN * CHECK ON DC REMOVED PR. 8623, DK * LDKL A8,20 LKM DATA 6 CF A14,CONCT CONNECT PASSIVE CF A14,SETTIM SET REQUEST TIMEOUT XIF LDK A1,SHARED ALWAYS SHARED IN BSC ST A1,PRTMOD,A11 PRI100 EQU * CF A14,TSTPRT TEST HARDWARE PRI200 EQU * CF A14,IOACT ACTIVATE IN CURRENT MODE LDKL A7,ECBBLK ADR A7,A11 LKM DATA 7 MULTIPLE WAIT CF A14,IOCPL COMPLET IN CURRENT MODE LD A1,PRTMOD,A11 ANKL A1,PRTERR PRINTER ERROR? RB(Z) PRI200 NO XRS A1,PRTMOD,A11 RB PRI100 TRY TO FIX IT EJECT ********************************************************************* * * * IOACT ACTIVATE IN CURRENT MODE * * ********************************************************************* IOACT EQU * LDK A4,0 LD A1,PRTMOD,A11 SHARED OR LOCAL? RF(Z) IOAC20 LOCAL ADK A4,1 ADD NUMBER OF WAITS LD A2,ECBBLK+4,A11 REQUEST OUTSTANDING ALREADY? RF(NZ) IOAC10 YES CM MAIN,A11 INDICATE LINE 1 CF A14,TSTMES TEST MESSAGE ST A8,ECBBLK+4,A11 IOAC10 EQU * IFT NBRLIN=2 ADK A4,1 ADD MORE WAITS LD A2,ECBBLK+6,A11 ALREADY? RF(NZ) IOAC20 YES IM MAIN,A11 INDICATE LINE 2 CF A14,TSTMES TEST MESSAGE ST A8,ECBBLK+6,A11 XIF IOAC20 EQU * ADK A4,1 LD A2,ECBBLK+2,A11 ALREADY? RF(NZ) IOAC30 YES CF A14,ICPRED READ INTERTASK ST A8,ECBBLK+2,A11 IOAC30 EQU * ST A4,ECBBLK,A11 NUMBER OF WAITS RTN A14 EJECT ********************************************************************* * * * IOCPL COMPLETE IN CURRENT MODE * * ********************************************************************* IOCPL EQU * CW A8,ECBBLK+2,A11 INTERTASK? RF(NE) IOCP10 NO CM ECBBLK+2,A11 CF A14,ICPINP MAKE HARDCOPY RF IOCP90 IOCP10 EQU * CW A8,ECBBLK+4,A11 DC LINE 1? IFT NBRLIN=2 RF(NE) IOCP20 NO XIF IFF NBRLIN=2 RF(NE) IOCP90 NO FORGET IT XIF CM ECBBLK+4,A11 CM MAIN,A11 INDICATE LINE 1 RF IOCP30 IFT NBRLIN=2 IOCP20 EQU * CW A8,ECBBLK+6,A11 DC LINE 2? RF(NE) IOCP90 NO CM ECBBLK+6,A11 IM MAIN,A11 INDICATE LINE 2 XIF IOCP30 EQU * CF A14,DCPINP TAKE CARE OF DC IOCP90 EQU * RTN A14 EJECT *************************************************************** * * * DCPINP DC PRINTER INPUT * * * *************************************************************** DCPINP EQU * CF A14,ICABOR ABORT LOCAL HARD COPY LDR A7,A7 ALREADY COMPLETED? RF(Z) DCP100 NO CF A14,ICPINP TAKE CARE OF THAT FIRST DCP100 EQU * LD A8,ECBDC,A11 IFT NBRLIN=2 LD A1,MAIN,A11 LINE 1 RF(Z) DCP150 YES LD A8,ECBDC2,A11 DCP150 EQU * XIF IFT SNA=1 LD A1,ECBRC,A8 OK? ANKL A1,/701 OK? RF(NZ) DCP500 NO STOP IT XIF CF A14,GETBUF GET BUFFER LDR A3,A8 CF A14,READW READ FIRST BUFFER ANK A1,3 ERROR? RF(NZ) DCP400 NO LDR A8,A12 CF A14,RELBUF RELEASE BUFFER RF DCP500 DCP400 EQU * SUR A10,A10 RESET INTERNAL UNPACK STATUS IFT SNA=1 . =1 ANK A1,2 . =1 RF(Z) DCP450 . =1 ORKL A10,LICREC . =1 DCP450 EQU * . =1 XIF . =1 LD A1,ECBEL,A8 ST A1,DCLENG,A11 SAVE LENGTH ST A12,BUFPNT,A11 SAVE BUFFER ADDRESS IFT SNA=1 CF A14,GETBUF GET ANOTHER BUFFER LDR A3,A8 CF A14,READNW READ WITH NO WAIT XIF CF A14,UNPACK UPDATE SCREEN BUFFER LD A1,WCC,A11 ANK A1,/8 ANY COPY NEEDED RF(Z) DCP500 NO CF A14,COPP PRINT IT DCP500 EQU * IFF SNA=1 LDK A1,0 CF A14,SETSTA SET DEVICE END XIF RTN A14 EJECT **************************************************************** * * * ICPINP INTERTASK INPUT * * * **************************************************************** ICPINP EQU * CF A14,COPP MAKE HARDCOPP ST A1,REGI,A11 RETURN CODE TO TERMINAL CF A14,ICPWRT WRITE INTERTASK RTN A14 EJECT ****************************************************************** * * * ICPRED INTERTASK READ * * * ****************************************************************** ICPRED EQU * LD A8,ECBICR,A11 CF A14,ICSET SET NO TIMEOUT LDK A1,0 NOT ADDRESSED READ LDKL A3,BVDU ADR A3,A11 LDKL A2,LBVDU+/20 CF A14,ICREAD READ INTERTASK RTN A14 EJECT ******************************************************************** * * * ICPWRT WRITE INTERTASK * * * ******************************************************************** ICPWRT EQU * LD A8,ECBICW,A11 CF A14,ICSET SET NO TIMEOUT LD A1,ECBICR,A11 LD A1,ECBCW,A1 GET TASKID RF(Z) ICPW90 NOT THERE LDKL A3,REGI RETURN CODE ADR A3,A11 LDK A2,2 LENGTH CF A14,ICWRT WRITE INTERTASK ICPW90 EQU * RTN A14 EJECT ************************************************************* * * * ICABOR INTERTASK ABORT * * * ************************************************************* ICABOR EQU * LDK A7,0 CM ECBBLK+IC,A11 LD A8,ECBICR,A11 LKM DATA 10 RTN A14 EJECT ********************************************************************* * * * COPP COPY SCREEN BUFFER TO PRINTER * * * ********************************************************************* * REGISTERS * * A2= CHAR. * A3= SCREEN BUFFER POINTER * A4= REL. SCREEN BUFFER ADDRESS * A5= LINE LENGTH * A6= CURRENT ATTRIBUTE * A8= ECB BUFFER POINTER * A9= ECB BUFFER INDEX * A10= INTERNAL STATUS * A11= TASK BLOCK BASE * A13= ECB BASE * ********************************************************************* COPP EQU * . =2 LD A8,ECBPRT,A11 LDK A1,0 LDK A6,0 RESET ATTRIBUTE CF A14,ATMASB SEARCH ATTRIBUTE BACKWARDS CM LINCNT,A11 RESET LINE COUNTER LD A1,WCC,A11 ANK A1,/38 MASK RELEVANT LDR A5,A1 ANK A1,8 START PRINT? RF(Z) COP900 NO FORGET IT SRL A5,4 LC A5,LINLEN,A5 GET LINE LENGTH LDR A5,A5 NL,EM AND CR DET. LENGTH? RF(NZ) COP100 NO LD A1,PRTTYP,A11 GET MAX LINE LENGTH LC A5,PRTLEN+1,A1 COP100 EQU * LDKL A3,BVDU ADR A3,A11 LD A8,ECBBA,A8 CMR A8 RESET CONTROL CHAR. ADKL A8,2 SUR A9,A9 LDK A2,0 LDK A4,0 SUR A10,A10 RESET STATUS COP200 EQU * CWK A4,LBVDU ALL PRINTED? RF(NL) COP850 YES CWR A9,A5 LINE FULL? RF(L) COP400 NO CF A14,PRLINE PRINT LINE LDR A1,A1 PRINTER ERROR? RF(NZ) COP900 YES COP400 EQU * LCR A2,A3 GET CHAR. ANK A2,/FF RF(Z) COP650 NULL CHAR. CCK A2,/8000 ATTRIBUTE? RF(L) COP500 NO LDR A6,A2 GET NEW ATTRIBUTE RF COP650 COP500 EQU * CCK A2,/2020 ORDER? RF(L) COP550 YES XRKL A10,CRREC RESET RF COP600 COP550 EQU * CF A14,GETTAB GET ORDERINDEX CFR A14,A1 TAKE CARE OF ORDER LDR A1,A1 PRINTER ERROR? RF(NZ) COP900 YES LDR A1,A10 GET STATUS RF(N) COP800 GET NEXT CHAR. SLL A1,1 RF(N) COP850 END COP600 EQU * LDR A1,A6 CHECK IF NONPRINT ANK A1,/C XRK A1,/C RF(Z) COP650 NONPRINT ORKL A10,NTONLY INIDICATE NOT ONLY NOT RF COP700 COP650 EQU * LDK A2,/20 REPLACE WITH SPACE COP700 EQU * SCR A2,A8 ADKL A9,1 ADKL A8,1 COP800 EQU * XRKL A10,NXTCHA RESET ADK A3,1 ADK A4,1 RB COP200 COP850 EQU * LDR A9,A9 SOMETHING LEFT TO PRINT? RF(Z) COP900 NO CF A14,PRLINE PRINT LAST LINE ANKL A10,ENDPRT END MESS.? RF(Z) COP900 NO STOP IT ORKL A10,NTONLY INDICATE PRINTABLE CF A14,PRLINE EXTRA LINE FEED COP900 EQU * LDR A1,A1 PRINTER FAILED? RF(Z) COP950 NO LDKL A2,PRTERR INDICATE ERROR ORS A2,PRTMOD,A11 COP950 EQU * RTN A14 EJECT ************************************************************************ * * TABLE FOR PRINTERORDERS * ************************************************************************ PRTORD EQU * DATA /0004 NUMBER OF ORDER CODES DATA /0A0A,NL,NL,NL,NL NEW LINE DATA /0C0C,FFDUM,FFVAL,FFVAL,FFDUM FORM FEED DATA /0D0D,CR,CR,CR,CR CARR. RETURN DATA /1919,EM,EM,EM,EM END MESSAGE DATA INVAL INVALID ORDER CODE EJECT **************************************************************************** * * * NL NEW LINE * * * **************************************************************************** NL EQU * CF A14,PRLINE PRINT LINE AFTER NEW LINE ORKL A10,NXTCHA+NTONLY GET NEXT CHAR. RTN A14 EJECT ********************************************************************** * * * FFDUM SIMULATED FORM FEED * * * ********************************************************************** FFDUM EQU * CF A14,FFCHK CHECK IF FORM FEED IS VALID LDR A1,A1 VALID? RF(NZ) FFD400 NO LDK A7,0 RESET LD A1,PRTTYP,A11 TYPE OF PRINTER LC A7,PRTLEN,A1 PAGE SIZE FFD100 EQU * CW A7,LINCNT,A11 NEW PAGE? RF(L) FFD200 YES BUT TO MANY RF(E) FFD300 YES FINISHED ORKL A10,NTONLY ST A7,REGI,A11 SAVE CF A14,PRLINE ADVANCE ONE LINE LD A7,REGI,A11 RESTORE LDR A1,A1 PRINTER ERROR? RF(NZ) FFD500 YES RB FFD100 FFD200 EQU * NGR A1,A7 ADS A1,LINCNT,A11 TAKE AWAY ONE PAGE RB FFD100 FFD300 EQU * CM LINCNT,A11 TOP OF PAGE LDK A2,/20 REPLACE FF WITH SPACE FFD400 EQU * LDK A1,0 RETURN CODE FFD500 EQU * RTN A14 EJECT ********************************************************************* * * * FFVAL FORM FEED * * * ********************************************************************* FFVAL EQU * CF A14,FFCHK CHECK IF FF VALID LDR A1,A1 VALID? RF(NZ) FFV200 NO LDK A1,/0C SC A1,-1,A8 STORE FF CONTROL CHAR. LDK A2,/20 REPLACE FF WITH SPACE CM LINCNT,A11 TOP OF PAGE FFV200 EQU * LDK A1,0 RETURN CODE RTN A14 EJECT ********************************************************************** * * * CR CARRIAGE RETURN * * * ********************************************************************** CR EQU * LDR A1,A6 GET ATTRIBUTE ANK A1,/C XRK A1,/C NONPRINT FIELD? RF(Z) CR100 YES LD A1,WCC,A11 ANK A1,/30 FORMATTED? RF(NZ) CR100 NO ORKL A10,NTONLY+CRREC CR RECEIVED CR100 EQU * LDK A2,/20 REPLACE WITH SPACE LDK A1,0 RETURN CODE RTN A14 EJECT ********************************************************************* * * * EM END MESSAGE * * * ******************************************************************** EM EQU * ORKL A10,ENDPRT END PRINTING LDK A1,0 RETURN CODE RTN A14 EJECT ****************************************************************** * * * INVAL INVALID PRINTER ORDER * * * ****************************************************************** INVAL EQU * LDK A2,/20 REPLACE WITH SPACE ORKL A10,NTONLY NOT ONLY LDK A1,0 RETURN CODE RTN A14 EJECT ***************************************************************** * * * FFCHK CHECK IF FF IS VALID * * * ***************************************************************** FFCHK EQU * LD A1,WCC,A11 ANK A1,/30 XRK A1,/30 FORMATTED? RF(NZ) FFCH10 YES BUT NOT AS LOCAL HARDCOPY LD A1,WCC,A11 ANK A1,/40 LOCAL HARD COPY? RF(Z) FFCH20 YES, FF NOT ALLOWED FFCH10 EQU * LDR A9,A9 FF ALLOWED RF(Z) FFCH30 NOT LDR A1,A10 ANKL A1,CRREC CR RECEIVED? RF(NZ) FFCH30 YES FFCH20 EQU * LDK A2,/20 REPLACE WITH SPACE LDK A1,1 RETURN CODE RF FFCH40 FFCH30 EQU * XRKL A10,CRREC RESET LDR A9,A9 EMPTY LINE RF(Z) FFCH35 YES CF A14,PRLINE PRINT LINE FFCH35 EQU * LDK A1,0 RETURN CODE FFCH40 EQU * ORKL A10,NTONLY NOT ONLY RTN A14 EJECT **************************************************************** * * * PRLINE PRINT LINE * * * **************************************************************** PRLINE EQU * LD A8,ECBPRT,A11 LDR A1,A10 ANKL A1,NTONLY ONLY RUBB.? RF(NZ) PRL050 NO LD A1,WCC,A11 LDR A2,A1 ANK A1,/30 XRK A1,/30 HRADCOPY? RF(NZ) PRL200 NO ANK A2,/40 HARDCOPY????? RF(NZ) PRL200 NO PRL050 EQU * XRKL A10,NTONLY RESET ADKL A9,2 ST A9,ECBRL,A8 LDK A7,/06 PRINT LKM DATA 1 LDK A1,50 NUMBER OF DELAYS PRL100 EQU * LDKL A8,1 WAIT FOR A WHILE LKM DATA 6 LD A8,ECBPRT,A11 LDR* A2,A8 PRINT COMPL.? RF(N) PRL150 YES SUK A1,1 MORE TO WAIT FOR? RB(NZ) PRL100 YES LKM DATA 10 ABORT RF(N) PRL150 FINSHED AT LAST LDK A1,1 NO CONSIDER IT AS #$&%$ RF PRL300 PRL150 EQU * LKM DATA 2 RESYNCHRONIZE IM LINCNT,A11 ANOTHER LINE LD A1,ECBRC,A8 OK? RF(NZ) PRL300 NO PRL200 EQU * LD A8,ECBBA,A8 GET BUFFER ADDRESS CMR A8 RESET CONTROL CHAR. SUR A9,A9 ADKL A8,2 LDK A1,0 RETURN CODE PRL300 EQU * RTN A14 EJECT ******************************************************************* * * * INIT INIT ROUTINE * * * ******************************************************************* INIT EQU * CF A14,COMINI COMMON INIT CF A14,ECBINI INIT OF ECB:S LCR A2,A1 SLL A2,8 LC A2,+1,A1 ST A2,PRTID,A11 SAVE WHOLE TASKID LCR A2,A1 GET TYPE OF PRINTER AND MAKE INDEX LD A7,PRTTAB NUMBER OF TYPES LDKL A1,PRTTAB+2 START OF PRINTER TABLE INI100 EQU * CCR A2,A1 CONVERT TYPE TO INDEX RF(E) INI200 ADK A1,4 SUK A7,1 ILLEGAL ID? RB(NZ) INI100 NO LDKL A1,* ST A1,REGI,A11 LKM DATA 3 FORGET IT INI200 EQU * LD A1,+2,A1 ST A1,PRTTYP,A11 SAVE PRINTER TYPE RTN A14 EJECT ***************************************************************** * * * TSTPRT TEST HARDWARE * * * ***************************************************************** TSTPRT EQU * LDK A2,0 LD A8,ECBPRT,A11 LDK A7,/80 TEST STATUS TSTP10 EQU * LKM DATA 1 LD A1,ECBRC,A8 ANK A1,1 OPERABLE? RF(Z) TSTP80 YES LD A2,PRTID,A11 NO INDICATE NOT OP. IN DEVICE TABLE ANK A2,/FF SUK A2,/30 SLL A2,2 LD A3,+6,A13 LDK A1,TSKTAB ADR A3,A1 ADR A3,A2 LDK A1,1 SC A1,+3,A3 INDICATE NOT OP. LDR A1,A8 LDKL A8,100 LKM DATA 6 LDR A8,A1 LDK A2,1 INDICATE ONCE NOT OP. RB TSTP10 TSTP80 EQU * LDR A2,A2 NOT OP. ONCE? RF(Z) TSTP90 NO SC A1,+3,A3 RESET STATUS TSTP90 EQU * RTN A14 EJECT ******************************************************************* * * * GETTAB GET ORDER INDEX * * * ******************************************************************* GETTAB EQU * LD A7,PRTORD NUMBER OF VALID ORDER CODES LDKL A1,PRTORD+2 ORDERTABLE BASE GETT10 EQU * CCR A2,A1 CONVERT ORDER CODE TO ADDRESS RF(E) GETT20 AD A1,PRTTAB AD A1,PRTTAB ADK A1,2 SUK A7,1 ORDER FOUND? RF(Z) GETT30 NO INVALID RB GETT10 TRY AGAIN GETT20 EQU * ADK A1,2 LD A2,PRTTYP,A11 ADR A1,A2 GETT30 EQU * LDR* A1,A1 RTN A14 END