Action unknown: copypageplugin__copy
plato:source:plaopl:pio
Table of Contents
PIO
Table Of Contents
- [00005] -PIO- PLATO CIU INPUT/OUTPUT
- [00006] COMMENTS
- [00047] DEFINITIONS
- [00169] MAIN LOOP
- [00572] SPECIAL LOOP INPUT OR OUTPUT OFF
- [00636] -KEYIN- READ NEXT KEY TO KEY BUFFER
- [00710] -KEYOUT- OUTPUT NEXT KEY
- [01181] -PAUSE- CHECK FOR STORAGE MOVE OR ERROR
- [01183] PAUSE - PAUSE FOR STORAGE RELOCATION
- [01273] PSM - PAUSE FOR STORAGE MOVE
- [01288] -READECS- ECS TO PPU TRANSFER VIA DDP
- [01415] -WRITECS- PPU TO ECS TRANSFER VIA DDP
- [01553] -DDPMCP- MASTER CLEAR DDP PORT
- [01577] -STATS- OUTPUT STATISTICS
- [01606] -OUTNET- OUTPUT TERMINAL WORD
- [01641] -MESSAG- OUTPUT B-DISPLAY MESSAGE
- [01663] -OTOA- CONVERT OCTAL TO ALPHA
- [01701] -CEQUIP- CLEAR EQUIPMENT
- [01744] -ALLOUT- SEND MESSAGE TO ALL TERMINALS
- [01856] OFFMSG *PLATO OFF* MESSAGE
- [01937] -DROP- DROP PPU
- [01978] STORAGE DEFINITIONS
- [02117] -INITIAL- INITIALIZATIONS
- [02465] GEC - GET ECS MODE
Source Code
- PIO.txt
- PIO
- * /--- FILE TYPE = E
- * /--- BLOCK IDENT 00 000 81/09/09 03.09
- IDENT PIO,PIO
- TITLE -PIO- PLATO CIU INPUT/OUTPUT
- TITLE COMMENTS
- COMMENT PLATO CIU INPUT/OUTPUT
- *
- *
- PERIPH
- SST
- *
- LIST F LIST CONDITIONAL CODE ALSO
- *
- * /--- BLOCK COMMENTS 00 000 81/04/28 14.22
- ************************************************************
- *
- *
- *
- * 10 ARGUMENTS ARE PASSED TO THIS PROGRAM -
- *
- *
- * 1. ECS ADDRESS OF KEY REQUEST SWITCH/LIST
- *
- * 2. NUMBER OF SITES RECOGNIZED
- *
- * 3. RELATIVE ECS ADDRESS OF STATION KEY BUFFERS
- *
- * 4. RELATIVE ECS ADDRESS OF FRAME COUNTER
- *
- * 5. RELATIVE ECS ADDRESS OF FRAME LENGTH TABLE
- *
- * 6. RELATIVE ECS ADDRESS OF FRAME BUFFERS
- *
- * 7. CM ADDRESS OF STATISTICS BUFFER
- *
- * 8. UNUSED
- *
- * 9. MAXIMUM FRAME LENGTH
- *
- * 10. PHYSICAL-LOGICAL SITE MAPPING INFO
- *
- *
- *
- ************************************************************
- * /--- BLOCK DEFINITION 00 000 82/10/26 13.31
- TITLE DEFINITIONS
- *
- *
- *
- *
- * DETERMINE OPERATING SYSTEM LEVEL THIS DECK
- * SHOULD BE ASSEMBLED FOR. ASSEMBLE FOR THE OS
- * NUMBER SPECIFIED IN THE ',ML', PARAMETER OF THE
- * -COMPASS- OR -CSTC- CARD. DEFAULT VALUE IS 518D.
- *
- *CALL COMPMAC
- *CALL COMSCPS
- *CALL COMSSSD
- *CALL PLAP501
- *CALL PTEXT
- *CALL SYSCON
- *CALL PLASMPC
- *CALL AIDTEXT
- *
- *
- ************************************************************
- *
- * THE FOLLOWING PARAMETERS MUST CORRESPOND TO THE
- * EQUIVALENT DEFINITIONS IN PLATO
- *
- * FMASK - FRAMSHF/FRAMSIZ
- * KEYBSHF - NKEYSHF
- * NPARAMS - LOADPIO
- * STATLTH - PIOSTAT
- * SCIMLTH - NPIOSC
- * BADLTH - PIOSTAT
- * FORINIP - FORINIP
- *
- FMASK EQU 177B MASK FOR FRAME INDEX
- KEYBSHF EQU 1 SHIFT FOR KEY BUFFER DIMENSION
- NPARAMS EQU 10 NUMBER OF ARGUMENTS
- STATLTH EQU 4 NUMBER OF CM STATISTICS WORDS
- SCIMLTH EQU 2 NUMBER CM WRDS IN PIO/SCIM BUFF
- BADLTH EQU 10 LENGTH OF BAD STATION LIST
- XBADLTH EQU 9 LENGTH OF LIST PASSED FROM SCIM
- FORINIP EQU 2 FRAMAT INITIALIZATION FLAG
- *
- *
- ************************************************************
- *
- *
- OFLIMIT EQU 4 NUMBER OF STATION KEY BUFFER
- * OVERFLOWS ALLOWED BEFORE
- * BLOCKING STATION
- PPBLTH EQU 10 SIZE OF OUTPUT BUFFER
- KEYLTH EQU 360 SIZE OF KEY INPUT BUFFER
- * NTERMS = NUMBER OF REAL STATIONS (IPTEXT)
- *
- *
- ************************************************************
- * /--- BLOCK DEFINITION 00 000 84/11/16 10.35
- *
- *
- * LOW CORE DEFINITIONS
- *
- *
- D.T0 EQU 20B DIRECT CELL WORK VARIABLES
- D.T1 EQU 21B
- D.T2 EQU 22B
- D.T3 EQU 23B
- D.T4 EQU 24B
- *
- IOUT EQU 25B
- NOUT EQU 26B
- STATION EQU 27B
- KEY EQU 30B
- KEYII EQU 31B
- KEYOI EQU 32B
- A170 EQU 33B (0 = 700 MACHINE, 1 = 800)
- *
- NS EQU 44B NUMBER OF SITES FOR THIS CIU
- CB EQU 45B CIU BIAS TO GET PLATO STATION
- FS EQU 46B FIRST LEGAL STATION
- D.RSAV EQU 66B - 67B SAVE AREA FOR R-REGISTER
- *
- ************************************************************
- *
- *
- * ALL-STATIONS MESSAGE OUTPUT DEFINITIONS
- *
- *
- BASE EQU D.T0
- LENGTH EQU D.T1
- ILOOP EQU D.T2
- ADDRESS EQU D.T3
- NN EQU 4
- NCLASSES SET 1
- DUP NN,1
- NCLASSES SET NCLASSES*2
- *
- *
- ************************************************************
- *
- *
- *
- * -KEYSIN-
- * MACRO TO ACCEPT ALL PENDING KEYS FROM CIU
- *
- PURGMAC KEYSIN
- KEYSIN MACRO
- LOCAL A,B
- EJM B,I=NIU
- A CALL KEYIN
- FJM A,I=NIU
- B BSS 0
- ENDM
- *
- *
- * /--- BLOCK MAIN LOOP 00 000 81/04/30 15.04
- TITLE MAIN LOOP
- *
- *
- *
- ORG PPFW
- PIO CALL INITIAL INITIALIZATIONS
- *
- * * * SELECT THE CIU OUTPUT
- * * * THIS IS ONLY NEEDED ONCE INITIALLY, AND
- * * * AFTER THE CIU HAS BEEN DE-SELECTED WITH A
- * * * 7XXX FUNCTION.
- * * *
- * * * IF THE CIU OUTPUT IS NOT SELECTED, THE
- * * * FRAME COUNTER DOES NOT GET WRITTEN BACK,
- * * * CAUSING THE FRAMER AND THE PPU TO GET OUT
- * * * OF STEP FOR A WHILE. (SYMPTOM--15 SECONDS
- * * * OF REPEATED OUTPUT.)
- *
- LDM CIUEQ CHECK IF CIU AVAILABLE
- ZJP MAIN JUMP IF NOT
- IJM M50,O=NIU
- DCN O=NIU DEACTIVATE NIU OUTPUT CHANNEL
- M50 FNC 0,O=NIU SELECT OUTPUT CONTROLLER
- WAIT INACTIVE,O=NIU,M120
- *
- *
- * WAIT TILL NIU IS READY FOR NEXT FRAME
- *
- MAIN CALL PAUSE CHECK FOR PAUSE OR ERROR
- LDM PINIT
- NJP M102 CHECK INITIALIZATIONS COMPLETE
- LOADCM PSTATS
- CRD D.T0 READ PPU STATUS WORD
- LDD D.T0+4
- LPN 2 MASK OFF INITIALIZATION BIT
- ZJP M102
- LDN 1 MARK INITIALIZATIONS COMPLETE
- STM PINIT
- DELAY 5000
- CALL ALLOUT,ONMSG PRESS NEXT TO BEGIN
- DELAY 5000
- *
- * CHECK IF FRAMAT INITIALIZING
- *
- M102 SOM FICNT CHECK IF SHOULD READ ECS FLAG
- NJP M104
- LDN 5 RE-SET COUNTER
- STM FICNT
- *
- M1020 LDC ECSBUFF
- STD D.T0 D.T0 = PPU MEMORY ADDRESS
- LDM ECRA+1 COMPUTE ECS ADR OF INITIAL FLAG
- ADC FORINIP
- STD D.T2 D.T2 = LOWER PART OF ECS ADDR
- SHN -12
- ADM ECRA
- STD D.T1 D.T1 = UPPER PART OF ECS ADDR
- LDN 5
- STD D.T3 D.T3 = NUMBER PPU WORDS TO READ
- CALL READECS READ FRAMAT INITIAL FLAG
- LDM ECSBUFF
- LPC 4000B MASK OFF INITIALIZATION BIT
- ZJP M104
- CALL MESSAG,(=16CPIO WAIT FRAMAT)
- CALL PAUSE CHECK FOR STORAGE MOVE / ERROR
- DELAY 5000 IDLE FOR A WHILE
- CALL MESSAG,=0
- UJP M1020 WAIT FOR INITIALIZATIONS
- *
- * /--- BLOCK MAIN LOOP 00 000 84/11/15 10.49
- *
- M104 CALL STATS PROCESS STATISTICS
- LDM CIUEQ CHECK IF CIU AVAILABLE
- ZJP SPEC EXIT IF NOT
- *
- * ACCEPT PENDING KEYS FROM CIU AND PASS TO PLATO
- *
- LDM NFRAME+4 CHECK FRAME COUNT - RE-SELECT
- LPC 77B CIU INPUT EVERY 64 FRAMES
- NJP M107
- KEYSIN INPUT KEY(S) FROM CIU
- IJM M105,I=NIU CHECK IF CHANNEL INACTIVE
- DCN I=NIU DE-ACTIVATE INPUT CHANNEL
- WAIT INACTIVE,I=NIU,M124
- *
- M105 FNC 40B,I=NIU SELECT INPUT CONTROLLER
- WAIT INACTIVE,I=NIU,M124
- ACN I=NIU ACTIVATE NIU INPUT CHANNEL
- WAIT ACTIVE,I=NIU,M124
- *
- M107 LDN 10 PROCESS MAX OF 10 KEYS
- STM KOCNT
- *
- M108 KEYSIN ACCEPT PENDING KEYS FROM CIU
- LDD KEYII LOAD KEY BUFFER INPUT POINTER
- ZJP M110
- CALL KEYOUT OUTPUT NEXT KEY TO PLATO
- SOM KOCNT
- PJP M108
- *
- * /--- BLOCK MAIN LOOP 00 000 84/11/15 10.44
- *
- * ATTEMPT TO SELECT CIU AND OUTPUT NO-OP
- *
- M110 IJM M112,O=NIU
- DCN O=NIU DEACTIVATE NIU OUTPUT CHANNEL
- ****
- * A -FNC 0,O=NIU- STATEMENT HAS BEEN REMOVED HERE,
- * AS IT CAUSED THE NIU TO OVER-WRITE THE DATA
- * IN ITS HOLD BUFFER, CAUSING PREVIOUS DATA TO BE
- * OVER-WRITTEN FOR STATION 0.
- *
- * IT IS THOUGHT THAT THE BIT PATTERN THAT WAS USED
- * FOR NOOP0 FROM 80/1/25 UNTIL THE 81/3/8 (5767B)
- * WAS GENERATING SOME OVER-WRITES OF THE NIU BUFFER
- * FOR STATION 0-3 ON CDC SYSTEMS, DUE TO REGISTERS
- * CHANGING AT THE SAME TIME THEY WERE BEING COPIED
- * IN THE NIU (SEE NOTES BY J. STIFLE, 'SEPT. 1980).
- *
- * IT IS HOPED THAT REMOVING THE CAUSE OF THE OVER-
- * WRITES WILL ALLOW THOSE STATIONS TO FUNCTION
- * AGAIN.
- * BOB RADER 3/8/81
- ****
- *
- * M111 FNC 0,O=NIU SELECT OUTPUT CONTROLLER
- * IJM M112,O=NIU
- * DELAY 10
- * IJM M112,O=NIU
- * DCN O=NIU DISCONNECT IF NIU NOT READY
- * UJP MAIN
- *
- M112 ACN O=NIU ACTIVATE NIU OUTPUT CHANNEL
- LDN 1 SEND FIRST WORD OF A NO-OP TO
- OAM NOOP0,O=NIU STATION 0
- EJM M114,O=NIU JUMP IF CIU READY FOR FRAME
- DELAY 15
- EJM M114,O=NIU
- IJM MAIN,O=NIU
- DCN O=NIU DISCONNECT IF NOT READY
- UJP MAIN
- *
- M114 LDN 2 SEND REMAINING WORDS OF NO-OP
- OAM NOOP0+1,O=NIU
- EJM M200,O=NIU JUMP IF NIU READY FOR FRAME
- DELAY 5
- EJM M200,O=NIU
- DELAY 15
- EJM M200,O=NIU
- UJP M120 ERROR IF NOT READY
- *
- *
- M120 IJM M121,O=NIU
- DCN O=NIU DISCONNECT IF NIU NOT READY
- *
- M121 CALL MESSAG,(=27CPIO NO RESPONSE CIU OUTPUT)
- AOM OUTRESP
- UJP MAIN
- *
- M124 IJM M125,I=NIU
- DCN I=NIU DISCONNECT IF NIU NOT READY
- *
- M125 CALL MESSAG,(=26CPIO NO RESPONSE CIU INPUT)
- AOM KYRESP
- UJP MAIN
- *
- * /--- BLOCK MAIN LOOP 00 000 84/11/15 10.53
- *
- * PROCESS FLOODING STATIONS LISTS AND READ LIST
- * OF STATIONS IN MAINTENANCE MODE
- *
- *
- *
- M200 SOM BADCNT CHECK IF SHOULD CLEAR BAD
- PJP M205 STATION LIST
- LDC 900
- STM BADCNT RE-SET COUNTER
- *
- *
- LDC SCIMLTH*5
- STD D.T3 D.T3 = N OF PPU WRDS TO READ
- LDC SCIMBUF
- STD D.T0 D.T0 = PPU MEMORY ADDRESS
- LDM ECRA+1 LOAD LOWER PART OF ECS RA
- ADM SCIMADD+1 ADD LOWER PART OF ECS REL ADDR
- STD D.T2 D.T2 = LOWER ECS ADDRESS
- SHN -12
- ADM ECRA ADD UPPER PART OF ECS RA
- ADM SCIMADD ADD UPPER PART OF ECS REL ADDR
- STD D.T1 D.T1 = UPPER ECS ADDRESS
- CALL READECS READ SCIM COMMUNICATION BUFFER
- *
- LDN 0
- STM ITEST ZERO N ENTRIES IN TEST LIST
- LDN BADLTH*2 LOAD LENGTH OF TEST/COUNT LISTS
- STD D.T0
- *
- M201 SOD D.T0 DECREMENT INDEX
- MJP M202 JUMP WHEN END OF LIST REACHED
- LDN 0
- STM TESTLST,D.T0 ZERO NEXT ENTRY IN TEST LIST
- STM CNTLST,D.T0 ZERO NEXT ENTRY IN COUNT LST
- UJP M201
- *
- *
- M202 LDN 0
- STM IBAD CLEAR LENGTH OF LIST
- LDC BADLTH
- STD D.T0 INITIALIZE INDEX
- *
- M203 SOD D.T0 DECREMENT INDEX
- MJP M205
- LDN 0 CLEAR NEXT ENTRY IN BAD LIST
- STM BADLIST,D.T0
- UJP M203
- *
- * /--- BLOCK MAIN LOOP 00 000 84/11/15 10.49
- *
- * INCREMENT FRAME COUNTER AND WRITE TO ECS
- *
- M205 LDM FBIAS
- STM IBIAS INITIALIZE BIAS TO THIS FRAME
- LDM FBIAS+1
- STM IBIAS+1
- LDM NFRAME+4 LOAD FRAME COUNTER
- LPC FMASK MASK OFF INDEX IN FRAME BUFFER
- STM IFRAME
- NJP M210 CHECK IF MUST RE-SET BIAS
- LDN 0
- STM IBIAS RE-SET BIAS TO NEXT FRAME
- STM IBIAS+1
- STM FBIAS
- LDM FRAMLTH
- STM FBIAS+1
- UJP M215
- *
- M210 LDM FRAMLTH ADVANCE POINTER TO NEXT FRAME
- RAM FBIAS+1
- SHN -12
- RAM FBIAS
- *
- M215 LDN 4
- STD D.T0 INITIALIZE BYTE INDEX
- *
- M220 AOM NFRAME,D.T0 INCREMENT NEXT BYTE
- SHN -12
- ZJP M225 CHECK FOR OVERFLOW TO NEXT BYTE
- SOD D.T0
- PJP M220 END TEST
- *
- M225 LDC NFRAME
- STD D.T0 D.T0 = PPU MEMORY ADDRESS
- LDM ECRA+1 COMPUTE ECS ADDR OF FRAME COUNT
- ADM OUTPNT+1
- STD D.T2 D.T2 = LOWER PART OF ECS ADDR
- SHN -12
- ADM ECRA
- ADM OUTPNT
- STD D.T1 D.T1 = UPPER PART OF ECS ADDR
- LDN 5
- STD D.T3 D.T3 = NUMBER WORDS TO WRITE
- CALL WRITECS UPDATE FRAME COUNTER IN ECS
- *
- * /--- BLOCK MAIN LOOP 00 000 81/04/21 20.41
- *
- * READ LENGTH OF CURRENT FRAME FROM ECS LENGTH TABLE
- *
- KEYSIN ACCEPT ANY KEYS FROM CIU
- LDC ECSBUFF
- STD D.T0 D.T0 = PPU MEMORY ADDRESS
- LDM IFRAME LOAD INDEX TO CURRENT FRAME
- ADM ECRA+1 FORM LOWER PART OF ECS ADDRESS
- ADM OUTTAB+1
- STD D.T2 D.T2 = LOWER PART OF ECS ADDR
- SHN -12
- ADM ECRA FORM UPPER PART OF ECS ADDRESS
- ADM OUTTAB
- STD D.T1 D.T1 = UPPER PART OF ECS ADDR
- LDN 5
- STD D.T3 D.T3 = NUMBER OF WORDS TO READ
- CALL READECS READ FROM FRAME LENGTH TABLE
- NJP M272 EXIT IF ECS PARITY ERROR
- LDM ECSBUFF+4
- STD NOUT SET LENGTH OF CURRENT FRAME
- LDC -1 INITIALIZE LAST BUFFER FLAG
- STM ILAST
- LDD NOUT NUMBER OF WORDS IN FRAME
- NJP M300 JUMP IF NOT AN EMPTY FRAME
- *
- * /--- BLOCK MAIN LOOP 00 000 84/11/15 10.44
- *
- * SPECIAL TREATMENT FOR EMPTY FRAME
- *
- M272 BSS 0
- LDN 0
- STD D.T0
- STM ILAST
- STD IOUT
- UJP M325
- * /--- BLOCK MAIN LOOP 00 000 84/11/15 10.47
- *
- * READ AND OUTPUT NEXT PORTION OF FRAME
- *
- M300 KEYSIN ACCEPT ANY KEYS FROM CIU
- LDC PPBLTH
- STD D.T3 D.T3 = NUMBER CPU WORDS TO READ
- STD IOUT
- LDD NOUT GET NUMBER OF WORDS REMAINING
- SBM PENDTST PENDTST = PPBLTH
- STD NOUT
- ZJP M315
- PJP M320 JUMP IF NOT LAST BUFFER FULL
- *
- M315 ADC PPBLTH
- STD D.T3 D.T3 = NUMBER CPU WORDS TO READ
- STD IOUT
- STM ILAST SET FLAG FOR LAST BUFFER
- *
- * /--- BLOCK MAIN LOOP 00 000 81/04/21 20.42
- *
- * READ NEXT PORTION OF CURRENT FRAME FROM ECS
- *
- M320 LDM IBIAS+1 COMPUTE ECS ADDRESS
- ADM ECRA+1 FORM LOWER PART OF ECS ADDRESS
- ADM OUTBUFF+1
- STD D.T2 D.T2 = LOWER PART OF ECS ADDR
- SHN -12
- ADM ECRA FORM UPPER PART OF ECS ADDRESS
- ADM OUTBUFF
- ADM IBIAS
- STD D.T1 D.T1 = UPPER PART OF ECS ADDR
- LDC PPBUFF
- STD D.T0 D.T0 = ADDRESS OF PPU BUFFER
- LDD D.T3
- RAM IBIAS+1 INCREMENT BIAS IN FRAME BUFFER
- SHN -12
- RAM IBIAS
- LDD D.T3
- SHN 2
- RAD D.T3 D.T3 = NUM PPU WORDS TO READ
- CALL READECS
- KEYSIN ACCEPT ANY KEYS FROM CIU
- LDM ILAST
- SHN 6
- MJP M330 JUMP IF NOT LAST BUFFER
- SHN -6
- STD D.T0
- SHN 2 MULTIPLY BY 5 FOR PPU WORD CNT
- RAD D.T0
- *
- * * * PUT EMPTY FRAME AT END TO SIGNAL END OF FRAME
- * SEND IT TO UNUSED STATION.
- *
- M325 BSS 0
- LDC 2000B+1023 SET BIT AND STATION NUMBER
- STM PPBUFF+2,D.T0
- LDN 0
- STM PPBUFF+1,D.T0
- LDC 4000B SET START BIT
- STM PPBUFF,D.T0
- AOD IOUT COUNT EXTRA FRAME
- *
- * /--- BLOCK MAIN LOOP 00 000 81/04/21 20.44
- *
- * OUTPUT NEXT PORTION OF FRAME TO CIU
- *
- M330 LDC PPBUFF INITIALIZE POINTER
- STD D.T0
- *
- M350 SOD IOUT NUMBER OF WORDS LEFT IN BUFFER
- MJP M370 EXIT IF END OF BUFFER
- LDD D.T0 POINTER TO NEXT TERMINAL WORD
- STM M357+1 PLANT ADDRESS OF OUTPUT
- ADN 5
- STD D.T0 ADVANCE POINTER
- *
- WAIT EMPTY,O=NIU,M360
- *
- M355 LDN 3 SET TO OUTPUT NEXT 3 WORDS
- M357 OAM **,O=NIU OUTPUT NEXT TERMINAL WORD
- UJP M350
- *
- *
- * RE-SELECT CIU OUTPUT CONTROLLER IF TIME-OUT
- *
- M360 IJM M365,O=NIU
- DCN O=NIU DEACTIVATE CIU OUTPUT CHANNEL
- *
- M365 FNC 0,O=NIU SELECT OUTPUT CONTROLLER
- WAIT INACTIVE,O=NIU,M120
- ACN O=NIU ACTIVATE CIU OUTPUT CHANNEL
- UJP M355
- *
- *
- * CHECK IF AT END OF FRAME
- *
- M370 LDM ILAST LOAD LAST BUFFER FLAG
- SHN 6
- MJP M300 CONTINUE IF NOT LAST BUFFER
- UJP MAIN
- * /--- BLOCK SPECIAL 00 000 84/11/15 10.47
- TITLE SPECIAL LOOP INPUT OR OUTPUT OFF
- *
- *
- *
- SPEC DELAY 1000 IDLE FOR A WHILE
- LDM CIUEQ CHECK IF CIU AVAILABLE
- ZJP I700 EXIT IF NOT
- *
- * ACCEPT PENDING KEYS FROM CIU AND PASS TO PLATO
- *
- AJM I150,I=NIU CHECK IF CHANNEL ACTIVE
- FNC 40B,I=NIU SELECT INPUT CONTROLLER
- WAIT INACTIVE,I=NIU,M124
- ACN I=NIU ACTIVATE NIU INPUT CHANNEL
- WAIT ACTIVE,I=NIU,M124
- *
- I150 LDN 20 PROCESS MAX OF 20 KEYS
- STM KOCNT
- *
- I160 KEYSIN ACCEPT PENDING KEYS FROM CIU
- LDD KEYII LOAD KEY BUFFER INPUT POINTER
- ZJP I700
- CALL KEYOUT OUTPUT NEXT KEY TO PLATO
- SOM KOCNT
- PJP I160
- UJP I700
- *
- * /--- BLOCK SPECIAL 00 000 84/11/15 10.47
- *
- * INCREMENT FRAME COUNTER APROX EVERY 16 MILLS
- *
- I700 SOM SFCNT CHECK IF TIME TO UPDATE FRAME
- PJP MAIN
- LDN 15 RE-SET COUNTER
- STM SFCNT
- LDN 4
- STD D.T0 INITIALIZE BYTE INDEX
- *
- I720 AOM NFRAME,D.T0 INCREMENT NEXT BYTE
- SHN -12
- ZJP I725 CHECK FOR OVERFLOW TO NEXT BYTE
- SOD D.T0
- PJP I720 END TEST
- *
- I725 LDC NFRAME
- STD D.T0 D.T0 = PPU MEMORY ADDRESS
- LDM ECRA+1 COMPUTE ECS ADDR OF FRAME COUNT
- ADM OUTPNT+1
- STD D.T2 D.T2 = LOWER PART OF ECS ADDR
- SHN -12
- ADM ECRA
- ADM OUTPNT
- STD D.T1 D.T1 = UPPER PART OF ECS ADDR
- LDN 5
- STD D.T3 D.T3 = NUMBER WORDS TO WRITE
- CALL WRITECS UPDATE FRAME COUNTER IN ECS
- UJP MAIN
- *
- *
- IFP$ EQU 1 FOR COMPGFP
- EJT$ EQU 1 ASSEMBLE ROUTINE .CEA
- *CALL COMPGFP
- IFP HERE
- * /--- BLOCK KEYIN 00 000 81/09/08 01.28
- TITLE -KEYIN- READ NEXT KEY TO KEY BUFFER
- *
- *
- *
- * -KEYIN-
- * READS NEXT KEY (2 PPU WORDS) FROM CIU TO BUFFER
- * CALLED BY -KEYSIN- MACRO
- *
- *
- KEYIN SUBR
- AJM KY100,I=NIU CHECK IF CHANNEL ACTIVE
- FNC 40B,I=NIU SELECT INPUT CONTROLLER
- WAIT INACTIVE,I=NIU,KY860
- ACN I=NIU ACTIVATE CIU INPUT CHANNEL
- *
- KY100 EJM KEYINX,I=NIU IF NO KEY READY YET
- IAN I=NIU INPUT STATION DATA WORD@
- STD D.T0
- SHN 6 POSITION STATION WORD BIT
- PJP KY850 EXIT IF CIU OUT OF STEP
- WAIT FULL,I=NIU,KY860 WAIT FOR KEY DATA WORD
- IAN I=NIU INPUT KEY DATA WORD
- STD D.T1
- LDD KEYII LOAD INDEX IN KEY BUFFER
- STD D.T3
- ADN 2 ADVANCE INDEX
- STD KEYII
- SBM MXKBIDX CHECK AGAINST MAXIMUM
- MJN KY110
- LDD KEYII
- STM MXKBIDX
- KY110 LDD KEYII
- SBM KENDTST CHECK FOR BUFFER OVERFLOW
- PJP KY870
- LDD D.T0 LOAD FIRST WORD OF KEY
- LPC 3777B REMOVE TOP BIT
- STM KEYBUFF,D.T3
- LDD D.T1 LOAD SECOND WORD OF KEY
- STM KEYBUFF+1,D.T3
- LJM KEYINX
- * /--- BLOCK KEYIN 00 000 81/08/06 22.29
- *
- KY850 CALL MESSAG,(=24CPIO KEY DATA OUT OF SEQ)
- AOM KYSEQ
- UJP KY890
- *
- KY860 CALL MESSAG,(=26CPIO NO RESPONSE CIU INPUT)
- AOM KYRESP
- UJP KY890
- *
- KY870 AOM KYOFLOW INCREMENT OVERFLOW COUNT
- STD D.T0
- CALL OTOA CONVERT OCTAL TO ALPHA
- LDD D.T1
- STM KYM100 PLANT ALPHA COUNTER
- LDD D.T2
- STM KYM100+1
- CALL DFM,KYMSG1 OUTPUT DAYFILE MESSAGE
- LDN 0
- STD KEYII DUMP ALL KEYS IN BUFFER
- STD KEYOI
- UJN KYI9
- *
- KY890 DCN I=NIU DISCONNECT CIU CHANNEL
- DELAY 10
- ACN I=NIU RE-ACTIVATE CIU CHANNEL
- KYI9 LJM KEYINX
- *
- *
- KYMSG1 DIS ,*PIO KEY BUFFER OVERFLOW XXXX*
- KYM100 EQU KYMSG1+13
- *
- *
- * /--- BLOCK KEYOUT 00 000 77/08/23 03.47
- TITLE -KEYOUT- OUTPUT NEXT KEY
- *
- *
- *
- * -KEYOUT-
- * OUTPUTS NEXT KEY FROM PPU KEY BUFFER TO STATION
- * KEY BUFFER IN ECS AND SETS BIT FOR THIS STATION
- * IN CM AND ECS POLLING LISTS
- *
- *
- KEYOUT SUBR
- *
- * GET NEXT KEY TO *KEY* AND *STATION*
- *
- LDD KEYII LOAD BUFFER INPUT POINTER
- SBD KEYOI CHECK AGAINST OUTPUT POINTER
- ZJP KYO900 EXIT IF NO KEYS TO DO
- MJP KYO900
- LDD KEYOI LOAD OUTPUT POINTER
- STD D.T0
- ADN 2 ADVANCE OUTPUT POINTER
- STD KEYOI
- LDM KEYBUFF,D.T0 LOAD STATION WORD
- STD STATION
- SBD FS FIRST LEGAL PHYSICAL STATION
- MJP KYO820 NOT LEGAL
- LDD STATION
- ADC -0 MAX LEGAL PHYSICAL STATION
- .NTERM1 EQU *-1
- PJP KYO820 IF TOO BIG
- LDD CB BIAS TO LOGICAL STATION NUMBER
- RAD STATION
- *
- * CHECK IF THIS STATION FLOODING SYSTEM WITH KEYS
- *
- STD D.T1 SET STATION NUMBER
- LDM IBAD GET NUMBER OF FLOODING STATIONS
- ZJN KYO150
- STD D.T2
- *
- KYO110 SOD D.T2 DECREMENT INDEX IN BAD LIST
- MJN KYO150
- LDM BADLIST,D.T2
- SBD D.T1 CHECK IF THIS STATION FLOODING
- NJP KYO110
- LJM KEYOUTX
- *
- KYO150 BSS 0
- LDM KEYBUFF+1,D.T0 LOAD KEY WORD
- STD KEY
- *
- * /--- BLOCK KEYOUT 00 000 75/08/11 20.05
- *
- * READ KEY BUFFER FOR THIS STATION
- *
- LDC ECSBUFF
- STD D.T0 D.T0 = PPU MEMORY ADDRESS
- LDD STATION COMPUTE KEY BUFFER INDEX
- SHN KEYBSHF
- ADM ECRA+1 ADD LOWER PART OF ECS RA
- ADM KEYBADD+1 ADD LOWER PART OF KEY BUFF ADDR
- STD D.T2 D.T2 = LOWER ECS ADDRESS
- SHN -12
- ADM ECRA ADD UPPER PART OF ECS RA
- ADM KEYBADD ADD UPPER PART OF KEY BUFF ADDR
- STD D.T1 D.T1 = UPPER ECS ADDRESS
- LDN 10
- STD D.T3 D.T3 = NUMBER PPU WORDS TO READ
- CALL READECS D.T0 - D.T3 ALREADY SET UP
- NJP KEYOUTX IF ECS PARITY ERROR
- *
- * /--- BLOCK KEYOUT 00 000 84/11/15 10.50
- *
- * CHECK FOR FAST COLLECT BIT (TOP BIT OF STOP1 BYTE)
- *
- LDM ECSBUFF+8 GET STOP1 CODE
- LPC 4000B ISOLATE FASTKEY ON-BIT
- ZJP KYO210 JUMP IF NOT FAST COLLECT
- *
- * COUNT THE FAST COLLECT EXECUTIONS
- *
- AOM FKSTAT
- *
- * READ FAST COLLECT CONTROL BUFFER
- *
- LDC FKYBUFF D.T0 = PPU MEMORY ADDRESS
- STD D.T0
- LDM ECRA+1 LOWER PART OF ECS RA
- ADM FKBFADD+1 ADD LOWER PART OF ADDRESS
- STD D.T2 D.T2 = LOWER ECS ADDRESS
- SHN -12
- ADM ECRA ADD UPPER PART OF ECS RA
- ADM FKBFADD ADD UPPER PART OF ADDRESS
- STD D.T1 D.T1 = UPPER ECS ADDRESS
- LDN 10 LENGTH = 2 CM WORDS
- STD D.T3 D.T3 = NUMBER PPU WORDS TO READ
- CALL READECS
- NJP KEYOUTX IF ECS PARITY ERROR
- *
- * CHECK THAT THIS IS THE PROPER STATION
- *
- LDM FKYBUFF+5 GET STATION EXPECTED
- SBD STATION ACTUAL STATION
- NJP KYO200 JUMP IF NOT CORRECT STATION
- *
- * CHECK IF ALREADY DONE COLLECTING
- *
- LDM FKYBUFF+4 GET TOP BIT IN 5TH BYTE
- LPC 4000B ISOLATE IT
- NJP KYO200 JUMP IF DONE (BIT SET)
- *
- * READ PROPER WORD OF ECS STORAGE BUFFER
- *
- KYO155 LDC STRBUFF D.T0 = PPU MEMORY ADDRESS
- STD D.T0
- LDM ECRA+1 LOWER PART OF ECS RA
- ADM FKYBUFF+1 ADD LOWER PART OF ADDRESS
- STD D.T2 D.T2 = LOWER ECS ADDRESS
- SHN -12
- ADM ECRA ADD UPPER PART OF ECS RA
- ADM FKYBUFF ADD UPPER PART OF ADDRESS
- STD D.T1 D.T1 = UPPER ECS ADDRESS
- LDN 5 LENGTH = 1 CM WORD
- STD D.T3 D.T3 = NUMBER PPU WORDS TO READ
- CALL READECS
- KYO1 NJP KEYOUTX IF ECS PARITY ERROR
- *
- * /--- BLOCK KEYOUT 00 000 81/09/07 00.36
- *
- * STORE THE KEY IN THE BUFFER
- *
- LDM FKYBUFF+4 BYTE ORDINAL
- STD D.T4 USE AS INDEX
- LDD KEY GET THE KEY
- STM STRBUFF,D.T4
- CALL WRITECS WRITE BACK THE WORD OF STORAGE
- NJN KYO1 IF ECS PARITY ERROR
- *
- * INCREMENT THE BYTE INDEX AND ECS STORAGE ADDRESS
- *
- AOM FKYBUFF+4 BYTE INDEX
- SBN 5 CHECK FOR WRAP AROUND
- NJN KYO160 SKIP ECS STORAGE ADDRESS
- STM FKYBUFF+4 ZERO BYTE INDEX
- AOM FKYBUFF+1 LOWER ECS STORAGE ADDRESS
- SHN -12
- ADM FKYBUFF UPPER HALF
- STM FKYBUFF
- *
- * COUNT NUMBER OF KEYS COLLECTED
- *
- KYO160 AOM FKYBUFF+3 LOWER KEY COUNT
- SHN -12
- ADM FKYBUFF+2 UPPER HALF
- STM FKYBUFF+2
- *
- * /--- BLOCK KEYOUT 00 000 81/09/08 00.02
- *
- * IF LAST KEY, SET DONE BIT
- *
- LDM ECSBUFF+8 FIRST CHECK FOR STOP1
- LPC 3777B GET RID OF FASTKEY CONTROL BIT
- SBD KEY CHECK AGAINST KEY
- ZJN KYO180 IF STOP1
- *
- LDM FKYBUFF+6 CHECK SPECIAL KEY
- SBD KEY
- ZJN KYO180 IF SPECIAL KEY
- *
- LDM FKYBUFF+7 UPPER KEYS TO COLLECT
- SBM FKYBUFF+2 UPPER KEYS COLLECTED
- NJN KYO190 IF NOT LAST KEY
- LDM FKYBUFF+8 LOWER KEYS TO COLLECT
- SBM FKYBUFF+3 LOWER KEYS COLLECTED
- NJN KYO190 IF NOT LAST KEY
- *
- * SET DONE BIT IN CONTROL BUFFER
- *
- KYO180 LDM FKYBUFF+4 5TH BYTE
- ADC 4000B TURN ON BIT
- STM FKYBUFF+4
- *
- * WRITE FAST COLLECT CONTROL BUFFER BACK TO ECS
- *
- KYO190 LDC FKYBUFF D.T0 = PPU MEMORY ADDRESS
- STD D.T0
- LDM ECRA+1 LOWER PART OF ECS RA
- ADM FKBFADD+1 ADD LOWER PART OF ADDRESS
- STD D.T2 D.T2 = LOWER ECS ADDRESS
- SHN -12
- ADM ECRA ADD UPPER PART OF ECS RA
- ADM FKBFADD ADD UPPERPART OF ADDRESS
- STD D.T1 D.T1 = UPPER ECS ADDRESS
- LDN 5 LENGTH = 1 CM WORD
- STD D.T3 D.T3 = NUMBER PPU WORDS TO READ
- CALL WRITECS WRITE IT
- NJP KEYOUTX IF ECS PARITY ERROR
- *
- * IF LAST KEY, PROCESS IT IN REGULAR WAY
- *
- LDM FKYBUFF+4 5TH BYTE
- LPC 4000B MASK OFF DONE BIT
- ZJP KEYOUTX
- *
- * /--- BLOCK KEYOUT 00 000 84/11/15 10.50
- *
- * RECOMPUTE ADDRESSES FOR KEYBUFFER READECS
- *
- KYO200 LDC ECSBUFF
- STD D.T0 D.T0 = PPU MEMORY ADDRESS
- LDD STATION COMPUTE KEY BUFFER INDEX
- SHN KEYBSHF
- ADM ECRA+1 ADD LOWER PART OF ECS RA
- ADM KEYBADD+1 ADD LOWER PART OF KEY BUFF ADDR
- STD D.T2 D.T2 = LOWER ECS ADDRESS
- SHN -12
- ADM ECRA ADD UPPER PART OF ECS RA
- ADM KEYBADD ADD UPPER PART OF KEY BUFF ADDR
- STD D.T1 D.T1 = UPPER ECS ADDRESS
- LDN 10
- STD D.T3 D.T3 = NUMBER PPU WORDS TO READ
- *
- * CHECK IF ROOM FOR NEW KEY IN STATIONS KEY BUFFER
- *
- KYO210 LDM ECSBUFF+4 PPU INDEX IN KEY BUFFER
- SBM ECSBUFF+9 CPU INDEX IN KEY BUFFER
- ZJN KYO225 IF CPU INDEX = PPU INDEX
- PJN KYO220
- ADC 10000B TAKE 12 BIT ABSOLUTE VALUE
- *
- KYO220 LPN 3 MASK INDEX FOR MOD 4
- NJN KYO225 IF NO OVERFLOW
- LDM ECSBUFF+8 LOAD -STOP1- KEY VALUE
- LPC 3777B MASK OFF FASTKEY CONTROL BIT
- SBD KEY
- NJP KYO800 IGNORE KEY IF NOT -STOP1-
- LDM ECSBUFF+4
- UJN KYO227 OVERWRITE LAST KEY
- *
- * ADD NEW KEY TO STATION KEY BUFFER
- *
- KYO225 AOM ECSBUFF+4 INCREMENT PPU KEY BUFFER INDEX
- KYO227 LPN 3 MASK OFF INDEX (MOD 4)
- STD D.T4
- LDD KEY PLANT KEY CODE IN KEY BUFFER
- STM ECSBUFF,D.T4
- LDN 5 D.T3 = NUMBER WORDS TO WRITE
- STD D.T3
- CALL WRITECS D.T0 - D.T3 ARGUMENTS
- *
- * COMPUTE INDEX FOR THIS STATION IN ECS BIT TABLE
- *
- LDD STATION GET STATION NUMBER
- LPN 37B MOD 32
- ADN 4 ADD BIAS TO STARTING BIT
- STD D.T1
- LDN 3 INITIALIZE INDEX AT LOW BYTE
- STD D.T4
- *
- * /--- BLOCK KEYOUT 00 000 81/04/28 17.08
- *
- KYO300 LDD D.T1 LOAD BIT INDEX
- SBN 12 CHECK IF BIT IS IN THIS BYTE
- MJN KYO310
- STD D.T1 ADJUST BIT INDEX
- SOD D.T4 ADJUST BYTE INDEX
- UJP KYO300
- *
- KYO310 LDM KYO320 LOAD SHIFT INSTRUCTION
- SCN 77B
- ADD D.T1 ATTACH SHIFT COUNT
- STM KYO320
- LDN 1 SET UP BIT
- *
- KYO320 SHN 0 POSITION BIT WITHIN BYTE
- STM KYO362+1 STORE BIT MASK
- *
- * /--- BLOCK KEYOUT 00 000 85/06/13 13.17
- *
- * SET BIT IN ECS POLLING LIST FOR THIS STATION
- *
- KYO360 LDC ECSBUFF SET FOR ECS READ
- STD D.T0 D.T0 = PPU MEMORY ADDRESS
- LDD STATION ECS ADDRESS = STATION
- SHN -5 /32
- ADM ECRA+1 + ECS RA
- ADM ECSSWX+1 + RELATIVE ADDRESS
- STD D.T2 D.T2 = LOWER ECS ADDRESS
- SHN -12 ADJUST CARRY
- ADM ECRA COMPUTE UPPER PART OF ADDRESS
- ADM ECSSWX
- STD D.T1 D.T1 = UPPER ECS ADDRESS
- LDN 5
- STD D.T3 D.T3 = NUM PPU WORDS TO READ
- CALL READECS READ WORD FROM REQUEST LIST
- NJP KEYOUTX IF ECS PARITY ERROR
- *** CDC-ONLY TRAP FOR BAD INPUT LIST WORDS
- CDCIF IFNE CDC,0
- LDC 2037B RIGHT VALUE
- LMM ECSBUFF CHECK EXPONENT
- ZJN TRAP1 IF OK
- .NOS2 IFLT OSLEV,578D
- MONITOR MXFM SAY CHEESE
- .NOS2 ELSE
- .NOS241 IFLT OSLEV,630D
- MONITOR HNGM SAY CHEESE
- .NOS241 ELSE
- LDC *
- STD CM+1 SAVE CALL ADDRESS
- LDK PPET
- STD CM+2 *PP ABORT* ERROR FLAG
- MONITOR CHGM SAY CHEESE, CONDITIONALLY
- .NOS241 ENDIF
- .NOS2 ENDIF
- TRAP1 BSS 0
- CDCIF ENDIF
- *** END TRAP.
- *
- LDM ECSBUFF,D.T4 GET PROPER WORD
- KYO362 LPC 0 MASK OFF PROPER BIT
- NJP KYO2 IF BIT ALREADY ON
- LDM ECSBUFF,D.T4
- LMM KYO362+1 SET BIT FOR THIS STATION
- STM ECSBUFF,D.T4
- LDN 1 SET LOWEST BIT FOR RE-READ
- STM ECSBUFF+4
- *** CDC-ONLY TRAP FOR BAD INPUT LIST WORDS
- CDCIF IFNE CDC,0
- LDC 2037B RIGHT VALUE
- LMM ECSBUFF CHECK EXPONENT
- ZJN TRAP2 IF OK
- .NOS2 IFLT OSLEV,578D
- MONITOR MXFM SAY CHEESE
- .NOS2 ELSE
- .NOS241 IFLT OSLEV,630D
- MONITOR HNGM SAY CHEESE
- .NOS241 ELSE
- LDC *
- STD CM+1 SAVE CALL ADDRESS
- LDK PPET
- STD CM+2 *PP ABORT* ERROR FLAG
- MONITOR CHGM SAY CHEESE, CONDITIONALLY
- .NOS241 ENDIF
- .NOS2 ENDIF
- TRAP2 BSS 0
- CDCIF ENDIF
- *** END TRAP.
- CALL WRITECS WRITE WORD BACK TO ECS
- NJN KYO2
- CALL READECS READ REQUEST LIST WORD AGAIN
- LDM ECSBUFF+4
- SBN 1 CHECK FOR POSSIBLE CPU CONFLICT
- NJP KYO360
- KYO2 LJM KEYOUTX
- *
- * /--- BLOCK KEYOUT 00 000 84/11/15 10.51
- *
- * ADD THIS STATION TO LIST OF STATIONS FLOODING
- * SYSTEM WITH KEYS AND OUTPUT B-DISPLAY MESSAGE
- *
- *
- *
- * CHECK THE LIST PASSED FROM SCIM TO SEE
- * IF THIS STATION IS ONE THAT SHOULD
- * NOT BE TURNED OFF
- *
- KYO800 LDM SCIMBUF+XBADLTH LOAD LENGTH OF LIST
- ZJN KYO803 IF LIST FROM SCIM EMPTY
- STD D.T0
- SBN XBADLTH+1 CHECK FOR BAD LENGTH VALUE
- PJN KYO803 IF BAD LENGTH
- *
- KYO802 SOD D.T0 DECREMENT COUNTER
- MJN KYO803 IF STATION NOT ON LIST
- LDD STATION LOAD CURRENT STATION NUMBER
- SBM SCIMBUF,D.T0 SUBTRACT VAL FOUND IN TABLE
- NJP KYO802 IF NO MATCH CHECK NEXT ENTRY
- AOM KYIGNT COUNT KEYS IGNORED IN TEST MODE
- UJP KYO805 AVOID TURNING STATION OFF
- *
- *
- * INSERT STATION INTO TEST LIST OR INCREMENT
- * COUNT FOR A STATION ALREADY LISTED
- *
- *
- KYO803 LDM ITEST LOAD NUMBER OF STATIONS IN LIST
- STD D.T0
- KYO8031 SOD D.T0 DECREMENT COUNTER
- MJN KYO8032 NOT FOUND, TRY TO ADD TO LIST
- LDD STATION
- SBM TESTLST,D.T0 CHECK NEXT ENTRY IN THE LIST
- NJP KYO8031 IF NO MATCH TRY NEXT ENTRY
- UJN KYO8033 FOUND, GO PROCESS COUNT
- *
- KYO8032 LDM ITEST LOAD COUNT OF ENTRIES IN LIST
- STD D.T0
- SBN BADLTH*2 CHECK IF ROOM IN TEST LIST
- PJP KYO805 GIVE UP IF NO ROOM
- *
- LDD STATION
- STM TESTLST,D.T0 ADD STATION TO LIST
- * STM KYIGNT+1 DEBUG ONLY...LAST STATION ADDED
- LDN 1
- STM CNTLST,D.T0 SET COUNT TO 1 FOR STATION
- AOM ITEST INCREMENT COUNT OF ENTRIES
- * STM KYIGNT+2 DEBUG ONLY...ENTRIES IN LIST
- UJN KYO805
- *
- KYO8033 AOM CNTLST,D.T0 INCREMENT COUNT FOR STATION
- SBN OFLIMIT CHECK IF NEEDS TO BE BLOCKED
- MJN KYO805 DONT BLOCK STATION INPUT
- *
- *
- * /--- BLOCK KEYOUT 00 000 79/01/04 21.48
- *
- *
- *
- * ADD STATION TO BAD LIST IF LIST NOT FULL
- *
- KYO804 LDM IBAD LENGTH OF BAD STATION LIST
- STD D.T0
- SBN BADLTH
- PJN KYO805 IF LIST FULL
- AOM IBAD INCREMENT LENGTH OF LIST
- LDD STATION
- STM BADLIST,D.T0
- *
- *
- *
- *
- * INCREMENT COUNT AND OUTPUT MESSAGE
- *
- *
- KYO805 AOM KYIGN INCREMENT IGNORED COUNTER
- SOM KOMCNT CHECK IF SHOULD OUTPUT MESSAGE
- PJN KYO3
- LDC 300 RE-SET COUNTER
- STM KOMCNT
- LDD STATION
- STD D.T0 CONVERT STATION NUMBER TO ALPHA
- CALL OTOA
- LDD D.T1 LOAD FIRST TWO ALPHA CHARACTERS
- STM KOMSG1+13
- LDD D.T2 LOAD SECOND TWO CHARACTERS
- STM KOMSG1+14
- CALL MESSAG,KOMSG1 OUTPUT B-DISPLAY MESSAGE
- KYO3 LJM KEYOUTX
- *
- *
- * OUTPUT B-DISPLAY MESSAGE FOR ILLEGAL STATION
- *
- KYO820 CALL MESSAG,KOMSG2
- AOM KYSTATN
- UJN KYO3
- *
- * RE-SET BUFFER POINTERS IF EMPTY
- *
- KYO900 LDN 0 RE-SET BUFFER POINTERS
- STD KEYII
- STD KEYOI
- UJN KYO3
- *
- *
- KOMCNT DATA 0
- *
- KOMSG1 DIS ,*PIO KEY IGNORED STATION XXXXB*
- KOMSG2 DIS ,*PIO STATION TOO BIG*
- *
- *
- * /--- BLOCK PAUSE 00 000 89/06/01 11.28
- TITLE -PAUSE- CHECK FOR STORAGE MOVE OR ERROR
- PAUSE SPACE 5,11
- ** PAUSE - PAUSE FOR STORAGE RELOCATION
- *
- * CHECK CPU ACTIVITY AND PAUSE / DROP AS NECESSARY
- *
- * IF NO CPU ACTIVITY BUT *DIS* ACTIVE,
- * CONTINUE PROCESSING
- * IF NO CPU ACTIVITY BUT *ESM* ACTIVE,
- * WAIT FOR *ESM* TO DROP.
- PAUSE SUBR
- LDD CP
- ADN STSW
- CRD CM
- LDD CM+1 CHECK ERROR FLAG
- ZJN PSE1 IF NO ERROR
- LJM PSE8
- PSE1 LDD CM CHECK CPU ACTIVITY
- SHN -11B
- NJN PSE3 IF ACTIVITY
- * CHECK FOR DIS / ESM ACTIVE
- LDN PPUL
- CRD CM
- LDD CM+2 SAVE NUMBER OF PPS ON SYSTEM
- SBN 11D
- PJN PSE1.1 IF MORE THAN 10 PPS
- LDN 10D SET 10 PPS
- UJN PSE1.2
- PSE1.1 LDN 20D
- PSE1.2 STD T1
- LDN PPCP GET ADDRESS OF PP COMMUNICATION
- CRD CM
- LDD CM+4
- STD T2
- PSE2 CRD CM READ NEXT INPUT REGISTER
- LDD CM
- LMC 2RDI
- NJN PSE5 IF NOT *DIS*
- LDD CP
- SHN -7
- LMC 1RS*100B
- LMD CM+1
- SCN 40B
- NJN PSE5 IF NOT *DIS* AT THIS CP
- * CHECK FOR STORAGE MOVE
- PSE3 LDN CMCL
- CRD CM
- LDD CP
- .NOS27 IFGE OSLEV,716D NOS 2.7.1
- SHN -7
- .NOS27 ENDIF
- LMD CM
- NJN PSE4 IF NOT THIS CP
- RJM PSM PAUSE FOR STORAGE MOVE
- PSE4 LJM PAUSEX
- PSE5 LDD CM+1
- SCN 77B
- SHN 14B
- LMD CM
- LMC 3RMES CHECK FOR *ESM*
- NJN PSE6 IF NOT *ESM*
- RJM PSM PAUSE FOR STORAGE MOVE
- LJM PAUSE+1 RE-ENTER LOOP
- PSE6 SOD T1
- * /--- BLOCK PAUSE 00 000 81/04/28 14.26
- NJN PSE7 IF MORE PPS TO CHECK
- LJM PSE9 NO ACTIVITY AT THE CP
- PSE7 LDN 10B BUMP TO NEXT INPUT REGISTER
- RAD T2
- LJM PSE2 LOOP
- * PROCESS ERROR FLAG
- PSE8 LDD CM+1
- SBN FSET CHECK FOR *MRQ* DROP
- ZJN PSE10
- SBN OKET-FSET
- ZJN PSE10
- PSE9 CALL ALLOUT,OFFMSG OUTPUT -PLATO OFF-
- PSE10 LJM DROP
- PSM SPACE 5,11
- ** PSM - PAUSE FOR STORAGE MOVE
- *
- * ISSUE MONITOR FUNCTION TO PAUSE
- * UPDATE PP ADDRESSES TO REFLECT NEW RA
- PSM SUBR
- PAUSE ST
- LDM PSTATX UPDATE CM ADDRESSES
- SHN 6
- ADD RA
- SHN 6
- ADM PSTATX+1
- PLANT CM,PSTATS
- LJM PSMX
- * /--- BLOCK READECS 00 000 84/11/16 10.53
- TITLE -READECS- ECS TO PPU TRANSFER VIA DDP
- *
- *
- *
- * -READECS-
- * ON ENTRY - D.T0 = PPU MEMORY ADDRESS
- * D.T1 = UPPER PORTION OF ECS ADDRESS
- * D.T2 = LOWER PORTION OF ECS ADDRESS
- * D.T3 = NUMBER OF PPU WORDS TO READ
- *
- * ON RETURN - A = 0 = READ COMPLETED
- * 1 = ECS PARITY ERROR
- *
- *
- READECS SUBR
- LDD A170
- NJP RCS50 IF 180 CLASS MAINFRAME
- IJM RCS10,C=DDP
- DCN C=DDP,40B
- *
- RCS10 FNC 5001B,C=DDP 5001B = READ ECS
- WAIT INACTIVE,C=DDP,RCSE1
- ACN C=DDP,40B
- FJM RCSE2,C=DDP
- LDN 2
- OAM D.T1,C=DDP OUTPUT 2 WORD ECS ADDRESS
- LDD D.T0
- STM RCS15+1 PLANT PPU MEMORY ADDRESS
- WAIT FULL,C=DDP,RCSE3
- *
- LDM D.T3 NUMBER OF WORDS TO READ
- RCS15 IAM **,C=DDP READ ECS TO PPU MEMORY
- NJP RCSE4 EXIT IF ERROR
- *
- RCS20 IJM RCSE5,C=DDP WAIT CHANNEL ACTIVE + FULL
- EJM RCS20,C=DDP
- RCS30 DCN C=DDP,40B DISCONNECT CHANNEL
- LDN 0 MARK NO ERROR OCCURRED
- LJM READECSX
- *
- RCSE1 LDN 0 SET ERROR CODE
- UJN RCSERR
- RCSE2 LDN 1
- UJN RCSERR
- RCSE3 LDN 2
- UJN RCSERR
- RCSE4 LDN 3
- UJN RCSERR
- RCSE5 LDN 4
- RCSERR ADC 2RR1 SET CHARACTER STRING FOR ERROR
- STM DDPMSG+14
- LDM RCS30 GET CHANNEL FOR ERROR MESSAGE
- LPN 37B
- STD D.T0
- CALL OTOA
- LDD D.T2
- STM DDPMSG+11
- CALL DFM,DDPMSG ISSUE ERROR MESSAGE TO DAYFILES
- *
- CALL DDPMCP MASTER CLEAR DDP PORT
- LDN 1 A = 1 = ERROR OCCURRED
- LJM READECSX
- *
- *
- * /--- BLOCK READUEM 00 000 85/04/18 16.43
- *
- * READ UEM DIRECTLY ON 800-SERIES MACHINES
- *
- RCS50 SRD D.RSAV SAVE CURRENT (R)
- * CONVERT COUNT FROM PPU WORDS TO CPU WORDS
- LDD T0
- STM T0SAV
- LDD T2
- STM T2SAV
- LDD D.T3 (A) = NUMBER OF PPU WORDS
- STM D.T3S
- RJM DV5 CONVERT TO CPU WORDS
- STD D.T3 (D.T3) = NUMBER OF CPU WORDS
- * PLANT PP ADDRESS THE CM WORDS ARE TO BE READ INTO
- LDD D.T0 (A) = PP MEMORY ADDRESS TO USE
- STM RCS60 STORE PP ADDRESS
- * FORM PART OF EM ADDRESS IN (R)
- LDD D.T1 (A) = UPPER PART OF EM ADDRESS
- SHN -6 (A) = BITS 23 - 18 OF EM ADDR
- STD T1
- LDD D.T1
- SHN 6 (A) = BITS 17 - 12 OF EM ADDR
- STD T2
- LRD T1 (R) = BITS 23 - 12 OF EM ADDR
- * FORM THE REST OF THE EM ADDRESS IN (A)
- LDD D.T2 (A) = LOWER PART OF EM ADDRESS
- LMC R.USE SET BIT TO USE (R) IN ADDR CALC
- * READ EM
- CRM **,D.T3
- RCS60 EQU *-1 (PP MEMORY ADDRESS)
- * DONE.
- LRD D.RSAV RESTORE OLD (R)
- LDM T0SAV
- STD T0
- LDM T2SAV
- STD T2
- LDM D.T3S
- STD D.T3
- LDN 0 MARK NO ERROR OCCURRED
- * RETURN
- LJM READECSX
- *CALL COMPDV5
- * /--- BLOCK WRITECS 00 000 84/11/16 11.01
- TITLE -WRITECS- PPU TO ECS TRANSFER VIA DDP
- *
- *
- *
- * -WRITECS-
- * ON ENTRY - D.T0 = PPU MEMORY ADDRESS
- * D.T1 = UPPER PORTION OF ECS ADDRESS
- * D.T2 = LOWER PORTION OF ECS ADDRESS
- * D.T3 = NUMBER OF PPU WORDS TO WRITE
- *
- * ON RETURN - A = 0 = WRITE COMPLETED
- * 1 = ECS ABORT
- *
- *
- WRITECS SUBR
- LDD A170
- NJP WCS60 IF 180 CLASS MAINFRAME
- IJM WCS10,C=DDP
- DCN C=DDP,40B
- *
- WCS10 FNC 5002B,C=DDP 5002B = WRITE ECS
- WAIT INACTIVE,C=DDP,WCSE1
- ACN C=DDP,40B
- LDN 2
- OAM D.T1,C=DDP OUTPUT 2 WORD ECS ADDRESS
- LDD D.T0
- STM WCS15+1 PLANT PPU MEMORY ADDRESS
- *
- LDM D.T3 NUMBER OF WORDS TO WRITE
- WCS15 OAM **,C=DDP WRITE PPU MEMORY TO ECS
- NJP WCSE2 EXIT IF ERROR
- DCN C=DDP,40B
- *
- WCS30 FNC 5004B,C=DDP 5004B = SELECT STATUS
- WAIT INACTIVE,C=DDP,WCSE3
- ACN C=DDP,40B RE-ACTIVATE DDP CHANNEL
- WAIT FULL,C=DDP,WCSE4
- IAN C=DDP,40B INPUT STATUS WORD
- DCN C=DDP,40B
- LPN 11B MASK WRITE/ABORT BITS
- NJN WCS50 IF ERROR OR INCOMPLETE
- IJM WCS41,C=DDP
- WCS40 DCN C=DDP,40B
- WCS41 LJM WRITECSX
- *
- WCS50 LPN 10B
- ZJN WCSE5 IF ECS ABORT
- LJM WCS30 WRITE NOT COMPLETE
- WCSE1 LDN 0 SET ERROR CODE
- UJN WCSERR
- WCSE2 LDN 1
- UJN WCSERR
- WCSE3 LDN 2
- UJN WCSERR
- WCSE4 LDN 3
- UJN WCSERR
- WCSE5 LDN 4
- WCSERR ADC 2RW1 SET CHARACTER STRING FOR ERROR
- STM DDPMSG+14
- LDM WCS40 GET CHANNEL FOR ERROR MESSAGE
- LPN 37B
- STD D.T0
- CALL OTOA
- LDD D.T2
- STM DDPMSG+11
- CALL DFM,DDPMSG ISSUE ERROR MESSAGE TO DAYFILES
- *
- CALL DDPMCP MASTER CLEAR DDP PORT
- LDN 1 MARK ERROR OCCURRED
- LJM WRITECSX
- *
- DDPMSG DIS ,*PIO DDP CHAN ERR C=XX E=XX*
- *
- * /--- BLOCK WRITUEM 00 000 85/04/18 16.43
- *
- * WRITE UEM DIRECTLY ON 800-SERIES MACHINES
- *
- WCS60 SRD D.RSAV SAVE CURRENT (R)
- * CONVERT COUNT FROM PPU WORDS TO CPU WORDS
- LDD T0
- STM T0SAV
- LDD T2
- STM T2SAV
- LDD D.T3 (A) = NUMBER OF PPU WORDS
- STM D.T3S
- RJM DV5 CONVERT TO CPU WORDS
- STD D.T3 (D.T3) = NUMBER OF CPU WORDS
- * PLANT PP ADDRESS THE CM WORDS ARE TO BE
- * WRITTEN FROM
- LDD D.T0 (A) = PP MEMORY ADDRESS TO USE
- STM WCS20 PLANT PP MEMORY ADDRESS
- * FORM PART OF EM ADDRESS IN (R)
- LDD D.T1 (A) = UPPER PART OF EM ADDRESS
- SHN -6 (A) = BITS 23 - 18 OF EM ADDR
- STD T1
- LDD D.T1
- SHN 6 (A) = BITS 17 - 12 OF EM ADDR
- STD T2
- LRD T1 (R) = BITS 23 - 12 OF EM ADDR
- * FORM THE REST OF THE EM ADDRESS IN (A)
- LDD D.T2 (A) = LOWER PART OF EM ADDRESS
- LMC R.USE SET BIT TO USE (R) IN ADDR CALC
- * WRITE EM
- CWM **,D.T3
- WCS20 EQU *-1 LOCATION TO PLANT PP ADDR INTO
- * DONE.
- LRD D.RSAV RESTORE OLD (R)
- LDM T0SAV
- STD T0
- LDM T2SAV
- STD T2
- LDM D.T3S
- STD D.T3
- LDN 0 MARK NO ERROR OCCURRED
- * RETURN
- LJM WRITECSX
- T0SAV BSSZ 1
- T2SAV BSSZ 1
- D.T3S BSSZ 1
- TITLE -DDPMCP- MASTER CLEAR DDP PORT
- *
- *
- *
- * -DDPMCP- MASTER CLEAR DDP PORT
- *
- DDPMCP SUBR
- IJM DMC20,C=DDP
- DCN C=DDP,40B INSURE CHANNEL INACTIVE
- *
- DMC20 FNC 5010B,C=DDP 5010B = MASTER CLEAR PORT
- WAIT EMPTY,C=DDP,DMC22
- DMC22 WAIT INACTIVE,C=DDP,DMC30
- *
- DMC30 IJM DMC40,C=DDP CHECK IF CHANNEL INACTIVE
- DCN C=DDP,40B DISCONNECT DDP CHANNEL
- DMC40 PSN
- * UJN *+3 IF ECS MODE
- FNC 5404B,C=DDP SELECT ESM MODE
- LJM DDPMCPX
- * /--- BLOCK WRITUEM 00 000 84/11/16 11.05
- *
- *
- * /--- BLOCK STATS 00 000 78/12/20 02.01
- TITLE -STATS- OUTPUT STATISTICS
- *
- *
- *
- * -STATS-
- * OUTPUTS PIO STATISTICS TO ECS BUFFER
- *
- *
- STATS SUBR
- SOM STATCNT CHECK TIME FOR STATISTICS
- PJN STATSX
- LDC 500
- STM STATCNT RESET COUNTER
- LDC STATLTH*5 NUMBER OF PPU WORDS TO WRITE
- STD D.T3 D.T3 = NUMBER PPU WRDS TO WRITE
- LDC STATBUF
- STD D.T0 D.T0 = PPU MEMORY ADDRESS
- LDM ECRA+1 LOAD LOWER PART OF ECS RA
- ADM ECSTX+1 ADD LOWER PART OF ECS REL ADDR
- STD D.T2 D.T2 = LOWER ECS ADDRESS
- SHN -12
- ADM ECRA ADD UPPER PART OF ECS RA
- ADM ECSTX ADD UPPER PART OF ECS REL ADDR
- STD D.T1 D.T1 = UPPER ECS ADDRESS
- CALL WRITECS WRITE STATS TO ECS
- UJN STATSX
- *
- *
- * /--- BLOCK OUTNET 00 000 81/04/21 20.49
- TITLE -OUTNET- OUTPUT TERMINAL WORD
- *
- *
- *
- * -OUTNET-
- * OUTPUTS A SINGLE TERMINAL WORD FROM THE TOP THREE
- * BYTES OF *CMBUFF*
- *
- * ON EXIT - A = 0 = DATA SENT SUCCESSFULLY
- * -1 = DATA COULD NOT BE SENT
- *
- *
- OUTNET SUBR
- IJM OUTN10,O=NIU
- DCN O=NIU DEACTIVATE CIU OUTPUT CHANNEL
- *
- OUTN10 FNC 0,O=NIU SELECT OUTPUT CONTROLLER
- WAIT INACTIVE,O=NIU,OUTN90
- ACN O=NIU ACTIVATE CIU OUTPUT CHANNEL
- LDN 3 TERMINAL WORD = 3 PPU WORDS
- OAM CMBUFF,O=NIU OUTPUT TERMINAL WORD
- WAIT EMPTY,O=NIU,OUTN90
- DCN O=NIU DEACTIVATE CIU CHANNEL
- LDN 0
- OUTN20 LJM OUTNETX
- *
- *
- OUTN90 IJM OUTN91,O=NIU
- DCN O=NIU DEACTIVATE CIU CHANNEL
- *
- OUTN91 LCN 1
- UJN OUTN20
- *
- *
- * /--- BLOCK MESSAG 00 000 78/02/06 11.06
- TITLE -MESSAG- OUTPUT B-DISPLAY MESSAGE
- *
- *
- *
- * -MESSAG-
- * OUTPUTS B-DISPLAY MESSAGE
- *
- * ON ENTRY - A = ADDRESS OF MESSAGE
- *
- *
- MESSAG SUBR
- STM MSG10+1 PLANT PPU ADDRESS OF MESSAGE
- LDN 5
- STD T1 SET LENGTH OF MESSAGE
- LDD CP LOAD CONTROL POINT AREA ADDRESS
- ADN MS1W ADD BIAS TO MESSAGE AREA
- *
- MSG10 CWM **,T1 WRITE MESSAGE TO CP AREA
- UJN MESSAGX
- *
- *
- * /--- BLOCK OTOA 00 000 75/05/21 23.50
- TITLE -OTOA- CONVERT OCTAL TO ALPHA
- *
- *
- *
- * -OTOA-
- * CONVERT 4 DIGIT OCTAL NUMBER TO DISPLAY CODE
- *
- * ON ENTRY - D.T0 = OCTAL NUMBER TO CONVERT
- *
- * ON RETURN - D.T1 = FIRST TWO ALPHA CHARACTERS
- * D.T2 = SECOND TWO CHARACTERS
- *
- *
- OTOA SUBR
- LDD D.T0 LOAD OCTAL TO CONVERT
- SHN -9 POSITION UPPER OCTAL DIGIT
- ADN 33B CONVERT TO ALPHA
- SHN 6
- STD D.T1
- LDD D.T0 LOAD OCTAL TO CONVERT
- SHN -6 POSITION SECOND OCTAL DIGIT
- LPN 7
- ADN 33B CONVERT TO ALPHA
- RAM D.T1
- LDD D.T0 LOAD OCTAL TO CONVERT
- SHN -3 POSITION THIRD OCTAL DIGIT
- LPN 7
- ADN 33B CONVERT TO ALPHA
- SHN 6
- STD D.T2
- LDD D.T0 LOAD OCTAL TO CONVERT
- LPN 7 MASK OFF FOURTH DIGIT
- ADN 33B
- RAM D.T2
- UJN OTOAX
- *
- *
- * /--- BLOCK CEQUIP 00 000 81/04/30 15.09
- TITLE -CEQUIP- CLEAR EQUIPMENT
- *
- *
- *
- * -CEQUIP-
- * CLEARS EQUIPMENT SELECTIONS - DE-SELECTS CIU
- * INPUT AND OUTPUT AND MASTER CLEARS DDP PORT
- *
- *
- CEQUIP SUBR
- LDM DDP CHECK IF DDP ASSIGNED
- ZJN CEQ200
- IJM CEQ110,C=DDP
- DCN C=DDP,40B DE-ACTIVATE DDP CHANNEL
- *
- CEQ110 FNC 5010B,C=DDP MASTER CLEAR DDP
- IJM CEQ200,C=DDP
- DELAY 30
- IJM CEQ200,C=DDP
- DCN C=DDP,40B DE-ACTIVATE DDP CHANNEL
- *
- CEQ200 LDM CIUEQ CHECK IF CIU AVAILABLE
- ZJN CEQUIPX
- IJM CEQ210,I=NIU
- DCN I=NIU DE-ACTIVATE CIU INPUT CHANNEL
- *
- CEQ210 FNC 0B,I=NIU DE-SELECT CIU INPUT
- IJM CEQ300,I=NIU
- DELAY 30
- IJM CEQ300,I=NIU
- DCN I=NIU DE-ACTIVATE CIU INPUT CHANNEL
- *
- CEQ300 IJM CEQ310,O=NIU
- DCN O=NIU DE-ACTIVATE CIU OUTPUT CHANNEL
- *
- CEQ310 FNC 7000B,O=NIU DE-SELECT CIU OUTPUT
- IJM CEQ400,O=NIU
- DELAY 30
- IJM CEQ400,O=NIU
- DCN O=NIU DE-ACTIVATE CIU OUTPUT CHANNEL
- CEQ400 LJM CEQUIPX
- *
- * /--- BLOCK ALLOUT 00 000 81/04/30 15.09
- TITLE -ALLOUT- SEND MESSAGE TO ALL TERMINALS
- *
- *
- *
- * -ALLOUT-
- * SEND A MESSAGE TO ALL TERMINALS
- *
- * ON ENTRY - A = ADDRESS OF MESSAGE
- *
- *
- ALLOUT SUBR
- STD BASE ADDRESS OF MESSAGE
- STD ADDRESS
- LDM CIUEQ CHECK CIU AVAILABLE FLAG
- ZJN ALLOUTX
- *
- * FIND THE LENGTH OF THE MESSAGE
- *
- LDN 0 INITIALIZE
- STD LENGTH
- STD ILOOP
- ALLL LDI ADDRESS GET THE NEXT 12 BIT PARCEL
- ZJP ALLA ZERO WORD MARKS END.
- AOD LENGTH
- AOD ADDRESS
- UJP ALLL
- *
- * BEGIN OUTER LOOP OVER THE MESSAGE LENGTH
- *
- ALLA LDD ILOOP
- SBD LENGTH ILOOP-LENGTH
- SBN NCLASSES MINUS 2**NN
- PJN ALLOUTX IF ILOOP GT MESSAGE LTH, DONE
- *
- * BEGIN INNER LOOP OVER STATIONS
- *
- LDC 1008 NUMBER OF REAL STATIONS
- STD STATION HIGHEST STATION NUM IS ONE LESS
- *
- ALLB SOD STATION INNER LOOP
- ZJP ALLC END TEST
- SCN NN CLEAR NN BITS
- LMC -0 COMPLEMENT
- ADD STATION CLASS=MOD(STATN,2**NN)
- SHN 1 2*CLASS
- LMC -0 -2*CLASS
- ADD ILOOP ILOOP-2*CLASS
- STD ADDRESS RELATIVE ADDRESS, THIS CLASS
- MJN ALLB IF ADDRESS LT 0, LOOP
- *
- SBD LENGTH
- PJN ALLB IF ADDRESS GE LENGTH, LOOP
- * /--- BLOCK ALLOUT 00 000 81/04/21 20.51
- *
- LDD BASE START OF MESSAGE
- RAD ADDRESS CORRECT ADDRESS BY BASE
- LDI ADDRESS
- STM CMBUFF FIRST PART
- AOD ADDRESS
- LDI ADDRESS
- STM CMBUFF+1 SECOND PART
- LDD STATION
- STM CMBUFF+2 STATION NUMBER
- CALL MSGOUT
- PJP ALLB IF NO ERROR, LOOP
- UJP ALLD ERROR--COULD NOT GET IT OUT
- *
- * END OF LOOP--PUT OUT END OF FRAME
- *
- ALLC LDN 2
- RAD ILOOP ILOOP=ILOOP+2 (PPU WD COUNTER)
- LDC 4000B SET START DATA BIT
- STM CMBUFF
- LDN 0
- STM CMBUFF+1
- LDC 2000B END OF FRAME BIT
- STM CMBUFF+2 SEND TO STATION 0
- CALL MSGOUT
- PJP ALLA IF NO ERROR, NEXT OUTER LOOP
- *
- * THE CIU DOES NOT REPLY--PUT OUT MESSAGE AND RETURN
- *
- ALLD CALL DFM,NIUDN *(PIO) NO REPLY FROM CIU*
- LJM ALLOUTX
- *
- NIUDN DIS ,*(PIO) NO REPLY FROM CIU*
- *
- * /--- BLOCK MSGOUT 00 000 81/04/21 20.52
- EJECT
- *
- *
- *
- * -MSGOUT-
- * SUBROUTINE USED BY -ALLOUT- TO SEND TO A TERMINAL
- *
- * ON EXIT - A = POSITIVE IF MESSAGE SENT
- * NEGATIVE IF CIU WOULD NOT ACCEPT
- *
- *
- MSGOUT SUBR
- LDC 4000 INITIALIZE WAIT COUNTER
- STM II
- *
- MO100 CALL OUTNET
- PJN MSGOUTX IF MESSAGE SENT
- SOM II
- PJP MO100 CONTINUE TRYING
- UJN MSGOUTX
- *
- *
- * /--- BLOCK OFFMSG 00 000 75/07/07 22.25
- TITLE OFFMSG *PLATO OFF* MESSAGE
- *
- *
- OFFMSG DATA 4160B,0070B CLEAR ABORT / BLOCK CHECK OFF
- DATA 4500B,1000B LOAD SSL LAMP OFF, SHUTTER SHUT
- DATA 4140B,0064B LOAD CHAR MODE (MODE REWRITE)
- DATA 4200B,0420B LOAD X=136 (COLUMN 18)
- DATA 4201B,1600B LOAD Y=448 (LINE 4)
- DATA 5777B,1640B (UNCOVER)(UNCOVER)(20)
- DATA 5555B,1332B (SPACE)(SPACE)(SPACE)
- DATA 5555B,1332B (SPACE)(SPACE)(SPACE)
- DATA 5555B,1332B (SPACE)(SPACE)(SPACE)
- DATA 5555B,1332B (SPACE)(SPACE)(SPACE)
- DATA 5555B,1332B (SPACE)(SPACE)(SPACE)
- DATA 5555B,1332B (SPACE)(SPACE)(SPACE)
- DATA 5555B,1332B (SPACE)(SPACE)(SPACE)
- DATA 5555B,1332B (SPACE)(SPACE)(SPACE)
- DATA 5555B,1332B (SPACE)(SPACE)(SPACE)
- DATA 5555B,1332B (SPACE)(SPACE)(SPACE)
- DATA 4160B,0070B CLEAR ABORT / BLOCK CHECK OFF
- DATA 4140B,0064B LOAD CHAR MODE (MODE REWRITE)
- DATA 4200B,0420B LOAD X=136 (COLUMN 18)
- DATA 4201B,1540B LOAD Y=432 (LINE 5)
- DATA 5777B,1640B (UNCOVER)(UNCOVER)(20)
- DATA 5555B,1332B (SPACE)(SPACE)(SPACE)
- DATA 5555B,1332B (SPACE)(SPACE)(SPACE)
- DATA 5555B,1332B (SPACE)(SPACE)(SPACE)
- DATA 5552B,0030B (SPACE)PL
- DATA 5012B,1036B ATO
- DATA 5555B,1236B (SPACE)(SPACE)O
- DATA 5060B,1532B FF(SPACE)
- DATA 5555B,1332B (SPACE)(SPACE)(SPACE)
- DATA 5555B,1332B (SPACE)(SPACE)(SPACE)
- DATA 5555B,1332B (SPACE)(SPACE)(SPACE)
- DATA 4160B,0070B CLEAR ABORT / BLOCK CHECK OFF
- DATA 4140B,0064B LOAD CHAR MODE (MODE REWRITE)
- DATA 4200B,0420B LOAD X=136 (COLUMN 18)
- DATA 4201B,1500B LOAD Y=416 (LINE 6)
- DATA 5777B,1640B (UNCOVER)(UNCOVER)(20)
- DATA 5555B,1332B (SPACE)(SPACE)(SPACE)
- DATA 5555B,1332B (SPACE)(SPACE)(SPACE)
- DATA 5555B,1332B (SPACE)(SPACE)(SPACE)
- DATA 5555B,1332B (SPACE)(SPACE)(SPACE)
- DATA 5555B,1332B (SPACE)(SPACE)(SPACE)
- DATA 5555B,1332B (SPACE)(SPACE)(SPACE)
- DATA 5555B,1332B (SPACE)(SPACE)(SPACE)
- DATA 5555B,1332B (SPACE)(SPACE)(SPACE)
- DATA 5555B,1332B (SPACE)(SPACE)(SPACE)
- DATA 5555B,1332B (SPACE)(SPACE)(SPACE)
- DATA 4160B,0070B CLEAR ABORT / BLOCK CHECK OFF
- DATA 4140B,0024B LOAD LINE MODE
- DATA 5570B,1640B LINER(376,464)
- DATA 5210B,1640B LINER(136,464)
- DATA 5210B,1500B LINER(136,416)
- DATA 5570B,1500B LINER(376,416)
- DATA 0 END OF MESSAGE
- *
- *
- * /--- BLOCK ONMSG 00 000 76/12/06 02.03
- *
- ONMSG DATA 4160B,0070B CLEAR ABORT / BLOCK CHECK OFF
- DATA 4500B,1000B LOAD SSL LAMP OFF, SHUTTER SHUT
- DATA 4140B,0076B LOAD CHAR MODE (WRITE, FULL SCREEN ERASE)
- DATA 4200B LOAD X
- ONMSX DATA 400B X!0=128
- DATA 4201B LOAD Y
- ONMSY DATA 400B Y!0=128
- DATA 5772B,0240B (UNCOVER)(21)'P
- DATA 5772B,0044B (UNCOVER)(20)R
- DATA 5052B,0646B ESS
- DATA 5555B,1376B (SPACE)(SPACE)(UNCOVER)
- DATA 5211B,1412B (21)NE
- DATA 5302B,1176B XT(UNCOVER)
- DATA 5205B,1332B (20)(SPACE)(SPACE)
- DATA 5241B,1732B TO(SPACE)
- DATA 5020B,1216B BEG
- DATA 5111B,1576B IN(UNCOVER)
- DATA 5207B,1640B (20)(UNCOVER)(20)
- DATA 0 END OF MESSAGE
- *
- * /--- BLOCK DROP 00 000 81/04/30 15.11
- TITLE -DROP- DROP PPU
- *
- *
- *
- * -DROP-
- * RELEASE ALL EQUIPMENT/CHANNELS ASSIGNED AND
- * DROP PPU PROGRAM
- *
- *
- DROP CALL CEQUIP DE-SELECT DDP/CIU
- LDM DDP CHECK IF DDP ASSIGNED
- ZJN DROP200
- *
- * DROP DDP PORT CHANNEL
- *
- LDM /C=DDP/C=DDP
- DCHAN
- *
- * DROP CIU EQUIPMENT/CHANNELS
- *
- DROP200 LDM CIUEQ CHECK IF CIU ASSIGNED
- ZJN DROP400
- LDM /I=NIU/I=NIU
- DCHAN
- LDM /O=NIU/O=NIU
- DCHAN
- LDN ZERL
- CRD CM PRE-CLEAR ARGUMENTS
- LDM CIUEQ SET CIU EQ (EST ORDINAL)
- STD CM+1
- MONITOR DEQM DROP CIU EQUIPMENT
- *
- DROP400 CALL DFM,DMSG1 OUTPUT DAYFILE MESSAGE
- MONITOR DPPM DROP PPU
- UJP PPR
- *
- *
- DMSG1 DIS ,*(PIO) PPU DROPPED*
- *
- *
- * /--- BLOCK STORAGE 00 000 81/09/02 14.08
- TITLE STORAGE DEFINITIONS
- *
- *
- *CALL PLAPDNM
- *CALL PLAPPLN
- *
- *
- C=DDP TABLE CHANNEL DDP CHANNEL
- O=NIU TABLE CHANNEL CIU OUTPUT CHANNEL
- I=NIU TABLE CHANNEL CIU INPUT CHANNEL
- *
- *
- ECRA BSS 2 ECS REFERENCE ADDRESS
- *
- PARAMS BSSZ 5*NPARAMS
- ECSSWX EQU PARAMS+1 ECS ADDR OF REQUEST SWITCH/LIST
- FKBFADD EQU ECSSWX+2 REL ADDR OF FASTKEY REQUEST BUF
- PSITES EQU PARAMS+9 NUMBER OF SITES
- SCIMADD EQU PSITES+2 REL ADDR OF PIO/SCIM BUFFER
- KEYBADD EQU SCIMADD+2 REL ADDR OF KEY BUFFERS
- OUTPNT EQU KEYBADD+5 REL ADDR OF FRAME COUNTER
- OUTTAB EQU OUTPNT+5 REL ADDR OF FRAME LENGTH TABLE
- OUTBUFF EQU OUTTAB+5 REL ADDR OF FRAME BUFFERS
- ECSTX EQU OUTBUFF+3 REL ADDR OF ECS STATS BUFFER
- JFILL EQU ECSTX+7 UNUSED
- FRAMLTH EQU JFILL+6 MAXIMUM LENGTH OF FRAME
- ***** DONT REMOVE ARGUMENTS WITHOUT CHANGING NEXT CODE
- CIUNUM EQU PARAMS+5*9 10 THE ARG. CIU NUMBER
- PLATSIT EQU CIUNUM+1 FIRST PLATO SITE
- NUMSIT EQU PLATSIT+1 NUMBER OF SITES
- PHYSIT EQU NUMSIT+1 FIRST SITE OF CIU TO BE USED
- *
- *
- PSTATS TABLE CM PPU STATUS WORD
- STATSW TABLE CM CONTROL POINT STATUS WORD
- *
- PSTATX BSSZ 2 REL ADDR OF PPU STATUS WORD
- *
- ILAST BSS 1
- IBIAS BSS 2
- II BSS 1
- JJ BSS 1
- KOCNT BSS 1
- PINIT DATA 0
- FICNT DATA 0
- *
- NFRAME BSSZ 5 FRAME COUNTER
- IFRAME DATA 0 INDEX TO CURRENT FRAME
- FBIAS DATA 0 BIAS TO CURRENT FRAME
- DATA 0
- ECSBUFF BSS 10 BUFFER FOR ECS READ/WRITE
- FKYBUFF BSS 10 BUFFER FOR ECS READ/WRITE
- STRBUFF BSS 5 BUFFER FOR ECS READ/WRITE
- CMBUFF BSS 5 BUFFER FOR CM READ/WRITE
- *
- NOOP0 VFD 12/4000B SPECIAL NO-OP FOR STATION 0
- VFD 12/0
- VFD 12/0
- *
- * /--- BLOCK STORAGE 00 000 81/09/08 01.00
- *
- CIUEQ DATA 0 CIU EST ORDINAL
- DDP DATA 0 DDP EST ORDINAL
- *
- CIC DATA 0 CIU INPUT CHANNEL NUMBER
- COC DATA 0 CIU OUTPUT CHANNEL NUMBER
- *
- *
- * NON-OVERLAYED INITIALIZATIONS
- *
- INITIAL SUBR
- RJM /PRS/INITIAL
- * ZERO BUFFERS OVERLAYED BY INITIALIZATION CODE
- LDC ZERLTH
- STD D.T0
- INIT1 LDN 0
- STM PPBUFF,D.T0
- SOD D.T0
- PJN INIT1
- * SET OVERLAYED CONSTANTS
- LDK PPBLTH
- STM PENDTST
- LDK KEYLTH-2
- STM KENDTST
- UJN INITIALX
- *
- *
- * FOLLOWING BUFFERS ARE OVERLAYED BY PRESET ROUTINE.
- * NON-OVERLAYED INITIALIZATIONS ABOVE ZERO THESE
- * BUFFERS BEFORE THEY ARE USED.
- *
- *
- PPBUFF EQU * TERMINAL OUTPUT BUFFER
- KEYBUFF EQU PPBUFF+5*PPBLTH+5 KEY INPUT BUFFER
- *
- PENDTST EQU KEYBUFF+KEYLTH
- KENDTST EQU PENDTST+1
- *
- SFCNT EQU KENDTST+1
- STATCNT EQU SFCNT+1
- *
- STATBUF EQU STATCNT+1
- * FIRST 2 CM WORDS = STATISTICS
- * NEXT 2 = BAD STATION LIST
- IBAD EQU STATBUF STATIONS FLOODING KEYS
- KYRESP EQU IBAD+1 NO INPUT RESPONSE
- OUTRESP EQU KYRESP+1 NO OUTPUT RESPONSE
- KYOFLOW EQU OUTRESP+1 PPU BUFFER OVERFLOW
- KYIGN EQU KYOFLOW+1 KEYS IGNORED
- KYSEQ EQU KYIGN+1 KEY DATA WORDS OUT OF SEQUENCE
- KYSTATN EQU KYSEQ+1 KEY STATION ILLEGAL
- KYIGNT EQU KYSTATN+1 KEYS IGNORED IN TEST MODE
- FKSTAT EQU KYIGNT+1 FASTKEY STATS
- MXKBIDX EQU FKSTAT+1 MAXIMUM KEYBUFFER INDEX
- BADLIST EQU STATBUF+10 BAD STATION LIST
- *
- SCIMBUF EQU STATBUF+5*STATLTH PIO/SCIM COMM BUFFER
- TESTLST EQU SCIMBUF+SCIMLTH*5 LIST OF STATIONS WITH
- * 1--4 KEY BUFFER OVERFLOWS
- CNTLST EQU TESTLST+BADLTH*2 COUNT OF OVERFLOWS FOR
- * STATIONS ON TEST LIST
- *
- BADCNT EQU CNTLST+BADLTH*2
- ITEST EQU BADCNT+1 COUNT OF STATIONS ON TEST LIST
- *
- ZERLTH EQU ITEST-PPBUFF LENGTH TO BE ZEROED
- *
- * CHECK FOR BUFFERS OVERFLOWING PPU
- *
- ERRPL ITEST+1-7770B BUFFERS OVERFLOW PPU
- *
- * /--- BLOCK INITIAL 00 000 87/02/24 12.54
- TITLE -INITIAL- INITIALIZATIONS
- QUAL PRS
- ORG PPBUFF
- *
- *
- *
- * -INITIAL-
- * ONE TIME ONLY INITIALIZATIONS
- *
- *
- INITIAL SUBR
- .NOSV2 IFGE OSLEV,562D NOS V2
- LDK MABL READ MACHINE ATTRIBUTES
- CRD CM
- LDD CM+1 CPU ATTRIBUTES
- SHN -13B GET 800 SERIES BIT
- LMN 1
- .NOSV2 ELSE
- LDC CPUL
- CRD CM
- LDD CM+3
- SHN -10B
- LPN 1
- .NOSV2 ENDIF
- STD A170
- *
- * INITIALIZE VARIABLES
- *
- LDN 0
- STD KEYII
- STD KEYOI
- *
- * GET ADDR OF CONTROL POINT STATUS WORD (STSW)
- *
- INIT130 LDD CP CONTROL POINT ADDRESS WORD
- ADN STSW FORM ADDRESS OF STATUS WORD
- CRD D.T0 READ CONTROL POINT STATUS
- LDD D.T0+C.CPEF
- NJP DROP DROP PPU IF ERROR
- *
- * WAIT PLATO IN RECALL BEFORE READING ECS ADDRESS
- *
- LDD D.T0+C.CPSTAT
- .NOSV2 IFLT OSLEV,562D NOS V1
- LPC 3000B CHECK PLATO IN RECALL (I OR X)
- NJN INIT135
- .NOSV2 ELSE NOS V2
- SHN -11B CHECK FOR *I* STATUS (6)
- SBN 5
- PJN INIT135 IF IN AUTO-RECALL
- .NOSV2 ENDIF
- DELAY 1000 IDLE FOR 1 MILLISECOND
- UJP INIT130
- * /--- BLOCK INITIAL 00 000 87/02/24 13.00
- *
- * READ ECS REFERENCE ADDRESS FROM EXCHANGE PACKAGE
- *
- INIT135 LDD CP ADDRESS OF CONTROL POINT AREA
- ADN 4 BIAS TO RAX
- CRD D.T0
- .NOS252 IFGE OSLEV,678D
- LDK MEFL
- CRD CM
- LDD CM+2
- SHN 6+4 EXTENDED ADDRESSING BIT
- MJN INIT137 IF EXTENDED ADDRESSING MODE
- .NOS252 ELSE
- RJM GEC GET ECS MODE
- NJN INIT137 IF ESM MODE
- .NOS252 ENDIF
- LDD D.T0 SET UPPER PART OF ECS RA
- LPC 777B
- STM ECRA
- LDD D.T0+1 SET LOWER PART OF ECS RA
- STM ECRA+1
- .NOS252 IFGE OSLEV,678D
- UJN INIT138
- .NOS252 ELSE
- LDC 0303B UJN *+3
- STM DMC40 NO-OP SELECT ESM MODE
- UJN INIT140
- .NOS252 ENDIF
- INIT137 LDD D.T0
- LPN 77B CLEAR FLAG BITS
- SHN 12
- LMD D.T1
- SHN 12
- STM ECRA SAVE UPPER PART OF ECS RA
- SHN -6 POSITION LOWER PART OF ESM RA
- SCN 77B
- STM ECRA+1 SAVE LOWER PART OF ECS RA
- .NOS252 IFGE OSLEV,678D
- * SET ECS/ESM MODE
- INIT138 RJM GEC GET ECS MODE
- NJN INIT140 IF ESM MODE
- LDC 0303B UJN *+3
- STM DMC40 NO-OP SELECT ESM MODE
- .NOS252 ENDIF
- *
- * PLANT REFERENCES TO CONTROL POINT STATUS WORD
- *
- INIT140 LDM II PLANT REFERENCES TO STATUS WORD
- PLANT CM,STATSW
- *
- * /--- BLOCK INITIAL 00 000 81/04/28 14.28
- *
- * GET ADDR OF PPU STATUS WORD AND READ PARAMETERS
- * WHICH FOLLOW TO PPU MEMORY
- *
- LDD IR+3 SET UPPER PART OF REL ARGUMENT
- LPN 37B
- STM PSTATX
- LDD IR+4
- STM PSTATX+1 SET LOWER PART OF REL ARGUMENT
- LDD IR+3
- LPN 37B FORM ADDRESS OF ARGUMENT
- SHN 12
- ADD IR+4
- RJM ABS CONVERT TO ABSOLUTE
- ZJP DROP
- PLANT CM,PSTATS PLANT REFERENCES TO STATUS WORD
- LDM PSTATX LOAD UPPER PART OF REL ADDRESS
- SHN 6
- ADD RA ADD CM REFERENCE ADDRESS
- SHN 6
- ADM PSTATX+1 ATTACH LOWER 12 BITS
- PLANT CM,IPSTAT PLANT FOR INITIALIZATIONS
- LDC NPARAMS
- STD D.T0 SET NUMBER OF WORDS TO READ
- LOADCM IPSTAT
- ADN 1
- CRM PARAMS,D.T0 READ PARAMETER VECTOR
- *
- * /--- BLOCK INITIAL 00 000 87/02/11 12.10
- *
- * RESERVE DISTRIBUTIVE DATA PATH CHANNEL
- *
- INI200 BSS 0
- LDD A170
- NJP INI201 IF 800 MACHINE
- LDC 2RD2 DDP EQUIPMENT NAME
- RJM EQN
- MJP NODDP EXIT IF NO DDP AVAILABLE
- STM DDP
- .NOS252 IFGE OSLEV,678D
- MONITOR RCHM
- .NOS252 ELSE
- LDN 0 CLEAR ADDITIONAL CHANNELS WORD
- STD CM+2
- LDD CM+1 LOAD DDP PORT CHANNEL NUMBERS
- RCHAN
- .NOS252 ENDIF
- LDD CM+1 LOAD CHANNEL ACTUALLY ASSIGNED
- PLANT CHANNEL,C=DDP
- CALL DDPMCP MASTER CLEAR DDP
- CALL DFM,IMSG1 OUTPUT DAYFILE MESSAGE
- *
- * SEARCH EQUIPMENT TABLE FOR SPECIFIED CIU
- *
- INI201 LDC 2RCI CI = CIU EQUIPMENT NAME
- STD T3 T3 = EQUIPMENT TYPE NAME
- LDN ESTP
- CRD CM READ POINTER TO EST
- .NOS22 IFGE OSLEV,594D NOS 2.2
- LDD CM+2
- STD T2 (T2) = LAST EST ORDINAL + 1
- LDN 0
- STD T4 (T4) = CURRENT EST ORDINAL
- INIT230 SFA EST,T4 (A) = FWA OF CURRENT EST ENTRY
- ADK EQDE OFFSET TO WORD WITH DEVICE TYPE
- .NOS22 ELSE NOS 2.1
- LDD CM LOAD FWA OF EST
- STD T1 T1 = FWA EST
- STD T4 T4 = INDEX IN EST
- LDD CM+1 LOAD LWA+1 OF EST
- STD T2 T2 = LWA+1 EST
- *
- * /--- BLOCK INITIAL 00 000 87/02/10 10.56
- *
- INIT230 LDD T4 LOAD POINTER TO NEXT EST ENTRY
- .NOS22 ENDIF
- CRD CM
- LDD CM+3 LOAD EQUIPMENT TYPE CODE
- SBD T3
- .NOS251 IFGE OSLEV,664D
- NJP INIT235 IF DEVICE TYPE DOES NOT MATCH
- LDD CM
- LPN 3
- ZJP INIT240 IF DEVICE IS AVAILABLE
- .NOS251 ELSE
- ZJP INIT240 IF DEVICE TYPE MATCHES
- .NOS251 ENDIF
- *
- INIT235 AOD T4 ADVANCE TABLE POINTER
- SBD T2 CHECK FOR END OF TABLE
- NJP INIT230
- UJP INIT350
- *
- INIT240 LDD CM+4 LOAD UNIT NUMBER WORD
- LPC 77B MASK OFF UNIT NUMBER
- SBM CIUNUM
- NJP INIT235 CHECK IF SPECIFIED CIU
- .NOSV2 IFGE OSLEV,562D NOS V2
- .NOS22 IFGE OSLEV,594D NOS 2.2
- SFA EST,T4 (A) = FWA OF EST ENTRY
- ADK EQAE OFFSET TO WORD WITH EJT ORDINAL
- CRD D.T0
- .NOS22 ELSE NOS 2.1
- LDD T4 (A) = EST ENTRY ADDRESS
- ADD HN OFFSET TO EAT
- CRD D.T0
- .NOS22 ENDIF
- LDD D.T0+4 (A) = EJT ORDINAL
- .NOSV2 ELSE NOS V1
- LDD CM
- LPC 37B MASK OFF CONTROL PT ASSIGNMENT
- .NOSV2 ENDIF
- NJP DROP JUMP IF CIU ALREADY RESERVED
- *
- * OBTAIN CIU CHANNEL/EQUIPMENT NUMBERS
- *
- LDD CM+1
- LPC 77B MASK OFF CIU INPUT CHANNEL
- STM CIC SET CIU INPUT CHANNEL NUMBER
- .NOS252 IFGE OSLEV,678D
- LDD CM+2
- .NOS252 ELSE
- LDD CM+1
- SHN -6 POSITION OUTPUT CHANNEL NUMBER
- .NOS252 ENDIF
- LPC 77B
- STM COC SET CIU OUTPUT CHANNEL NUMBER
- LDD T4 COMPUTE EQUIPMENT ORDINAL
- .NOS21 IFLT OSLEV,594D NOS 2.1 OR PRIOR
- SBD T1
- .NOS21 ENDIF
- STM CIUEQ SET CIU EQUIPMENT
- *
- * /--- BLOCK INITIAL 00 000 81/04/30 15.12
- *
- * RESERVE CIU EQUIPMENT
- *
- LDN ZERL PRE-CLEAR ARGUMENTS
- CRD CM
- .NOS242 IFGE OSLEV,642D
- ERRNZ REQS CODE DEPENDS ON REQS = 0
- .NOS242 ENDIF
- LDM CIUEQ LOAD CIU EQUIPMENT ORDINAL
- STD CM+1
- MONITOR REQM RESERVE CIU EQUIPMENT
- *
- * RESERVE CIU INPUT/OUTPUT CHANNELS
- *
- LDM CIC LOAD CIU INPUT CHANNEL NUMBER
- RCHAN
- LDD CM+1 LOAD CHANNEL ACTUALLY ASSIGNED
- PLANT CHANNEL,I=NIU
- LDM COC LOAD CIU OUTPUT CHANNEL NUMBER
- RCHAN
- LDD CM+1 LOAD CHANNEL ACTUALLY ASSIGNED
- PLANT CHANNEL,O=NIU
- CALL DFM,IMSG2 OUTPUT DAYFILE MESSAGE
- *
- * UPDATE *PIO* CM STATUS WORD
- *
- INIT350 LOADCM IPSTAT GET ADDRESS OF STATUS WORD
- CRD D.T0 READ PPU STATUS WORD
- LDN 1 SET COMPLETION BIT OF STATUS WD
- STD D.T0+4
- LDN 0 PRE-SET = NO EQUIPMENT RESERVED
- STD D.T0
- LDM CIUEQ CHECK IF CIU AVAILABLE
- ZJP INIT354 JUMP IF NOT
- LDN 3 MARK CIU RESERVED
- STD D.T0
- *
- * SET BIT 0 OF PIO PARAMETER WORD TO INDICATE
- * ALL INITIALIZATIONS DONE.
- *
- INIT354 LOADCM IPSTAT GET ADDRESS OF STATUS WORD
- CWD D.T0 RE-WRITE STATUS WORD
- *
- * /--- BLOCK INITIAL 00 000 81/04/21 20.57
- *
- * SET UP *PRESS -NEXT- TO BEGIN* MESSAGE
- *
- INIT360 IAN 14B INPUT REAL TIME CLOCK
- SHN -6
- LPC 77B MASK TO RANGE OF 64
- SHN 2 SHIFT TO RANGE OF 128
- RAM ONMSX
- IAN 14B INPUT REAL TIME CLOCK
- LPC 77B MASK TO RANGE OF 64
- SHN 3 SHIFT TO RANGE OF 256
- RAM ONMSY
- CALL CEQUIP DE-SELECT CIU/DDP
- *
- LDM NUMSIT
- SHN 5
- STD NS SET UP NUMBER OF STATIONS
- LDM PHYSIT
- SHN 5
- STD FS FIRST LEGAL PHYSICAL STATION
- LDD NS
- ADD FS
- LMC -0
- STM .NTERM1 SET MAX PHYSICAL STATION NUMBER
- LDM PLATSIT CALCULATE STATION BIAS
- SBM PHYSIT
- SHN 5
- STD CB SET UP CIU BIAS
- *
- * /--- BLOCK INITIAL 00 000 78/10/22 11.57
- *
- * READ INITIAL VALUE OF FRAME COUNTER
- *
- LDC NFRAME
- STD D.T0 D.T0 = PPU MEMORY ADDRESS
- LDM ECRA+1 COMPUTE ECS ADDR OF FRAME COUNT
- ADM OUTPNT+1
- STD D.T2 D.T2 = LOWER PART OF ECS ADDR
- SHN -12
- ADM ECRA
- ADM OUTPNT
- STD D.T1 D.T1 = UPPER PART OF ECS ADDR
- LDN 5
- STD D.T3 D.T3 = NUMBER WORDS TO WRITE
- CALL READECS READ FRAME COUNTER FROM ECS
- LJM INITIALX
- NODDP LOADCM IPSTAT SET COMPLETE BIT
- CRD D.T0
- LDN 1
- STD D.T0+4
- LDN 0 SET NO EQUIPMENT RESERVED
- STD D.T0
- LOADCM IPSTAT
- CWD D.T0
- CALL DFM,NODDPA ISSUE DAYFILE MESSAGE
- LJM DROP
- NODDPA DIS ,*(PIO) NO DDP/LSP AVAILABLE*
- GEC SPACE 5,11
- ** GEC - GET ECS MODE
- *
- * SEARCH FOR MASTOR,S CONTROL POINT AND READ
- * ECS CONTROL WORD
- *
- * EXIT - (A) - 0 IF ECS MODE
- * 1 IF ECM MODE
- GEC SUBR
- .NOSV2 IFGE OSLEV,562D (NOS VERSION 2)
- RJM IFP INITIALIZATION FOR SFA MACRO
- .NOSV2 ENDIF
- LDK NCPL ADDR OF LOW-CORE WORD WITH NCP
- CRD CM
- .NOSV2 IFGE OSLEV,562D NOS V2
- LDD CM+1
- .NOSV2 ELSE NOS V1
- LDD CM+3 (A) = NUMBER OF CONTROL POINTS
- .NOSV2 ENDIF
- STD T1
- GEC1 LDD T1
- SHN 7
- STM MASCPA FWA OF MASTOR-S CP AREA
- ADK JCIW GET SUBSYSTEM ID/QUEUE PRIORITY
- CRD T2
- .NOSV2 IFLT OSLEV,562D NOS V1
- SBK JCIW-JNMW
- CRD CM
- .NOSV2 ELSE NOS V2
- LDD T1 (A) = CONTROL POINT NUMBER
- SHN 7 (A) = CP AREA ADDRESS
- ADK TFSW GET EJT ORDINAL
- CRD CM
- SFA EJT,CM COMPUTE ABS ADDR OF EJT ENTRY
- ADK JSNE ADD WORD OFFSET FOR JSN
- CRD CM (CM - CM+1) = JOB SEQUENCE NAME
- .NOSV2 ENDIF
- LDD CM+1
- SCN 77B
- SHN 6
- LMD CM
- LMC 3RSMA
- ZJN GEC1.1 IF MASTOR
- LJM GEC2 IF NOT MASTOR
- GEC1.1 BSS 0
- .NOSV2 IFLT OSLEV,562D NOS V1
- LDD T2+1 CHECK QUEUE PRIORITY
- ADC -MXPS-1
- MJP GEC2 IF NOT MASTOR
- .NOSV2 ELSE NOS V2
- .NOS23 IFGE OSLEV,617D
- LDD T2+2
- SBK PLSI
- NJP GEC2 IF NOT MASTOR SUBSYSTEM ID
- .NOS23 ELSE
- * /--- BLOCK INITIAL 00 000 89/06/01 15.54
- LDD T2+2 CHECK SUBSYSTEM ID
- SBK PLSI INITIAL PLATO ID
- ZJN GEC1.2 IF PLATO CONTROL POINT
- LDD T2+2
- SBK 7754B
- NJP GEC2 IF NOT PLATO SUBSYSTEM ID
- .NOS23 ENDIF
- .NOSV2 ENDIF
- GEC1.2 BSS 0
- LDN CMCL CHECK IF CP MOVING
- CRD CM
- LDD T1
- .NOS27 IFLT OSLEV,716D NOS2.7.1
- SHN 7
- .NOS27 ENDIF
- LMD CM
- ZJP GEC1 IF MOVING
- *
- * MASTOR(N) LOCATED; READ EXTENDED MEMORY POINTERS.
- *
- .NOSV2 IFGE OSLEV,562D (NOS VERSION 2)
- LDD A170
- ZJN GEC1.3 -- IF CME NOT PRESENT
- LDN 1 CME PRESENT, 800 SERIES
- GEC1.3 BSS 0 ENTER WITH (A) = 0 OR 1
- ADK FLSW OFFSET TO FIELD LENGTH WORDS
- ADM MASCPA PLUS MASTOR CP AREA ADDR
- CRD CM READ APPROPRIATE WORD
- SRD D.RSAV SAVE *R* FROM CALLING CP
- LRD CM+1 LOAD *R* WITH (RA-NFL)/100B
- LDD CM+3 MASTOR(N) RA
- .NOSV2 ELSE (NOS VERSION 1)
- LDM MASCPA MASTOR CP AREA ADDR
- .NOS552 IFGE OSLEV,552D (NOS VERSION 1.4/552)
- ADK FLSW
- .NOS552 ELSE (PRE-NOS VERSION 1.4/552)
- ADK STSW
- .NOS552 ENDIF
- CRD CM READ RA/FL INFORMATION
- LDD A170
- NJN GEC1.3 -- IF AN 800 SERIES MAINFRAME
- LDD CM+3 12-BIT RA ON A NON-800
- UJN GEC1.4 -- ALL THAT'7S NEEDED
- GEC1.3 BSS 0 800-SERIES MAINFRAME
- SRD D.RSAV SAVE CALLING CP'7S *R*
- LRD CM+2 SET *R* TO MASTOR(N)'7S RA
- LDD RA 4000B ON AN 800 SERIES
- .NOSV2 ENDIF
- GEC1.4 BSS 0 ENTER WITH (A) = RA/100B
- SHN 6
- ADN MS.CHKS
- CRM CHKS,TR READ EXTENDED MEMORY POINTERS
- LRD D.RSAV RESTORE CALLING CP'7S *R*
- LDM ECSP (A) = 3/MFORD, 9/WHO CARES
- SHN -9D (A) = MFORD (MAINFRAME ORDINAL)
- STM MFN
- RJM VEP VERIFY EXTENDED MEMORY POINTERS
- LDM ECSP (A) = VARIOUS BIT FLAGS
- LPN 1 (A) = ECS / ESM MODE
- LJM GECX
- GEC2 SOD T1
- NJP GEC1 IF MORE CONTROL POINTS TO SCAN
- * MASTOR NOT FOUND
- CALL DFM,IMSG3 *MASTOR NOT ACTIVE*
- LJM DROP
- *
- *
- IMSG1 DIS ,*(PIO) DDP RESERVED*
- IMSG2 DIS ,*(PIO) CIU RESERVED*
- IMSG3 DIS ,*(PIO) MASTOR NOT ACTIVE*
- *
- IPSTAT TABLE CM
- QUAL$ EQU * SO NO /COMPVEP/ SYMBOLS
- *
- *CALL PLAPVEP
- ** CELLS NEEDED TO READ AND VERIFY THE EXTENDED
- * MEMORY PARAMETERS. THE FIRST 15 WORDS (CHKS - PNW)
- * MUST BE CONTIGUOUS.
- CHKS BSS 5 CHECKSUM FOR POINTERS
- ECSP BSS 1 VARIOUS BIT FLAGS
- MRAX BSS 2 MASTOR RAX
- MFLX BSS 2 MASTOR FLX
- PNW BSS 5 PROGRAM NAME AND NO. OF ARGS
- MASNAM DATA 6LMASTOR
- MFN BSS 1 MASTOR MAINFRAME NUMBER
- MASCPA BSS 1 FWA OF MASTOR-S CP AREA
- *
- *CALL PLAPABS
- *CALL PLAPEQN
- *
- * CHECK LENGTH OF PPU PROGRAM
- *
- QUAL *
- *
- * CHECK IF LITERALS OVERLAP BUFFERS
- *
- ERRNG *-ITEST+1 LITERALS OVERLAP BUFFERS
- USE LITERALS FORCE OUT LITERALS BEFORE TEST
- ERRPL *-7770B FORCE ERROR IF PPU OVERFLOW
- END
plato/source/plaopl/pio.txt ยท Last modified: 2023/08/05 18:54 by Site Administrator