|
|
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: 14038 (0x36d6)
Notes: pts_type(SC)
Names: »DRSOP1.SC«
└─⟦726a6c4ca⟧ Bits:30009685 Philips computer tape "600309"
└─⟦this⟧ »M:PTB/DRSOP1.SC«
└─⟦this⟧ »M:PTD/DRSOP1.SC«
IDENT DRSOP1 REL 9.2 79-11-16 870105040920 * * ************************************************************ * * 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: WORK REGISTER * 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 EXTRN SPDLCI DATA SOP LIGHTS AND FD POWER EJECT * ************************************ * * DWT DISPLACEMENTS * ************************************ * EXTRN DWTCHP CHANNEL PARAMETER EXTRN DWTST STATUS EXTRN DWTECB ECB ADDRESS EXTRN DWTOR DWT INDEX AND ORDER EXTRN DWTADR DRIVER ADDRESS BLOCK EXTRN DWTTAB TTAB ADDRESS EXTRN DWTWAT WAIT/ACTIVATE INDICATOR EXTRN DWTTQ TERMINAL QUEUE EXTRN INTSAV SAVE AREA FOR LAST INTERRUPT EXTRN ECBEL EFFECTIVE LENGTH IN ECB EXTRN ECBCW ECB CONTROL WORD TIME EQU 5 FLASH TIME EJECT * CONDITIONAL ASSEMBLY * EXTENDED SOP INPUT DWT OR NOT * SOPX=0 => NOT EXTENDED * X:A EQU 0 SOPX EQU 0 ** ** * 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 1 ** ** * THE ORDER /39, WRITE FLASHING LIGHTS CAN BE INCLUDED BY * SETTING X:B=1 * X:B EQU 0 WRFLA EQU 0 * * * A PROGRAM VERSION USING TOSS MMU PAGING * IS OBTAINED BY SETTING MMUPAG EQU 1. * MMUPAG EQU 0 * * * A PROGRAM VERSION USING THE EXTENDED INSTRUCTION * SET IS OBTAINED BY SETTING CPU852 EQU 0. * CPU852 EQU 0 * DVBLEN EQU 0 MMU BUFFER SIZE DEVIND EQU -2 SOP DEVICE INDEX * EJECT * * DWTDRD EQU /10 START OF DRIVER DEFINED PART * IFT MMUPAG=0 START EQU DWTDRD XIF * IFT MMUPAG=1 START EQU DWTDRD+4 XIF * DWTTP EQU START+/00 TIMER POINTER * EJECT * ************************** * S.O.P. DEVICE ADDRESS: * ************************** * * SOPDA EQU /2E DEVICE ADDRESS * * * ****************************** * * * S.O.P. CHANNEL UNIT TABLE * * * ****************************** * * SOPCT EQU * TABLE STARTS WITH ADDRESS BLOCK: * DATA DVBLEN MMU BUFFER SIZE DATA DEVIND DEVICE INDEX SOPADI EQU * INPUT ADDRESS BLOCK (FOR READ ORDERS) * DATA SOPAS ACTIVATE SWITCHES ENTRY DATA 0 ABORT ROUTINE ADDRESS * DATA DVBLEN MMU BUFFER SIZE DATA DEVIND DEVICE INDEX SOPADU EQU * ACTIVATE LIGHTS ENTRY * DATA SOPAL ACTIVATE LIGHTS ENTRY DATA 0 ABORT ROUTINE ADDRESS * * BIT 0 CONTROLS FD POWER * (0=ON, 1=OFF) 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 * EJECT * * ENTRY FOR CHANGES OF S.O.P. LIGHTS * SOPAL EQU * ACTIVATE LIGHTS ENTRY * LD A3,10,A8 CHANGED LIGHTS ANKL A3,/07FF BITS 5-15 CONTROLS LIGHTS * 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 * * A3 CONTAINS LIGHTS THAT SHOULD FLASH ORS A3,FLASH STORE NEW LAMPS TO FLASH FL015 LD A1,DWTST,A6 ANK A1,/40 RF(Z) FL020 ORS A3,SPDLCI FIXA TILL DET HELA! RF SOPONOFF FL020 EQU * C1R A3,A3 ANS A3,SPDLCI RF SOPONOF * EJECT * FLTUT EQU * FLASH TIME OUT LDKL A6,DWSO01 LD A3,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 EQU * C1R A3,A3 GET COMPLEMENTED CONTROL WORD ANS A3,SPDLCI MASK OUT LIGHTS TO BE TURNED OFF IFT WRFLA=1 ANS A3,FLASH STOP SOME FLASHING XIF RF SOPONOF BRANCH TO COMMON ON/OFF PATH * * * TURN ON LIGHTS INDICATED BY '1' BITS: * SOPON EQU * * A3 CONTAINS CONTROL WORD ORS A3,SPDLCI SET LIGHTS TO BE TURNED ON IFT WRFLA=1 C1R A3,A3 ANS A3,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 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 * 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 CM ECBEL,A8 RESET EFFECTIVE LENGTH 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 CM ECBEL,A8 RESET EFFECTIVE LENGTH 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 IFT CPU852=1 CF A15,SAVE8 SAVE A1-A8 ON STACK XIF * IFT CPU852=0 MSR 8,A15 SAVE A1-A8 ON STACK XIF * 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 IFT MMUPAG=1 DATA 0 SAVE AREA USER ECB ADDRESS DATA DEVECI MMU ECB ADDRESS DEVECI EQU * DATA 0,0,0,0,0,0 XIF * * 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 IFT MMUPAG=1 DATA 0 SAVE AREA USER ECB ADDRESS DATA DEVECO MMU ECB ADDRESS XIF DATA 0 TIMER POINTER FLASH DATA 0 SAVE AREA FOR FLASHING LAMPS IFT MMUPAG=1 DEVECO EQU * DATA 0,0,0,0,0,0 XIF EJECT * * D W S I 0 2 : EXTENDED INPUT DWT * DWSI02 EQU * IFF SOPX=0 DATA 0 DATA /8000 DATA 0 ECB ADDRESS DATA 0 ORDER DATA SOPADI DATA 0,0,0 IFT MMUPAG=1 DATA 0 SAVE AREA USER ECB ADDRESS DATA DEVEC1 MMU ECB ADDRESS DEVEC1 EQU * DATA 0,0,0,0,0,0 XIF * * * END