|
|
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: 14312 (0x37e8)
Notes: pts_type(SC)
Names: »DRSOP1.SC«
└─⟦efe3a1cfc⟧ Bits:30009667 Philips computer tape "600113"
└─⟦this⟧ »TOSSWORK/DRSOP1.SC«
IDENT DRSOP1 REL 8.2 78-09-15 870105040820 * ************************************************************ * * PHILIPS TERMINAL SYSTEM PTS * * DRSOP1 = DRIVER FOR SYSTEM OPERATORS PANEL * * * * * * ************************************************************ * * * THIS DRIVER HANDLES INPUT AND OUTPUT ON SYSTEM OPERATOR'S * PANEL CONNECTED TO CPU VIA CHCR-SOP * * * ON AN INPUT REQUEST THE DEVICE SOFTWARE STATUS IS SET * 'BUSY' UNTIL THE INPUT INTERRUPT IS TAKEN CARE OF * * * AT POWER UP RUNNING READ REQUEST IS COMPLETED WITH -2 * IN CONTROL WORD.IF NO RUNNING READ REQUEST,POWER UP * IS INDICATED AND NEXT READ REQUEST IS TERMINATED WITH * -2 IN CONTROL WORD * * * ON AN OUTPUT REQUEST THE DEVICE SOFTWARE STATUS IS SET * 'READY' IMMEDIATELY, SINCE THE OUTPUT DOES NOT REQUIRE * AN INTERRUPT. * EJECT * * * THE DRIVER CONSISTS OF THE FOLLOWING PARTS: * * S O P A S : READ SWITCHES ENTRY * * S O P A L : ACTIVATE LIGHTS ENTRY * * I H S O P : INTERRUPT HANDLER * * S O P R : RECOVERY ROUTINE * * * * THE FOLLOWING ORDERS ARE TREATED: * * ORDER 02 : READ SWITCHES * 05 : WRITE LIGHTS ON * 06 : WRITE LIGHTS OFF * 39 : WRITE FLASHING LIGHTS * * NORMAL REGISTER USAGE: * * REGISTER A1: INPUT/OUTPUT * A2: WORK REGISTER * A3: ---- * A4: WORK REGISTER * A5: ---- * A6: DWT-ADDRESS * A7: ORDER * A8: ECB-ADDRESS * * EJECT * ************ * ENTRIES: * ************ * * ENTRY SOPCT S.O.P. CHANNEL UNIT TABLE ENTRY SOPR S.O.P. RECOVERY ROUTINE ENTRY IHSOP S.O.P. INTERRUPT HANDLER (ALIAS) ENTRY DWSI01 INPUT DWT ENTRY DWSI02 EXTENDED INPUT DWT ENTRY DWSO01 OUTPUT DWT * ************** * EXTERNALS: * ************** * * TOSS GLOBALS: * EXTRN SAVE8 PUSH REGS A1-A8 ONTO STACK EXTRN DISIOE DISPATCHER I/O REQUEST ERROR ENTRY EXTRN TDISP DISPATCHER LKM ENTRY EXTRN RETUR8 POP A1-A8 CONT'S AND RETURN EXTRN TENDIO END-OF-I/O HOUSEKEEPING AND QUEUEING SUBROUTINE EXTRN SETIMP EJECT * ************************************ * * DWT DISPLACEMENTS * ************************************ * EXTRN DWTCHP CHANNEL PARAMETER EXTRN DWTST STATUS EXTRN DWTECB ECB ADDRESS EXTRN DWTOR ORDER EXTRN DWTADR POINTER TO ADDRESS-BLOCK EXTRN DWTTAB TTAB-ADDRESS EXTRN DWTWAT WAIT ACTIVATE INDICATOR EXTRN DWTTQ TERMINAL QUEUE EXTRN DWTWA WORK AREA EXTRN INTSAV SAVE AREA FOR LAST INTERRUPT EXTRN ECBCW ECB CONTROL WORD TIME EQU 5 FLASH TIME DWTTP EQU /10 TIMER POINTER EJECT * CONDITIONAL ASSEMBLY * EXTENDED SOP INPUT DWT OR NOT * SOPX=0 => NOT EXTENDED * X:A EQU 0 SOPX EQU X:A ** ** * THIS DRIVER CAN BE MADE TO HANDLE CREDIT ORDERS * BY SETTING CREDIT = 1 * ORDERS 05 AND 06 ARE THEN REPLACED BY ORDERS * /37 AND /38 RESPECTIVLY * BY SETTING CREDIT=1 THE SOP-SWITCHES IS INDEXED:1,2,3,... * 1 CORRESPONDS TO THE RIGHTMOST SWITCH. * IN CASE OF POWER ON ZERO IS STORED IN THE CONTROL WORD * OF THE ECB. ** CREDIT EQU 0 ** ** * THE ORDER /39, WRITE FLASHING LIGHTS CAN BE INCLUDED BY * SETTING X:B=1 * X:B EQU 0 WRFLA EQU X:B EJECT * ************************** * S.O.P. DEVICE ADDRESS: * ************************** * * SOPDA EQU /2E DEVICE ADDRESS * * * * ****************************** * * * S.O.P. CHANNEL UNIT TABLE * * * ****************************** * * SOPCT EQU * TABLE STARTS WITH ADDRESS BLOCK: * SOPADI EQU * INPUT ADDRESS BLOCK (FOR READ ORDERS) * DATA SOPAS ACTIVATE SWITCHES ENTRY * SOPADU EQU * ACTIVATE LIGHTS ENTRY * DATA SOPAL ACTIVATE LIGHTS ENTRY * SPDLCI DATA 0 LIGHT'S CORE IMAGE * EJECT * ****************************** * * * S.O.P. ACTIVATION ROUTINE: * * * ****************************** * * THE ORDER IS ANALYZED AND THE CORRESPONDING I/O ACTION * IS CARRIED OUT. * SOPAS EQU * SWITCHES ACTIVATION ENTRY * LDR A4,A7 COPY ORDER * SUK A4,/02 SEE IF READ ORDER: * RF(NZ) SOPER ERROR IF NOT READ ORDER * * INPUT SWITCH VALUE * SOPIN LDR* A2,A6 POWER UP INDICATION ? IFT CREDIT=0 RF(Z) EXIT NO CMR A6 YES CLEAR FOR NEXT REQ. XIF IFT CREDIT=1 RF(NZ) EXIT NO STR A7,A6 YES XIF RF IHSOP3 * * SOPAL EQU * ACTIVATE LIGHTS ENTRY * LDR A4,A7 COPY ORDER IFT WRFLA=1 CCK A4,/3939 RF(E) SOPFL XIF IFT CREDIT=0 SUK A4,/05 SEE IF 'LIGHTS ON' ORDER XIF IFT CREDIT=1 SUK A4,/37 XIF RF(Z) SOPON IF SO, TURN ON LIGHTS * SUK A4,1 SEE IF LIGHTS OFF ORDER RF(Z) SOPOFF SOPER ABL(NZ) DISIOE ILLEGAL ORDER IFT WRFLA=1 EJECT * * * FLASH LIGHTS * * SOPFL EQU * LD A4,DWTTP,A6 RF(NE) FL010 TIMER ALREADY STARTED LDK A4,DWTTP ADR A4,A6 LDR A1,A6 CF A15,SETIMP DATA FLTUT,TIME ST A4,DWTTP,A6 LDKL A1,/FFBF ANS A1,DWTST,A6 SET ON FLAG FL010 EQU * LD A4,10,A8 GET CONTROL WORD ORS A4,FLASH STORE NEW LAMPS TO A4,FLASH FL015 LD A1,DWTST,A6 ANK A1,/40 RF(Z) FL020 ORS A4,SPDLCI FIXA TILL DET HELA! RF SOPONOFF FL020 EQU * C1R A4,A4 ANS A4,SPDLCI RF SOPONOF FLTUT EQU * FLASH TIME OUT LDKL A6,DWSO01 LD A4,FLASH RF(Z) FL030 NO MORE FLASHING FOR THIS TIME LDKL A1,-TIME RESTART TIMER ST* A1,DWTTP,A6 LDK A1,/40 XRS A1,DWTST,A6 RB FL015 FL030 CM DWTTP,A6 RF EXIT END I/O XIF EJECT * SOPOFF C1 A4,10,A8 GET COMPLEMENTED CONTROL WORD ANS A4,SPDLCI MASK OUT LIGHTS TO BE TURNED OFF IFT WRFLA=1 ANS A4,FLASH STOP SOME FLASHING XIF RF SOPONOF BRANCH TO COMMON ON/OFF PATH * * * TURN ON LIGHTS INDICATED BY '1' BITS: * SOPON LD A4,10,A8 GET CONTROL WORD ORS A4,SPDLCI SET LIGHTS TO BE TURNED ON IFT WRFLA=1 C1R A4,A4 ANS A4,FLASH STOP SOME OTHER FLASHING XIF * * COMMON ON/OFF PATH: * SOPONOFF LD A1,SPDLCI GET LIGHTS' CORE IMAGE OTR A1,0,SOPDA AND OUTPUT TO S.O.P. * RF ENDIO PERFORM TENDIO EJECT * **************************** * * * S.O.P. INTERRUPT HANDLER * * * **************************** * * * THE INTERRUPT HANDLER WILL TAKE CARE OF ALL INTERRUPTS. * * IF NO REQUEST IS IN PROCEEDING THE INTERRUPT IS IGNORED. * IHSOP CF A15,SAVE8 ST P,INTSAV SAVE LAST INTERRUPT INR A1,0,SOPDA GET SWITCH SRN A1,A2 CALC INDEX IFT CREDIT=0 SLL A2,1 XIF IFT CREDIT=1 ADK A2,1 XIF IHSOP1 EQU * IFF SOPX=0 LDKL A6,DWSI02 ANY REQUEST ON LD A4,DWTST,A6 STATUS WORD RF(N) IHSOP2 NO LD A8,DWTECB,A6 GET ECB-ADDRESS ST A2,ECBCW,A8 STORE INDEX LDK A1,0 CF A15,TENDIO END I/O XIF IHSOP2 LDKL A6,DWSI01 ANY REQUEST ON LD A4,DWTST,A6 STATUS WORD RF(N) EXIT NO LD A8,DWTECB,A6 GET ECB-ADDRESS IHSOP3 ST A2,ECBCW,A8 STORE INDEX ENDIO LDK A1,0 CF A15,TENDIO END I/O EXIT ABL TDISP GO TO DISPATCHER EJECT * ************************************* * * * S.O.P POWER UP RECOVERY ROUTINE * * * ************************************* * * * THIS ROUTINE IS A SUBROUTINE TO THE POWER FAILURE * RECOVERY ROUTINE (PFAR). IT'S ENTRY POINT SHOULD * BE PRESENT IN THE POWER FAILURE RECOVERY TABLE (PFTAB). * IF RUNNING READ REQUEST THIS IS COMPLETED WITH -2 IN * CONTROL WORD. ELSE -2 IS SAVED IN DWTCHP * * SOPR EQU * ENTRY POINT * CF A15,SAVE8 SAVE REGS. CIO A1,1,SOPDA ACTIVATE INPUT * LD A1,SPDLCI GET LIGHTS' CORE IMAGE OTR A1,0,SOPDA AND OUTPUT TO THE LIGHTS * IFT CREDIT=0 LDKL A2,-2 POWER UP INDICATOR XIF IFT CREDIT=1 LDK A2,0 XIF IFF SOPX=0 LDKL A6,DWSI02 ANY REQUEST ON LD A4,DWTST,A6 GET STATUS WORD RF(NN) SOPR1 YES STR A2,A6 IND POWER UP XIF SOPR1 LDKL A6,DWSI01 ANY REQUEST ON LD A4,DWTST,A6 STATUS WORD RF(NN) SOPR2 YES STR A2,A6 IND POWER UP SOPR2 RB IHSOP1 EJECT * * D W S I 0 1 : INPUT DWT * DWSI01 EQU * DATA 0 CHANNEL PARAMETER: POWER UP IND DATA /8000 /8000 MEANS DEVICE IS READY DATA 0 ECB ADDRESS DATA 0 ORDER DATA SOPADI DATA 0 DATA 0 DATA 0 TERMINAL QUEUE * * D W S O 0 1 : OUTPUT DWT * * DWSO01 EQU * DATA /0040 CHANNEL PARAMETER DATA /8000 /8000 MEANS DEVICE IS READY DATA 0 ECB ADDRESS DATA 0 ORDER DATA SOPADU POINTER TO ADDRESS BLOCK DATA 0 TTAB-ADDRESS DATA 0 WAIT/ACTIVATE INDICATOR DATA 0 TERMINAL QUEUE DATA 0 TIMER POINTER FLASH DATA 0 SAVE AREA FOR FLASHING LAMPS EJECT * * D W S I 0 2 : EXTENDED INPUT DWT * DWSI02 EQU * IFF SOPX=0 DATA 0 DATA /8000 DATA 0,0 DATA SOPADI DATA 0,0,0 XIF END