|
|
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: 11186 (0x2bb2)
Notes: pts_type(SC)
Names: »DRDI01.SC«
└─⟦7a1dcd5a9⟧ Bits:30009673 Philips computer tape "600134"
└─⟦this⟧ »PTMON/DRDI01.SC«
└─⟦928b1fd3e⟧ Bits:30009671 Philips computer tape "600131"
└─⟦this⟧ »PTMON/DRDI01.SC«
IDENT DRDI01 REL 11.0 81-01-26 870105041100 * * ******************************************************* * * PHILIPS TERMINAL SYSTEM PTS * * DRDI01 = DRIVER INDICATOR DISPLAY * * * * * * ******************************************************* * * * THIS DRIVER HANDLES OUTPUT TO SIGNAL DISPLAYS PTS 6241 * AND 6242. IT ALSO CONTROLS LAMPS ON KEYBOARDS PTS 6232 * 6233, 6236 AND 633, 62361. * IT IS ALSO POSSIBLE TO OPEN CASH- * BOXES ON FT80. * * THE DRIVER CONSISTS OF THE FOLLOWING PARTS: * * A C D I : ACTIVATION PART * * R C D I : RECOVERY ROUTINE * * THE FOLLOWING ORDERS ARE TREATED: * * ORDER 37: WRITE LIGHTS ON * 38: WRITE LIGHTS OFF * 06: WRITE PROGRAM DISPLAY * 39: WRITE FLASHING LIGHTS EJECT * * * NORMAL REGISTER USAGE: * * REGISTER A1: RETURN CODE * A2: OUTPUT * A3: WORK REGISTER * A4: WORK REGISTER * A5: WORK REGISTER * A6: DWT-ADDRESS * A7: ORDER * A8: ECB-ADDRESS * * * SYSTEM ADAPTATION * * DISPLAY TYPE MUST BE DEFINED IN DWTDEV * * BIT 0 = 1 FOR PTS 6232,6331,6236,6272 * BIT 0 = 0 FOR PTS 6241,6242,6233 * * ORDER 06, WRITE PROGRAM DISPLAY MAY BE EXCLUDED BY * CONDITIONAL ASSEMBLY * EJECT * * *************** * ENTRIES * *************** * ENTRY DIAD ADDRESS TO ADDRESS-BLOCK * ******************* * EXTERNALS * ******************* * EXTRN LENDIS PERFORM END I/O AND DISPATCH EXTRN LDISP DISPATCHER ORDINARY INT. EXTRN OUTPUT SEND ONE CHAR. EXTRN GETCHR GET CHARACTER EXTRN LENDER I/O REQUEST ERROR EXTRN DWTST STATUS WORD EXTRN DWTDEV STATUS EXTRN DWTECB ECB ADDRESS EXTRN DWTSB2 STACK BASE EXTRN SETIME SET TIMER EXTRN STABLK START BLOCK EXTRN ENDBLK END BLOCK EXTRN ECBCW CONTROL WORD OF ECB * * EJECT * * *************** * TABLES * *************** * * DATA DVBLEN BUFFER SIZE (MMU) DATA 2 DEVICE INDEX * DIAD EQU * ADDRESS BLOCK DATA ACDI ACTIVATION DRIVER DATA 0 ABORT ROUTINE ADDRESS DATA 0 NO INTERRUPT HANDLER DATA RCDI RECOVERY ROUTINE * CCERR EQU /4 CODE CHECK ERROR * EJECT * * ************************* * CONDITIONAL ASSEMBLY * ************************* * * * ORDER 06, WRITE PROGRAM DISPLAY MAY BE EXCLUDED BY * SETTING X:A=0 * X:A EQU 0 ORD6 EQU 0 * * * ORDER 39, WRITE FLASHING LIGHTS MAY BE INCLUDED * IN THIS DRIVER BY SETTING X:B=1 * X:B EQU 0 FLASH EQU 1 * * EJECT * * * MMU BUFFER SIZE * X:C EQU 4 DVBLEN EQU X:C * * ********************* * DWT-DISPLACEMENTS * ********************* * DWTDIB EQU /02 SAVE AREA DWTFLA EQU /08 SAVE AREA FOR FLASH IMAGE DWTTP EQU /0A TIMER POINTER TIME EQU 5 FLASH TIME * EJECT * * A C D I * * ACTIVATION PART: CHECKS VALIDITY OF ORDERS AND STARTS * THE PROCESSING * * ACDI EQU * IFT ORD6=1 CCK A7,/0606 RF(E) ADI050 ORDER /06 XIF LD A4,ECBCW,A8 CONTROL WORD TO A4 LD A3,DWTDEV,A6 TEST IF ONE OR TWO CHARACTER DEVICE RF(N) ADI005 ONE CHARACTER DEVICE LDR A3,A4 CONTROL WORD tO A3 ANK A4,/F ANK A3,/F0 SLL A3,4 ORR A4,A3 LAMPCODES IN A4 ADI005 EQU * IFT FLASH=1 CCK A7,/3939 RF(E) FLA05 XIF SUK A7,/37 RF(E) ADI010 ORDER 37 SUK A7,1 RF(E) ADI007 ORDER 38 ABL(NE) LENDER REQUEST ERROR EJECT IFT FLASH=1 * * FLASH ORDER /39 * * FLA05 ORS A4,DWTFLA+DWTDEV,A6 SAVE FLASH IMAGE * LD A1,DWTTP+DWTDEV,A6 GET TIMER POINTER RF(NZ) FLA10 TIMER ALREADY STARTED LDR A1,A6 CF A15,SETIME DATA FLTUT,TIME ST A4,DWTTP+DWTDEV,A6 LD A4,DWTFLA+DWTDEV,A6 RELOAD FLASH IMAGE * FLA10 EQU * LDKL A3,/200 XRS A3,DWTDEV,A6 SWITCH 0N-OFF FLAG * AN A3,DWTDEV,A6 ON OR OFF ? RF(Z) FLA20 WRITE FLASHING LIGHTS OFF * ORS A4,DWTDIB+DWTDEV,A6 ON + FLASH RF ADI020 TURN ON LAMPS * FLA20 C1R A4,A4 ANS A4,DWTDIB+DWTDEV,A6 ON-FLASH RF ADI020 TURN OFF LAMPS EJECT * * * FLASH TIME OUT ROUTINE * * FLTUT EQU * LDR A6,A1 GET DWT-ADDRESS IN A6 LD A4,DWTST,A6 DEVICE BUSY ? RF(NN) FLA40 YES ! * LDKL A4,/7FFF SET DEVICE BUSY ANS A4,DWTST,A6 * LD A4,DWTFLA+DWTDEV,A6 RF(Z) FLA30 NO MORE LAMPS TO FLASHER * LDR A5,A6 INITIATE DWT-STACK POINTER ADKL A5,DWTSB2 LDKL A1,-TIME RESTART TIMER ST* A1,DWTTP+DWTDEV,A6 RB FLA10 * FLA30 CM DWTTP+DWTDEV,A6 TURN OFF TIMER RF ENDIO * FLA40 EQU * LDKL A1,-TIME RESTART TIMER ST* A1,DWTTP+DWTDEV,A6 ABL LDISP XIF EJECT IFT ORD6=1 * * * ORDER 06: WRITE PROGRAM DISPLAY * ADI050 LDK A3,0 ADI060 CF A15,GETCHR GET CHARACTER LDR A1,A1 LAST CHARACTER ? RF(Z) ADI070 YES LDR A4,A2 SRL A4,4 SUK A4,3 UNDEFINED CHARACTER ? RF(L) ADI100 YES CWK A4,3 UNDEFINED ? RF(G) ADI100 YES ADKL A4,DWTDIB+2 ADR A4,A6 SCR A2,A4 STORE CHARACTER IN DWT-BUFFER RB ADI060 GET NEXT CHARACTER ADI070 SC A1,DWTDEV+1,A6 SET START VALUE IN BYTE COUNTER LDK A2,/4 BLOCK LENGTH CF A5,STABLK START OF BLOCK RF(NZ) DIER10 NOT OK ! RF SSEQ00 SEND CHARACTERS * * * CODE CHECK ERROR * ADI100 LDK A1,CCERR SET RETURN CODE ORS A1,8,A8 IN ECB RB ADI060 GET NEXT CHARACTER XIF * EJECT * * * ORDER 38: SWITCH OFF LAMPS * ADI007 EQU * C1R A4,A4 ANS A4,DWTDIB+DWTDEV,A6 RESET BITS IN DWT-BUFFER IFT FLASH=1 ANS A4,DWTFLA+DWTDEV,A6 RESET BITS IN FLASH IMAGE XIF RF ADI020 * * * * * ORDER 37: TURN ON LAMPS * * * ADI010 ORS A4,DWTDIB+DWTDEV,A6 SET BITS IN DWT-BUFFER IFT FLASH=1 C1R A4,A4 ANS A4,DWTFLA+DWTDEV,A6 RESET BITS IN FLASH IMAGE XIF EJECT * * SENDING SEQUENCE * ADI020 LDK A2,/2 BLOCK LENGTH CF A5,STABLK START OF BLOCK RF(NZ) DIER10 NOT OK ! LC A2,DWTDIB+DWTDEV,A6 GET FIRST CHARACTER ADI035 LDK A1,1 SC A1,DWTDEV+1,A6 SET START VALUE IN BYTE COUNTER LD A3,DWTDEV,A6 TWO OUTPUTS ? RF(NN) SSEQ20 YES * SSEQ00 LDKL A2,DWTDIB+DWTDEV NO ! ADR A2,A6 LD A4,DWTDEV,A6 ANK A4,/FF ADR A2,A4 LCR A2,A2 GET CHARACTER LD A8,DWTECB,A6 RF(Z) SSEQ10 IF POWER FAIL NO BELL OR CASH-BOX OPENING LD A3,ECBCW,A8 BELL? RF(NN) SSEQ05 NO ORK A2,/40 YES ! INDICATE BELL SSEQ05 SLC A3,1 OPEN BOX 2 ? RF(NN) SSEQ07 NO ! ORK A2,/20 YES ! INDICATE OPENING OF BOX 2 SSEQ07 SLC A3,1 OPEN BOX 1 ? RF(NN) SSEQ10 NO ! ORK A2,/10 YES ! INDICATE OPENING OF BOX 1 EJECT * SSEQ10 IM DWTDEV,A6 INCREMENT BYTE COUNTER * SSEQ20 CF A5,OUTPUT SEND CHAR. RF(NZ) DIER10 NOT OK ! LD A4,DWTDEV,A6 GET DEVICE STATUS RF(N) SSEQ30 ONE CHARACTER DEVICE ! * ANK A4,/FF GET BYTE COUNTER SUK A4,2 TWO CHARACTERS SENT ? EJECT IFT ORD6=1 RF(NZ) SSEQ25 NO ! LDR A7,A7 GET ORDER IFT ORD6=1 CWK A7,06 ORDER 06, WRITE PROGRAM DISPLAY ? RF(NE) SSEQ30 NO ! SSEQ25 SUK A4,4 LAST CHARACTER ? RF(Z) SSEQ30 YES ! RB SSEQ00 XIF IFT ORD6=0 RF(Z) SSEQ30 YES RB SSEQ00 NO ! GET NEXT CHARACTER XIF * SSEQ30 CF A5,ENDBLK END OF BLOCK RF(NZ) DIER10 * ENDIO EQU * ABL LENDIS PERFORM END I/O AND DISPATCH EJECT * * * ERROR ROUTINE * * DIER10 EQU * SRC A1,1 NOT OPERABLE ? RF(N) DIER20 YES * SRC A1,2 LINK ERROR ? ABL(N) LDISP YES, GO TO DISPATCHER * RF RCDI PERFORM RECOVERY * DIER20 EQU * SLC A1,1 SET "NOT OPERABLE" BIT RB ENDIO END I/O EJECT * * R C D I * * RECOVERY ROUTINE: AT POWER UP ALL LIGHTS ARE FED WITH * THE VALUES EXISTENT AT POWER FAILURE TIME.THE INFORMATION * OM PROGRAM DISPLAY IS ALSO RESTORED * * RCDI EQU * LDKL A2,/7FFF SET DEVICE BUSY ANS A2,DWTST,A6 * LDK A2,/4 BLOCK LENGTH CF A5,STABLK START OF BLOCK RB(NZ) DIER10 * LC A2,DWTDIB+DWTDEV,A6 GET FIRST CHARACTER RB ADI035 * * * END