|
|
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: 10788 (0x2a24)
Notes: pts_type(SC)
Names: »DRLP01.SC«
└─⟦efe3a1cfc⟧ Bits:30009667 Philips computer tape "600113"
└─⟦this⟧ »TOSSWORK/DRLP01.SC«
IDENT DRLP01 REL 8.2 78-09-15 870105040820 UPDATE #0 77-12-14 ********************************************************** * * PHILIPS TERMINAL SYSTEM PTS * * DRLP01 = DRIVER LINE PRINTER * * * * * * ********************************************************** * * * THIS DRIVER HANDLES ONE LINE PRINTER PTS 6881 CONNECTED * TO CPU VIA CHLP ON MULTIPLEX CHANNEL OR PROGRAMMED * CHANNEL EJECT * * ************************ * ENTRIES * ************************ * ENTRY LPADR ADDRESS-BLOCK ENTRY ACLP ACTIVATION DRIVER ENTRY IHLP INTERRUPT HANDLER ENTRY LPON RECOVERY ROUTINE ENTRY DWLP01 DWT FOR LINE PRINTER * * **************************************** * EXTERNAL TOSS MODULE ENTRIES * **************************************** * EXTRN TDISP DISPATCHER EXTRN TENDIO END I/O EXTRN SAVE8 SAVE 8 REGS ON STACK EXTRN DISIOE REQUEST ERROR EXTRN DWTST DWT-STATUS EXTRN DWTOR ORDER EXTRN DWTECB ECB-ADDRESS EXTRN INTSAV SAVE AREA LAST INTERRUPT * * ***************************** * CONSTANTS * ***************************** * DWALP EQU /0F MUXLP EQU DWALP+DWALP MUX-ADDRESS DWTBC EQU /3 DWTA3 EQU /12 DWTA4 EQU /14 DWTA5 EQU /16 DWTSB2 EQU /1E * EJECT * ********************************** * CONDITIONAL ASSEMBLY * ********************************** * * PROGRAMMED CHANNEL MAY BE USED INSTEAD OF * MULTIPLEX CHANNEL BY SETTING X:A=1 X:A EQU 0 CHAN EQU X:A EJECT * * *********************** * ORDERS * *********************** * * ORDER /00: TEST STATUS. * A TST INSTRUCTION IS EXECUTED TO SEE * IF LINE PRINTER IS OPERABLE. * * ORDER /05: BASIC WRITE. * * THE REQUESTED NUMBER OF CHARACTERS ARE * SENT TO THE LINE PRINTER WITHOUT ANY CHECK. * * ORDER /06: STANDARD WRITE. * FIRST WORD IN ECB-BUFFER CONTAINS A CONTROL * CHARACTER. * /2B: PRINT LINE WITHOUT ADVANCING PAPER * /30: ADVANCE TWO LINES BEFORE PRINTING * /31: SKIP TO TOP OF FORM BEFORE PRINTING * OTHER CHARACTERS GIVES A LINE FEED BEFORE * PRINTING. * * * CHARACTERS IN BUFFER SHOULD BE WITHIN THE * INTERVAL /20-/5F. NO CHECK IS CARRIED OUT * BY DRIVER. AT THE END OF ECB-BUFFER ONE BYTE * MUST BE RESERVED FOR THE DRIVER TO STORE A * PRINT CHARACTER. * EJECT * * ************************************ * NORMAL REGISTER USAGE * ************************************ * * A1 = RETURN CODE * A2 = WORK REGISTER * A3 = WORK REGISTER * A4 = BUFFER ADDRESS * A5 = STACK BASE * A6 = DWT-ADDRESS * A7 = ORDER * A8 = ECB-ADDRESS * * * ******************************** * TABLES * ******************************** * * LPADR DATA ACLP ACTIVATION DRIVER * EJECT * * * A C T I V A T I O N * ACLP EQU * LDK A1,/0D CARRIAGE RETURN LDR A7,A7 ORDER 0 ? RF(NE) ACLP05 NO LDKL A4,DWTBC BYTE COUNTER ADR A4,A6 ADD DWT-ADDRESS SCR A1,A4 STORE CARRIAGE RETURN LDK A2,1 RF ACLP30 ACLP05 LD A4,2,A8 BUFFER ADDRESS LD A2,4,A8 REQ. LENGTH SUK A7,5 ORDER 5 ? RF(E) ACLP30 SUK A7,1 ORDER 6 ? RF(E) ACLP10 ACERR ABL DISIOE ACLP10 EQU * CWK A2,2 REQ. LENGTH < 2 ? RF(NL) ACLP12 NO LDK A2,2 YES , SAME ACTIONS AS FOR REQ. LENGTH = 2 ACLP12 EQU * LDR A3,A4 BUFFER ADDRESS ADR A3,A2 ADDED WITH REQ. LENGTH SCR A1,A3 STORE PRINT CHARACTER ADK A2,1 LCR A3,A4 SLL A3,8 LC A3,1,A4 GET CONTROL CHARACTER ST A3,CONCHA ANK A3,/FF SUK A3,/2B SUPER POSITIONING ? RF(NE) ACLP15 NO SUK A2,2 DECREMENT REQ. LENGTH ADK A4,2 INCREMENT BUFFER ADDRESS RF ACLP30 ACLP15 LDK A1,/0A LINE FEED SC A1,1,A4 SECOND CHARACTER IN BUFFER SUK A3,5 TWO LINE FEEDS ? RF(E) ACLP20 YES LDK A1,/0C TOP OF FORM SUK A3,1 WANTED ? RF(E) ACLP20 YES LDK A1,/0D CARRIAGE RETURN ACLP20 SCR A1,A4 STORE FIRST CHARACTER IN BUFFER ACLP30 CF A5,CIOSTA SEND BUFFER SUK A7,6 ORDER 6 ? RF(NE) ENDIO LDR A2,A2 RF(NN) ACLP35 IM 6,A8 ADD FOR EXTRA CHAR. AT BUFFER END (/0D) ACLP35 EQU * LD A4,2,A8 BUFFER ADDRESS LDKL A3,0 CONCHA EQU *-2 SC A3,1,A4 RESET CONTROL CHARACTER IN BUFFER SRL A3,8 SCR A3,A4 ALSO RESET FIRST BYTE ENDIO CF A15,TENDIO END REQUEST EXIT ABL TDISP EJECT * * * CIOSTA * SUBROUTINE TO SEND BUFFER * CIOSTA EQU * ST A5,DWTA5,A6 SAVE A5 IFT CHAN=0 ORKL A2,/4000 INDICATE CHARACTER MODE, OUTPUT AND IN RIGHT BYTE NUMBER OF CHARACTERS TO SEND WER A2,MUXLP FIRST WRITE EXTERNAL REGISTER LDR A2,A4 BUFFER ADDRESS WER A2,MUXLP+1 SECOND WRITE EXTERNAL REGISTER XIF IFT CHAN=1 ST A4,DWTA3,A6 SAVE BUFFER ADDRESS ADR A4,A2 ST A4,DWTA4,A6 SAVE BUFFER END ADDRESS+1 XIF CIO A2,1,DWALP CIO START RB EXIT EJECT * * * RECOVERY ROUTINE * LPON CF A15,SAVE8 LDK A1,1 NOT OPERABLE LDKL A6,DWLP01 DWT-ADDRESS LD A2,DWTST,A6 DWT STATUS RB(N) EXIT LP FREE RF IHLP30 EJECT * * * I N T E R R U P T * IHLP EQU * ST P,INTSAV SAVE LAST INTERRUPT IFT CHAN=0 CF A15,SAVE8 SAVE REGISTERS XIF IFT CHAN=1 STR A1,A15 STR A2,A15 LDKL A2,DWLP01 DWT-ADDRESS LD A1,DWTA3,A2 POINTER AT NEXT BYTE IN BUFFER LCR A2,A1 NEXT BYTE OTR A2,0,DWALP WRITE ONE BYTE RF(NA) IHLP20 NOT ACCEPTED LDKL A2,DWLP01 DWT-ADDRESS ADK A1,1 ST A1,DWTA3,A2 UPDATE POINTER CW A1,DWTA4,A2 RF(NE) IHLP10 NOT LAST BYTE CIO A2,0,DWALP CIO HALT IHLP10 EQU * LDR* A2,A15 LDR* A1,A15 RTN A15 * * * IHLP20 STR A3,A15 STR A4,A15 STR A5,A15 STR A6,A15 STR A7,A15 STR A8,A15 XIF SST A1,DWALP TO INACTIVE LDKL A6,DWLP01 DWT-ADDRESS IHLP30 EQU * LD A7,DWTOR,A6 ORDER ANK A7,/FF LD A8,DWTECB,A6 ECB-ADDRESS IFT CHAN=0 RER A3,MUXLP GET NUMBER OF NOT TRANSFERED CHAR. ANKL A3,/FFF LD A2,4,A8 CALCULATE NUMB. OF TRANSFERED CHARACTERS SUR A2,A3 XIF IFT CHAN=1 LD A2,DWTA3,A6 GET BUFFER-POINTER CWK A7,6 ORDER 6? RF(NE) IHLP35 ADK A2,1 YES IHLP35 EQU * SU A2,2,A8 CALCULATE NUMB. OF TRANSFERED CHARACTERS XIF ST A2,6,A8 STORE EFF. LENGTH LD A5,DWTA5,A6 GET STACK VALUE RTN A5 EJECT * * * D W L P 0 1 * * DEVICE WORK TABLE FOR LINE PRINTER * DWLP01 EQU * DATA 0 CHANNEL PARAMETER DATA /8000 STATUS DATA 0,0 LAST OUTPUT, ORDER AND ECB-ADDRESS DATA LPADR ADDRESS TO ADDRESS-BLOCK DATA 0 TTAB-ADDRESS DATA 0 WAIT/ACTIVATE INDICATOR DATA 0 TERMINAL QUEUE DATA 0 OUTPUT QUEUE LINK DATA 0 SAVE AREA FOR A3 DATA 0 SAVE AREA FOR A4 DATA 0 SAVE AREA FOR A5 RES 4 DWT-STACK END