|
|
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: 8142 (0x1fce)
Notes: pts_type(SC)
Names: »DRDN01.SC«
└─⟦13e5fd45a⟧ Bits:30009699 Philips computer tape "600507"
└─⟦this⟧ »TOSSWORK/DRDN01.SC«
└─⟦bc20f3abf⟧ Bits:30009670 Philips computer tape "600126"
└─⟦this⟧ »TOSSWORK/DRDN01.SC«
IDENT DRDN01 REL 11.0 81-03-27 870105041100 =2,ASM-ORDER 05 REMOVED REL 11.0 81-01-26 =1 ADAPTED TO NEW INTERFACE (PLC) REL 10.0 79-12-07 * * *************************************************** * * PHILIPS TERMINAL SYSTEM PTS * * DRDN01 = DRIVER NUMERIC DISPLAY * * * * * * *************************************************** * * * THIS DRIVER HANDLES THE NUMERIC DISPLAY * ON INDICATOR UNIT PTS 6241 CONNECTED TO * THE SYSTEM VIA CHLT OR CHRT. * * THE DISPLAY MAY BE USED AS AN ORDINARY * OUTPUT DEVICE WHERE NUMERIC INFORMATION * ARE DISPLAYED FROM THE USER PROGRAM. IT * MAY ALSO BE USED AS AN ECHO-DEVICE TO * ANY KEYBOARD THAT WORKS UNDER THE GENERAL * KEYBOARD DRIVER DRKB04. * * THE DRIVER CONSISTS OF FOLLOWING PARTS: * * A C D N ACTIVATION PART * * I H D N INTERRUPT HANDLER * * R C D N RECOVERY ROUTINE * * E C H O D N ECHO FUNCTIONS EJECT DRDN01 * * * THE FOLLOWING ORDERS ARE THREATED: * * ORDER 31: ERASE NUMERIC DISPLAY * 06: WRITE NUMERIC DISPLAY * * * NORMAL REGISTER USAGE: * * REGISTER: A1 = RETURN CODE * A2 = OUTPUT CHARACTER * A3 = BUFFER INDEX * A4 = WORK REGISTER * A5 = STACK BASE * A6 = DWT-ADDRESS * A7 = ORDER * A8 = ECB-ADDRESS * * * SYSTEM ADAPTATION * * BY MEANS OF CONDITIONAL ASSEMBLY ORDER 06 * WRITE NUMERIC DISPLAY MAY BE EXCLUDED. * TO BE USED IN SYSTEMS WHERE THE DISPLAY * FIGURES ONLY AS AN ECHO-DEVICE. * * EJECT DRDN01 * * *********** * ENTRIES * *********** * * ENTRY DNAD ADDRESS TO ADDRESS-BLOCK * * ******************************************** * EXTERNAL TOSS MODULE ENTRIES * ******************************************** * * EXTRN LENDER I/O REQUEST ERROR =1 EXTRN OUTPUT SEND CHARACTER =1 EXTRN LDISP DISPATCHER =1 EXTRN NDGET8 RELOAD REGISTERS AND RETURN =1 EXTRN TENDIO END I/O =1 EXTRN ECHRTN RETURN TO KEYBOARD AFTER ECHO =1 EXTRN GETCHR GET CHARACTER FROM ECB BUFFER =1 EXTRN STABLK START OF BLOCK =1 EXTRN ENDBLK END OF BLOCK =1 * * **************************** * DWT PARAMETERS * **************************** * * EXTRN DWTST STATUS EXTRN DWTDEV DEVICE STATUS =1 EXTRN DWTECB ECB ADDRESS DWTBC EQU /0 BYTE COUNTER =1 BLKSI EQU /50 MAX BLOCK SIZE =1 EJECT DRDN01 * * ************************** * CONDITIONAL ASSEMBLY * ************************** * * BY SETTING X:A = 0 THIS DRIVER HANDLES * ONLY ORDER 05 ERASE NUMERIC DISPLAY * X:A EQU 1 DNWRIT EQU X:A ORDER 6 * * MEMORY MANAGEMENT BUFFER SIZE * X:B EQU 16 DVBLEN EQU X:B * ***************** * CONSTANTS * ***************** * CCERR EQU /4 CODE CHECK ERROR * EJECT DRDN01 * * ************** * TABLES * ************** * * DATA DVBLEN MMU BUFFER SIZE DATA 2 DEVICE INDEX DNAD EQU * ADDRESS BLOCK DATA ACDN ACTIVATION PART DATA 0 ABORT ROUTINE ADDRESS DATA 0 INTERRUPT HANDLER DATA RCDN RECOVERY ROUTINE DATA ECHODN DEVICE-DEPENDENT ECHO-SUBROUTINE * EJECT DRDN01 * * A C D N * * ACDN = ACTIVATION DRIVER NUMERIC DISPLAY * * THE FOLLOWING ORDERS ARE THREATED: * * ORDER 31: ERASE NUMERIC DISPLAY * ORDER 06: WRITE ON NUMERIC DISPLAY * * IF ORDER 31 ERASE CHARACTER /40 IS SENT TO DISPLAY. * IF ORDER 6 CHARACTERS IN ECB-BUFFER ARE SENT TO DISPLAY * ACDN EQU * =2 SUK A7,/31 RF(Z) ADN010 =2 * IFT DNWRIT=1 * ADK A7,/2B ORDER 6 ? =2 RF(E) ADN015 * XIF * ABL LENDER I/O REQUEST ERROR =1 * EJECT DRDN01 * * ORDER 31 * ADN010 EQU * LDK A2,1 BLOCK SIZE =! CF A5,STABLK START OF BLOCK =1 RF(NZ) DNERR ERROR =1 LDK A2,/40 ERASE DISPLAY CF A5,OUTPUT SEND CHARACTER RF(NZ) DNERR ERROR END I/O =! RF ENDIO * * ORDER 06 * IFT DNWRIT=1 * ADN015 EQU * LDK A3,0 RESET BUFFER INDEX LDK A2,BLKSI MAX BLOCK SIZE =1 CF A5,STABLK START OF BLOCK =1 RF(NZ) DNERR ERROR END I/O =1 ADN020 CF A15,GETCHR GET CHARACTER LDR A1,A1 FOUND? RF(NP) ENDIO NO, READY ! * EJECT DRDN01 * * CHECK CHARACTER * LDR A4,A2 SUK A4,/3F BLANK? RF(E) ADN025 ADK A4,6 KEY > /39? RF(P) ADN030 ADK A4,9 KEY < /30 RF(N) ADN030 ADN025 EQU * CF A5,OUTPUT SEND CHARACTER RF(NZ) DNERR ERROR END I/O =1 RB ADN020 ADN030 LDK A1,CCERR INDICATE CODE CHECK ERROR ORS A1,8,A8 RETURN CODE RB ADN020 * XIF * ENDIO EQU * END REQUEST =1 CF A5,ENDBLK END OF BLOCK =1 CF A15,TENDIO END I/O REQUEST =1 EXIT EQU * DISPATCH ABL LDISP DISPATCH =1 * EJECT DRDN01 * * R C D N * * RECOVERY * RCDN EQU * LDKL A2,/7FFF ANS A2,DWTST,A6 SET DEVICE BUSY LDK A2,1 BLOCK SIZE =1 CF A5,STABLK START OF BLOCK =1 RF(NZ) DNERR ERROR END I/O =1 LDK A2,/40 ERASE CHARACTER CF A5,OUTPUT SEND ERASE RF(NZ) DNERR ERROR END I/O =! CF A5,ENDBLK END OF BLOCK =1 RF(NZ) DNERR ERROR END I/O =1 LD A8,DWTECB,A6 RB(E) ENDIO RB ACDN RETURN TO ACTIVATINO PARTONI * EJECT DRDN01 * * E C H O D N * * ECHO-ROUTINE * ECHODN EQU * LDR A7,A7 EOR? RF(N) ECH060 LDR A3,A2 LDR A4,A2 SAVE CHARACTER =1 SUK A3,/8 BACKSPACE? RF(E) ECH050 SUK A3,/10 CLEAR? RF(NE) ECH040 NO LDK A4,/40 ERASE DISPLAY =1 ECH040 EQU * LDK A2,1 BLOCK SIZE =1 CF A5,STABLK START OF BLOCK =1 RF(NZ) ECH050 ERROR END ECHO LDR A2,A4 GET CHARACTER =1 CF A5,OUTPUT SEND CHARACTER =1 RF(NZ) ECH050 ERROR END ECHO CF A5,ENDBLK END OF BLOCK =1 ECH050 ABL ECHRTN RETURN TO KEYBOARD DRIVER * ECH060 EQU * CF A15,TENDIO END I/O =! ABL ECHRTN RETURN TO KEYBOARD DRIVER * * EJECT DRDN01 * * **************************************************** * * D N E R R * * ERROR ROUTINE * **************************************************** * * DNERR EQU * =1 ANK A1,/10 OUTPUT ERROR =1 RB(NZ) RCDN YES DO RECOVERY =1 LDK A1,1 SET NOT OPERABEL IN RETURN CODE =1 RB ENDIO END I/O REQUEST =1 END