|
|
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: 36660 (0x8f34)
Notes: pts_type(SC)
Names: »DRAS01.SC«
└─⟦13e5fd45a⟧ Bits:30009699 Philips computer tape "600507"
└─⟦this⟧ »TOSSWORK/DRAS01.SC«
└─⟦bc20f3abf⟧ Bits:30009670 Philips computer tape "600126"
└─⟦this⟧ »TOSSWORK/DRAS01.SC«
IDENT DRAS01 REL 11.0 81-01-26 870105041100 =6, ETX-CHECK REMOVED PRR 11.0 80-03-06 =5, CORR. OF FLASHING LIGHTS PROBLEM DEV ADDR. CHAN. UNIT 5 AND 6 PRR 11.0 80-02-05 NEW DEVICE DRIVER INTERFACE PRR 10.0 79-12-07 =4, RTN FROM OUTASC IN INH MODE PRR 10.1 79-11-20 =3, CHECK IF PFINIT PENDING PRR 10.1 79-10-04 =2, CORR. OF RECOV.;ST. INP. IF THRP. ERR. PRR 10.1 79-10-03 =1, CHANGE TO EVEN PARITY PRR 10.1 79-09-18 * * ********************************************************************* * * PHILIPS TERMINAL SYSTEM PTS * * DRAS01 = DRIVER CHANNEL UNIT * * ASCU4Z * * * * * ********************************************************************** * * THIS IS A CHANNEL UNIT DRIVER FOR TERMINALS * CONNECTED TO CPU VIA ASCU4Z. * * AT INPUT INTERRUPT A CHARACTER IS READ TO REGISTER A2 * AND A BRANCH IS MADE TO INTERRUPT HANDLER FOR ACTUAL * DEVICE. * * AFTER AN OUTPUT IS ENDED AN INTERRUPT IS * GENERATED FROM ASCU4Z. THE DRIVER CHECKS THE INTERRUPT * AND A BRANCH IS MADE TO INTERRUPT HANDLER. * * EJECT * * THE DRIVER ALSO INCLUDES THE FOLLOWING SUBROUTINES: * * -ASCUON EXECUTE CIO START ON EVERY ASCU4Z LINE AT POWER ON * * -OUTASC SEND ONE CHARACTER * * CONTROL WORK TABLES ARE INCLUDED IN THE DRIVER * * NORMAL REGISTER USAGE IN THE DRIVER: * * A1 = RETURN CODE * A2 = INPUT CHARACTER * A3 = WORK REGISTER * A4 = DEVICE NUMBER * 2 * A5 = CWT-ADDRESS * A6 = DWT-ADDRESS * A7 = ORDER * A8 = ECB ADDRESS * * * EJECT * *********** * ENTRIES * *********** * * ENTRY IASCUZ INTERRUPT FROM ASCU4Z ENTRY ASCUON START AT POWER ON ENTRY ASCHAN NUMBER OF CHANNEL UNITS * ENTRY ASCHRI CHARACTER INPUT ENTRY ASSTBL DEFINE START OF OUTPUT BLOCK ENTRY ASCHRO CHARACTER OUTPUT ENTRY ASENBL DEFINE END OF OUTPUT BLOCK ENTRY ASDISP LOCAL DISPATCHER * EJECT * * ******************************** * EXTERNAL TOSS MODULE ENTRIES * ******************************** * EXTRN TDISP DISPATCHER EXTRN INTSAV SAVE AREA LAST INTERRUPT EXTRN PFPOST PWF POST PROCESSING FLAG =3 * EXTRN INTAS1 WS TABLE ADDRESS ASCU4Z 1 EXTRN INTAS2 WS TABLE ADDRESS ASCU4Z 2 EXTRN INTAS3 WS TABLE ADDRESS ASCU4Z 3 EXTRN INTAS4 WS TABLE ADDRESS ASCU4Z 4 EXTRN INTAS5 WS TABLE ADDRESS ASCU4Z 5 EXTRN INTAS6 WS TABLE ADDRESS ASCU4Z 6 EXTRN INTAS7 WS TABLE ADDRESS ASCU4Z 7 EXTRN INTAS8 WS TABLE ADDRESS ASCU4Z 8 * EXTRN NDSAV8 SAVE A3-A5, A7-A8 IN DWT EXTRN NDGET8 GET A3-A5, A7-A8 FROM DWT EXTRN NDREDW CALL RECOVERY FOR DEVICE EXTRN NDRETO OK & RETURN TO DEV. DRIVER EXTRN NDREP POP & RETURN TO DEV. DRIVER EXTRN NDREPO POP, OK & RETURN TO DEV. DRIVER * EJECT * ****************** * DWT PARAMETERS * ****************** * * EXTRN DWTST STATUS EXTRN DWTOR ORDER EXTRN DWTOCH LAST OUTPUT CHARACTER EXTRN DWTECB ECB-ADDRESS EXTRN DWTADR ADDRESS TO ADDRESSBLOCK EXTRN DWTOTQ OUTPUT QUEUE LINK EXTRN DWTSB2 STACK BASE 2 EXTRN DWTCP2 CHANNEL PARAMETERS 2 * EXTRN INTADR INTERRUPT ADDRESS DISPLACEMENT EXTRN RECADR RECOVERY ADDRESS DISPLACEMENT * EJECT * * ************* * CONSTANTS * ************* * * KB EQU 1 DEVICE ADDRESS FOR KEYBOARD DI EQU 2 DEVICE ADDRESS FOR KEYBOARD LAMPS * EJECT * ************************ * CONDITIONAL ASSEMBLY * ************************ * * A LOGG FUNCTION OF EVERY INPUT AND OUTPUT CHARACTER * AND STATUS MAY BE INCLUDED TO THE DRIVER BY SETTING X:A=1 * X:A EQU 1 LOGING EQU X:A * * THIS DRIVER HANDLES ONE OR UP TO SIX * CHANNELS BY SETTING X:B TO 1, 2, 3,...,6 * X:B EQU 1 ASCHAN EQU X:B * EJECT * **************************************** * CONTROL WORK TABLES FOR ASCU4Z 1 * **************************************** * * * L I N E 1 * DWA11 EQU /1C DEVICE ADDRESS * * CWTA11 EQU * TABLE ENTRY CWTLDW EQU *-CWTA11 DATA 0 LAST OUTPUT DWT CWTLON EQU *-CWTA11 DATA 0 LAST OUTPUT CH./ NEXT OUTPUT CH. CWTITA EQU *-CWTA11 DATA INTAS1 WS TABLE ADDRESS CWTINR EQU *-CWTA11 INR A2,0,DWA11 INR CWTOTR EQU *-CWTA11 OTR A2,0,DWA11 OTR CWTCIS EQU *-CWTA11 CIO A1,1,DWA11 CIO START CWTEQ EQU *-CWTA11 DATA 0 QUEUE CWTCIH EQU *-CWTA11 CIO A1,0,DWA11 CIO HALT CWTSST EQU *-CWTA11 SST A2,DWA11 SEND STATUS CWTST EQU *-CWTA11 DATA 0 CHANNEL STATUS * * EJECT * * * L I N E 2 * DWA12 EQU DWA11+1 DEVICE ADDRESS * * CWTA12 EQU * TABLE ENTRY DATA 0 LAST OUTPUT DWT DATA 0 LAST OUTPUT CH./ NEXT OUTPUT CH. DATA INTAS1 WS TABLE ADDRESS INR A2,0,DWA12 INR OTR A2,0,DWA12 OTR CIO A1,1,DWA12 CIO START DATA 0 QUEUE CIO A1,0,DWA12 CIO HALT SST A2,DWA12 SEND STATUS DATA 0 CHANNEL STATUS * * EJECT * * * L I N E 3 * DWA13 EQU DWA11+2 DEVICE ADDRESS * * CWTA13 EQU * TABLE ENTRY DATA 0 LAST OUTPUT DWT DATA 0 LAST OUTPUT CH./ NEXT OUTPUT CH. DATA INTAS1 WS TABLE ADDRESS INR A2,0,DWA13 INR OTR A2,0,DWA13 OTR CIO A1,1,DWA13 CIO START DATA 0 QUEUE CIO A1,0,DWA13 CIO HALT SST A2,DWA13 SEND STATUS DATA 0 CHANNEL STATUS * * EJECT * * * L I N E 4 * DWA14 EQU DWA11+3 DEVICE ADDRESS * * CWTA14 EQU * TABLE ENTRY DATA 0 LAST OUTPUT DWT DATA 0 LAST OUTPUT CH./ NEXT OUTPUT CH. DATA INTAS1 WS TABLE ADDRESS INR A2,0,DWA14 INR OTR A2,0,DWA14 OTR CIO A1,1,DWA14 CIO START DATA 0 QUEUE CIO A1,0,DWA14 CIO HALT SST A2,DWA14 SEND STATUS DATA 0 CHANNEL STATUS * * EJECT * **************************************** * CONTROL WORK TABLES FOR ASCU4Z 2 * **************************************** * IFF ASCHAN=1 * * L I N E 1 * DWA21 EQU /3C DEVICE ADDRESS * * CWTA21 EQU * TABLE ENTRY DATA 0 LAST OUTPUT DWT DATA 0 LAST OUTPUT CH./ NEXT OUTPUT CH. DATA INTAS2 WS TABLE ADDRESS INR A2,0,DWA21 INR OTR A2,0,DWA21 OTR CIO A1,1,DWA21 CIO START DATA 0 QUEUE CIO A1,0,DWA21 CIO HALT SST A2,DWA21 SEND STATUS DATA 0 CHANNEL STATUS * * EJECT * * * L I N E 2 * DWA22 EQU DWA21+1 DEVICE ADDRESS * * CWTA22 EQU * TABLE ENTRY DATA 0 LAST OUTPUT DWT DATA 0 LAST OUTPUT CH./ NEXT OUTPUT CH. DATA INTAS2 WS TABLE ADDRESS INR A2,0,DWA22 INR OTR A2,0,DWA22 OTR CIO A1,1,DWA22 CIO START DATA 0 QUEUE CIO A1,0,DWA22 CIO HALT SST A2,DWA22 SEND STATUS DATA 0 CHANNEL STATUS * * EJECT * * * L I N E 3 * DWA23 EQU DWA21+2 DEVICE ADDRESS * * CWTA23 EQU * TABLE ENTRY DATA 0 LAST OUTPUT DWT DATA 0 LAST OUTPUT CH./ NEXT OUTPUT CH. DATA INTAS2 WS TABLE ADDRESS INR A2,0,DWA23 INR OTR A2,0,DWA23 OTR CIO A1,1,DWA23 CIO START DATA 0 QUEUE CIO A1,0,DWA23 CIO HALT SST A2,DWA23 SEND STATUS DATA 0 CHANNEL STATUS * * EJECT * * * L I N E 4 * DWA24 EQU DWA21+3 DEVICE ADDRESS * * CWTA24 EQU * TABLE ENTRY DATA 0 LAST OUTPUT DWT DATA 0 LAST OUTPUT CH./ NEXT OUTPUT CH. DATA INTAS2 WS TABLE ADDRESS INR A2,0,DWA24 INR OTR A2,0,DWA24 OTR CIO A1,1,DWA24 CIO START DATA 0 QUEUE CIO A1,0,DWA24 CIO HALT SST A2,DWA24 SEND STATUS DATA 0 CHANNEL STATUS * * XIF EJECT * **************************************** * CONTROL WORK TABLES FOR ASCU4Z 3 * **************************************** * IFF ASCHAN=1 IFF ASCHAN=2 * * L I N E 1 * DWA31 EQU /20 DEVICE ADDRESS * * CWTA31 EQU * TABLE ENTRY DATA 0 LAST OUTPUT DWT DATA 0 LAST OUTPUT CH./ NEXT OUTPUT CH. DATA INTAS3 WS TABLE ADDRESS INR A2,0,DWA31 INR OTR A2,0,DWA31 OTR CIO A1,1,DWA31 CIO START DATA 0 QUEUE CIO A1,0,DWA31 CIO HALT SST A2,DWA31 SEND STATUS DATA 0 CHANNEL STATUS * * EJECT * * * L I N E 2 * DWA32 EQU DWA31+1 DEVICE ADDRESS * * CWTA32 EQU * TABLE ENTRY DATA 0 LAST OUTPUT DWT DATA 0 LAST OUTPUT CH./ NEXT OUTPUT CH. DATA INTAS3 WS TABLE ADDRESS INR A2,0,DWA32 INR OTR A2,0,DWA32 OTR CIO A1,1,DWA32 CIO START DATA 0 QUEUE CIO A1,0,DWA32 CIO HALT SST A2,DWA32 SEND STATUS DATA 0 CHANNEL STATUS * * EJECT * * * L I N E 3 * DWA33 EQU DWA31+2 DEVICE ADDRESS * * CWTA33 EQU * TABLE ENTRY DATA 0 LAST OUTPUT DWT DATA 0 LAST OUTPUT CH./ NEXT OUTPUT CH. DATA INTAS3 WS TABLE ADDRESS INR A2,0,DWA33 INR OTR A2,0,DWA33 OTR CIO A1,1,DWA33 CIO START DATA 0 QUEUE CIO A1,0,DWA33 CIO HALT SST A2,DWA33 SEND STATUS DATA 0 CHANNEL STATUS * * EJECT * * * L I N E 4 * DWA34 EQU DWA31+3 DEVICE ADDRESS * * CWTA34 EQU * TABLE ENTRY DATA 0 LAST OUTPUT DWT DATA 0 LAST OUTPUT CH./ NEXT OUTPUT CH. DATA INTAS3 WS TABLE ADDRESS INR A2,0,DWA34 INR OTR A2,0,DWA34 OTR CIO A1,1,DWA34 CIO START DATA 0 QUEUE CIO A1,0,DWA34 CIO HALT SST A2,DWA34 SEND STATUS DATA 0 CHANNEL STATUS * * XIF EJECT * **************************************** * CONTROL WORK TABLES FOR ASCU4Z 4 * **************************************** * IFF ASCHAN=1 IFF ASCHAN=2 IFF ASCHAN=3 * * L I N E 1 * DWA41 EQU /30 DEVICE ADDRESS * * CWTA41 EQU * TABLE ENTRY DATA 0 LAST OUTPUT DWT DATA 0 LAST OUTPUT CH./ NEXT OUTPUT CH. DATA INTAS4 WS TABLE ADDRESS INR A2,0,DWA41 INR OTR A2,0,DWA41 OTR CIO A1,1,DWA41 CIO START DATA 0 QUEUE CIO A1,0,DWA41 CIO HALT SST A2,DWA41 SEND STATUS DATA 0 CHANNEL STATUS * * EJECT * * * L I N E 2 * DWA42 EQU DWA41+1 DEVICE ADDRESS * * CWTA42 EQU * TABLE ENTRY DATA 0 LAST OUTPUT DWT DATA 0 LAST OUTPUT CH./ NEXT OUTPUT CH. DATA INTAS4 WS TABLE ADDRESS INR A2,0,DWA42 INR OTR A2,0,DWA42 OTR CIO A1,1,DWA42 CIO START DATA 0 QUEUE CIO A1,0,DWA42 CIO HALT SST A2,DWA42 SEND STATUS DATA 0 CHANNEL STATUS * * EJECT * * * L I N E 3 * DWA43 EQU DWA41+2 DEVICE ADDRESS * * CWTA43 EQU * TABLE ENTRY DATA 0 LAST OUTPUT DWT DATA 0 LAST OUTPUT CH./ NEXT OUTPUT CH. DATA INTAS4 WS TABLE ADDRESS INR A2,0,DWA43 INR OTR A2,0,DWA43 OTR CIO A1,1,DWA43 CIO START DATA 0 QUEUE CIO A1,0,DWA43 CIO HALT SST A2,DWA43 SEND STATUS DATA 0 CHANNEL STATUS * * EJECT * * * L I N E 4 * DWA44 EQU DWA41+3 DEVICE ADDRESS * * CWTA44 EQU * TABLE ENTRY DATA 0 LAST OUTPUT DWT DATA 0 LAST OUTPUT CH./ NEXT OUTPUT CH. DATA INTAS4 WS TABLE ADDRESS INR A2,0,DWA44 INR OTR A2,0,DWA44 OTR CIO A1,1,DWA44 CIO START DATA 0 QUEUE CIO A1,0,DWA44 CIO HALT SST A2,DWA44 SEND STATUS DATA 0 CHANNEL STATUS * * XIF EJECT * **************************************** * CONTROL WORK TABLES FOR ASCU4Z 5 * **************************************** * IFF ASCHAN=1 IFF ASCHAN=2 IFF ASCHAN=3 IFF ASCHAN=4 * * L I N E 1 * DWA51 EQU /0C DEVICE ADDRESS =5 * * CWTA51 EQU * TABLE ENTRY DATA 0 LAST OUTPUT DWT DATA 0 LAST OUTPUT CH./ NEXT OUTPUT CH. DATA INTAS5 WS TABLE ADDRESS INR A2,0,DWA51 INR OTR A2,0,DWA51 OTR CIO A1,1,DWA51 CIO START DATA 0 QUEUE CIO A1,0,DWA51 CIO HALT SST A2,DWA51 SEND STATUS DATA 0 CHANNEL STATUS * * EJECT * * * L I N E 2 * DWA52 EQU DWA51+1 DEVICE ADDRESS * * CWTA52 EQU * TABLE ENTRY DATA 0 LAST OUTPUT DWT DATA 0 LAST OUTPUT CH./ NEXT OUTPUT CH. DATA INTAS5 WS TABLE ADDRESS INR A2,0,DWA52 INR OTR A2,0,DWA52 OTR CIO A1,1,DWA52 CIO START DATA 0 QUEUE CIO A1,0,DWA52 CIO HALT SST A2,DWA52 SEND STATUS DATA 0 CHANNEL STATUS * * EJECT * * * L I N E 3 * DWA53 EQU DWA51+2 DEVICE ADDRESS * * CWTA53 EQU * TABLE ENTRY DATA 0 LAST OUTPUT DWT DATA 0 LAST OUTPUT CH./ NEXT OUTPUT CH. DATA INTAS5 WS TABLE ADDRESS INR A2,0,DWA53 INR OTR A2,0,DWA53 OTR CIO A1,1,DWA53 CIO START DATA 0 QUEUE CIO A1,0,DWA53 CIO HALT SST A2,DWA53 SEND STATUS DATA 0 CHANNEL STATUS * * EJECT * * * L I N E 4 * DWA54 EQU DWA51+3 DEVICE ADDRESS * * CWTA54 EQU * TABLE ENTRY DATA 0 LAST OUTPUT DWT DATA 0 LAST OUTPUT CH./ NEXT OUTPUT CH. DATA INTAS5 WS TABLE ADDRESS INR A2,0,DWA54 INR OTR A2,0,DWA54 OTR CIO A1,1,DWA54 CIO START DATA 0 QUEUE CIO A1,0,DWA54 CIO HALT SST A2,DWA54 SEND STATUS DATA 0 CHANNEL STATUS * * XIF EJECT * **************************************** * CONTROL WORK TABLES FOR ASCU4Z 6 * **************************************** * IFF ASCHAN=1 IFF ASCHAN=2 IFF ASCHAN=3 IFF ASCHAN=4 IFF ASCHAN=5 * * L I N E 1 * DWA61 EQU /00 DEVICE ADDRESS =5 * * CWTA61 EQU * TABLE ENTRY DATA 0 LAST OUTPUT DWT DATA 0 LAST OUTPUT CH./ NEXT OUTPUT CH. DATA INTAS6 WS TABLE ADDRESS INR A2,0,DWA61 INR OTR A2,0,DWA61 OTR CIO A1,1,DWA61 CIO START DATA 0 QUEUE CIO A1,0,DWA61 CIO HALT SST A2,DWA61 SEND STATUS DATA 0 CHANNEL STATUS * * EJECT * * * L I N E 2 * DWA62 EQU DWA61+1 DEVICE ADDRESS * * CWTA62 EQU * TABLE ENTRY DATA 0 LAST OUTPUT DWT DATA 0 LAST OUTPUT CH./ NEXT OUTPUT CH. DATA INTAS6 WS TABLE ADDRESS INR A2,0,DWA62 INR OTR A2,0,DWA62 OTR CIO A1,1,DWA62 CIO START DATA 0 QUEUE CIO A1,0,DWA62 CIO HALT SST A2,DWA62 SEND STATUS DATA 0 CHANNEL STATUS * * EJECT * * * L I N E 3 * DWA63 EQU DWA61+2 DEVICE ADDRESS * * CWTA63 EQU * TABLE ENTRY DATA 0 LAST OUTPUT DWT DATA 0 LAST OUTPUT CH./ NEXT OUTPUT CH. DATA INTAS6 WS TABLE ADDRESS INR A2,0,DWA63 INR OTR A2,0,DWA63 OTR CIO A1,1,DWA63 CIO START DATA 0 QUEUE CIO A1,0,DWA63 CIO HALT SST A2,DWA63 SEND STATUS DATA 0 CHANNEL STATUS * * EJECT * * * L I N E 4 * DWA64 EQU DWA61+3 DEVICE ADDRESS * * CWTA64 EQU * TABLE ENTRY DATA 0 LAST OUTPUT DWT DATA 0 LAST OUTPUT CH./ NEXT OUTPUT CH. DATA INTAS6 WS TABLE ADDRESS INR A2,0,DWA64 INR OTR A2,0,DWA64 OTR CIO A1,1,DWA64 CIO START DATA 0 QUEUE CIO A1,0,DWA64 CIO HALT SST A2,DWA64 SEND STATUS DATA 0 CHANNEL STATUS * * XIF EJECT * * ***************** * C H T A B * ***************** * * THIS TABLE HOLDS ADDRESSES OF CONTROL WORK * TABLES CWT TO CHANNEL UNITS. * * CHTAB EQU * DATA CHTABE-* TABLE LENGTH DATA CWTA11 DATA CWTA12 DATA CWTA13 DATA CWTA14 IFF ASCHAN=1 DATA CWTA21 DATA CWTA22 DATA CWTA23 DATA CWTA24 XIF IFF ASCHAN=1 IFF ASCHAN=2 DATA CWTA31 DATA CWTA32 DATA CWTA33 DATA CWTA34 XIF IFF ASCHAN=1 IFF ASCHAN=2 IFF ASCHAN=3 DATA CWTA41 DATA CWTA42 DATA CWTA43 DATA CWTA44 XIF IFF ASCHAN=1 IFF ASCHAN=2 IFF ASCHAN=3 IFF ASCHAN=4 DATA CWTA51 DATA CWTA52 DATA CWTA53 DATA CWTA54 XIF IFF ASCHAN=1 IFF ASCHAN=2 IFF ASCHAN=3 IFF ASCHAN=4 IFF ASCHAN=5 DATA CWTA61 DATA CWTA62 DATA CWTA63 DATA CWTA64 XIF CHTABE EQU * END OF TABLE * * EJECT * * * A S C U O N * * SUBROUTINE TO RESET CWT AND PERFORM CIO START * OF EVERY ASCU4Z INPUT CHANNEL AT SYSTEM LOAD * * ASCUON EQU * LD A4,CHTAB TABLE LENGTH LDK A3,0 AON010 SUK A4,2 ALL TREATED? ABL(Z) RTNA15 YES AON020 EQU * LD A5,CHTAB+2,A3 LOAD CWT-ADDRESS RB(Z) AON010 LDKL A1,/8000 ORS A1,CWTST,A5 SET INITIATION BIT CMR A5 RESET LAST OUTPUT =2 CM CWTLON,A5 CLEAR LOC AND NOC =2 CM CWTEQ,A5 RESET OUTPUT QUEUE =3 INH LDK A1,/4 EVEN PARITY =1 EX CWTCIS,A5 CIO START OUTPUT LDK A1,0 EX CWTCIH,A5 CIO STOP OUTPUT ENB ADK A3,2 RB AON010 EJECT * * ******************************************** * INTERRUPT ENTRY FROM ASCU4Z * ******************************************** * * * I A S C U Z * * INTERRUPT FROM ASCU4Z * IASCUZ EQU * ST P,INTSAV SAVE LAST INTERRUPT MSR 8,A15 SAVE A1-A8 ON STACK LDK A7,0 RESET ASCU4Z-COUNTER LD A3,CHTAB SUK A3,2 NUMBER OF LINES RF IAS007 * EJECT * * GET CWT-ADDRESS FOR LINE 1. EXECUTE INR. * IAS005 EQU * ADK A7,8 NEXT ASCU4Z IAS007 EQU * CWR A7,A3 RF(NL) EXITL NOT VALID INTERRUPT LD A5,CHTAB+2,A7 GET CWT-ADDRESS FOR LINE 1 EX CWTINR,A5 INR RF(NA) IAS080 * * CORRECT CWT-ADDRESS WITH RESPECT TO LINE NUMBER * IAS010 EQU * LDR A5,A2 INPUT WORD SRL A5,7 ANK A5,/6 LINE NUMBER * 2 LDR A3,A5 ADR A7,A5 LD A5,CHTAB+2,A7 CORRECT CWT-ADDRESS * * CHECK IF EXPECTED COMMAND IS INPUT * IAS015 EQU * ECR A1,A2 ANK A1,/30 SUK A1,/30 EXPECTED COMMAND RF(NZ) IAS040 NOT INPUT * EJECT * * GET DWT-ADDRESS * IAS020 EQU * LDK A4,0 DEV NR * 2 CF A15,GETADR GET ADDRESS POINTER AND * NUMBER OF DEVICES LDR A4,A6 DEVICE COUNTER LDR A8,A8 ADDRESS POINTER RF(Z) IAS032 NOT DEFINED IAS025 EQU * LDR* A6,A8 GET DWT-ADDRESS RF(Z) IAS030 NOT DEFINED LD A1,DWTST,A6 DEVICE STATUS ANK A1,/40 INPUT DEVICE? RF(NZ) IAS035 YES IAS030 EQU * ADKL A8,2 NEXT DWT SUK A4,2 LAST DWT? RB(P) IAS025 NO IAS032 EQU * LDR A1,A3 LINE NR * 2 ANK A1,2 HIGH LINE NR ? RF(NZ) EXITL YES, SKIP INTERRUPT ADK A3,2 INCREMENT LINE NR RB IAS020 * EXITL EQU * IFT LOGING=1 CF A15,INFLG1 GET LINE INFORMATION CF A15,LOGG **LOGG INPUT** XIF EXIT EQU * ABL TDISP * EJECT * * RETURN TO DEVICE DRIVER * IAS035 EQU * LDK A1,0 RESET RETURN CODE * IFT LOGING=1 CF A15,INFLG2 GET LINE INFORMATION CF A15,LOGG **LOGG INPUT CHARACTER** XIF * IAS038 EQU * ANK A2,/FF CLEAN CHARACTER LD A7,DWTST,A6 DEVICE STATUS ANK A7,/20 INPUT REQUESTED? RF(Z) IAS039 NO LDKL A7,/FFDF ANS A7,DWTST,A6 RESET FLAG 'INPUT REQUESTED' ABL NDREP RETURN TO DEVICE DRIVER * EJECT * * GO TO INTERRUPT ROUTINE OF DEVICE DRIVER * IAS039 EQU * LD A1,DWTADR,A6 ADDRESS BLOCK LD A1,INTADR,A1 INTERRUPT ENTRY DEFINED? RB(Z) EXIT NO, SKIP CHARACTER LDR A5,A6 DWT ADDRESS ADKL A5,DWTSB2 STACK BASE ABR A1 DEVICE DRIVER INTERRUPT ENTRY * EJECT * * CHECK IF ANY CHARACTER TO SEND * IAS040 EQU * LDR* A6,A5 LAST OUTPUT DWT LC A2,CWTLON+1,A5 ANK A2,/FF LD A7,DWTCP2,A6 CHANNEL PARAMETERS 2 ANK A7,/3F DEVICE ADDRESS SUK A7,DI OUTPUT TO KEYBOARD LAMPS ? RF(Z) IAS050 YES * U =6 IAS045 EQU * LDR A2,A2 SAVED CHARACTER RF(Z) IAS060 NO CHARACTER SAVED * EJECT * * OUTPUT SAVED CHARACTER AND RETURN TO DEVICE DRIVER * IAS050 EQU * ANK A2,/7F CLEAN CHARACTER =5 EX CWTOTR,A5 OTR RB(NA) EXIT * IFT LOGING=1 CF A15,INFLG2 GET LINE INFORMATION CF A15,LOGG **LOGG OF OUTPUT CHARACTER** XIF * LDR A7,A7 OUTPUT TO KEYBOARD LAMPS? RF(Z) IAS055 YES * SC A2,DWTOCH,A6 STORE OUTPUT CHARACTER IN DWT SLL A2,8 ST A2,CWTLON,A5 UPDATE LOC AND NOC IAS052 EQU * ABL NDREPO RETURN TO DEV. DRIVER * WITH RET. CODE = OK EJECT * * OUTPUT TO KEYBOARD LAMPS * IAS055 EQU * LC A4,CWTLON,A5 ANK A4,/FF LAST OUTPUT CHARACTER = 0? RF(NE) IAS060 NO, CODE /1C SENT * LC A4,DWTOCH,A6 DATA TO KEYBOARD SC A4,CWTLON+1,A5 STORE FOR NEXT OTR SC A2,CWTLON,A5 STORE CODE /1C IN LOC RB EXIT * * HALT OUTPUT IF NO CHARACTER TO SEND * IAS060 EQU * LDK A1,0 EX CWTCIH,A5 CIO HALT OUTPUT =5 CM CWTLON,A5 CLEAR LOC AND NOC =5 LDR A7,A7 OUTPUT TO KEYBOARD LAMPS ? RB(Z) IAS052 YES, RETURN TO DEVICE DRIVER * U =6 RB EXIT GO TO DISPATCHER * EJECT * * CHECK STATUS * IAS080 EQU * EX CWTSST,A5 SEND STATUS ABL(NA) IAS005 * * CORRECT CWT-ADDRESS WITH RESPECT TO LINE NUMBER * IAS085 EQU * LDR A5,A2 INPUT WORD SRL A5,7 ANK A5,/6 LINE NUMBER * 2 LDR A3,A5 ADR A7,A5 LD A5,CHTAB+2,A7 CORRECT CWT-ADDRESS * IFT LOGING=1 CF A15,INFLG1 GET LINE INFORMATION CF A15,LOGG **LOGG STATUS** XIF * LD A1,CWTST,A5 CHANNEL STATUS RF(N) IAS130 INITIATION ON CHANNEL * LDR* A6,A5 LAST OUTPUT DWT RF(NZ) IAS087 * =2 ANK A2,2 THROUGPUT ERROR? =2 RB(Z) EXIT NO =2 LDK A1,/5 EVEN PARITY =2 EX CWTCIS,A5 CIO START INPUT =2 RB EXIT * =2 IAS087 EQU * * =2 CMR A5 SET LINE FREE * EJECT * * CHECK IF CHARACTER SAVED * IAS090 EQU * LC A2,CWTLON+1,A5 ANK A2,/FF SAVED CHARACTER? RF(NZ) IAS105 YES * * CHECK IF QUEUE EMPTY * IAS100 EQU * LD A6,CWTEQ,A5 OUTPUT QUEUE RF(Z) IAS110 QUEUE EMPTY LD A2,DWTOTQ,A6 GET QUEUE LINK ST A2,CWTEQ,A5 STORE IT IN CWT LC A2,DWTOCH,A6 GET CHARACTER * * SEND CHARACTER AND GO TO DISPATCHER * IAS105 EQU * CF A15,OUTASC SEND CHARACTER IAS110 EQU * RB EXIT GO TO DISPATCHER EJECT * * RECOVERY ROUTINES ARE STARTED FOR EVERY DEVICE * ON ACTUAL LINE EXCEPT THOSE IN ECHO MODE * * IAS130 EQU * LDKL A1,/3FFF RESET BIT 'INPUT ON THIS LINE' =2 ANS A1,CWTST,A5 RESET INITIATION BIT LDK A4,0 CF A15,GETADR LDR A4,A7 CHTAB DISPLACEMENT LDR A3,A6 DEVICE COUNTER LDR A7,A8 ADDRESS POINTER RB(Z) IAS100 EXIT IF NOT DEFINED IAS140 EQU * LDR* A6,A7 GET DWT-ADDRESS RF(E) IAS160 NO DWT SRC A6,1 RF(N) IAS160 SLC A6,1 LD A1,DWTST,A6 DEVICE STATUS ANK A1,/40 INPUT DEVICE ? RF(Z) IAS148 NO EJECT * * INPUT DEVICE. START INPUT. SET MARKBIT FOR INPUT ON THIS LINE. * IAS143 EQU * LDR A1,A4 CHTAB DISPLACEMENT ANK A1,2 RF(Z) IAS145 LOW LINE NUMBER SUK A4,2 ADJUST TO LOW LINE NUMBER IAS145 EQU * LD A5,CHTAB+2,A4 GET CWT-ADDRESS LD A1,CWTST,A5 CHANNEL STATUS SLL A1,1 RF(N) IAS150 INPUT ON THIS LINE ALREADY SET LDKL A1,/4000 ORS A1,CWTST,A5 SET BIT 'INPUT ON THIS LINE' LDK A1,/5 EVEN PARITY =1 EX CWTCIS,A5 CIO START INPUT LD A1,DWTCP2,A6 CHANNEL PARAMETERS 2 ANK A1,/3F DEVICE ADDRESS SUK A1,KB KEYBOARD ? RF(Z) IAS150 YES EJECT * * * OUTPUT DEVICE. CHECK IF ECHO MODE. * IAS148 EQU * =5 LC A1,DWTST,A6 ANK A1,/20 ECHO MODE ? RF(NE) IAS160 YES * * GO TO RECOVERY ROUTINE * IAS150 EQU * LDK A4,1 RECOVERY CAUSE CF A15,NDREDW CALL RECOVERY ROUTINE IAS160 EQU * ADK A7,2 SUK A3,2 ALL DEVICES TREATED? RB(NE) IAS140 NO TAKE NEXT RB IAS100 CHECK QUEUE AND GO TO DISPATCHER EJECT * * O U T A S C * * SUBROUTINE TO SEND A CHARACTER VIA ASCU4Z * ON ENTRY: * * A2 = OUTPUT CHARACTER IN RIGHT BYTE * A6 = DWT ADDRESS * OUTASC EQU * ANK A2,/FF CF A15,GETCWT GET CWT-ADDRESS * * CHECK IF LINE FREE OR OCCUPIED WITH SAME DEVICE * OUA010 EQU * INH =5 LD A1,CWTST,A5 CHANNEL STATUS RF(N) OUA020 INITIATION ON CHANNEL * LDR* A4,A5 LINE FREE? RF(Z) OUA030 YES * CWR A4,A6 SAME DEVICE? RF(E) OUA045 YES * OUA020 EQU * CF A15,QUEUE SC A2,DWTOCH,A6 STORE OUTPUT CHARACTER IN DWT RF OUA050 * EJECT * * START OUTPUT ON LINE * OUA030 EQU * LD A1,PFPOST PWF POST PROCESSING FLAG =3 RF(NZ) OUA035 PFINIT PENDING =3 =5 LDK A1,/4 EVEN PARITY =1 EX CWTCIS,A5 CIO START OUTPUT OUA035 EQU * STR A6,A5 STORE LAST DWT IN CWT * * SAVE CHARACTER FOR OUTPUT * OUA040 EQU * LD A1,DWTCP2,A6 CHANNEL PARAMETERS 2 ANK A1,/3F DEVICE ADDRESS SUK A1,DI OUTPUT TO KEYBOARD LAMPS ? RF(NZ) OUA045 NO * SC A2,DWTOCH,A6 STORE DATA FOR KEYBOARD IN DWT LDK A2,/1C CODE FOR DATA TO KEYBOARD * OUA045 EQU * ORK A2,/80 INDICATE SOMETHING FOR OUTPUT =5 SC A2,CWTLON+1,A5 OUA050 EQU * * =4 INH * =4 ADKL A15,2 ADJUST STACK POINTER =4 LDR* P,A15 RETURN =4 EJECT * * G E T C W T * * SUBROUTINE TO GET CWT-ADDRESS TO CURRENT OUTPUT LINE * * ON ENTRY: * * A6 = DWT-ADDRESS * * ON EXIT: * * A5 = CWT-ADDRESS * A1,A4 ARE DESTROYED * GETCWT EQU * LDR* A1,A6 CHANNEL PARAMETERS 1 ANK A1,/7 CHANNEL UNIT INDEX SLL A1,2 LC A5,DWTCP2,A6 LEFT BYTE OF CH. PAR. 2 ANK A5,/3 WS-ADDRESS ORR A1,A5 COMBINE CH.UN. INDEX AND WS-ADDR SLL A1,1 MAKE INDEX FOR CHTAB LD A5,CHTAB+2,A1 GET CWT-ADDRESS LDR A4,A1 LINE NUMBER * 2 ANK A4,2 RF(NZ) GTC010 HIGH LINE NUMBER LD A4,CWTST,A5 CHANNEL STATUS SLL A4,1 RF(NN) GTC010 NO INPUT ON THIS LINE LD A5,CHTAB+4,A1 GET CWT-ADDRESS ON HIGH LINE GTC010 EQU * RTN A15 * EJECT * * * Q U E U E * * SUBROUTINE TO QUEUE AN OUTPUT DWT * * ON ENTRY: * A5 = CWT ADDRESS * A6 = DWT ADDRESS * * QUEUE EQU * LD A4,CWTEQ,A5 OUTPUT QUEUE RF(E) QUE020 QUE010 EQU * CWR A6,A4 RF(E) QUE050 THIS DWT IS ALREADY IN QUEUE LD A3,DWTOTQ,A4 RF(E) QUE030 END OF THREAD FOUND LDR A4,A3 FOLLOW THE THREAD RB QUE010 QUE020 EQU * ST A6,CWTEQ,A5 QUEUE DWT RF QUE040 QUE030 EQU * ST A6,DWTOTQ,A4 QUEUE DWT QUE040 CM DWTOTQ,A6 SET END OF THREAD QUE050 EQU * ADKL A15,2 LDR* P,A15 RETURN EJECT * * * L O G G * * IF CONDITIONALY ASSEMBLY IS SET EVERY INPUT AND * OUTPUT CHARACTER ARE LOGGED * * * IFT LOGING=1 * LOGG STR A1,A15 LD A1,POINT ADK A1,2 CWK A1,BUFE BUFE IS MAX LOGG AREA RF(NE) L1 LDKL A1,BUF SET FIRST LOGG ADDRESS L1 ST A1,POINT STR A2,A1 LOGG OF INR OR OTR INSTRUCTION LDR* A1,A15 ADKL A15,2 LDR* P,A15 RETURN * * POINT DATA BUF LOGG POINTER * BUF RES 250 LOGG AREA BUFE EQU * * XIF EJECT * * I N F L G 1 * * SUBROUTINE TO GET INFORMATION ABOUT CHANNEL UNIT INDEX AND * WORK STATION ADDRESS FOR USE IN LOGG. * THE INFORMATION IS ADDED TO REGISTER A2 * * CH. UNIT INDEX IS STORED IN BITS 3-5 * WORK ST. ADDR. IS STORED IN BITS 6-7 * BITS 0-2 ARE SET TO ZERO * * ON ENTRY: * * A2 = INPUT CHARACTER * A7 = LINE NR * 2 * * ON EXIT: * * A2 = INPUT WORD WITH ADDED INFORMATION * IFT LOGING=1 * INFLG1 EQU * ANK A2,/FF SLL A7,7 ORR A2,A7 COMBINE WITH CHARACTER SRL A7,7 RTN A15 * XIF EJECT * * I N F L G 2 * * SUBROUTINE TO GET INFORMATION ABOUT CHANNEL UNIT INDEX, * WORK STATION ADDRESS AND DEVICE ADDRESS FOR USE IN LOGG. * THE INFORMATION IS TAKEN FROM CHANNEL PARAMETERS AND ADDED * TO REGISTER A2. * DEVICE ADDRESS IS STORED IN BITS 0-2 * CH. UNIT INDEX IS STORED IN BITS 3-5 * WORK ST. ADDR. IS STORED IN BITS 6-7 * * ON ENTRY: * * A2 = INPUT CHARACTER * A6 =DWT ADDRESS * * ON EXIT: * * A2 = INPUT WORD WITH ADDED INFORMATION * A4 IS DESTROYED * IFT LOGING=1 INFLG2 EQU * ANK A2,/FF CLEAN LDR* A4,A6 GET CHANNEL PARAMETERS 1 ANK A4,/7 CHANNEL UNIT INDEX SRC A4,3 LC A4,DWTCP2+1,A6 RIGHT BYTE OF CH. PAR. 2 SRC A4,3 ANKL A4,/FC00 DEV.ADDR AND CH. UNIT INDEX ORR A2,A4 COMBINE WITH CHARACTER LD A4,DWTCP2,A6 CHANNEL PARAMETERS 2 ANKL A4,/300 WORK STATION ADDRESS ORR A2,A4 COMBINE WITH CHARACTER RTN A15 XIF EJECT * * G E T A D R * * SUBROUTINE TO GET ADDRESS IN INTERRUPT TABLE * FOR A GIVEN LINE- AND DEVICE NUMBER * * ON ENTRY: * * A3 = LINE NUMBER * 2 * A4 = DEVICE NUMBER * 2 * A5 = CWT-ADDRESS * * ON EXIT: * * A6 = TOTAL NUMBER OF DEVICES * 2 ON ACTUAL LINE * A8 = ADDRESS WHERE DWT-ADDRESS IS FOUND * GETADR EQU * LD* A8,CWTITA,A5 ADDRESS OF WORK STATION TABLE RF(Z) GET010 NOT DEFINED CW A3,-2,A8 WITHIN TABLE ? RF(L) GET005 YES LDKL A8,0 INDICATE NOT DEFINED RF GET010 GET005 EQU * ADR A8,A3 POSITION IN TABLE LDR* A8,A8 POINTER TO DEVICE TABLE RF(Z) GET010 NOT DEFINED LD A6,-2,A8 GET TABLE LENGTH ADR A8,A4 ADDRESS TO DWT-ADDRESS GET010 EQU * * * * RETURN AND ENABLE * RTNA15 EQU * ADKL A15,2 ENB LDR* P,A15 * EJECT * * CHARACTER INPUT * ASCHRI EQU * LDK A2,/20 ORS A2,DWTST,A6 SET INPUT REQUESTED IN DWT CF A15,NDSAV8 SAVE A3-A5, A7-A8 IN DWT RF ASDISP LOCAL DISPATCHER * * START OF A BLOCK * ASSTBL EQU * * * END OF A BLOCK * ASENBL EQU * ABL NDRETO RETURN TO DEVICE DRIVER * * CHARACTER OUTPUT * ASCHRO EQU * CF A15,NDSAV8 SAVE A3-A5, A7-A8 IN DWT CF A15,OUTASC SEND CHARACTER * * LOCAL DISPATCHER * ASDISP EQU * ABL TDISP GO TO DISPATCHER END