|
|
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: 10822 (0x2a46)
Notes: pts_type(SC)
Names: »DRDI01.SC«
└─⟦4358b8014⟧ Bits:30009669 Philips computer tape "600124"
└─⟦this⟧ »MON10/DRDI01.SC«
└─⟦79fbed147⟧ Bits:30009697 Philips computer tape "600414"
└─⟦this⟧ »M:DECE/DRDI01.SC«
└─⟦bf903a231⟧ Bits:30009665 Philips computer tape "600109"
└─⟦this⟧ »MON10/DRDI01.SC«
IDENT DRDI01 REL 10.0 80-03-14 870105041000 * * ******************************************************* * * 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. * * THESE DEVICES MUST BE CONNECTED TO CPU VIA CHLT OR CHRT * * THE DRIVER CONSISTS OF THE FOLLOWING PARTS: * * A C D I : ACTIVATION PART * * I H D I : INTERRUPT HANDLER * * R C D I : RECOVERY ROUTINE * * THE FOLLOWING ORDERS ARE TREATED: * * ORDER 05: WRITE LIGHTS ON * 06: WRITE LIGHTS OFF * 07: 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 FIRST WORD IN DWT * * BIT 10 = 1 IF PROGRAM DISPLAY (PTS 6241) * BIT 11 = 1 FOR PTS 6232,6331,6236 * BIT 11 = 0 FOR PTS 6241,6242,6233 * * ORDER 07, WRITE PROGRAM DISPLAY MAY BE EXCLUDED BY * CONDITIONAL ASSEMBLY * EJECT * * *************** * ENTRIES * *************** * ENTRY DIAD ADDRESS TO ADDRESS-BLOCK * ******************* * EXTERNALS * ******************* * EXTRN SAVE8 SAVE REGS EXTRN TENDIO END I/O EXTRN DISEND PERFORM END I/O AND DISPATCH EXTRN TDISP DISPATCHER ORDINARY INT. EXTRN OUTLIN OUTPUT ONE CHAR. EXTRN GETCHR GET CHARACTER EXTRN DISIOE I/O REQUEST ERROR EXTRN DWTST STATUS EXTRN DWTBC BYTE COUNTER EXTRN DWTECB ECB ADDRESS * EXTRN SETIMP SET TIMER * * 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 IHDI INTERRUPT HANDLER DATA RCDI RECOVERY ROUTINE * CCERR EQU /4 CODE CHECK ERROR * EJECT * * ************************* * CONDITIONAL ASSEMBLY * ************************* * * * ORDER 07, WRITE PROGRAM DISPLAY MAY BE EXCLUDED BY * SETTING X:A=0 * X:A EQU 0 ORD7 EQU 0 * * * THIS DRIVER CAN BE MADE TO HANDLE CREDIT ORDERS * BY SETTING CREDIT = 1 * ORDERS 05,06AND 07 ARE THEN REPLACED BY * ORDERS 37,38 AND 06 * CREDIT EQU 1 * * * ORDER 39, WRITE FLASHING LIGHTS MAY BE INCLUDED * IN THIS DRIVER BY SETTING X:B=1 * X:B EQU 0 FLASH EQU 0 * * * A PROGRAM VERSION USING TOSS MMU PAGING * IS OBTAINED BY SETTING MMUPAG EQU 1. * MMUPAG EQU 1 * * * A PROGRAM VERSION USING THE EXTENDED INSTRUCTION * SET IS OBTAINED BY SETTING CPU852 EQU 0. * CPU852 EQU 0 * EJECT * * * MMU BUFFER SIZE * X:C EQU 4 DVBLEN EQU X:C * * ********************* * 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 * DWTDIB EQU START+/02 SAVE AREA DWTFLA EQU START+/08 SAVE AREA FOR FLASH IMAGE DWTTP EQU START+/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 ORD7-CREDIT=1 CCK A7,/0707 RF(E) ADI050 ORDER /07 XIF IFT ORD7+CREDIT=2 CCK A7,/0606 RF(E) ADI050 ORDER /06 XIF LD A4,10,A8 CONTROL WORD TO A4 LDR* A3,A6 ANK A3,/10 TEST IF ONE OR TWO CHARACTER DEVICE RF(NZ) 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 IFT CREDIT=0 SUK A7,5 XIF IFT CREDIT=1 SUK A7,/37 XIF RF(E) ADI010 ORDER 05 SUK A7,1 RF(E) ADI007 ORDER 06 ABL(NE) DISIOE REQUEST ERROR * EJECT * * IFT FLASH=1 * * FLASH ORDER /39 * * FLA05 ORS A4,DWTFLA,A6 SAVE FLASH IMMAGE LD A1,DWTTP,A6 GET TIMER POINTER RF(NZ) FLA10 TIMER ALREADY STARTED LDK A4,DWTTP START TIMER ADR A4,A6 LDR A1,A6 CF A15,SETIMP DATA FLTUT,TIME ST A4,DWTTP,A6 LDKL A4,/FFBF ANRS A4,A6 CHECK ON-OFF INDICATOR FLA10 EQU * LD A4,DWTFLA,A6 LDR* A2,A6 CHECK ON-OFF INDICATOR ANK A2,/40 RF(Z) FLA20 WRITE FLASHING LIGHTS OFF ORS A4,DWTDIB,A6 ON + FLASH RF ADI030 TURN ON LAMPS FLA20 C1R A4,A4 ANS A4,DWTDIB,A6 ON-FLASH RF ADI030 TURN ON LAMPS FLTUT EQU * FLASH TIME OUT ROUTINE LDR A6,A1 LD A4,DWTFLA,A6 RF(Z) FLA30 IF NO MORE LAMPS TO FLASH GO TO DISPATCHER LDKL A1,-TIME RESTART TIMER ST* A1,DWTTP,A6 LDK A4,/40 XRRS A4,A6 SWITCH 0N-OFF FLAG RB FLA10 FLA30 CM DWTTP,A6 RF EXIT XIF * * * ORDER 06: SWITCH OFF LAMPS * ADI007 EQU * C1R A4,A4 ANS A4,DWTDIB,A6 RESET BITS IN DWT-BUFFER IFT FLASH=1 ANS A4,DWTFLA,A6 RESET BITS IN FLASH IMAGE XIF RF ADI030 * * EJECT * * * ORDER 05: TURN ON LAMPS * * * ADI010 ORS A4,DWTDIB,A6 SET BITS IN DWT-BUFFER IFT FLASH=1 C1R A4,A4 ANS A4,DWTFLA,A6 RESET BITS IN FLASH IMAGE XIF ADI030 LC A2,DWTDIB,A6 GET FIRST CHARACTER ADI035 LDK A1,1 SC A1,DWTST+1,A6 SET START VALUE IN BYTE COUNTER LDR* A3,A6 TWO OUTPUTS ? ANK A3,/10 RF(NZ) IHDI10 NO RF IHDI20 YES * * IFT ORD7=1 EJECT * * * ORDER 07: 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,DWTST+1,A6 SET START VALUE IN BYTE COUNTER RF IHDI10 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 * * I H D I * * INTERRUPT HANDLER: PROCESS OF INTERRUPT * IHDI EQU * LDR A1,A1 RETURN CODE RF(NE) ENDIO YES END I/O LD A4,DWTST,A6 GET STATUS ANK A4,/FF SUK A4,2 TWO CHARS. SENT IFT ORD7=1 RF(NZ) IHDI05 NO LDR* A3,A6 GET CHANNEL PARAMETER ANK A3,/20 PROGRAM STEP ? RF(Z) ENDIO NO. PERFORM ENDIO IHDI05 SUK A4,4 LAST CHARACTER ? RF(Z) ENDIO YES. PERFORM ENDIO IHDI10 LDKL A2,DWTDIB ADR A2,A6 LD A4,DWTST,A6 ANK A4,/FF ADR A2,A4 LCR A2,A2 GET CHARACTER XIF IFT ORD7=0 RF(Z) ENDIO IHDI10 LC A2,DWTDIB+1,A6 GET SECOND CHARACTER XIF LD A8,DWTECB,A6 RF(Z) OUTPUT IF POWER FAIL NO BELL LD A3,10,A8 BELL? RF(NN) OUTPUT NO ORK A2,/40 INDICATE BELL * OUTPUT IM DWTST,A6 INCREMENT BYTE COUNTER IHDI20 CF A15,OUTLIN OUTPUT CHAR. EXIT ABL TDISP ENDIO ABL DISEND PERFORM END I/O AND DISPATCH * EJECT * * R C D I * * RECIVERY 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 * IFT CPU852=1 CF A15,SAVE8 SAVE A1-A8 ON STACK XIF * IFT CPU852=0 MSR 8,A15 SAVE A1-A8 ON STACK XIF * LC A2,DWTDIB,A6 GET FIRST CHARACTER RB ADI035 * * * END