https://github.com/virtualagc/virtualagc
Revision 078c79d8734a9ed2860303a7c1662004284fe853 authored by Ron Burkey on 07 August 2022, 15:04:04 UTC, committed by Ron Burkey on 07 August 2022, 15:04:04 UTC
assembly listings from yaASM and yaLEMAP. Added some debugging messages to 'make install'. Tweaked debugging messages that VirtualAGC embeds in 'simulate'. Verified buildability in Mint 21, 20, 19, 17, and verified buildability using clang in Mint 17.
1 parent 6bb1acc
Tip revision: 078c79d8734a9ed2860303a7c1662004284fe853 authored by Ron Burkey on 07 August 2022, 15:04:04 UTC
Fixed a potential string-overflow bug in yaASM. Removed timestamps from
Fixed a potential string-overflow bug in yaASM. Removed timestamps from
Tip revision: 078c79d
PINBALL_GAME__BUTTONS_AND_LIGHTS.agc
### FILE="Main.annotation"
## Copyright: Public domain.
## Filename: PINBALL_GAME__BUTTONS_AND_LIGHTS.agc
## Purpose: A section of Luminary revision 173.
## It is part of the reconstructed source code for the second
## (unflown) release of the flight software for the Lunar
## Module's (LM) Apollo Guidance Computer (AGC) for Apollo 14.
## The code has been recreated from a reconstructed copy of
## Luminary 178, as well as Luminary memo 167 (revision 1).
## It has been adapted such that the resulting bugger words
## exactly match those specified for Luminary 173 in NASA
## drawing 2021152N, which gives relatively high confidence
## that the reconstruction is correct.
## Reference: pp. 395-479
## Assembler: yaYUL
## Contact: Ron Burkey <info@sandroid.org>.
## Website: www.ibiblio.org/apollo/index.html
## Mod history: 2019-09-18 MAS Created from Luminary 178.
## Page 395
# PROGRAM NAME - KEYBOARD AND DISPLAY PROGRAM
# MOD NO - 4 DATE - 27 APRIL 1967 ASSEMBLY - PINDANCE REV 18
# MOD BY - FILENE
# LOG SECTION - PINBALL GAME BUTTONS AND LIGHTS
# FUNCTIONAL DESCRIPTION-
# THE KEYBOARD AND DISPLAY SYSTEM PROGRAM OPERATES UNDER EXECUTIVE
# CONTROL AND PROCESSES INFORMATION EXCHANGED BETWEEN THE AGC AND THE
# COMPUTER OPERATOR. THE INPUTS TO THE PROGRAM ARE FROM THE KEYBOARD,
# FROM INTERNAL PROGRAMS, AND FROM THE UPLINK.
# THE LANGUAGE OF COMMUNICATION WITH THE PROGRAM IS A PAIR OF WORDS
# KNOWN AS VERB AND NOUN. EACH OF THESE IS REPRESENTED BY A 2 CHARACTER
# DECIMAL NUMBER. THE VERB CODE INDICATES WHAT ACTION IS TO BE TAKEN, THE
# NOUN CODE INDICATES TO WHAT THIS ACTION IS APPLIED. NOUNS USUALLY
# REFER TO A GROUP OF ERASABLE REGISTERS.
# VERBS ARE GROUPED INTO DISPLAYS, LOADS, MONITORS (DISPLAYS THAT ARE
# UPDATED ONCE PER SECOND), SPECIAL FUNCTIONS, AND EXTENDED VERBS(THESE
# ARE OUTSIDE OF THE DOMAIN OF PINBALL AND CAN BE FOUND UNDER LOG SECTION
# :EXTENDED VERBS:).
# A LIST OF VERBS AND NOUNS IS GIVEN IN LOG SECTION :ASSEMBLY AND
# OPERATION INFORMATION:.
# CALLING SEQUENCES-
# KEYBOARD:
# EACH DEPRESSION OF A KEYBOARD BUTTON ACTIVATES INTERRUPT KEYRUPT1
# AND PLACES THE 5 BIT KEY CODE INTO CHANNEL 15. KEYRUPT1 PLACES THE KEY
# CODE INTO MPAC, ENTERS AN EXECUTIVE REQUEST FOR THE KEYBOARD AND DISPLAY
# PROGRAM (AT :CHARIN:), AND EXECUTES A RESUME.
# UPLINK:
# EACH WORD RECEIVED BY THE UPLINK ACTIVATES INTERRUPT UPRUPT WHICH
# PLACES THE 5 BIT KEY CODE INTO MPAC, ENTERS AN EXECUTIVE REQUEST FOR THE
# KEYBOARD AND DISPLAY PROGRAM (AT:CHARIN:) AND EXECUTES A RESUME.
# INTERNAL PROGRAMS:
# INTERNAL PROGRAMS CALL PINBALL AT :NVSUB: WITH THE DESIRED VERB/NOUN
# CODE IN A (LOW 7 BITS FOR NOUN, NEXT 7 BITS FOR VERB). DETAILS
# DESCRIBED ON REMARKS CARDS JUST BEFORE :NVSUB: AND :NVSBWAIT: (SEE
# SYMBOL TABLE FOR PAGE NUMBERS).
# NORMAL EXIT MODES-
# IF PINBALL WAS CALLED BY EXTERNAL ACTION, THERE ARE FOUR EXITS:
# 1) ALL BUT (2), (3), AND (4) EXIT DIRECTLY TO ENDOFJOB.
# 2) EXTENDED VERBS GO TO THE EXTENDED VERB FAN AS PART OF THE
## Page 396
# PINBALL EXECUTIVE JOB WITH PRIORITY 30000. IT IS THE
# RESPONSIBILITY OF THE EXTENDED VERB CALLED TO EVENTUALLY
# CHANGE PRIORITY (IF NECESSARY) AND DO AN ENDOFJOB.
# ALSO PINBALL IS A NOVAC JOB. EBANK SET FOR COMMON.
# 3) VERB 37. CHANGE OF PROGRAM (MAJOR MODE) CALLS :V37: IN THE
# SERVICE ROUTINES AS PART OF THE PINBALL EXEC JOB WITH PRIO
# 30000. THE NEW PROGRAM CODE (MAJOR MODE) IS LEFT IN A.
# 4) KEY RELEASE BUTTON CALLS :PINBRNCH: IN THE DISPLAY INTERFACE
# ROUTINES AS PART OF THE PINBALL EXEC JOB WITH PRIO 30000 IF
# THE KEY RELEASE LIGHT IS OFF AND :CADRSTOR: IS NOT +0.
# IF PINBALL WAS CALLED BY INTERNAL PROGRAMS, EXIT FROM PINBALL IS BACK
# TO CALLING ROUTINE. DETAILS DESCRIBED IN REMARKS CARDS JUST BEFORE
# :NVSUB: AND :NVSBWAIT: (SEE SYMBOL TABLE FOR PAGE NUMBERS).
# ALARM OR ABORT EXIT MODES-
# EXTERNAL INITIATION:
# IF SOME IMPROPER SEQUENCE OF KEY CODES IS DETECTED, THE OPERATOR
# ERROR LIGHT IS TURNED ON AND EXIT IS TO :ENDOFJOB:.
# INTERNAL PROGRAM INITIATION:
# IF AN ILLEGAL V/N COMBINATION IS ATTEMPTED, AN ABORT IS CAUSED
# (WITH OCTAL 01501).
# IF A SECOND ATTEMPT IS MADE TO GO TO SLEEP IN PINBALL, AN ABORT IS
# CAUSED (WITH OCTAL 01206). THERE ARE TWO WAYS TO GO TO SLEEP IN PINBALL:
# 1) ENDIDLE OR DATAWAIT.
# 2) NVSBWAIT, PRENVBSY, OR NVSUBUSY.
# CONDITIONS LEADING TO THE ABOVE ARE DESCRIBED IN FORTHCOMING MIT/IL
# E-REPORT DESCRIBING KEYBOARD AND DISPLAY OPERATION FOR 278.
# OUTPUT-
# INFORMATION TO BE SENT TO THE DISPLAY PANEL IS LEFT IN THE :DSPTAB:
# BUFFERS REGISTERS (UNDER EXEC CONTROL). :DSPOUT: (A PART OF T4RUPT)
# HANDLES THE PLACING OF THE :DSPTAB: INFORMATION INTO OUTPUT CHANNEL 10
# IN INTERRUPT.
# ERASABLE INITIALIZATION-
# FRESH START AND RESTART INITIALIZE THE NECESSARY E REGISTERS FOR
# PINBALL IN :STARTSUB:. REGISTERS ARE: DSPTAB BUFFER, CADRSTOR,
# REQRET, CLPASS, DSPLOCK, MONSAVE, MONSAVE1, VERBREG, NOUNREG, DSPLIST,
# DSPCOUNT, NOUT.
# A COMPLETE LIST OF ALL THE ERASABLES (BOTH RESERVED AND TEMPORARIES) FOR
## Page 397
# PINBALL IS GIVEN BELOW.
# THE FOLLOWING ARE OF GENERAL INTEREST-
# REMARKS CARDS PRECEDE THE REFERENCED SYMBOL DEFINITION. SEE SYMBOL
# TABLE TO FIND APPROPRIATE PAGE NUMBERS.
# NVSUB CALLING POINT FOR INTERNAL USE OF PINBALL.
# OF RELATED INTEREST NVSBWAIT
# NVSUBUSY
# PRENVBSY
# ENDIDLE ROUTINE FOR INTERNAL PROGRAMS WISHING TO GO TO SLEEP WHILE
# AWAITING OPERATORS RESPONSE.
# DSPMM ROUTINE BY WHICH AN INTERNAL PROGRAM MAY DISPLAY A DECIMAL
# PROGRAM CODE (MAJOR MODE) IN THE PROGRAM (MAJOR MODE) LIGHTS.
# (DSPMM DOES NOT DISPLAY DIRECTLY BUT ENTERS EXEC REQUEST
# FOR DSPMMJB WITH PRIO 30000 AND RETURNS TO CALLER.)
# BLANKSUB ROUTINE BY WHICH AN INTERNAL PROGRAM MAY BLANK ANY
# COMBINATION OF THE DISPLAY REGISTERS R1, R2, R3.
# JAMTERM ROUTINES BY WHICH AN INTERNAL PROGRAM MAY PERFORM THE
# JAMPROC TERMINATE (V 34) OR PROCEED (V 33) FUNCTION.
# MONITOR VERBS FOR PERIODIC ( 1 PER SEC) DISPLAY.
# PLEASE PERFORM, PLEASE MARK SITUATIONS
# REMARKS DESCRIBING HOW AN INTERNAL ROUTINE SHOULD HANDLE
# THESE SITUATIONS CAN BE FOUND JUST BEFORE :NVSUB: (SEE
# SYMBOL TABLE FOR PAGE NUMBER).
# THE NOUN TABLE FORMAT IS DESCRIBED ON A PAGE OF REMARKS CARDS JUST
# BEFORE :DSPABC: (SEE SYMBOL TABLE FOR PAGE NUMBER).
# THE NOUN TABLES THEMSELVES ARE FOUND IN LOG SECTION :PINBALL NOUN
# TABLES:.
# FOR FURTHER DETAILS ABOUT OPERATION OF THE KEYBOARD AND DISPLAY SYSTEM
# PROGRAM, SEE THE MISSION PLAN AND/OR MIT/IL E-2129
# DESCRIBING KEYBOARD AND DISPLAY OPERATION FOR 278.
## (Note that this doc by Green and Filene is/was available online at
## http://www.ibiblio.org/apollo/hrst/archive/1706.pdf --- MAS 11/2016.)
# THE FOLLOWING QUOTATION IS PROVIDED THROUGH THE COURTESY OF THE AUTHORS.
# ::IT WILL BE PROVED TO THY FACE THAT THOU HAST MEN ABOUT THEE THAT
# USUALLY TALK OF A NOUN AND A VERB, AND SUCH ABOMINABLE WORDS AS NO
## Page 398
# CHRISTIAN EAR CAN ENDURE TO HEAR.::
# HENRY 6, ACT 2, SCENE 4
# THE FOLLOWING ASSIGNMENTS FOR PINBALL ARE MADE ELSEWHERE
# RESERVED FOR PINBALL EXECUTIVE ACTION
# DSPCOUNT ERASE DISPLAY POSITION INDICATOR
# DECBRNCH ERASE +DEC, - DEC, OCT INDICATOR
# VERBREG ERASE VERB CODE
# NOUNREG ERASE NOUN CODE
# XREG ERASE R1 INPUT BUFFER
# YREG ERASE R2 INPUT BUFFER
# ZREG ERASE R3 INPUT BUFFER
# XREGLP ERASE LO PART OF XREG (FOR DEC CONV ONLY)
# YREGLP ERASE LO PART OF YREG (FOR DEC CONV ONLY)
# HITEMOUT = YREGLP TEMP FOR DISPLAY OF HRS, MIN, SEC
# MUST = LOTEMOUT-1.
# ZREGLP ERASE LO PART OF ZREG (FOR DEC CONV ONLY)
# LOTEMOUT = ZREGLP TEMP FOR DISPLAY OF HRS, MIN, SEC
# MUST = HITEMOUT+1.
# MODREG ERASE MODE CODE
# DSPLOCK ERASE KEYBOARD/SUBROUTINE CALL INTERLOCK
# REQRET ERASE RETURN REGISTER FOR LOAD
# LOADSTAT ERASE STATUS INDICATOR FOR LOADTST
# CLPASS ERASE PASS INDICATOR CLEAR
# NOUT ERASE ACTIVITY COUNTER FOR DSPTAB
# NOUNCADR ERASE MACHINE CADR FOR NOUN
# MONSAVE ERASE N/V CODE FOR MONITOR. (= MONSAVE1-1)
# MONSAVE1 ERASE NOUNCADR FOR MONITOR(MATBS) =MONSAVE +1
# MONSAVE2 ERASE NVMONOPT OPTIONS
# DSPTAB ERASE +13D 0-10,DISPLAY PANEL BUFFER.11-13,C RELAYS
# CADRSTOR ERASE ENDIDLE STORAGE
# NVQTEM ERASE NVSUB STORAGE FOR CALLING ADDRESS
# MUST = NVBNKTEM-1
# NVBNKTEM ERASE NVSUB STORAGE FOR CALLING BANK
# MUST = NVQTEM+1
# VERBSAVE ERASE NEEDED FOR RECYCLE
# DSPLIST ERASE WAITING REG FOR DSP SYST INTERNAL USE
# EXTVBACT REASE EXTENDED VERB ACTIVITY INTERLOCK
# DSPTEM1 ERASE +2 BUFFER STORAGE AREA 1 (MOSTLY FOR TIME)
# DSPTEM2 ERASE +2 BUFFER STORAGE AREA 2 (MOSTLY FOR DEG)
# END OF ERASABLES RESERVED FOR PINBALL EXECUTIVE ACTION
# TEMPORARIES FOR PINBALL EXECUTIVE ACTION
## Page 399
# DSEXIT = INTB15+ RETURN FOR DSPIN
# EXITEM = INTB15+ RETURN FOR SCALE FACTOR ROUTINE SELECT
# BLANKRET = INTB15+ RETURN FOR 2BLANK
# WRDRET = INTBIT15 RETURN FOR 5BLANK
# WDRET = INTBIT15 RETURN FOR DSPWD
# DECRET = INTBIT15 RETURN FOR PUTCOM(DEC LOAD)
# 21/22REG = INTBIT15 TEMP FOR CHARIN
# UPDATRET = POLISH RETURN FOR UPDATNN, UPDATVB
# CHAR = POLISH TEMP FOR CHARIN
# ERCNT = POLISH COUNTER FOR ERROR LIGHT RESET
# DECOUNT = POLISH COUNTER FOR SCALING AND DISPLAY (DEC)
# SGNON = VBUF TEMP FOR +,- ON
# NOUNTEM = VBUF COUNTER FOR MIXNOUN FETCH
# DISTEM = VBUF COUNTER FOR OCTAL DISPLAY VERBS
# DECTEM = VBUF COUNTER FOR FETCH (DEC DISPLAY VERBS)
# SGNOFF = VBUF +1 TEMP FOR +,- ON
# NVTEMP = VBUF +1 TEMP FOR NVSUB
# SFTEMP1 = VBUF +1 STORAGE FOR SF CONST HI PART(=SFTEMP2-1)
# HITEMIN = VBUF +1 TEMP FOR LOAD OF HRS, MIN, SEC
# MUST = LOTEMIN-1.
# CODE = VBUF +2 FOR DSPIN
# SFTEMP2 = VBUF +2 STORAGE FOR SF CONST LO PART(=SFTEMP1+1)
# LOTEMIN = VBUF +2 TEMP FOR LOAD OF HRS, MIN, SEC
# MUST = HITEMIN+1.
# MIXTEMP = VBUF +3 FOR MIXNOUN DATA
# SIGNRET = VBUF +3 RETURN FOR +,- ON
# ALSO MIXTEMP+1 = VBUF+4, MIXTEMP+2 = VBUF+5.
# ENTRET = DOTINC EXIT FROM ENTER
# WDCNT = DOTRET CHAR COUNTER FOR DSPWD
# INREL = DOTRET INPUT BUFFER SELECTOR ( X,Y,Z, REG )
# DSPMMTEM = MATINC DSPCOUNT SAVE FOR DSPMM
# MIXBR = MATINC INDICATOR FOR MIXED OR NORMAL NOUN
# TEM1 ERASE EXEC TEMP
# DSREL = TEM1 REL ADDRESS FOR DSPIN
# TEM2 ERASE EXEC TEMP
# DSMAG = TEM2 MAGNITUDE STORE FOR DSPIN
# IDADDTEM = TEM2 MIXNOUN INDIRECT ADDRESS STORAGE
# TEM3 ERASE EXEC TEMP
# COUNT = TEM3 FOR DSPIN
## Page 400
# TEM4 ERASE EXEC TEMP
# LSTPTR = TEM4 LIST POINTER FOR GRABUSY
# RELRET = TEM4 RETURN FOR RELDSP
# FREERET = TEM4 RETURN FOR FREEDSP
# DSPWDRET = TEM4 RETURN FOR DSPSIGN
# SEPSCRET = TEM4 RETURN FOR SEPSEC
# SEPMNRET = TEM4 RETURN FOR SEPMIN
# TEM5 ERASE EXEC TEMP
# NOUNADD = TEM5 TEMP STORAGE FOR NOUN ADDRESS
# NNADTEM ERASE TEMP FOR NOUN ADDRESS TABLE ENTRY
# NNTYPTEM ERASE TEMP FOR NOUN TYPE TABLE ENTRY
# IDAD1TEM ERASE TEMP FOR INDIR ADRESS TABLE ENTRY(MIXNN)
# MUST = IDAD2TEM-1, = IDAD3TEM-2.
# IDAD2TEM ERASE TEMP FOR INDIR ADRESS TABLE ENTRY(MIXNN)
# MUST = IDAD1TEM+1, = IDAD3TEM-1.
# IDAD3TEM ERASE TEMP FOR INDIR ADRESS TABLE ENTRY(MIXNN)
# MUST = IDAD1TEM+2, = IDAD2TEM+1.
# RUTMXTEM ERASE TEMP FOR SF ROUT TABLE ENTRY(MIXNN ONLY)
# END OF TEMPORARIES FOR PINBALL EXECUTIVE ACTION
# ADDITIONAL TEMPORARIES FOR PINBALL EXECUTIVE ACTION
# MPAC, THRU MPAC +6
# BUF, +1, +2
# BUF2, +1, +2
# MPTEMP
# ADDRWD
# END OF ADDITIONAL TEMPS FOR PINBALL EXEC ACTION
# RESERVED FOR PINBALL INTERRUPT ACTION
# DSPCNT ERASE COUNTER FOR DSPOUT
# UPLOCK ERASE BIT1 = UPLINK INTERLOCK (ACTIVATED BY
# RECEPTION OF A BAD MESSAGE IN UPLINK)
# END OF ERASABLES RESERVED FOR PINBALL INTERRUPT ACTION
# TEMPORARIES FOR PINBALL INTERRUPT ACTION
# KEYTEMP1 = WAITEXIT TEMP FOR KEYRUPT, UPRUPT
# DSRUPTEM = WAITEXIT TEMP FOR DSPOUT
# KEYTEMP2 = RUPTAGN TEMP FOR KEYRUPT, UPRUPT
# END OF TEMPORARIES FOR PINBALL INTERRUPT ACTION
## Page 401
# THE INPUT CODES ASSUMED FOR THE KEYBOARD ARE,
# 0 10000
# 1 00001
# 9 01001
# VERB 10001
# ERROR RES10010
# KEY RLSE 11001
# + 11010
# - 11011
# ENTER 11100
# CLEAR 11110
# NOUN 11111
## (003 RSB — The PROCEED key has no keycode; it is read by an alternate mechanism.
# OUTPUT FORMAT FOR DISPLAY PANEL. SET OUT0 TO AAAABCCCCCDDDDD.
# A-S SELECT A RELAYWORD. THIS DETERMINES WHICH PAIR OF CHARACTERS ARE
# ENERGIZED.
# B FOR SPECIAL RELAYS SUCH AS SIGNS ETC.
# C-S 5 BIT RELAY CODE FOR LEFT CHAR OF PAIR SELECTED BY RELAYWORD
# D-S 5 BIT RELAY CODE FOR RIGHTCHAR OF PAIR SELECTED BY RELAYWORD.
# THE PANEL APPEARS AS FOLLOWS,
# MD1 MD2 (MAJOR MODE)
# VD1 VD2 (VERB) ND1 ND2 (NOUN)
# R1D1 R1D2 R1D3 R1D4 R1D5 (R1)
# R2D1 R2D2 R2D3 R2D4 R2D5 (R2)
# R3D1 R3D2 R3D3 R3D4 R3D5 (R3)
# EACH OF THESE IS GIVEN A DSPCOUNT NUMBER FOR USE WITHIN COMPUTATION ONLY
# MD1 25 R2D1 11 ALL ARE OCTAL
# MD2 24 R2D2 10
# VD1 23 R2D3 7
# VD2 22 R2D4 6
# ND1 21 R2D5 5
# ND2 20 R3D1 4
# R1D1 16 R3D2 3
# R1D2 15 R3D3 2
# R1D3 14 R3D4 1
# R1D4 13 R3D5 0
# R1D5 12
# THERE IS AN 11 REGISTER TABLE (DSPTAB) FOR THE DISPLAY PANEL.
# DSPTAB RELAYWD BIT11 BITS 10-6 BITS 5-1
# RELADD
# 10 1011 MD1 (25) MD2 (24)
# 9 1010 VD1 (23) VD2 (22)
# 8 1001 ND1 (21) ND2 (20)
# 7 1000 R1D1 (16)
## Page 402
# 6 0111 +R1 R1D2 (15) R1D3 (14)
# 5 0110 -R1 R1D4 (13) R1D5 (12)
# 4 0101 +R2 R2D1 (11) R2D2 (10)
# 3 0100 -R2 R2D3 (7) R2D4 (6)
# 2 0011 R2D5 (5) R3D1 (4)
# 1 0010 +R3 R3D2 (3) R3D3 (2)
# 0 0001 -R3 R3D4 (1) R3D5 (0)
# 0000 NO RELAYWORD
# THE 5 BIT OUTPUT RELAY CODES ARE:
# BLANK 00000
# 0 10101
# 1 00011
# 2 11001
# 3 11011
# 4 01111
# 5 11110
# 6 11100
# 7 10011
# 8 11101
# 9 11111
# OUTPUT BITS USED BY PINBALL:
# KEY RELEASE LIGHT - BIT 5 OF CHANNEL 11
# VERB/NOUN FLASH - BIT 6 OF CHANNEL 11
# OPERATOR ERROR LIGHT - BIT 7 OF CHANNEL 11
## Page 403
# START OF EXECUTIVE SECTION OF PINBALL
BANK 40
SETLOC PINBALL1
BANK
COUNT* $$/PIN
CHARIN CAF ONE # BLOCK DISPLAY SYST
XCH DSPLOCK # MAKE DSP SYST BUSY, BUT SAVE OLD
TS 21/22REG # C(DSPLOCK) FOR ERROR LIGHT RESET.
CCS CADRSTOR # ALL KEYS EXCEPT ER TURN ON KR LITE IF
TC +2 # CADRSTOR IS FULL. THIS REMINDS OPERATOR
TC CHARIN2 # TO RE-ESTABLISH A FLASHING DISPLAY
CS ELRCODE1 # WHICH HE HAS OBSCURED WITH DISPLAYS OF
AD MPAC # HIS OWN (SEE REMARKS PRECEDING ROUTINE
EXTEND # VBRELDSP).
BZF CHARIN2
TC RELDSPON
CHARIN2 XCH MPAC
TS CHAR
INDEX A
TC +1 # INPUT CODE FUNCTION
TC CHARALRM # 0
TC NUM # 1
TC NUM # 2
TC NUM # 3
TC NUM # 4
TC NUM # 5
TC NUM # 6
TC NUM # 7
TC 89TEST # 10 8
TC 89TEST # 11 9
TC CHARALRM # 12
TC CHARALRM # 13
TC CHARALRM # 14
TC CHARALRM # 15
TC CHARALRM # 16
TC CHARALRM # 17
TC NUM -2 # 20 0
TC VERB # 21 VERB
TC ERROR # 22 ERROR LIGHT RESET
TC CHARALRM # 23
TC CHARALRM # 24
TC CHARALRM # 25
TC CHARALRM # 26
TC CHARALRM # 27
TC CHARALRM # 30
TC VBRELDSP # 31 KEY RELEASE
TC POSGN # 32 +
## Page 404
TC NEGSGN # 33 -
TC ENTERJMP # 34 ENTER
TC CHARALRM # 35
TC CLEAR # 36 CLEAR
TC NOUN # 37 NOUN
ELRCODE1 OCT 22
ENTERJMP TC POSTJUMP
CADR ENTER
89TEST CCS DSPCOUNT
TC +4 # +
TC +3 # +0
TC ENDOFJOB # - BLOCK DATA IN IF DSPCOUNT IS - OR -0
TC ENDOFJOB # -0
CAF THREE
MASK DECBRNCH
CCS A
TC NUM # IF DECBRNCH IS +, 8 OR 9 OK
TC CHARALRM # IF DECBRNCH IS +0, REJECT 8 OR 9
# NUM ASSEMBLES OCTAL 3 BITS AT A TIME. FOR DECIMAL IT CONVERTS INCOMING
# WORD AS A FRACTION, KEEPING RESULTS TO DP.
# OCTAL RESULTS ARE LEFT IN XREG, YREG, OR ZREG. HI PART OF DEC IN XREG,
# YREG, ZREG. THE LOW PARTS IN XREGLP, YREGLP, OR ZREGLP)
# DECBRNCH IS LEFT AT +0 FOR OCT, +1 FOR + DEC, +2 FOR - DEC.
# IF DSPCOUNT WAS LEFT -, NO MORE DATA IS ACCEPTED.
CAF ZERO
TS CHAR
NUM CCS DSPCOUNT
TC +4 # +
TC +3 # +0
TC +1 # -BLOCK DATA IN IF DSPCOUNT IS -
TC ENDOFJOB # -0
TC GETINREL
CCS CLPASS # IF CLPASS IS + OR +0, MAKE IT +0.
CAF ZERO
TS CLPASS
TC +1
INDEX CHAR
CAF RELTAB
MASK LOW5
TS CODE
CA DSPCOUNT
TS COUNT
TC DSPIN
CAF THREE
## Page 405
MASK DECBRNCH
CCS A # +0, OCTAL. +1, + DEC. +2, - DEC.
TC DECTOBIN # +
INDEX INREL # +0 OCTAL
XCH VERBREG
TS CYL
CS CYL
CS CYL
XCH CYL
AD CHAR
TC ENDNMTST
DECTOBIN INDEX INREL
XCH VERBREG
TS MPAC # SUM X 2EXP-14 IN MPAC
CAF ZERO
TS MPAC +1
CAF TEN # 10 X 2EXP-14
TC SHORTMP # 10SUM X 2EXP-28 IN MPAC, MPAC+1
XCH MPAC +1
AD CHAR
TS MPAC +1
TC ENDNMTST # NO OF
ADS MPAC # OF MUST BE 5TH CHAR
TC DECCEND
ENDNMTST INDEX INREL
TS VERBREG
CS DSPCOUNT
INDEX INREL
AD CRITCON
EXTEND
BZF ENDNUM # -0, DSPCOUNT = CRITCON
TC MORNUM # - , DSPCOUNT G/ CRITCON
ENDNUM CAF THREE
MASK DECBRNCH
CCS A
TC DECCEND
ENDALL CS DSPCOUNT # BLOCK NUMIN BY PLACING DSPCOUNT
TC MORNUM +1 # NEGATIVELY
DECCEND TC BANKCALL
CADR DECEND
TC ENDALL
DECEND CS ONE
AD INREL
EXTEND
BZMF ENDALL # IF INREL=0,1(VBREG,NNREG), LEAVE WHOLE
TC GETINREL
INDEX INREL
CA VERBREG
TS MPAC +1
TC DMP # IF INREL=2,3,4(R1,R2,R3),CONVERT TO FRAC
## Page 406
# MULT SUM X 2EXP-28 IN MPAC, MPAC+1 BY
ADRES DECON # 2EXP14/10EXP5. GIVES(SUM/10EXP5)X2EXP-14
CAF THREE # IN MPAC, +1, +2.
MASK DECBRNCH
INDEX A
TC +0
TC +DECSGN
EXTEND # - CASE
DCS MPAC +1
DXCH MPAC +1
+DECSGN XCH MPAC +2
INDEX INREL
TS XREGLP -2
XCH MPAC +1
INDEX INREL
TS VERBREG
TC SWRETURN
MORNUM CCS DSPCOUNT # DECREMENT DSPCOUNT
TS DSPCOUNT
TC ENDOFJOB
CRITCON OCT 22 # (DEC 18)
OCT 20 # (DEC 16)
OCT 12 # (DEC 10)
OCT 5
OCT 0
DECON 2DEC E-5 B14 # 2EXP14/10EXP5 = .16384 DEC
# GETINREL GETS PROPER DATA REG REL ADDRESS FOR CURRENT C(DSPCOUNT) AND
# PUTS IN INTO INREL. +0 VERBREG, 1 NOUNREG, 2 XREG, 3 YREG, 4 ZREG.
GETINREL INDEX DSPCOUNT
CAF INRELTAB
TS INREL # (A TEMP, REG)
TC Q
INRELTAB OCT 4 # R3D5 (DSPCOUNT = 0)
OCT 4 # R3D4 =(1)
OCT 4 # R3D3 =(2)
OCT 4 # R3D2 =(3)
OCT 4 # R3D1 =(4)
OCT 3 # R2D5 =(5)
OCT 3 # R2D4 =(6)
OCT 3 # R2D3 =(7)
OCT 3 # R2D2 =(8D)
OCT 3 # R2D1 =(9D)
OCT 2 # R1D5 =(10D)
## Page 407
OCT 2 # R1D4 =(11D)
OCT 2 # R1D3 =(12D)
OCT 2 # R1D2 =(13D)
OCT 2 # R1D1 =(14D)
TC CCSHOLE # NO DSPCOUNT NUMBER = 15D
OCT 1 # ND2 =(16D)
OCT 1 # ND1 =(17D)
OCT 0 # VD2 =(18D)
OCT 0 # VD1 =(19D)
VERB CAF ZERO
TS VERBREG
CAF VD1
NVCOM TS DSPCOUNT
TC 2BLANK
CAF ONE
TS DECBRNCH # SET FOR DEC V/N CODE
CAF ZERO
TS REQRET # SET FOR ENTPAS0
CAF ENDINST # IF DSPALARM OCCURS BEFORE FIRST ENTPAS0
TS ENTRET # OR NVSUB, ENTRET MUST ALREADY BE SET
# TO TC ENDOFJOB
TC ENDOFJOB
NOUN CAF ZERO
TS NOUNREG
CAF ND1 # ND1, OCT 21 (DEC 17)
TC NVCOM
NEGSGN TC SIGNTEST
TC -ON
CAF TWO
BOTHSGN INDEX INREL # SET DEC COMP BIT TO 1 (IN DECBRNCH)
AD BIT7 # BIT 5 FOR R1, BIT 4 FOR R2,
ADS DECBRNCH # BIT 3 FOR R3.
FIXCLPAS CCS CLPASS # IF CLPASS IS + OR +0, MAKE IT +0.
CAF ZERO
TS CLPASS
TC +1
TC ENDOFJOB
POSGN TC SIGNTEST
TC +ON
CAF ONE
TC BOTHSGN
+ON LXCH Q
TC GETINREL
INDEX INREL
## Page 408
CAF SGNTAB -2
TS SGNOFF
AD ONE
TS SGNON
SGNCOM CAF ZERO
TS CODE
XCH SGNOFF
TC 11DSPIN
CAF BIT11
TS CODE
XCH SGNON
TC 11DSPIN
TC L
-ON LXCH Q
TC GETINREL
INDEX INREL
CAF SGNTAB -2
TS SGNON
AD ONE
TS SGNOFF
TC SGNCOM
SGNTAB OCT 5 # -R1
OCT 3 # -R2
OCT 0 # -R3
SIGNTEST LXCH Q # ALLOWS +,- ONLY WHEN DSPCOUNT=R1D1,
CAF THREE # R2D1, OR R3D1. ALLOWS ONLY FIRST OF
MASK DECBRNCH # CONSECUTIVE +/- CHARACTERS.
CCS A # IF LOW2 BITS OF DECBRNCH NOT= 0, SIGN
TC ENDOFJOB # FOR THIS WORD ALREADY IN. REJECT.
CS R1D1
TC SGNTST1
CS R2D1
TC SGNTST1
CS R3D1
TC SGNTST1
TC ENDOFJOB # NO MATCH FOUND. SIGN ILLEGAL
SGNTST1 AD DSPCOUNT
EXTEND
BZF +2 # MATCH FOUND
TC Q
TC L # SIGN LEGAL
# CLEAR BLANKS WHICH R1, R2, R3 IS CURRENT OR LAST TO BE DISPLAYED(PERTINE
# NT XREG,YREG,ZREG IS CLEARED). SUCCESSIVE CLEARS TAKE CARE OF EACH RX
# L/ RC UNTIL R1 IS DONE. THEN NO FURTHER ACTION
## Page 409
# THE SINGLE COMPONENT LOAD VERBS ALLOW ONLY THE SINGLE RC THAT IS
# APPROPRIATE TO BE CLEARED.
# CLPASS +0 PASS0, CAN BE BACKED UP
# +NZ HIPASS, CAN BE BACKED UP
# -NZ PASS0, CANNOT BE BACKED UP
CLEAR CCS DSPCOUNT
AD ONE
TC +2
AD ONE
INDEX A # DO NOT CHANGE DSPCOUNT BECAUSE MAY LATER
CAF INRELTAB # FAIL LEGALTST.
TS INREL # MUST SET INREL, EVEN FOR HIPASS.
CCS CLPASS
TC CLPASHI # +
TC +2 # +0 IF CLPASS IS +0 OR -, IT IS PASS0
TC +1 # -
CA INREL
TC LEGALTST
TC CLEAR1
CLPASHI CCS INREL
TS INREL
TC LEGALTST
CAF DOUBLK +2 # +3 TO - NUMBER. BACKS DATA REQUESTS.
ADS REQRET
CA INREL
TS MIXTEMP # TEMP STORAGE FOR INREL
EXTEND
DIM VERBREG # DECREMENT VERB AND RE-DISPLAY
TC BANKCALL
CADR UPDATVB
CA MIXTEMP
TS INREL # RESTORE INREL
CLEAR1 TC CLR5
INCR CLPASS # ONLY IF CLPASS IS + OR +0,
TC ENDOFJOB # SET FOR HIGHER PASS.
CLR5 LXCH Q # USES 5BLANK BUT AVOIDS ITS TC GETINREL
TC 5BLANK +2
LEGALTST AD NEG2
CCS A
TC Q # LEGAL INREL G/ 2
TC CCSHOLE
TC ENDOFJOB # ILLEGAL INREL= 0,1
TC Q # LEGAL INREL = 2
# 5BLANK BLANKS 5 CHAR DISPLAY WORD IN R1, R2, OR R3. IT ALSO ZEROES XREG,
# YREG, OR ZREG.PLACE ANY + DSPCOUNT NUMBER FOR PERTINENT RC INTO DSPCOUNT
# DSPCOUNT IS LEFT SET TO LEFT MOST DSP NUMB FOR RC JUST BLANKED.
## Page 410
TS DSPCOUNT # NEEDED FOR BLANKSUB
5BLANK LXCH Q
TC GETINREL
CAF ZERO
INDEX INREL
TS VERBREG # ZERO X, Y, Z REG.
INDEX INREL
TS XREGLP -2
TS CODE
INDEX INREL # ZERO PERTINENT DEC COMP BIT.
CS BIT7 # PROTECT OTHERS
MASK DECBRNCH
MASK BRNCHCON # ZERO LOW 2 BITS.
TS DECBRNCH
INDEX INREL
CAF SINBLANK -2 # BLANK ISOLATED CHAR SEPARATELY
TS COUNT
TC DSPIN
5BLANK1 INDEX INREL
CAF DOUBLK -2
TS DSPCOUNT
TC 2BLANK
CS TWO
ADS DSPCOUNT
TC 2BLANK
INDEX INREL
CAF R1D1 -2
TS DSPCOUNT # SET DSPCOUNT TO LEFT MOST DSP NUMBER
TC L # OF REG. JUST BLANKED
SINBLANK OCT 16 # DEC 14
OCT 5
OCT 4
DOUBLK OCT 15 # DEC 13
OCT 11 # DEC 9
OCT 3
BRNCHCON OCT 77774
# 2BLANK BLANKS TWO CHAR. PLACE DSP NUMBER OF LEFT CHAR OF THE PAIR INTO
# DSPCOUNT. THIS NUMBER IS LEFT IN DSPCOUNT
2BLANK CA DSPCOUNT
TS SR
CS BLANKCON
INHINT
INDEX SR
XCH DSPTAB
EXTEND
BZMF +2 # IF OLD CONTENTS -, NOUT OK
## Page 411
INCR NOUT # IF OLD CONTENTS +, +1 TO NOUT
RELINT # IF -,NOUT OK
TC Q
BLANKCON OCT 4000
## Page 412
# ENTER PASS 0 IS THE EXECUTE FUNCTION. HIGHER ORDER ENTERS ARE TO LOAD
# DATA. THE SIGN OF REQRET DETERMINES THE PASS, + FOR PASS 0,- FOR HIGHER
# PASSES.
# MACHINE CADR TO BE SPECIFIED (MCTBS) NOUNS DESIRE AN ECADR TO BE LOADED
# WHEN USED WITH LOAD VERBS, MONITOR VERBS, OR DISPLAY VERBS (EXCEPT
# VERB = FIXED MEMORY DISPLAY, WHICH REQUIRES AN FCADR).
BANK 41
SETLOC PINBALL2
BANK
COUNT* $$/PIN
NVSUBB TC NVSUB1 # STANDARD LEAD INS. DONT MOVE.
LOADLV1 TC LOADLV
# END OF STANDARD LEAD INS.
ENTER CAF ZERO
TS CLPASS
CAF ENDINST
TS ENTRET
CCS REQRET
TC ENTPAS0 # IF +, PASS 0
TC ENTPAS0 # IF +, PASS 0
TC +1 # IF -, NOT PASS 0
ENTPASHI CAF MMADREF
AD REQRET # IF L/ 2 CHAR IN FOR MM CODE, ALARM
EXTEND # AND RECYCLE(DECIDE AT MMCHANG+1).
BZF ACCEPTWD
CAF THREE # IF DEC, L/5 CHAR IN FOR DATA MUST BE
MASK DECBRNCH # SCALED (DECEND); IF 5 CHAR IN, DATA
CCS A # HAS ALREADY BEEN SCALED. ANY NUMBER
TC +2 # OF DECIMAL CHARACTERS ARE ACCEPTABLE.SCR
TC ACCEPTWD # OCTAL. ANY NUMBER OF CHAR OK.
CCS DSPCOUNT
TC LT5
TC LT5
TC +1 # 5 CHAR IN (DSPCOUNT IS -)
ACCEPTWD CS REQRET # 5 CHAR IN (DSPCOUNT IS -)
TS REQRET # SET REQRET +.
TC FLASHOFF
TC REQRET
LT5 CAF ZERO
TS MPAC
TC BANKCALL
CADR DECEND +4
## Page 413
TC ACCEPTWD
ENTEXIT = ENTRET
MMADREF ADRES MMCHANG +1 # ASSUMES TC REQMM AT MMCHANG.
LOWVERB DEC 28 # LOWER VERB THAT AVOIDS NOUN TEST.
ENTPAS0 CAF ZERO # NOUN VERB SUB ENTERS HERE
TS DECBRNCH
CS VD1 # BLOCK FURTHER NUM CHAR, SO THAT STRAY
TS DSPCOUNT # CHAR DO NOT GET INTO VERB OR NOUN LTS.
TESTVB CS VERBREG # IF VERB IS G/E LOWVB, SKIP NOUN TEST.
TS VERBSAVE # SAVE VERB FOR POSSIBLE RECYCLE.
AD LOWVERB # LOWVERB - VB
EXTEND
BZMF VERBFAN # VERB G/E LOWVERB
TESTNN EXTEND # VERB L/ LOWVERB
DCA LODNNLOC # SWITCH BANKS TO NOUN TABLE READING
DXCH Z # ROUTINE.
INDEX MIXBR
TC +0
TC +2 # NORMAL
TC MIXNOUN # MIXED
CCS NNADTEM # NORMAL
TC VERBFAN -2 # NORMAL IF +
TC GODSPALM # NOT IN USE IF +0
TC REQADD # SPECIFY MACHINE CADR IF -
INCR NOUNCADR # AUGMENT MACHINE CADR IF -0
TC SETNADD # ECADR FROM NOUNCADR. SETS EB, NOUNADD.
TC INTMCTBS +2
REQADD CAF BIT15 # SET CLPASS FOR PASS0 ONLY
TS CLPASS
CS ENDINST # TEST IF REACHED HERE FROM INTERNAL OR
AD ENTEXIT # FROM EXTERNAL
EXTEND
BZF +2 # EXTERNAL MACH CADR TO BE SPECIFIED
TC INTMCTBS
TC REQDATZ # EXTERNAL MACH CADR TO BE SPECIFIED
CCS DECBRNCH # ALARM AND RECYCLE IF DECIMAL USED
TC ALMCYCLE # FOR MCTBS.
CS VD1 # OCTAL USED OK
TS DSPCOUNT # BLOCK NUM CHAR IN
CCS CADRSTOR
TC +3 # EXTERNAL MCTBS DISPLAY WILL LEAVE FLASH
TC USEADD # ON IF ENDIDLE NOT = +0.
TC +1
TC FLASHON
USEADD XCH ZREG
TC SETNCADR # ECADR INTO NOUNCADR. SET EB, NOUNADD.
EXTEND
## Page 414
DCA LODNNLOC # SWITCH BANKS TO NOUN TABLE READING
DXCH Z # ROUTINE.
TC VERBFAN
EBANK= DSPCOUNT
LODNNLOC 2CADR LODNNTAB
NEG5 OCT 77772
INTMCTBS CA MPAC +2 # INTERNAL MACH CADR TO BE SPECIFIED.
TC SETNCADR # ECADR INTO NOUNCADR. SET EB, NOUNADD.
CS FIVE # NVSUB CALL LEFT CADR IN MPAC+2 FOR MACH
AD VERBREG # CADR TO BE SPECIFIED.
EXTEND
BZF VERBFAN # DONT DISPLAY CADR IF VB = 05.
CAF R3D1 # VB NOT = 05. DISPLAY CADR.
TS DSPCOUNT
CA NOUNCADR
TC DSPOCTWD
TC VERBFAN
AD ONE
TC SETNCADR # ECADR INTO NOUNCADR. SETS EB, NOUNADD.
VERBFAN CS LST2CON
AD VERBREG # VERB-LST2CON
CCS A
AD ONE # VERB G/ LST2CON
TC +2
TC VBFANDIR # VERB L/ LST2CON
TS MPAC
TC RELDSP # RELEASE DISPLAY SYST
TC POSTJUMP # GO TO GOEXTVB WITH VB-40 IN MPAC.
CADR GOEXTVB
LST2CON DEC 40 # FIRST LIST2 VERB (EXTENDED VERB)
VBFANDIR INDEX VERBREG
CAF VERBTAB
TC BANKJUMP
VERBTAB CADR GODSPALM # VB00 ILLEGAL
CADR DSPA # VB01 DISPLAY OCT COMP 1 (R1)
CADR DSPB # VB02 DISPLAY OCT COMP 2 (R1)
CADR DSPC # VB03 DISPLAY OCT COMP 3 (R1)
CADR DSPAB # VB04 DISPLAY OCT COMP 1,2 (R1,R2)
CADR DSPABC # VB05 DISPLAY OCT COMP 1,2,3 (R1,R2,R3)
CADR DECDSP # VB06 DECIMAL DISPLAY
CADR DSPDPDEC # VB07 DP DECIMAL DISPLAY (R1,R2)
CADR GODSPALM # VB08 SPARE
CADR GODSPALM # VB09 SPARE
## Page 415
CADR DSPALARM # VB10 SPARE
CADR MONITOR # VB11 MONITOR OCT COMP 1 (R1)
CADR MONITOR # VB12 MONITOR OCT COMP 2 (R1)
CADR MONITOR # VB13 MONITOR OCT COMP 3 (R1)
CADR MONITOR # VB14 MONITOR OCT COMP 1,2 (R1,R2)
CADR MONITOR # VB15 MONITOR OCT COMP 1,2,3 (R1,R2,R3)
CADR MONITOR # VB16 MONITOR DECIMAL
CADR MONITOR # VB17 MONITOR DP DEC (R1,R2)
CADR GODSPALM # VB18 SPARE
CADR GODSPALM # VB19 SPARE
CADR GODSPALM # VB20 SPARE
CADR ALOAD # VB21 LOAD COMP 1 (R1)
CADR BLOAD # VB22 LOAD COMP 2 (R2)
CADR CLOAD # VB23 LOAD COMP 3 (R3)
CADR ABLOAD # VB24 LOAD COMP 1,2 (R1,R2)
CADR ABCLOAD # VB25 LOAD COMP 1,2,3 (R1,R2,R3)
CADR GODSPALM # VB26 SPARE
CADR DSPFMEM # VB27 FIXED MEMORY DISPLAY
# THE FOLLOWING VERBS MAKE NO NOUN TEST
CADR GODSPALM # VB28 SPARE
CADR GODSPALM # VB29 SPARE
REQEXLOC CADR VBRQEXEC # VB30 REQUEST EXECUTIVE
CADR VBRQWAIT # VB31 REQUEST WAITLIST
CADR VBRESEQ # VB32 RESEQUENCE
CADR VBPROC # VB33 PROCEED WITHOUT DATA
CADR VBTERM # VB34 TERMINATE CURRENT TEST OR LOAD REQ
CADR VBTSTLTS # VB35 TEST LIGHTS
CADR SLAP1 # VB36 FRESH START
CADR MMCHANG # VB37 CHANGE MAJOR MODE
CADR GODSPALM # VB38 SPARE
CADR GODSPALM # VB39 SPARE
# THE LIST2 VERBFAN IS LOCATED IN THE EXTENDED VERB BANK.
## Page 416
# NNADTAB CONTAINS A RELATIVE ADDRESS, IDADDREL(IN LOW 10 BITS), REFERRING
# TO WHERE 3 CONSECUTIVE ADDRESSES ARE STORED (IN IDADDTAB).
# MIXNOUN GETS DATA AND STORES IN MIXTEMP,+1,+2. IT SETS NOUNADD FOR
# MIXTEMP.
MIXNOUN CCS NNADTEM
TC +4 # + IN USE
TC GODSPALM # +0 NOT IN USE
TC +2 # - IN USE
TC +1 # -0 IN USE
CS SIX
AD VERBREG
EXTEND
BZMF +2 # VERB L/E 6
TC VERBFAN # AVOID MIXNOUN SWAP IF VB NOT = DISPLAY
CAF TWO
MIXNN1 TS DECOUNT
AD MIXAD
TS NOUNADD # SET NOUNADD TO MIXTEMP + K
INDEX DECOUNT # GET IDADDTAB ENTRY FOR COMPONENT K
CA IDAD1TEM # OF NOUN.
TS NOUNTEM
# TEST FOR DP(FOR OCT DISPLAY). IF SO, GET
# MINOR PART ONLY.
TC SFRUTMIX # GET SF ROUT NUMBER IN A
TC DPTEST
TC MIXNN2 # NO DP
INCR NOUNTEM # DP GET MINOR PART
MIXNN2 CA NOUNTEM
MASK LOW11 # ESUBK (NO DP) OR (ESUBK)+1 FOR DP
TC SETEBANK # SET EBANK, LEAVE EADRES IN A.
INDEX A # PICK UP C(ESUBK) NOT DP
CA 0 # OR C((ESUBK)+1) FOR DP MINOR PART
INDEX NOUNADD
XCH 0 # STORE IN MIXTEM + K
CCS DECOUNT
TC MIXNN1
TC VERBFAN
MIXAD TC MIXTEMP
# DPTEST ENTER WITH SF ROUT NUMBER IN A.
# RETURNS TO L+1 IF NO DP.
# RETURNS TO L+2 IF DP.
DPTEST INDEX A
TCF +1
TC Q # OCTAL ONLY NO DP
TC Q # FRACT NO DP
## Page 417
TC Q # DEG NO DP
TC Q # ARITH NO DP
TCF DPTEST1 # DP1OUT
TCF DPTEST1 # DP2OUT
TC Q # LRPOSOUT NO DP (DATA IN CHANNEL 33)
TCF DPTEST1 # DP3OUT
TC Q # HMS NO DP
TC Q # M/S NO DP
TCF DPTEST1 # DP4OUT
TC Q # ARITH1 NO DP
TC Q # 2INTOUT NO DP TO GET HI PART IN MPAC
TC Q # 360-CDU NO DP
TC Q # RRANGOUT NO DP
TC Q # RRDOTOUT NO DP
DPTEST1 INDEX Q
TC 1 # RETURN TO L+2
REQDATX CAF R1D1
TCF REQCOM
REQDATY CAF R2D1
TCF REQCOM
REQDATZ CAF R3D1
REQCOM TS DSPCOUNT
CS Q
TS REQRET
TC BANKCALL
CADR 5BLANK
TC FLASHON
ENDRQDAT TC ENTEXIT
TS NOUNREG
UPDATNN XCH Q
TS UPDATRET
EXTEND
DCA LODNNLOC # SWITCH BANKS TO NOUN TABLE READING
DXCH Z # ROUTINE.
CCS NNADTEM
AD ONE # NORMAL
TCF PUTADD
TCF PUTADD +1 # MCTBS DONT CHANGE NOUNADD
TCF PUTADD +1 # MCTBI DONT CHANGE NOUNADD
PUTADD TC SETNCADR # ECADR INTO NOUNCADR. SETS EB, NOUNADD.
CAF ND1
TS DSPCOUNT
CA NOUNREG
TCF UPDAT1
TS VERBREG
UPDATVB XCH Q
## Page 418
TS UPDATRET
CAF VD1
TS DSPCOUNT
CA VERBREG
UPDAT1 TC POSTJUMP # CANT USE SWCALL TO GO TO DSPDECVN,SINCE
CADR GOVNUPDT # UPDATVB CAN ITSELF BE CALLED BY SWCALL.
TC UPDATRET
GOALMCYC TC ALMCYCLE # NEEDED BECAUSE BANKJUMP CANT HANDLE F/F.
GODSPALM TC POSTJUMP
CADR DSPALARM
## Page 419
# NOUN TABLES
# NOUN CODE L/40, NORMAL NOUN CASE. NOUN CODE G/E 40, MIXED NOUN CASE.
# FOR NORMAL CASE, NNADTAB CONTAINS ONE ECADR FOR EACH NOUN.
# +0 INDICATES NOUN NOT USED. - ENTRY INDICATES MACHINE CADR(E OR F) TO
# BE SPECIFIED. -1 INDICATES CHANNEL TO BE SPECIFIED. -0 INDICATES AUGMENT
# OF LAST MACHINE CADR SUPPLIED.
# FOR MIXED CASE, NNADTAB CONTAINS ONE INDIRECT ADDRESS(IDADDREL) IN LOW
# 10 BITS, AND THE COMPONENT CODE NUMBER IN THE HIGH 5 BITS.
# NNTYPTAB IS A PACKED TABLE OF THE FORM MMMMMNNNNNPPPPP.
# FOR THE NORMAL CASE, M-S ARE THE COMPONENT CODE NUMBER.
# N-S ARE THE SF ROUTINE CODE NUMBER.
# P-S ARE THE SF CONSTANT CODE NUMBER.
# MIXED CASE,M-S ARE THE SF CONSTANT3 CODE NUMBER 3 COMPONENT CASE
# N-S ARE THE SF CONSTANT2 CODE NUMBER
# P-S ARE THE SF CONSTANT1 CODE NUMBER
# N-S ARE THE SF CONSTANT2 CODE NUMBER 2 COMPONENT CASE
# P-S ARE THE SF CONSTANT1 CODE NUMBER
# P-S ARE THE SF CONSTANT1 CODE NUMBER 1 COMPONENT CASE
# THERE IS ALSO AN INDIRECT ADDRESS TABLE(IDADDTAB) FOR MIXED CASE ONLY.
# EACH ENTRY CONTAINS ONE ECADR. IDADDREL IS THE RELATIVE ADDRESS OF
# THE FIRST OF THESE ENTRIES.
# THERE IS ONE ENTRY IN THIS TABLE FOR EACH COMPONENT OF A MIXED NOUN
# THEY ARE LISTED IN ORDER OF ASCENDING K.
# THERE IS ALSO A SCALE FACTOR ROUTINE NUMBER TABLE( RUTMXTAB ) FOR MIXED
# CASE ONLY. THERE IS ONE ENTRY PER MIXED NOUN. THE FORM IS,
# QQQQQRRRRRSSSSS
# Q-S ARE THE SF ROUTINE 3 CODE NUMBER 3 COMPONENT CASE
# R-S ARE THE SF ROUTINE 2 CODE NUMBER
# S-S ARE THE SF ROUTINE 1 CODE NUMBER
# R-S ARE THE SF ROUTINE 2 CODE NUMBER 2 COMPONENT CASE
# S-S ARE THE SF ROUTINE 1 CODE NUMBER
# IN OCTAL DISPLAY AND LOAD (OCT OR DEC) VERBS, EXCLUDE USE OF VERBS WHOSE
# COMPONENT NUMBER IS GREATER THAN THE NUMBER OF COMPONENTS IN NOUN.
# (ALL MACHINE ADDRESS TO BE SPECIFIED NOUNS ARE 3 COMPONENT.)
# IN MULTI-COMPONENT LOAD VERBS, NO MIXING OF OCTAL AND DECIMAL DATA
# COMPONENT WORDS IS ALLOWED. ALARM IF VIOLATION.
# IN DECIMAL LOADS OF DATA, 5 NUMERICAL CHARACTERS MUST BE KEYED IN
# BEFORE EACH ENTER. IF NOT, ALARM.
## Page 420
# DISPLAY VERBS
DSPABC CS TWO
TC COMPTEST
INDEX NOUNADD
CS 2
XCH BUF +2
DSPAB CS ONE
TC COMPTEST
INDEX NOUNADD
CS 1
XCH BUF +1
DSPA TC DECTEST
TC TSTFORDP
INDEX NOUNADD
CS 0
DSPCOM1 XCH BUF
TC DSPCOM2
DSPB CS ONE
TC DCOMPTST
INDEX NOUNADD
CS 1
TC DSPCOM1
DSPC CS TWO
TC DCOMPTST
INDEX NOUNADD
CS 2
TC DSPCOM1
DSPCOM2 CS TWO # A B C AB ABC
AD VERBREG # -1 -0 +1 +2 +3 IN A
CCS A # +0 +0 +0 +1 +2 IN A AFTER CCS
TC DSPCOM3
TC ENTEXIT
TC +1
DSPCOM3 TS DISTEM # +0,+1,+2 INTO DISTEM
INDEX A
CAF R1D1
TS DSPCOUNT
INDEX DISTEM
CS BUF
TC DSPOCTWD
XCH DISTEM
TC DSPCOM2 +2
# COMPTEST ALARMS IF COMPONENT NUMBER OF VERB(LOAD OR OCT DISPLAY) IS
# GREATER THAN THE HIGHEST COMPONENT NUMBER OF NOUN.
COMPTEST TS SFTEMP1 # - VERB COMP
LXCH Q
COMPTST1 TC GETCOMP
TC LEFT5
MASK THREE # NOUN COMP
## Page 421
AD SFTEMP1 # NOUN COMP - VERB COMP
CCS A
TC L # NOUN COMP G/ VERB COMP
TC CCSHOLE
TC GODSPALM # NOUN COMP L/ VERB COMP
NDCMPTST TC L # NOUN COMP = VERB COMP
# DCOMPTST ALARMS IF DECIMAL ONLY BIT (BIT4 OF COMP CODE NUMBER) = 1.
# IF NOT, IT PERFORMS REGULAR COMPTEST.
DCOMPTST TS SFTEMP1 # - VERB COMP
LXCH Q
TC DECTEST
TC COMPTST1
DECTEST EXTEND # ALARMS IF DEC ONLY BIT = 1 (BIT4 OF COMP
QXCH MPAC +2 # CODE NUMBER). RETURNS IF NOT.
TC GETCOMP
MASK BIT14
CCS A
TC GODSPALM
TC MPAC +2
DCTSTCYC LXCH Q # ALARMS AND RECYCLES IF DEC ONLY BIT = 1
TC GETCOMP # ( BIT4 OF COMP CODE NUMBER). RETURNS
MASK BIT14 # IF NOT. USED BY LOAD VERBS.
CCS A
TC ALMCYCLE
TC L
# NOUNTEST ALARMS IF NO-LOAD BIT (BIT5 OF COMP CODE NUMBER) = 1.
# IF NOT, IT RETURNS.
NOUNTEST LXCH Q
TC GETCOMP
CCS A
TC L
TC L
TC GODSPALM
TSTFORDP LXCH Q # TEST FOR DP. IF SO, GET MINOR PART ONLY.
CA NNADTEM
AD ONE # IF NNADTEM = -1, CHANNEL TO BE SPECIFIED
EXTEND
BZF CHANDSP
INDEX MIXBR
TC +0
TC +2 # NORMAL
## Page 422
TC L # MIXED CASE ALREADY HANDLED IN MIXNOUN
TC SFRUTNOR
TC DPTEST
TC L # NO DP
INCR NOUNADD # DP E+1 INTO NOUNADD FOR MINOR PART.
TC L
CHANDSP CA NOUNCADR
MASK LOW9
EXTEND
INDEX A
READ 0
CS A
TCF DSPCOM1
COMPICK ADRES NNTYPTEM
ADRES NNADTEM
GETCOMP INDEX MIXBR # NORMAL MIXED
CAF COMPICK -1 # ADRES NNTYPTEM ADRES NNADTEM
INDEX A
CA 0 # C(NNTYPTEM) C(NNADTEM)
MASK HI5 # GET HI5 OF NNTYPTAB(NORM)OF NNADTAB(MIX)
TC Q
DECDSP TC GETCOMP
TC LEFT5
MASK THREE
TS DECOUNT # COMP NUMBER INTO DECOUNT
DSPDCGET TS DECTEM # PICKS UP DATA
AD NOUNADD # DECTEM 1COMP +0, 2COMP +1, 3COMP +2
INDEX A
CS 0
INDEX DECTEM
XCH XREG # CANT USE BUF SINCE DMP USES IT.
CCS DECTEM
TC DSPDCGET # MORE TO GET
DSPDCPUT CAF ZERO # DISPLAYS DATA
TS MPAC +1 # DECOUNT 1COMP +0, 2COMP +1, 3COMP +2
TS MPAC +2
INDEX DECOUNT
CAF R1D1
TS DSPCOUNT
INDEX DECOUNT
CS XREG
TS MPAC
TC SFCONUM # 2X( SF CON NUMB ) IN A
## Page 423
TS SFTEMP1
EXTEND # SWITCH BANKS TO SF CONSTANT TABLE
DCA GTSFOUTL # READING ROUTINE.
DXCH Z # LOADS SFTEMP1, SFTEMP2.
INDEX MIXBR
TC +0
TC DSPSFNOR
TC SFRUTMIX
TC DECDSP3
DSPSFNOR TC SFRUTNOR
TC DECDSP3
EBANK= DSPCOUNT
GTSFOUTL 2CADR GTSFOUT
DSPDCEND TC BANKCALL # ALL SFOUT ROUTINES END HERE
CADR DSPDECWD
CCS DECOUNT
TC +2
TC ENTEXIT
TS DECOUNT
TC DSPDCPUT # MORE TO DISPLAY
DECDSP3 INDEX A
CAF SFOUTABR
TC BANKJUMP
SFOUTABR CADR PREDSPAL # ALARM IF DEC DISP WITH OCTAL ONLY NOUN
CADR DSPDCEND
CADR DEGOUTSF
CADR ARTOUTSF
CADR DP1OUTSF
CADR DP2OUTSF
CADR LRPOSOUT
CADR DP3OUTSF
CADR HMSOUT
CADR M/SOUT
CADR DP2OUTSF
CADR AROUT1SF
CADR 2INTOUT
CADR 360-CDUO
CADR RRANGOUT
CADR RRDOTOUT
ENDRTOUT EQUALS
## Page 424
# THE FOLLOWING IS ATYPICAL SF ROUTINE . IT USES MPAC. LEAVES RESU
# LTS IN MPAC, MPAC+1. ENDS WITH TC DSPDCEND
SETLOC BLANKCON +1
COUNT* $$/PIN
# DEGOUTSF SCALES BY .18 THE LOW 14 BITS OF ANGLE , ADDING .18 FOR
# NUMBERS IN THE NEGATIVE (AGC) RANGE.
DEGOUTSF CAF ZERO
TS MPAC +2 # SET INDEX FOR FULL SCALE
TC FIXRANGE
TC +2 # NO AUGMENT NEEDED (SFTEMP1 AND 2 ARE 0)
TC SETAUG # SET AUGMENTER ACCORDING TO C(MPAC +2)
TC DEGCOM
# 360-CDUO COMPUTES 360 - CDU ANGLE IN MPAC, STORES RESULT IN MPAC AND
# GOES TO DEGOUTSF.
360-CDUO TC 360-CDU
TC DEGOUTSF
360-CDU CA MPAC
MASK POSMAX # IF ANGLE IS 0 OR 180 DEGREES, DO NOTHING
EXTEND
BZF 360-CDUE
CS MPAC # COMPUTE 360 DEGREES MINUS ANGLE
AD ONE
TS MPAC
360-CDUE TC Q
# LRPOSOUT DISPLAYS +0,1,2,OR 3 (WHOLE) FOR CHANNEL 33,BITS 7-6 = 11,10,
# 01,00 RESPECTIVELY.
LRPOSOUT EXTEND
READ CHAN33
EXTEND
MP BIT10 # BITS 7-6 TO BITS 2-1
COM
MASK THREE
TS MPAC
TC ARTOUTSF # DISPLAY AS WHOLE
# RRANGOUT AND RRDOTOUT CONVERT RR RANGE AND RANGE RATE FROM SP 15 BIT
# MAGNITUDE TO DP AND THEN SCALE FOR DISPLAY.
RRANGOUT TC RRSPTODP # CONVERT TO DP.
CS RADMODES # BIT 3 OF FLAG12 = HI SCALE
MASK BIT3
## Page 425
CCS A
TC SCALELO # DATA IS IN LO SCALE.
DXCH MPAC # DATA IS IN HI SCALE, MP BY 8.
DAS A
DAS A
DAS A
DXCH MPAC
SCALELO TC DMP # SCALE FOR DISPLAY,
ADRES SFTEMP1
TC L14/OUT # AND GO TO ARITHDP1.
RRDOTOUT TC RRSPTODP # CONVERT TO DP.
EXTEND
DCS BIASRDOT # SUBTRACT BIAS OF 17000 COUNTS.
DAS MPAC
TC SCALELO # SCALE FOR DISPLAY.
BIASRDOT 2DEC 17000
RRSPTODP CAF POSMAX # CONVERT SP 15 BIT MAG TO DP.
MASK MPAC
TS MPAC +1
CA MPAC
DOUBLE
MASK BIT1
TS MPAC
TC Q
SETAUG EXTEND # LOADS SFTEMP1 AND SFTEMP2 WITH THE
INDEX MPAC +2 # DP AUGMENTER CONSTANT
DCA DEGTAB
DXCH SFTEMP1
TC Q
FIXRANGE CCS MPAC # IF MPAC IS + RETURN TO L+1
TC Q # IF MPAC IS - RETURN TO L+2 AFTER
TC Q # MASKING OUT THE SIGN BIT
TCF +1
CS BIT15
MASK MPAC
TS MPAC
INDEX Q
TC 1
DEGCOM EXTEND # LOADS MULTIPLIER , DOES SHORTMP, AND
INDEX MPAC +2 # ADDS AUGMENTER.
## Page 426
DCA DEGTAB
DXCH MPAC # ADJUSTED ANGLE IN A
TC SHORTMP
DXCH SFTEMP1
DAS MPAC
TC SCOUTEND
DEGTAB OCT 05605 # HI PART OF .18
OCT 03656 # LOW PART OF .18
OCT 16314 # HI PART OF .45
OCT 31463 # LO PART OF .45
ARTOUTSF DXCH SFTEMP1 # ASSUMES POINT AT LEFT OF DP SFCON
DXCH MPAC
TC PRSHRTMP # IF C(A) = -0, SHORTMP FAILS TO GIVE -0.
SCOUTEND TC POSTJUMP
CADR DSPDCEND
AROUT1SF DXCH SFTEMP1 # ASSUMES POINT BETWEEN HI AND LO PARTS OF
DXCH MPAC # DP SFCON. SHIFTS RESULTS LEFT 14, BY
TC PRSHRTMP # TAKING RESULTS FROM MPAC+1, MPAC+2.
TC L14/OUT
DP1OUTSF TC DPOUT # SCALES MPAC, MPAC +1 BY DP SCALE FACTOR
L14/OUT XCH MPAC +2 # IN SFTEMP1, SFTEMP2. THEN SCALE RESULT
XCH MPAC +1 # BY B14.
TS MPAC
TC SCOUTEND
DP2OUTSF TC DPOUT # SCALES MPAC , MPAC +1 BY DP SCALE FACTOR
TC SCOUTEND
DP3OUTSF TC DPOUT # ASSUMES POINT BETWEEN BITS 7-8 OF HIGH
CAF SIX # LEFT BY 7, ROUNDS MPAC+2 INTO MPAC+1.
TC TPLEFTN # SHIFT LEFT 7.
TC SCOUTEND
MPAC+6 = MPAC +6 # USE MPAC +6 INSTEAD OF OVFIND
DPOUT XCH Q
TS MPAC+6
TC READLO # GET FRESH DATA FOR BOTH HI AND LO.
TC TPAGREE # MAKE DP DATA AGREE
TC DMP
ADRES SFTEMP1
## Page 427
TC MPAC+6
# THE FOLLOWING ROUTINE DISPLAYS TWO CONTIGUOUS SP POSITIVE INTEGERS
# AS TWO POSITIVE DECIMAL INTEGERS IN RXD1-RXD2 AND RXD4-RXD5 (RXD3 IS
# BLANKED). THE INTEGER IN THE LOWER NUMBERED ADDRESS IS DISPLAYED IN
# RXD1-RXD2.
2INTOUT TC 5BLANK # TO BLANK RXD3
TC +ON # TURN ON + SIGN
CA MPAC
TC DSPDECVN # DISPLAY 1ST INTEGER (LIKE VERB AND NOUN)
CS THREE
INDEX DECOUNT
AD R1D1 # RXD4
TS DSPCOUNT
TC READLO # GET 2ND INTEGER
CA MPAC +1
TC DSPDECVN # DISPLAY 2ND INTEGER (LIKE VERB AND NOUN)
TC POSTJUMP
CADR DSPDCEND +2
# READLO PICKS UP FRESH DATA FOR BOTH HI AND LO AND LEAVES IT IN
# MPAC, MPAC+1. THIS IS NEEDED FOR TIME DISPLAY. IT ZEROES MPAC+2, BUT
# DOES NOT FORCE TPAGREE.
READLO XCH Q
TS TEM4
INDEX MIXBR
TC +0
TC RDLONOR
INDEX DECOUNT
CA IDAD1TEM # GET IDADDTAB ENTRY FOR COMP K OF NOUN.
MASK LOW11 # E SUBK
TC SETEBANK # SET EB, LEAVE EADRES IN A.
READLO1 EXTEND # MIXED NORMAL
INDEX A # C(ESUBK) C(E)
DCA 0 # C((E SUBK)+1) C(E+1)
DXCH MPAC
CAF ZERO
TS MPAC +2
TC TEM4
RDLONOR CA NOUNADD # E
ENDRDLO TC READLO1
## Page 428
BANK 42
SETLOC PINBALL3
BANK
COUNT* $$/PIN
HMSOUT TC BANKCALL # READ FRESH DATA FOR HI AND LO INTO MPAC,
CADR READLO # MPAC+1.
TC TPAGREE # MAKE DP DATA AGREE
TC SEPSECNR # LEAVE FRACT SEC/60 IN MPAC, MPAC+1.LEAVE
# WHOLE MIN IN BIT13 OF LOTEMOUT AND ABOVE
TC DMP # USE ONLY FRACT SEC/60 MOD 60
ADRES SECON2 # MULT BY .06
CAF R3D1 # GIVES CENTI-SEC/10EXP5 MOD 60
TS DSPCOUNT
TC BANKCALL # DISPLAY SEC MOD 60
CADR DSPDECWD
TC SEPMIN # REMOVE REST OF SECONDS
CAF MINCON2 # LEAVE FRACT MIN/60 IN MPAC+1. LEAVE
XCH MPAC # WHOLE HOURS IN MPAC.
TS HITEMOUT # SAVE WHOLE HOURS.
CAF MINCON2 +1
XCH MPAC +1 # USE ONLY FRACT MIN/60 MOD 60
TC PRSHRTMP # IF C(A) = -0, SHORTMP FAILS TO GIVE -0.
# MULT BY .0006
CAF R2D1 # GIVES MIN/10EXP5 MOD 60
TS DSPCOUNT
TC BANKCALL # DISPLAY MIN MOD 60
CADR DSPDECWD
EXTEND # MINUTES, SECONDS HAVE BEEN REMOVED
DCA HRCON1
DXCH MPAC
CA HITEMOUT # USE WHOLE HOURS
TC PRSHRTMP # IF C(A) = -0, SHORTMP FAILS TO GIVE -0.
# MULT BY .16384
CAF R1D1 # GIVES HOURS/10EXP5
TS DSPCOUNT
TC BANKCALL # USE REGULAR DSPDECWD, WITH ROUND OFF.
CADR DSPDECWD
TC ENTEXIT
SECON1 2DEC* 1.666666666 E-4 B12* # 2EXP12/6000
SECON2 OCT 01727 # .06 FOR SECONDS DISPLAY
OCT 01217
MINCON2 OCT 00011 # .0006 FOR MINUTES DISLPAY
OCT 32445
MINCON1 OCT 02104 # .066..66 UPPED BY 2EXP-28
OCT 10422
HRCON1 2DEC .16384
## Page 429
OCT 00000
RNDCON OCT 00062 # .5 SEC
M/SOUT TC BANKCALL # READ FRESH DATA FOR HI AND LO INTO MPAC,
CADR READLO # MPAC+1.
TC TPAGREE # MAKE DP DATA AGREE
CCS MPAC # IF MAG OF (MPAC, MPAC+1) G/ 59 M 59 S,
TC +2 # DISPLAY 59B59, WITH PROPER SIGN.
TC M/SNORM # MPAC = +0. L/ 59M58.5S
AD M/SCON1 # - HI PART OF (59M58.5S) +1 FOR CCS
CCS A # MAG OF MPAC - HI PART OF (59M58.5S)
TC M/SLIMIT # G/ 59M58.5S
TC M/SNORM # ORIGINAL MPAC = -0. L/ 59M58.5S
TC M/SNORM # L/ 59M58.5S
CCS MPAC +1 # MAG OF MPAC = HI PART OF 59M58.5S
TC +2
TC M/SNORM # MPAC+1 = +0. L/ 59M58.5S
AD M/SCON2 # - LO PART OF (59M58.5S) +1 FOR CCS
CCS A # MAG OF MPAC+1 - LO PART OF (59M58.5S)
TC M/SLIMIT # G/ 59M58.5S
TC M/SNORM # ORIGINAL MPAC+1 = -0. L/ 59M58.5S
TC M/SNORM # L/ 59M58.5S
M/SLIMIT CCS MPAC # = 59M58.5S LIMIT
CAF M/SCON3 # MPAC CANNOT BE +/- 0 AT THIS POINT.
TC +LIMIT # FORCE MPAC, MPAC+1 TO +/- 59M59.5S
CS M/SCON3
TS MPAC # WILL DISPLAY 59M59S IN DSPDECNR
CS M/SCON3 +1
LIMITCOM TS MPAC +1
CAF NORMADR # SET RETURN TO M/SNORM+1.
TC SEPSECNR +1
+LIMIT TS MPAC
CAF M/SCON3 +1
TC LIMITCOM
M/SNORM TC SEPSEC # LEAVE FRACT SEC/60 IN MPAC,MPAC+1. LEAVE
# WHOLE MIN IN BIT13 OF LOTEMOUT AND ABOVE
CAF HISECON # USE ONLY FRACT SEC/60 MOD 60
TC SHORTMP # MULT BY .6 + 2EXP-14
CS THREE # GIVES SEC/100 MOD 60
ADS DSPCOUNT # DSPCOUNT ALREADY SET TO RXD1
TC BANKCALL # DISPLAY SEC MOD 60 IN D4D5.
CADR DSPDC2NR
CAF ZERO
TS CODE
CS TWO
INDEX DECOUNT
AD R1D1 # RXD3
TS COUNT
TC BANKCALL # BLANK MIDDLE CHAR
## Page 430
CADR DSPIN
TC SEPMIN # REMOVE REST OF SECONDS
XCH MPAC +1 # LEAVE FRACT MIN/60 IN MPAC+1
EXTEND # USE ONLY FRACT MIN/60 MOD 60
MP HIMINCON # MULT BY .6 + 2EXP-7
DXCH MPAC # GIVES MIN/100 MOD 60
INDEX DECOUNT
CAF R1D1 # RXD1
TS DSPCOUNT
TC BANKCALL # DISPLAY MIN MOD 60 IN D1D2.
CADR DSPDC2NR
TC POSTJUMP
CADR DSPDCEND +2
HISECON OCT 23147 # .6 + 2EXP-14
HIMINCON OCT 23346 # .6 + 2EXP-7
M/SCON1 OCT 77753 # - HI PART OF (59M58.5S) +1
M/SCON2 OCT 41126 # - LO PART OF (59M58.5S) +1
NORMADR ADRES M/SNORM +1
M/SCON3 OCT 00025 # 59M 59.5S
OCT 37016
SEPSEC CCS MPAC +1 # IF +, ROUND BY ADDING .5 SEC
TCF POSEC # IF -, ROUND BY SUBTRACTING .5 SEC
TCF POSEC # FINDS TIME IN MPAC, MPAC+1
TCF +1 # ROUNDS OFF BY +/- .5 SEC
EXTEND # LEAVES WHOLE MIN IN BIT13 OF
DCS RNDCON -1 # LOTEMOUT AND ABOVE.
SEPSEC1 DAS MPAC # LEAVES FRACT SEC/60 IN MPAC, MPAC+1.
TCF SEPSECNR
POSEC EXTEND
DCA RNDCON -1
TCF SEPSEC1
SEPSECNR XCH Q # THIS ENTRY AVOIDS ROUNDING BY .5 SEC
TS SEPSCRET
TC DMP # MULT BY 2EXP12/6000
ADRES SECON1 # GIVES FRACT SEC/60 IN BIT12 OF MPAC+1
EXTEND # AND BELOW.
DCA MPAC # SAVE MINUTES AND HOURS
DXCH HITEMOUT
TC TPSL1
TC TPSL1 # GIVES FRACT SEC/60 IN MPAC+1, MPAC+2.
CAF ZERO
XCH MPAC +2 # LEAVE FRACT SEC/60 IN MPAC, MPAC+1.
XCH MPAC +1
XCH MPAC
TC SEPSCRET
## Page 431
SEPMIN XCH Q # FINDS WHOLE MINUTES IN BIT13
TS SEPMNRET # OF LOTEMOUT AND ABOVE.
CA LOTEMOUT # REMOVES REST OF SECONDS.
EXTEND # LEAVES FRACT MIN/60 IN MPAC+1.
MP BIT3 # LEAVES WHOLE HOURS IN MPAC.
EXTEND # SR 12, THROW AWAY LP.
MP BIT13 # SR 2, TAKE FROM LP. = SL 12.
LXCH MPAC +1 # THIS FORCES BITS 12-1 TO 0 IF +,
# FORCES BITS 12-1 TO 1 IF -.
CA HITEMOUT
TS MPAC
TC DMP # MULT BY 1/15
ADRES MINCON1 # GIVES FRACT MIN/60 IN MPAC+1.
ENDSPMIN TC SEPMNRET # GIVES WHOLE HOURS IN MPAC.
# THIS IS A SPECIAL PURPOSE VERB FOR DISPLAYING A DOUBLE PRECISION AGC
# WORD AS 10 DECIMAL DIGITS ON THE AGC DISPLAY PANEL. IT CAN BE USED WITH
# ANY NOUN, EXCEPT MIXED NOUNS. IT DISPLAYS THE CONTENTS
# OF THE REGISTER NOUNADD IS POINTING TO . IF USED WITH NOUNS WHICH ARE
# INHERENTLY NOT DP SUCH AS THE CDU COUNTERS THE DISPLAY WILL BE GARBAGE.
# DISPLAY IS IN R1 AND R2 ONLY WITH THE SIGN IN R1.
SETLOC ENDRDLO +1
COUNT* $$/PIN
DSPDPDEC INDEX MIXBR
TC +0
TC +2 # NORMAL NOUN
TC DSPALARM
EXTEND
INDEX NOUNADD
DCA 0
DXCH MPAC
CAF R1D1
TS DSPCOUNT
CAF ZERO
TS MPAC +2
TC TPAGREE
TC DSP2DEC
ENDDPDEC TC ENTEXIT
## Page 432
# LOAD VERBS IF ALARM CONDITION IS DETECTED DURING EXECUTE,
# CHECK FAIL LIGHT IS TURNED ON AND ENDOFJOB. IF ALARM CONDITION IS
# DETECTED DURING ENTER OF DATA, CHECK FAIL IS TURNED ON AND IT RECYCLES
# TO EXECUTE OF ORIGINAL LOAD VERB. RECYCLE CAUSED BY 1) DECIMAL MACHINE
# CADR 2) MIXTURE OF OCTAL/DECIMAL DATA 3) OCTAL DATA INTO DECIMAL
# ONLY NOUN 4) DEC DATA INTO OCT ONLY NOUN 5) DATA TOO LARGE FOR SCALE
# 6) FEWER THAN 3 DATA WORDS LOADED FOR HRS, MIN, SEC NOUN.8(2)-(6) ALARM
# AND RECYCLE OCCUR AT FINAL ENTER OF SET. (1) ALARM AND RECYCLE OCCUR AT
# ENTER OF CADR.
SETLOC ENDRTOUT
COUNT* $$/PIN
ABCLOAD CS TWO
TC COMPTEST
TC NOUNTEST # TEST IF NOUN CAN BE LOADED.
CAF VBSP1LD
TC UPDATVB -1
TC REQDATX
CAF VBSP2LD
TC UPDATVB -1
TC REQDATY
CAF VBSP3LD
TC UPDATVB -1
TC REQDATZ
PUTXYZ CS SIX # TEST THAT THE 3 DATA WORDS LOADED ARE
TC ALLDC/OC # ALL DEC OR ALL OCT.
EXTEND
DCA LODNNLOC # SWITCH BANKS TO NOUN TABLE READING
DXCH Z # ROUTINE.
CAF ZERO # X COMP
TC PUTCOM
INDEX NOUNADD
TS 0
CAF ONE # Y COMP
TC PUTCOM
INDEX NOUNADD
TS 1
CAF TWO # Z COMP
TC PUTCOM
INDEX NOUNADD
TS 2
CS SEVEN # IF NOUN 7 HAS JUST BEEN LOADED, SET
AD NOUNREG # FLAG BITS AS SPECIFIED.
EXTEND
BZF +2
TC LOADLV
## Page 433
INHINT
CS OCT30 # IS IT A CHANNEL (30 OR UNDER)
AD XREG
EXTEND
BZMF CHANBITS # YES
CA XREG # ECADR OF ERASABLE CELL
TC SETNCADR +1 # SET EBANK, NOUNADD
INDEX NOUNADD
CA 0
TS L
CAF ONE
TS XREG # MAKE IT LOOK LIKE A CHANNEL FOR A WHILE
CHANBITS AD OCT21
EXTEND
BZF BITSOFF2 # DONT TOUCH CHAN7 (SUPERBANK)
CA ZREG
EXTEND
BZMF BITSOFF # R3 IS ZERO FOR OFF, NONZERO FOR ON
CA YREG
EXTEND
INDEX XREG
WOR 0
TCF BITSOFF1
BITSOFF CS YREG
EXTEND
INDEX XREG
WAND 0
BITSOFF1 CCS XREG # WAS IT REALLY A CHANNEL
CCS A
TCF BITSOFF2 # YES
INDEX NOUNADD
LXCH 0
BITSOFF2 RELINT
TC LOADLV
OCT30 = BITS4&5
ABLOAD CS ONE
TC COMPTEST
TC NOUNTEST # TEST IF NOUN CAN BE LOADED.
CAF VBSP1LD
TC UPDATVB -1
## Page 434
TC REQDATX
CAF VBSP2LD
TC UPDATVB -1
TC REQDATY
PUTXY CS FIVE # TEST THAT THE 2 DATA WORDS LOADED ARE
TC ALLDC/OC # ALL DEC OR ALL OCT.
EXTEND
DCA LODNNLOC # SWITCH BANKS TO NOUN TABLE READING
DXCH Z # ROUTINE.
CAF ZERO # X COMP
TC PUTCOM
INDEX NOUNADD
TS 0
CAF ONE # Y COMP
TC PUTCOM
INDEX NOUNADD
TS 1
TC LOADLV
ALOAD TC REQDATX
EXTEND
DCA LODNNLOC # SWITCH BANKS TO NOUN TABLE READING
DXCH Z # ROUTINE.
CAF ZERO # X COMP
TC PUTCOM
INDEX NOUNADD
TS 0
TC LOADLV
BLOAD CS ONE
TC COMPTEST
CAF BIT15 # SET CLPASS FOR PASS0 ONLY
TS CLPASS
TC REQDATY
EXTEND
DCA LODNNLOC # SWITCH BANKS TO NOUN TABLE READING
DXCH Z # ROUTINE.
CAF ONE
TC PUTCOM
INDEX NOUNADD
TS 1
TC LOADLV
CLOAD CS TWO
TC COMPTEST
CAF BIT15 # SET CLPASS FOR PASS0 ONLY
TS CLPASS
TC REQDATZ
EXTEND
DCA LODNNLOC # SWITCH BANKS TO NOUN TABLE READING
## Page 435
DXCH Z # ROUTINE.
CAF TWO
TC PUTCOM
INDEX NOUNADD
TS 2
TC LOADLV
LOADLV CAF ZERO
TS DECBRNCH
CS ZERO
TS LOADSTAT
TC RELDSP # RELEASE FOR PRIORITY DISPLAY PROBLEM.
CS VD1 # TO BLOCK NUMERICAL CHARACTERS AND
TS DSPCOUNT # CLEARS AFTER A COMPLETED LOAD
TC POSTJUMP # AFTER COMPLETED LOAD, GO TO RECALTST
CADR RECALTST # TO SEE IF THERE IS RECALL FROM ENDIDLE.
VBSP1LD DEC 21 # VB21 = ALOAD
VBSP2LD DEC 22 # VB22 = BLOAD
VBSP3LD DEC 23 # VB23 = CLOAD
ALLDC/OC TS DECOUNT # TESTS THAT DATA WORDS LOADED ARE EITHER
CS DECBRNCH # ALL DEC OR ALL OCT. ALARMS IF NOT.
TS SR
CS SR
CS SR # SHIFTED RIGHT 2
CCS A # DEC COMP BITS IN LOW 3
TCF +2 # SOME ONES IN LOW 3
TC Q # ALL ZEROS. ALL OCTAL. OK
AD DECOUNT # DEC COMP = 7 FOR 3COMP, =6 FOR 2COMP
EXTEND # (BUT IT HAS BEEN DECREMENTED BY CCS)
BZF +2 # MUST MATCH 6 FOR 3COMP, 5 FOR 2COMP.
TC ALMCYCLE # ALARM AND RECYCLE.
GOQ TC Q # ALL REQUIRED ARE DEC. OK
SFRUTNOR XCH Q # GETS SF ROUTINE NUMBER FOR NORMAL CASE
TS EXITEM # CANT USE L FOR RETURN. TSTFORDP USES L.
CAF MID5
MASK NNTYPTEM
TC RIGHT5
TC EXITEM # SF ROUTINE NUMBER IN A
SFRUTMIX XCH Q # GETS SF ROUTINE NUMBER FOR MIXED CASE
TS EXITEM
INDEX DECOUNT
CAF DISPLACE # PUT TC GOQ, TC RIGHT5, OR TC LEFT5 IN L
TS L
INDEX DECOUNT
## Page 436
CAF LOW5 # LOW5, MID5, OR HI5 IN A
MASK RUTMXTEM # GET HI5, MID5, OR LOW5 OF RUTMXTAB ENTRY
INDEX L
TC 0
# DO TC GOQ(DECOUNT=0), DO TC RIGHT5(DECOUNT=1), DO TC LEFT5(DECOUNT=2).
SFRET1 TC EXITEM # SF ROUTINE NUMBER IN A
SFCONUM XCH Q # GETS 2X( SF CONSTANT NUMBER)
TS EXITEM
INDEX MIXBR
TC +0
TC CONUMNOR # NORMAL NOUN
INDEX DECOUNT # MIXED NOUN
CAF DISPLACE
TS L # PUT TC GOQ, TC RIGHT5, OR TC LEFT5 IN L
INDEX DECOUNT
CAF LOW5
MASK NNTYPTEM
INDEX L
TC 0
# DO TC GOQ(DECOUNT=0), DO TC RIGHT5(DECOUNT=1), DO TC LEFT5(DECOUNT=2).
SFRET DOUBLE # 2X(SF CONSTANT NUMBER ) IN A
TC EXITEM
DISPLACE TC GOQ
TC RIGHT5
TC LEFT5
CONUMNOR CAF LOW5 # NORMAL NOUN ALWAYS GETS LOW 5 OF
MASK NNTYPTEM # NNTYPTAB FOR SF CONUM.
DOUBLE
TC EXITEM # 2X( SF CONSTANT NUMBER) IN A
PUTCOM TS DECOUNT
XCH Q
TS DECRET
CAF ZERO
TS MPAC+6
INDEX DECOUNT
XCH XREGLP
TS MPAC +1
INDEX DECOUNT
XCH XREG
TS MPAC
INDEX MIXBR
TC +0
TC PUTNORM # NORMAL NOUN
# IF MIXNOUN, PLACE ADDRESS FOR COMPONENT K INTO NOUNADD, SET EBANK BITS.
INDEX DECOUNT # GET IDADDTAB ENTRY FOR COMPONENT K
## Page 437
CA IDAD1TEM # OF NOUN.
MASK LOW11 # (ECADR)SUBK FOR CURRENT COMP OF NOUN
TC SETNCADR # ECADR INTO NOUNCADR. SETS EB, NOUNADD.
EXTEND # C(NOUNADD) IN A UPON RETURN
SU DECOUNT # PLACE (ESUBK)-K INTO NOUNADD
TS NOUNADD
CCS DECBRNCH
TC PUTDECSF # + DEC
TC DCTSTCYC # +0 OCTAL
TC SFRUTMIX # TEST IF DEC ONLY BIT = 1. IF SO,
TC DPTEST # ALARM AND RECYCLE. IF NOT, CONTINUE.
TC PUTCOM2 # NO DP
# TEST FOR DP SCALE FOR OCT LOAD. IF SO,
# +0 INTO MAJOR PART. SET NOUNADD FOR
# LOADING OCTAL WORD INTO MINOR PART.
PUTDPCOM INCR NOUNADD # DP (ESUBK)-K+1 OR E+1
CA NOUNADD # NOUNADD NOW SET FOR MINOR PART
ADS DECOUNT # (ESUBK)+1 OR E+1 INTO DECOUNT
CAF ZERO # NOUNADD SET FOR MINOR PART
INDEX DECOUNT
TS 0 -1 # ZERO MAJOR PART(ESUBK OR E)
TC PUTCOM2
PUTNORM TC SETNADD # ECADR FROM NOUNCADR. SETS EB, NOUNADD.
CCS DECBRNCH
TC PUTDECSF # + DEC
TC DCTSTCYC # +0 OCTAL
TC SFRUTNOR # TEST IF DEC ONLY BIT = 1. IF SO,
TC DPTEST # ALARM AND RECYCLE. IF NOT, CONTINUE.
TC PUTCOM2 -4 # NO DP
CAF ZERO # DP
TS DECOUNT
TC PUTDPCOM
CA NNADTEM
AD ONE # IF NNADTEM = -1, CHANNEL TO BE SPECIFIED
EXTEND
BZF CHANLOAD
PUTCOM2 XCH MPAC
TC DECRET
EBANK= DSPCOUNT
GTSFINLC 2CADR GTSFIN
CHANLOAD CS SEVEN # DONT LOAD CHAN 7. (IT = SUPERBANK).
AD NOUNCADR
EXTEND
BZF LOADLV
## Page 438
CA NOUNCADR
MASK LOW9
XCH MPAC
EXTEND
INDEX MPAC
WRITE 0
TC LOADLV
# PUTDECSF FINDS MIXBR AND DECOUNT STILL SET FROM PUTCOM
PUTDECSF TC SFCONUM # 2X(SF CON NUMB) IN A
TS SFTEMP1
EXTEND # SWITCH BANKS TO SF CONSTANT TABLE
DCA GTSFINLC # READING ROUTINE.
DXCH Z # LOADS SFTEMP1, SFTEMP2.
INDEX MIXBR
TC +0
TC PUTSFNOR
TC SFRUTMIX
TC PUTDCSF2
PUTSFNOR TC SFRUTNOR
PUTDCSF2 INDEX A
CAF SFINTABR
TC BANKJUMP # SWITCH BANKS FOR EXPANSHION ROOM
SFINTABR CADR GOALMCYC # ALARM AND RECYCLE IF DEC LOAD
# WITH OCTAL ONLY NOUN.
CADR BINROUND
CADR DEGINSF
CADR ARTHINSF
CADR DPINSF
CADR DPINSF2
CADR DSPALARM # LRPOSOUT CANT BE LOADED.
CADR DPINSF # SAME AS ARITHDP1
CADR HMSIN
CADR DSPALARM # MIN/SEC CANT BE LOADED.
CADR DPINSF4
CADR ARTIN1SF
CADR DSPALARM # 2INTOUT CANT BE LOADED.
CADR DEGINSF # TESTS AT END FOR 360-CDU
CADR DSPALARM # RRANGOUT CANT BE LOADED.
CADR DSPALARM # RRDOTOUT CANT BE LOADED.
ENDRUTIN EQUALS
# SCALE FACTORS FOR THOSE ROUTINES NEEDING THEM ARE AVAILABLE IN SFTEMP1.
# ALL SFIN ROUTINES USE MPAC MPAC+1. LEAVE RESULT IN A. END WITH TC DECRET
## Page 439
SETLOC ENDDPDEC +1
COUNT* $$/PIN
# DEGINSF APPLIES 1000/180 = 5.55555(10) = 5.43434(8)
DEGINSF TC DMP # SF ROUTINE FOR DEC DEGREES
ADRES DEGCON1 # MULT BY 5.5 5(10)X2EXP-3
CCS MPAC +1 # THIS ROUNDS OFF MPAC+1 BEFORE SHIFT
CAF BIT11 # LEFT 3, AND CAUSES 360.00 TO OF/UF
TC +2 # WHEN SHIFTED LEFT AND ALARM.
CS BIT11
AD MPAC +1
TC 2ROUND +2
TC TPSL1 # LEFT 1
DEGINSF2 TC TPSL1 # LEFT 2
TC TESTOFUF
TC TPSL1 # RETURNS IF NO OF/UF (LEFT3)
CCS MPAC
TC SIGNFIX # IF+, GO TO SIGNFIX
TC SIGNFIX # IF +0, GO TO SIGNFIX
COM # IF - , USE -MAGNITUDE +1
TS MPAC # IF -0, USE +0
SIGNFIX CCS MPAC+6
TC SGNTO1 # IF OVERFLOW
TC ENDSCALE # NO OVERFLOW/UNDERFLOW
CCS MPAC # IF UF FORCE SIGN TO 0 EXCEPT -180
TC CCSHOLE
TC NEG180
TC +1
XCH MPAC
MASK POSMAX
TS MPAC
ENDSCALE INDEX MIXBR # IF ROUTINE NO. IS NOT CDU DEGREES,
TC +0 # THEN THIS IS 360 - CDU DEGREES
TC +3 # AND ANGLE IN MPAC MUST BE REPLACED
TC SFMIXCAL # BY 360 DEGREES MINUS ITSELF.
MIXBACK TC +2
TC SFNORCAL
NORBACK CS A
AD BIT2
EXTEND
BZF +2
TC 360-CDU
ENDSCAL1 TC POSTJUMP
CADR PUTCOM2
SFMIXCAL TC BANKCALL
CADR SFRUTMIX
TC MIXBACK
## Page 440
SFNORCAL TC BANKCALL
CADR SFRUTNOR
TC NORBACK
NEG180 CS POSMAX
TC ENDSCALE -1
SGNTO1 CS MPAC # IF OF FORCE SIGN TO 1
MASK POSMAX
CS A
TC ENDSCALE -1
DEGCON1 2DEC 5.555555555 B-3
ARTHINSF TC DMP # SCALES MPAC, +1 BY SFTEMP1, SFTEMP2.
ADRES SFTEMP1 # ASSUMES POINT BETWEEN HI AND LO PARTS
XCH MPAC +2 # OF SFCON. SHIFTS RESULTS LEFT BY 14.
XCH MPAC +1 # (BY TAKING RESULTS FROM MPAC+1, MPAC+2)
XCH MPAC
EXTEND
BZF BINROUND
TC ALMCYCLE # TOO LARGE A LOAD. ALARM AND RECYCLE.
BINROUND TC 2ROUND
TC TESTOFUF
TC ENDSCAL1 # RETURNS IF NO OF/UF
ARTIN1SF TC DMP # SCALES MPAC, +1 BY SFTEMP1, SFTEMP2.
ADRES SFTEMP1 # ROUNDS MPAC+1 INTO MPAC.
TC BINROUND
DPINSF TC DMP # SCALES MPAC, MPAC +1 BY SFTEMP1,
ADRES SFTEMP1 # SFTEMP2. STORES LOW PART OF RESULT
XCH MPAC +2 # IN (E SUBK) +1 OR E+1
DOUBLE
TS MPAC +2
CAF ZERO
AD MPAC +1
TC 2ROUND +2
TC TESTOFUF
INDEX MIXBR # RETURNS IF NO OF/UF
TC +0
TC DPINORM
CA DECOUNT # MIXEDNOUN
DPINCOM AD NOUNADD # MIXED NORMAL
TS Q # E SUBK E
XCH MPAC +1
INDEX Q
TS 1 # PLACE LOW PART IN
## Page 441
TC ENDSCAL1 # (E SUBK) +1 MIXED
DPINORM CAF ZERO # E +1 NORMAL
TC DPINCOM
DPINSF2 TC DMP # ASSUMES POINT BETWEEN BITS 7-8 OF HIGH
ADRES SFTEMP1 # PART OF SF CONST. DPINSF2 SHIFTS RESULTS
CAF SIX # LEFT BY 7, ROUNDS MPAC+2 INTO MPAC+1
TC TPLEFTN # SHIFT LEFT 7.
TC DPINSF +2
DPINSF4 TC DMP # ASSUMES POINT BETWEEN BITS 11-12 OF HIGH
ADRES SFTEMP1 # PART OF SF CONST. DPINSF2 SHIFTS RESULTS
CAF TWO # LEFT BY 3, ROUNDS MPAC+2 INTO MPAC+1.
TC TPLEFTN # SHIFT LEFT 3.
TC DPINSF +2
TPLEFTN XCH Q # SHIFTS MPAC, +1, +2 LEFT N. SETS OVFIND
TS SFTEMP2 # TO +1 FOR OF, -1 FOR UF.
XCH Q # CALL WITH N-1 IN A.
LEFTNCOM TS SFTEMP1 # LOOP TIME .37 MSEC.
TC TPSL1
CCS SFTEMP1
TC LEFTNCOM
TC SFTEMP2
2ROUND XCH MPAC +1
DOUBLE
TS MPAC +1
TC Q # IF MPAC+1 DOES NOT OF/UF
AD MPAC
TS MPAC
TC Q # IF MPAC DOES NOT OF/UF
TS MPAC+6
2RNDEND TC Q
TESTOFUF CCS MPAC+6 # RETURNS IF NO OF/UF
TC ALMCYCLE # OF ALARM AND RECYCLE.
TC Q
TC ALMCYCLE # UF ALARM AND RECYCLE.
SETLOC ENDSPMIN +1
COUNT* $$/PIN
## Page 442
HMSIN TC ALL3DEC # IF ALL 3 WORDS WERE NOT LOADED, ALARM.
TC DMP # XREG, XREGLP (=HOURS) WERE ALREADY PUT
ADRES WHOLECON # INTO MPAC, MPAC+1.
TC RND/TST # ROUND OFF TO WHOLE HRS IN MPAC+1.
CAF ZERO # ALARM IF MPAC NON ZERO (G/ 16383 ).
TS MPAC +2
CAF HRCON
TS MPAC
CAF HRCON +1
XCH MPAC +1
TC SHORTMP
TC MPACTST # ALARM IF MPAC NON ZERO (G/ 745)
DXCH MPAC +1 # STORE HOURS CONTRIBUTION
DXCH HITEMIN
CA YREG # PUT YREG, YREGLP INTO MPAC, +1.
LXCH YREGLP
DXCH MPAC
TC DMP
ADRES WHOLECON
TC RND/TST # ROUND OFF TO WHOLE MIN IN MPAC+1
CS 59MIN # ALARM IF MPAC NON ZERO (G/16383)
TC SIZETST # ALARM IF MPAC+1 G/ 59MIN
XCH MPAC +1
EXTEND
MP MINCON # LEAVES MINUTES CONTRIBUTION IN A,L
DAS HITEMIN # ADD IN MINUTES CONTRIBUTION
EXTEND # IF THIS DAS OVERFLOWS, G/ 745HR,39MIN
BZF +2
TC ALMCYCLE
CA ZREG # PUT ZREG, ZREGLP INTO MPAC, +1.
LXCH ZREGLP
DXCH MPAC
TC DMP
ADRES WHOLECON
TC RND/TST # ROUND OFF TO WHOLE CENTI-SEC IN MPAC+1
CS 59.99SEC # ALARM IF MPAC NON ZERO (G/163.83 SEC)
TC SIZETST # ALARM IF MPAC+1 G/59.99 SEC
DXCH HITEMIN # ADD IN SECONDS CONTRIBUTION
DAS MPAC # IF THIS DAS OVERFLOWS,
EXTEND # G/ 745 HR, 39 MIN, 14.55 SEC.
BZF +2
TC ALMCYCLE # ALARM AND RECYCLE
CAF ZERO
TS MPAC +2
TC TPAGREE
DXCH MPAC
INDEX NOUNADD
DXCH 0
TC POSTJUMP
CADR LOADLV
## Page 443
WHOLECON OCT 00006 # (10EXP5/2EXP14)2EXP14
OCT 03240
HRCON OCT 00025 # 1 HOUR IN CENTI-SEC
OCT 37100
MINCON OCT 13560 # 1 MINUTE IN CENTI-SEC
59MIN OCT 00073 # 59 AS WHOLE
59.99SEC OCT 13557 # 5999 CENTI-SEC
RND/TST XCH MPAC +2 # ROUNDS MPAC+2 INTO MPAC+1.
DOUBLE # ALARMS IF MPAC NOT 0
TS MPAC +2
CAF ZERO
AD MPAC +1
TS MPAC +1
CAF ZERO
AD MPAC # CANT OVFLOW
XCH MPAC
MPACTST CCS MPAC # ALARM IF MPAC NON ZERO
TC ALMCYCLE # ALARM AND RECYCLE.
TC Q
TC ALMCYCLE # ALARM AND RECYCLE.
TC Q
SIZETST TS MPAC +2 # CALLED WITH - CON IN A
CCS MPAC +1 # GET MAG OF MPAC+1
AD ONE
TCF +2
AD ONE
AD MPAC +2
EXTEND # MAG OF MPAC+1 - CON
BZMF +2
TC ALMCYCLE # MAG OF MPAC+1 G/ CON. ALARM AND RECYCLE.
TC Q # MAG OF MPAC+1 L/= CON
# ALL3DEC TESTS THAT ALL 3 WORDS ARE LOADED IN DEC (FOR HMSIN).
# ALARM IF NOT.( TEST THAT BITS 3,4,5 OF DECBRNCH ARE ALL = 1)
ALL3DEC CS OCT34BAR # GET BITS 3,4,5 IN A
MASK DECBRNCH # GET BITS 3,4,5 OF DECBRNCH IN A
AD OCT34BAR # BITS 3,4,5 OF DECBRNCH MUST ALL = 1
CCS A
TC FORCEV25
OCT34BAR OCT 77743
TC FORCEV25
TC Q
FORCEV25 CS OCT31 # FORCE VERB 25 TO BE EXECUTED BY RECYCLE
TS VERBSAVE # IN CASE OPERATOR EXECUTED A LOWER LOAD
## Page 444
TC ALMCYCLE # VERB. ALARM AND RECYCLE.
ENDHMSS EQUALS
## Page 445
# MONITOR ALLOWS OTHER KEYBOARD ACTIVITY. IT IS ENDED BY VERB TERMINATE,
# VERB PROCEED WITHOUT DATA, VERB RESEQUENCE,
# ANOTHER MONITOR, OR ANY NVSUB CALL THAT PASSES THE DSPLOCK (PROVIDED
# THAT THE OPERATOR HAS SOMEHOW ALLOWED THE ENDING OF A MONITOR WHICH
# HE HAS INITIATED THROUGH THE KEYBOARD).
# MONITOR ACTION IS SUSPENDED, BUT NOT ENDED, BY ANY KEYBOARD ACTION,
# EXCEPT ERROR LIGHT RESET. IT BEGINS AGAIN WHEN KEY RELEASE IS PERFORMED.
# MONITOR SAVES THE NOUN AND APPROPRIATE DISPLAY VERB IN MONSAVE. IT SAVES
# NOUNCADR IN MONSAVE1, IF NOUN = MACHINE CADR TO BE SPECIFIED. BIT 15 OF
# MONSAVE1 IS THE KILL MONITOR SIGNAL (KILLER BIT). BIT 14 OF MONSAVE1
# INDICATES THE CURRENT MONITOR WAS EXTERNALLY INITIATED (EXTERNAL
# MONITOR BIT). IT IS TURNED OFF BY RELDSP AND KILMONON.
# MONSAVE INDICATES IF MONITOR IS ON(+=ON, +0=OFF)
# IF MONSAVE IS +, MONITOR ENTERS NO REQUEST, BUT TURNS KILLER BIT OFF.
# IF MONSAVE IS +0, MONITOR ENTERS REQUEST AND TURNS KILLER BIT OFF.
# NVSUB (IF EXTERNAL MONITOR BIT IS OFF), VB=PROCEED WITHOUT DATA,
# VB=RESEQUENCE, AND VB=TERMINATE TURN KILL MONITOR BIT ON.
# IF KILLER BIT IS ON, MONREQ ENTERS NO FURTHER REQUESTS, ZEROS MONSAVE
# AND MONSAVE1 (TURNING OFF KILLER BIT AND EXTERNAL MONITOR BIT).
# MONITOR DOSENT TEST FOR MATBS SINCE NVSUB CAN HANDLE INTERNAL MATBS NOW
SETLOC ENDRUTIN
COUNT* $$/PIN
MONITOR CS BIT15/14
MASK NOUNCADR
MONIT1 TS MPAC +1 # TEMP STORAGE
CS ENTEXIT
AD ENDINST
CCS A
TC MONIT2
BIT15/14 OCT 60000
TC MONIT2
CAF BIT14 # EXTERNALLY INITIATED MONITOR,
ADS MPAC +1 # SET BIT 14 FOR MONSAVE1.
CAF ZERO
TS MONSAVE2 # ZERO NVMONOPT OPTIONS
MONIT2 CAF LOW7
MASK VERBREG
TC LEFT5
TS CYL
CS CYL
XCH CYL
AD NOUNREG
TS MPAC # TEMP STORAGE
CAF ZERO
## Page 446
TS DSPLOCK # +0 INTO DSPLOCK SO MONITOR CAN RUN.
CCS CADRSTOR # TURN OFF KR LITE IF CADRSTOR AND DSPLIST
TC +2 # ARE BOTH EMPTY. (LITE COMES ON IF NEW
TC RELDSP1 # MONITOR IS KEYED IN OVER OLD MONITOR.)
INHINT
CCS MONSAVE
TC +5 # IF MONSAVE WAS +, NO REQUEST
CAF ONE # IF MONSAVE WAS 0, REQUEST MONREQ
TC WAITLIST
EBANK= DSPCOUNT
2CADR MONREQ
DXCH MPAC # PLACE MONITOR VERB AND NOUN INTO MONSAVE
DXCH MONSAVE # ZERO THE KILL MONITOR BIT
RELINT # SET UP EXTERNAL MONITOR BIT
TC ENTRET
MONREQ TC LODSAMPT # CALLED BY WAITLIST
CCS MONSAVE1 # TIME IS SNATCHED IN RUPT FOR NOUN 65
TC +4 # IF KILLER BIT = 0, ENTER REQUESTS
TC +3 # IF KILLER BIT = 0, ENTER REQUESTS
TC KILLMON # IF KILLER BIT = 1, NO REQUESTS
TC KILLMON # IF KILLER BIT = 1, NO REQUESTS
CAF MONDEL
TC WAITLIST # ENTER WAITLIST REQUEST FOR MONREQ
EBANK= DSPCOUNT
2CADR MONREQ
CAF CHRPRIO
TC NOVAC # ENTER EXEC REQUEST FOR MONDO
EBANK= DSPCOUNT
2CADR MONDO
TC TASKOVER
KILLMON CAF ZERO # ZERO MONSAVE AND TURN KILLER BIT OFF
TS MONSAVE
TS MONSAVE1 # TURN OFF KILL MONITOR BIT.
TC TASKOVER # TURN OFF EXTERNAL MONITOR BIT.
MONDEL OCT 144 # FOR 1 SEC MONITOR INTERVALS
MONDO CCS MONSAVE1 # CALLED BY EXEC
TC +4 # IF KILLER BIT = 0, CONTINUE
TC +3 # IF KILLER BIT = 0, CONTINUE
TC ENDOFJOB # IN CASE TERMINATE CAME SINCE LAST MONREQ
TC ENDOFJOB # IN CASE TERMINATE CAME SINCE LAST MONREQ
CCS DSPLOCK
TC MONBUSY # NVSUB IS BUSY
## Page 447
CAF LOW7
MASK MONSAVE
TC UPDATNN -1 # PLACE NOUN INTO NOUNREG AND DISPLAY IT
CAF MID7
MASK MONSAVE # CHANGE MONITOR VERB TO DISPLAY VERB
AD MONREF # -DEC10, STARTING IN BIT8
TS EDOP # RIGHT 7
CA EDOP
TS VERBREG
CAF MONBACK # SET RETURN TO PASTEVB AFTER DATA DISPLAY
TS ENTRET
CS BIT15/14
MASK MONSAVE1 # PUT ECADR INTO MPAC +2. INTMCTBS WILL
TS MPAC +2 # DISPLAY IT AND SET NOUNCADR, NOUNADD,
ENDMONDO TC TESTNN # EBANK.
BLOCK 2
SETLOC FFTAG8
BANK
COUNT* $$/PIN
PASTEVB CAF MID7
MASK MONSAVE2 # NVMONOPT PASTE OPTION
EXTEND
BZF +2
TC PASTEOPT # PASTE PLEASE VERB FOR NVMONOPT
CA MONSAVE # PASTE MONITOR VERB - PASTE OPTION IS 0
PASTEOPT TS EDOP # RIGHT 7
CA EDOP # PLACE MONITOR VERB OR PLEASE VERB INTO
TC BANKCALL # VERBREG AND DISPLAY IT.
CADR UPDATVB -1
CAF ZERO # ZERO REQRET SO THAT PASTED VERBS CAN
TS REQRET # BE EXECUTED BY OPERATOR.
CA MONSAVE2
TC BLANKSUB # PROCESS NVMONOPT BLANK OPTION IF ANY
TC +1
ENDPASTE TC ENDOFJOB
MID7 OCT 37600
SETLOC ENDMONDO +1
COUNT* $$/PIN
MONREF OCT 75377 # -DEC10, STARTING IN BIT8
MONBACK ADRES PASTEVB
MONBUSY TC RELDSPON # TURN KEY RELEASE LIGHT
TC ENDOFJOB
## Page 448
# DSPFMEM IS USED TO DISPLAY (IN OCTAL) ANY FIXED REGISTER.
# IT IS USED WITH NOUN = MACHINE CADR TO BE SPECIFIED. THE FCADR OF THE
# DESIRED LOCATION IS THEN PUNCHED IN. IT HANDLES F/F ( FCADR 4000-7777)
# FOR BANKS L/E 27, THIS IS ENOUGH.
# FOR BANKS G/E 30, THE THIRD COMPONENT OF NOUN 26 (PRIO, ADRES, BBCON)
# MUST BE PRELOADED WITH THE DESIRED SUPERBANK BITS (BITS 5,6,7).
# V23N26 SHOULD BE USED.
# SUMMARY
# FOR BANKS L/E 27, V27N01E(FCADR)E
# FOR BANKS G/E 30, V23N26E(SUPERBITS)E V27N01E(FCADR)E
DSPFMEM CAF R1D1 # IF F/F, DATACALL USES BANK 02 OR 03.
TS DSPCOUNT
CA DSPTEM1 +2 # SUPERBANK BITS WERE PRELOADED INTO
TS L # 3RD COMPONENT OF NOUN 26.
CA NOUNCADR # ORIGINAL FCADR LOADED STILL IN NOUNCADR.
TC SUPDACAL # CALL WITH FCADR IN A, SUPERBITS IN L.
TC DSPOCTWD
ENDSPF TC ENDOFJOB
## Page 449
# WORD DISPLAY ROUTINES
SETLOC TESTOFUF +4
COUNT* $$/PIN
DSPSIGN XCH Q
TS DSPWDRET
CCS MPAC
TC +8D
TC +7
AD ONE
TS MPAC
TC -ON
CS MPAC +1
TS MPAC +1
TC DSPWDRET
TC +ON
TC DSPWDRET
DSPRND EXTEND # ROUND BY 5 EXP-6
DCA DECROUND -1
DAS MPAC
EXTEND
BZF +4
EXTEND
DCA DPOSMAX
DXCH MPAC
TC Q
# DSPDECWD CONVERTS C( MPAC, MPAC+1) INTO A SIGN AND 5 CHAR DECIMAL
# STARTING IN LOC SPECIFIED IN DSPCOUNT. IT ROUNDS BY 5 EXP-6.
DSPDECWD XCH Q
TS WDRET
TC DSPSIGN
TC DSPRND
CAF FOUR
DSPDCWD1 TS WDCNT
CAF BINCON
TC SHORTMP
TRACE1 INDEX MPAC
CAF RELTAB
MASK LOW5
TS CODE
CAF ZERO
XCH MPAC +2
XCH MPAC +1
TS MPAC
XCH DSPCOUNT
TRACE1S TS COUNT
CCS A # DECREMENT DSPCOUNT EXCEPT AT +0
## Page 450
TS DSPCOUNT
TC DSPIN
CCS WDCNT
TC DSPDCWD1
CS VD1
TS DSPCOUNT
TC WDRET
OCT 00000
DECROUND OCT 02476
# DSPDECNR CONVERTS C( MPAC,MPAC+1) INTO A SIGN AND 5 CHAR DECIMAL
# STARTING IN LOC SPECIFIED IN DSPCOUNT. IT DOES NOT ROUND
DSPDECNR XCH Q
TS WDRET
TC DSPSIGN
TC DSPDCWD1 -1
# DSPDC2NR CONVERTS C( MPAC,MPAC+1) INTO A SIGN AND 2 CHAR DECIMAL
# STARTING IN LOC SPECIFIED IN DSPCOUNT. IT DOES NOT ROUND
DSPDC2NR XCH Q
TS WDRET
TC DSPSIGN
CAF ONE
TC DSPDCWD1
# DSP2DEC CONVERTS C(MPAC) AND C(MPAC+1) INTO A SIGN AND 10 CHAR DECIMAL
# STARTING IN THE LOC SPECIFIED IN DSPCOUNT.
DSP2DEC XCH Q
TS WDRET
CAF ZERO
TS CODE
CAF THREE
TC 11DSPIN # -R2 OFF
CAF FOUR
TC 11DSPIN # +R2 OFF
TC DSPSIGN
CAF R2D1
END2DEC TC DSPDCWD1
# DSPDECVN DISPLAYS C(A) UPON ENTRY AS A 2 CHAR DECIMAL BEGINNING IN THE
# DSP LOC SPECIFIED IN DSPCOUNT.
# C(A) SHOULD BE IN FORM N X 2EXP-14. THIS IS SCALED TO FORM N/100 BEFORE
# DISPLAY CONVERSION.
## Page 451
DSPDECVN EXTEND
MP VNDSPCON # MULT BY .01
LXCH MPAC # TAKE RESULTS FROM L.(MULT BY 2EXP14).
CAF ZERO
TS MPAC +1
XCH Q
TS WDRET
TC DSPDC2NR +3 # NO SIGN, NO ROUND, 2 CHAR
VNDSPCON OCT 00244 # .01 ROUNDED UP
GOVNUPDT TC DSPDECVN # THIS IS NOT FOR GENERAL USE. REALLY PART
TC POSTJUMP # OF UPDATVB.
CADR UPDAT1 +2
ENDECVN EQUALS
SETLOC ENDSPF +1
COUNT* $$/PIN
# DSPOCTWD DISPLAYS C(A) UPON ENTRY AS A 5 CHAR OCT STARTING IN THE DSP
# CHAR SPECIFIED IN DSPCOUNT. IT STOPS AFTER 5 CHAR HAVE BEEN DISPLAYED.
DSPOCTWD TS CYL
XCH Q
TS WDRET # MUST USE SAME RETURN AS DSP2BIT.
CAF BIT14 # TO BLANK SIGNS
ADS DSPCOUNT
CAF FOUR
WDAGAIN TS WDCNT
CS CYL
CS CYL
CS CYL
CS A
MASK DSPMSK
INDEX A
CAF RELTAB
MASK LOW5
TS CODE
XCH DSPCOUNT
TS COUNT
CCS A # DECREMENT DSPCOUNT EXCEPT AT +0
TS DSPCOUNT
TC POSTJUMP
CADR DSPOCTIN
OCTBACK CCS WDCNT
TC WDAGAIN # +
DSPLV CS VD1 # TO BLOCK NUMERICAL CHARACTERS, CLEARS,
TS DSPCOUNT # AND SIGNS AFTER A COMPLETED DISPLAY.
## Page 452
TC WDRET
DSPMSK = SEVEN
# FOR DSPIN PLACE 0/25 OCT INTO COUNT, 5 BIT RELAY CODE INTO CODE. BOTH
# ARE DESTROYED. IF BIT14 OF COUNT IS 1, SIGN IS BLANKED WITH LEFT CHAR.
# FOR DSPIN1 PLACE 0,1 INTO BIT11 OF CODE, 2 INTO COUNT, REL ADDRESS OF
# DSPTAB ENTRY INTO DSREL.
SETLOC ENDECVN
COUNT* $$/PIN
DSPIN XCH Q # CANT USE L FOR RETURN, SINCE MANY OF THE
TS DSEXIT # ROUTINES CALLING DSPIN USE L AS RETURN.
CAF LOW5
MASK COUNT
TS SR
XCH SR
TS DSREL
CAF BIT1
MASK COUNT
CCS A
TC +2 # LEFT IF COUNT IS ODD
TC DSPIN1 -1 # RIGHT IF COUNT IS EVEN
XCH CODE
TC SLEFT5 # DOES NOT USE CYL
TS CODE
CAF BIT14
MASK COUNT
CCS A
CAF TWO # BIT14 = 1, BLANK SIGN
AD ONE # BIT14 = 0, LEAVE SIGN ALONE
TS COUNT # +0 INTO COUNT FOR RIGHT
# +1 INTO COUNT FOR LEFT(SIGN LEFT ALONE)
# +3 INTO COUNT FOR LEFT(TO BLANK SIGN)
DSPIN1 INHINT
INDEX DSREL
CCS DSPTAB
TC +2 # IF +
TC CCSHOLE
AD ONE # IF-
TS DSMAG
INDEX COUNT
MASK DSMSK
EXTEND
SU CODE
EXTEND
BZF DSLV # SAME
DFRNT INDEX COUNT
## Page 453
CS DSMSK # MASK WITH 77740,76037,75777, OR 74037
MASK DSMAG
AD CODE
CS A
INDEX DSREL
XCH DSPTAB
EXTEND
BZMF DSLV # DSPTAB ENTRY WAS -
INCR NOUT # DSPTAB ENTRY WAS +
DSLV RELINT
TC DSEXIT
DSMSK OCT 37
OCT 1740
OCT 2000
OCT 3740
# FOR 11DSPIN, PUT REL ADDRESSS OF DSPTAB ENTRY INTO A, 1 IN BIT11 OR 0 IN
# BIT11 OF CODE.
11DSPIN TS DSREL
CAF TWO
TS COUNT
XCH Q # MUST USE SAME RETURN AS DSPIN
TS DSEXIT
TC DSPIN1
DSPOCTIN TC DSPIN # SO DSPOCTWD DOESNT USE SWCALL
CAF +2
TC BANKJUMP
ENDSPOCT CADR OCTBACK
# DSPALARM FINDS TC NVSUBEND IN ENTRET FOR NVSUB INITIATED ROUTINES.
# ABORT WITH 01501.
# DSPALARM FINDS TC ENDOFJOB IN ENTRET FOR KEYBOARD INITIATED ROUTINES.
# DO TC ENTRET.
PREDSPAL CS VD1
TS DSPCOUNT
DSPALARM CS NVSBENDL
AD ENTEXIT
EXTEND
BZF CHARALRM +2
CS MONADR # IF THIS IS A MONITOR, KILL IT
AD ENTEXIT
EXTEND
BZF +2
## Page 454
TC CHARALRM
TC KILMONON
TC FALTON
TC PASTEVB # PUT MONITOR VERB BACK IN VERBREG
CHARALRM TC FALTON # NOT NVSUB INITIATED. TURN ON OPR ERROR
TC ENDOFJOB
TC POODOO
OCT 21501
MONADR GENADR PASTEVB
NVSBENDL TC NVSUBEND
# ALMCYCLE TURNS ON CHECK FAIL LIGHT, REDISPLAYS THE ORIGINAL VERB THAT
# WAS EXECUTED, AND RECYCLES TO EXECUTE THE ORIGINAL VERB/NOUN COMBINATION
# THAT WAS LAST EXECUTED. USED FOR BAD DATA DURING LOAD VERBS AND BY
# MCTBS. ALSO BY MMCHANG IF 2 NUMERICAL CHARACTERS WERE NOT PUNCHED IN
# FOR MM CODE.
SETLOC MID7 +1
COUNT* $$/PIN
ALMCYCLE TC FALTON # TURN ON CHECK FAIL LIGHT.
CS VERBSAVE # GET ORIGINAL VERB THAT WAS EXECUTED
TS REQRET # SET FOR ENTPAS0
TC BANKCALL # PUTS ORIGINAL VERB INTO VERBREG AND
CADR UPDATVB -1 # DISPLAYS IT IN VERB LIGHTS.
TC POSTJUMP
ENDALM CADR ENTER
# MMCHANG USES NOUN DISPLAY UNTIL ENTER. THEN IT USES MODE DISP.
# IT GOES TO MODROUT WITH THE NEW M M CODE IN A, BUT NOT DISPLAYED IN
# MM LIGHTS.
# IT DEMANDS 2 NUMERICAL CHARACTERS BE PUNCHED IN FOR NEW MM CODE.
# IF NOT, IT RECYCLES.
SETLOC DSPLV +3
COUNT* $$/PIN
MMCHANG TC REQMM # ENTPASHI ASSUMES THE TC REQMM AT MMCHANG
# IF THIS MOVES AT ALL, MUST CHANGE
# MMADREF AT ENTPASHI.
CAF BIT5 # OCT20 = ND2.
AD DSPCOUNT # DSPCOUNT MUST = -ND2.
EXTEND # DEMAND THAT 2 NUM CHAR WERE PUNCHED IN.
BZF +2
TC ALMCYCLE # DSPCOUNT NOT= -ND2. ALARM AND RECYCLE.
CAF ZERO # DSPCOUNT = -ND2.
XCH NOUNREG
TS MPAC
CAF ND1
TS DSPCOUNT
## Page 455
TC BANKCALL
CADR 2BLANK
CS VD1 # BLOCK NUM CHAR IN
TS DSPCOUNT
CA MPAC
TC POSTJUMP
CADR MODROUTB # GO THRU STANDARD LOC.
MODROUTB = V37
REQMM CS Q
TS REQRET
CAF ND1
TS DSPCOUNT
CAF ZERO
TS NOUNREG
TC BANKCALL
CADR 2BLANK
TC FLASHON
CAF ONE
TS DECBRNCH # SET FOR DEC
TC ENTEXIT
# VBRQEXEC ENTERS REQUEST TO EXEC FOR ANY ADDRESS WITH ANY PRIORITY.
# IT DOES ENDOFJOB AFTER ENTERING REQUEST. DISPLAY SYST IS RELEASED.
# IT ASSUMES NOUN 26 HAS BEEN PRELOADED WITH
# COMPONENT 1 PRIORITY(BITS 10-14) BIT1=0 FOR NOVAC, BIT1=1 FOR FINDVAC.
# COMPONENT 2 JOB ADRES (12 BIT )
# COMPONENT 3 BBCON
VBRQEXEC CAF BIT1
MASK DSPTEM1
CCS A
TC SETVAC # IF BIT1 = 1, FINDVAC
CAF TCNOVAC # IF BIT1 = 0, NOVAC
REQEX1 TS MPAC # TC NOVAC OR TC FINDVAC INTO MPAC
CS BIT1
MASK DSPTEM1
TS MPAC +4 # PRIO INTO MPAC+4 AS A TEMP
REQUESTC TC RELDSP
CA ENDINST
TS MPAC +3 # TC ENDOFJOB INTO MPAC+3
EXTEND
DCA DSPTEM1 +1 # JOB ADRES INTO MPAC+1
DXCH MPAC +1 # BBCON INTO MPAC+2
CA MPAC +4 # PRIO IN A
INHINT
TC MPAC
## Page 456
SETVAC CAF TCFINDVC
TC REQEX1
# VBRQWAIT ENTERS REQUEST TO WAITLIST FOR ANY ADDRESS WITH ANY DELAY.
# IT DOES ENDOFJOB AFTER ENTERING REQUEST.DISPLAY SYST IS RELEASED.
# IT ASSUMES NOUN 26 HAS BEEN PRELOADED WITH
# COMPONENT 1 DELAY (LOW BITS)
# COMPONENT 2 TASK ADRES (12 BIT)
# COMPONENT 3 BBCON
VBRQWAIT CAF TCWAIT
TS MPAC # TC WAITLIST INTO MPAC
CA DSPTEM1 # TIME DELAY
ENDRQWT TC REQUESTC -1
# REQUESTC WILL PUT TASK ADRES INTO MPAC+1, BBCON INTO MPAC+2,
# TC ENDOFJOB INTO MPAC+3. IT WILL TAKE TIME DELAY OUT OF MPAC+4 AND
# LEAVE IT IN A, INHINT AND TC MPAC.
SETLOC NVSBENDL +1
COUNT* $$/PIN
VBPROC CAF ONE # PROCEED WITHOUT DATA
TS LOADSTAT
TC KILMONON # TURN ON KILL MONITOR BIT
TC RELDSP
TC FLASHOFF
TC RECALTST # SEE IF THERE IS ANY RECALL FROM ENDIDLE
VBTERM CS ONE
TC VBPROC +1 # TERM VERB SETS LOADSTAT NEG
# PROCKEY PERFORMS THE SAME FUNCTION AS VBPROC. IT MUST BE CALLED UNDER
# EXECUTIVE CONTROL, WITH CHRPRIO.
PROCKEY CS VERBREG # DONT ALLOW PROCEED DURING LOAD.
AD VBSP2LD* # DEC 22
EXTEND
DIM A
EXTEND
BZF CHARALRM
PROCKEY1 CAF ZERO # SET REQRET FOR ENTER PASS 0.
TS REQRET
CS VD1 # BLOCK NUMERICAL CHARACTERS, SIGNS, CLEAR
TS DSPCOUNT
TC VBPROC
# VBRESEQ WAKES ENDIDLE AT SAME LINE AS FINAL ENTER OF LOAD (L+3).
## Page 457
# (MAIN USE IS INTENDED AS RESPONSE TO INTERNALLY INITIATED FLASHING
# DISPLAYS IN ENDIDLE. SHOULD NOT BE USED WITH LOAD VERBS,PLEASE PERFORM,
# OR PLEASE MARK VERBS BECAUSE THEY ALREADY USE L+3 IN ANOTHER CONTEXT.)
VBRESEQ CS ZERO # MAKE IT LOOK LIKE DATA IN.
TC VBPROC +1
VBSP2LD* DEC 22 # VB22 = BLOAD
# FLASH IS TURNED OFF BY PROCEED WITHOUT DATA, TERMINATE, RESEQUENCE,
# END OF LOAD.
## Page 458
# KEY RELEASE ROUTINE
# THIS ROUTINE ALWAYS TURNS OFF THE UPACT LIGHT AND ALWAYS CLEARS DSPLOCK.
# THE HIGHEST PRIORITY FUNCTION OF THE KEY RELEASE BUTTON IS THE
# UNSUSPENDING OF A SUSPENDED MONITOR WHICH WAS EXTERNALLY INITIATED.
# THIS FUNCTION IS ACCOMPLISHED BY CLEARING DSPLOCK AND TURNING OFF
# THE KEY RELEASE LIGHT IF BOTH DSPLIST AND CADRSTOR ARE EMPTY.
# IF NO SUCH MONITOR EXISTS, THEN RELDSP IS EXECUTED TO CLEAR DSPLOCK
# AND THE EXTERNAL MONITOR BIT (FREEING THE DISPLAY SYSTEM FOR INTERNAL
# USE), TURN OFF THE KEY RELEASE LIGHT, AND WAKE UP ANY JOB IN DSPLIST.
# IN ADDITION IF THERE IS A JOB IN ENDIDLE, THEN CONTROL IS TRANSFERRED
# TO PINBRNCH (IN DISPLAY INTERFACE ROUTINE) TO RE-EXECUTE THE SERIES OF
# NVSUB CALLS ETC. THAT PRECEDED THE ENDIDLE CALL STILL AWAITING RESPONSE.
# THIS FEATURE IS INTENDED FOR USE WHEN THE OPERATOR HAS BEEN REQUESTED TO
# RESPOND TO SOME INTERNAL ACTION THAT USED ENDIDLE, BUT HE HAS WRITTEN
# OVER THE INFORMATION ON THE DISPLAY PANEL BY SOME DISPLAYS OF HIS OWN
# INITIATION WHICH DO NOT SERVE AS RESPONSES. HITTING KEY RLSE WILL
# RE-ESTABLISH THE DISPLAYS TO THE STATE THEY WERE IN BEFORE HE OBSCURED
# THEM, SO THAT HE CAN SEE THE WAITING REQUEST. THIS WORKS ONLY FOR
# INTERNAL PROGRAMS THAT USED ENDIDLE THROUGH MARGARETS DISPLAY
# SUBROUTINES.
VBRELDSP CS BIT3
EXTEND
WAND DSALMOUT # TURN OFF UPACT LITE
CCS 21/22REG # OLD DSPLOCK
CAF BIT14
MASK MONSAVE1 # EXTERNAL MONITOR BIT (EMB)
CCS A
TC UNSUSPEN # OLD DSPLOCK AND EMB BOTH 1, UNSUSPEND.
TSTLTS4 TC RELDSP # NOT UNSUSPENDING EXTERNAL MONITOR,
CCS CADRSTOR # RELEASE DISPLAY SYSTEM AND
TC +2 # DO RE-ESTABLISH IF CADRSTOR IS FULL.
TC ENDOFJOB
TC POSTJUMP
CADR PINBRNCH
UNSUSPEN CAF ZERO # EXTERNAL MONITOR IS SUSPENDED,
TS DSPLOCK # JUST UNSUSPEND IT BY CLEARING DSPLOCK.
CCS CADRSTOR # TURN KEY RELEASE LIGHT OFF IF BOTH
TC ENDOFJOB # CADRSTOR AND DSPLIST ARE EMPTY.
TC RELDSP1
TC ENDOFJOB
ENDRELDS EQUALS
## Page 459
# NVSUB IS USED FOR SUB ROUTINE CALLS FROM WITHIN COMPUTER. IT CAN BE
# USED TO CALL THE COMBINATION OF ANY DISPLAY, LOAD, OR MONITOR VERB
# TOGETHER WITH ANY NOUN AVAILABLE TO THE KEYBOARD.
# PLACE 0VVVVVVVNNNNNNN INTO A.
# V-S ARE THE 7 BIT VERB CODE. N-S ARE THE 7 BIT NOUN CODE.
# IF NVSUB IS CALLED WITH THE FOLLOWING NEGATIVE NUMBERS (RATHER THAN THE
# VERB-NOUN CODE) IN A, THEN THE DISPLAY IS BLANKED AS FOLLOWS-
# -4 FULL BLANK, -3 LEAVE MODE, -2 LEAVE MODE AND VERB, -1 BLANK R-S ONLY
# NVSUB CAN BE USED WITH MACH CADR TO BE SPEC BY PLACING THE CADR INTO
# MPAC+2 BEFORE THE STANDARD NVSUB CALL.
# NVSUB RETURNS TO 2+ CALLING LOC AFTER PERFORMING TASK, IF DISPLAY
# SYSTEM IS AVAILABLE. THE NEW NOUN AND VERB CODES ARE DISPLAYED.
# IF V:S =0, THE NEW NOUN CODE IS DISPLAYED ONLY(RETURN WITH NO FURTHER
# ACTION). IF N-S =0, THE NEW VERB CODE IS DISPLAYED ONLY(RETURN WITH NO
# FURTHER ACTION).
# IT RETURNS TO 1+ CALLING LOC WITHOUT PERFORMING TASK, IF DISPLAY
# SYSTEM IS BLOCKED (NOTHING IS DISPLAYED IN THIS CASE).
# IT DOES TC ABORT (WITH OCT 01501) IF IT ENCOUNTERS A DISPLAY PROGRAM
# ALARM CONDITION BEFORE RETURN TO CALLER.
# THE DISPLAY SYSTEM IS BLOCKED BY THE DEPRESSION OF ANY
# KEY, EXCEPT ERROR LIGHT RESET
# IT IS RELEASED BY THE KEY RELEASE BUTTON, ALL EXTENDED VERBS,
# PROCEED WITHOUT DATA, TERMINATE, RESEQUENCE, INITIALIZE EXECUTIVE,
# RECALL PART OF RECALTST IF ENDIDLE WAS USED,
# VB = REQUEST EXECUTIVE, VB = REQUEST WAITLIST,
# MONITOR SET UP.
# THE DISPLAY SYSTEM IS ALSO BLOCKED BY THE EXTERNAL MONITOR BIT, WHICH
# INDICATES AN EXTERNALLY INITIATED MONITOR IS RUNNING (SEE MONITOR)
# A NVSUB CALL THAT PASSES DSPLOCK AND THE EXTERNAL MONITOR BIT ENDS OLD
# MONITOR.
# DSPLOCK IS THE INTERLOCK FOR USE OF KEYBOARD AND DISPLAY SYSTEM WHICH
# LOCKS OUT INTERNAL USE WHENEVER THERE IS EXTERNAL KEYBOARD ACTION.
# NVSUB SHOULD BE USED TWICE IN SUCCESSION FOR :PLEASE PERFORM: SITUATIONS
# (SIMILARLY FOR PLEASE MARK). FIRST PLACE THE CODED NUMBER FOR WHAT
# ACTION IS DESIRED OF OPERATOR INTO THE REGISTERS REFERRED TO BY THE
# :CHECKLIST: NOUN. GO TO NVSUB WITH A DISPLAY VERB AND THE :CHECKLIST:
# NOUN. GO TO NVSUB AGAIN WITH THE :PLEASE PERFORM: VERB AND ZEROS IN THE
# LOW 7 BITS. THIS :PASTES UP: THE :PLEASE PERFORM: VERB INTO THE VERB
# LIGHTS.
# NVMONOPT IS AN ENTRY SIMILAR TO NVSUB, BUT REQUIRING AN ADDITIONAL
## Page 460
# PARAMETER IN L. IT SHOULD BE USED ONLY WITH A MONITOR VERB-NOUN CODE IN
# A. AFTER EACH MONITOR DISPLAY A *PLEASE* VERB WILL BE PASTED IN THE VERB
# LIGHTS OR DATA WILL BE BLANKED (OR BOTH) ACCORDING TO THE OPTIONS
# SPECIFIED IN L. IF BITS 8-14 OF L ARE OTHER THAN ZERO, THEN THEY WILL
# BE INTERPRETED AS A VERB CODE AND PASTED IN THE VERB LIGHTS. (THIS VERB
# CODE SHOULD DESIGNATE ONE OF THE *PLEASE* VERBS.) IF BITS 1-3 OF L ARE
# OTHER THAN ZERO, THEN THEY WILL BE USED TO BLANK DATA BY BEING FED TO
# BLANKSUB. IF NVMONOPT IS USED WITH A VERB OTHER THAN A MONITOR VERB,
# THE PARAMETER IN L HAS NO EFFECT.
# NVSUB IN FIXED-FIXED PLACES 2+CALLING LOC INTO NVQTEM, TC NVSUBEND INTO
# ENTRET. (THIS WILL RESTORE OLD CALLING BANK BITS)
SETLOC ENDALM +1
COUNT* $$/PIN
NVSUB LXCH 7 # ZERO NVMONOPT OPTIONS
NVMONOPT TS NVTEMP
CAF BIT14
MASK MONSAVE1 # EXTERNAL MONITOR BIT
AD DSPLOCK
CCS A
TC Q # DSP SYST BLOCKED. RET TO 1+ CALLING LOC
CAF ONE # DSP SYST AVAILABLE
NVSBCOM AD Q
TS NVQTEM # 2+ CALLING LOC INTO NVQTEM
LXCH MONSAVE2 # STORE NVMONOPT OPTIONS
TC KILMONON # TURN ON KILL MONITOR BIT
NVSUBCOM CAF NVSBBBNK
XCH BBANK
EXTEND # SAVE OLD SUPERBITS
ROR SUPERBNK
TS NVBNKTEM
CAF PINSUPBT
EXTEND
WRITE SUPERBNK
TC NVSUBB # GO TO NVSUB1 THRU STANDARD LOC
EBANK= DSPCOUNT
NVSBBBNK BBCON NVSUB1
PINSUPBT = NVSBBBNK # CONTAINS THE PINBALL SUPERBITS.
NVSUBEND DXCH NVQTEM # NVBNKTEM MUST = NVQTEM+1
TC SUPDXCHZ # DTCB WITH SUPERBIT SWITCHING
SETLOC ENDRQWT +1
COUNT* $$/PIN
# BLANKDSP BLANKS DISPLAY ACCORDING TO OPTION NUMBER IN NVTEMP AS FOLLOWS
## Page 461
# -4 FULL BLANK, -3 LEAVE MODE, -2 LEAVE MODE AND VERB, -1 BLANK R-S ONLY
BLANKDSP AD SEVEN # 7,8,9,OR 10 (A HAD 0,1,2,OR 3)
INHINT
TS CODE # BLANK SPECIFIED DSPTABS
CS BIT12
INDEX CODE
XCH DSPTAB
CCS A
INCR NOUT
TC +1
CCS CODE
TC BLANKDSP +2
RELINT
INDEX NVTEMP
TC +5
TC +1 # NVTEMP HAS -4 (NEVER TOUCH MODREG)
TS VERBREG # -3
TS NOUNREG # -2
TS CLPASS # -1
CS VD1
TS DSPCOUNT
TC FLASHOFF # PROTECT AGAINST INVISIBLE FLASH
TC ENTSET -2 # ZEROS REQRET
NVSUB1 CAF ENTSET # IN BANK
TS ENTRET # SET RETURN TO NVSUBEND
CCS NVTEMP # WHAT NOW
TC +4 # NORMAL NVSUB CALL (EXECUTE VN OR PASTE)
TC GODSPALM
TC BLANKDSP # BLANK DISPLAY AS SPECIFIED
TC GODSPALM
CAF LOW7
MASK NVTEMP
TS MPAC +3 # TEMP FOR NOUN (CANT USE MPAC. DSPDECVN
CA NVTEMP # USES MPAC, +1, +2
TS EDOP # RIGHT 7
CA EDOP
TS MPAC +4 # TEMP FOR VERB (CANT USE MPAC+1. DSPDECVN
# USES MPAC, +1, +2).
CCS MPAC +3 # TEST NOUN
TC NVSUB2 # IF NOUN NOT +0, GO ON
CA MPAC +4
TC UPDATVB -1 # IF NOUN = +0, DISPLAY VERB . THEN RETURN
CAF ZERO # ZERO REQRET SO THAT PASTED VERBS CAN
TS REQRET # BE EXECUTED BY OPERATOR.
ENTSET TC NVSUBEND
NVSUB2 CCS MPAC +4 # TEST VERB
TC +4 # IF VERB NOT +0, GO ON
CA MPAC +3
## Page 462
TC UPDATNN -1 # IF VERB = +0, DISPLAY NOUN. THEN RETURN
TC NVSUBEND
CA MPAC +2 # TEMP FOR MACH CADR TO BE SPEC. (DSPDECVN
TS MPAC +5 # USES MPAC, +1, +2)
CA MPAC +4
TC UPDATVB -1 # IF BOTH NOUN AND VERB NOT +0, DISPLAY
CA MPAC +3 # BOTH AND GO TO ENTPAS0.
TC UPDATNN -1
CAF ZERO
TS LOADSTAT # SET FOR WAITING FOR DATA CONDITION
TS CLPASS
TS REQRET # SET REQRET FOR PASS 0.
CA MPAC +5 # RESTORES MACH CADR TO BE SPEC TO MPAC+2
TS MPAC +2 # FOR USE IN INTMCTBS (IN ENTPAS0).
ENDNVSB1 TC ENTPAS0
# IF INTERNAL MACH CADR TO BE SPECIFIED, MPAC+2 WILL BE PLACED INTO
# NOUNCADR IN ENTPAS0 (INTMCTBS ).
SETLOC NVSUBEND +2
COUNT* $$/PIN
# FORCE BIT 15 OF MONSAVE1 TO 1.
KILMONON CAF BIT15 # THIS IS THE KILL MONITOR BIT.
TS MONSAVE1 # TURN OFF BIT 14, THE EXTERNAL
# MONITOR BIT.
TC Q
# LOADSTAT +0 INACTIVE(WAITING FOR DATA). SET BY NVSUB
# +1 PROCEED NO DATA. SET BY SPECIAL VERB
# -1 TERMINATE SET BY SPECIAL VERB
# -0 DATA IN SET BY END OF LOAD ROUTINE
# OR RESEQUENCE SET BY VERB 32
# L TC ENDIDLE (FIXED FIXED)
# ROUTINES THAT REQUEST LOADS THROUGH NVSUB SHOULD USE ENDIDLE WHILE
# WAITING FOR THE DATA TO BE LOADED. ENDIDLE PUTS CURRENT JOB TO SLEEP.
# ENDIDLE CANNOT BE CALLED FROM ERASABLE OR F/F MEMORY,
# SINCE JOBSLEEP AND JOBWAKE CAN HANDLE ONLY FIXED BANKS.
# RECALTST TESTS LOADSTAT AND WAKES JOB UP TO,
# L+1 FOR TERMINATE
# L+2 FOR PROCEED WITHOUT DATA
# L+3 FOR DATA IN, OR RESEQUENCE
# IT DOES NOTHING IF LOADSTAT INDICATES WAITING FOR DATA.
# ENDIDLE ABORTS (WITH CODE 01206) IF A SECOND JOB ATTEMPTS TO GO TO SLEEP
## Page 463
# IN PINBALL. IN PARTICULAR, IF AN ATTEMPT IS MADE TO GO TO ENDIDLE WHEN
# 1) CADRSTOR NOT= +0. THIS IS THE CASE WHERE THE CAPACITY OF ENDIDLE IS
# EXCEEDED. (+-NZ INDICATE A JOB IS ALREADY ASLEEP DUE TO ENDIDLE.)
# 2) DSPLIST NOT= +0. THIS INDICATES A JOB IS ALREADY ASLEEP DUE TO
# NVSUBUSY.
ENDIDLE LXCH Q # RETURN ADDRESS INTO L.
TC ISCADR+0 # ABORT IF CADRSTOR NOT= +0
TC ISLIST+0 # ABORT IF DSPLIST NOT= +0
CA L # DONT SET DSPLOCK TO 1 SO CAN USE
MASK LOW10 # ENDIDLE WITH NVSUB INITIATED MONITOR.
AD FBANK # SAME STRATEGY FOR CADR AS MAKECADR.
TS CADRSTOR
TC JOBSLEEP
ENDINST TC ENDOFJOB
ISCADR+0 CCS CADRSTOR # ABORTS (CODE 01206) IF CADRSTOR NOT= +0.
TC DSPABORT # RETURNS IF CADRSTOR = +0.
TC Q
TC DSPABORT
ISLIST+0 CCS DSPLIST # ABORTS (CODE 01206) IF DSPLIST NOT= +0.
TC DSPABORT # RETURNS IF DSPLIST = +0.
TC Q
DSPABORT TC BAILOUT
OCT 31206
# JAMTERM ALLOWS PROGRAMS TO PERFORM THE TERMINATE FUNCTION.
# IT DOES ENDOFJOB.
JAMTERM CAF PINSUPBT
EXTEND
WRITE SUPERBNK
CAF 34DEC
TS REQRET # LEAVE ENTER SET FOR ENTPASS0.
CS VD1
TS DSPCOUNT
TC POSTJUMP
CADR VBTERM
34DEC DEC 34
# JAMPROC ALLOWS PROGRAMS TO PERFORM THE PROCEED/PROCEED WITHOUT DATA
# FUNCTION. IT DOES ENDOFJOB.
JAMPROC CAF PINSUPBT
## Page 464
EXTEND
WRITE SUPERBNK
CAF 33DEC
TS REQRET # LEAVE ENTER SET FOR ENTPASS0.
CS VD1
TS DSPCOUNT
TC POSTJUMP
CADR VBPROC
33DEC DEC 33
# BLANKSUB BLANKS ANY COMBINATION OF R1, R2, R3.
# CALL WITH BLANKING CODE IN A.
# BIT1=1 BLANKS R1, BIT2=1 BLANKS R2, BIT3=1 BLANKS R3.
# ANY COMBINATION OF THESE BITS IS ACCEPTED.
# DSPCOUNT IS RESTORED TO STATE IT WAS IN BEFORE BLANKSUB WAS EXECUTED.
BLANKSUB MASK SEVEN
TS NVTEMP # STORE BLANKING CODE IN NVTEMP.
CAF BIT14
MASK MONSAVE1 # EXTERNAL MONITOR BIT
AD DSPLOCK
CCS A
TC Q # DSP SYST BLOCKED. RET TO 1+ CALLING LOC
INCR Q # DSP SYST AVAILABLE
# SET RETURN FOR 2+ CALLING LOC
CCS NVTEMP
TCF +2
TC Q # NOTHING TO BLANK. RET TO 2+ CALLING LOC
LXCH Q # SET RETURN FOR 2 + CALLING LOC
CAF BLNKBBNK
XCH BBANK
EXTEND
ROR SUPERBNK # SAVE OLD SUPERBITS.
DXCH BUF
CAF PINSUPBT
EXTEND
WRITE SUPERBNK
TC BLNKSUB1
EBANK= DSPCOUNT
BLNKBBNK BBCON BLNKSUB1
ENDBLFF EQUALS
SETLOC ENDRELDS
COUNT* $$/PIN
BLNKSUB1 CA DSPCOUNT # SAVE OLD DSPCOUNT FOR LATER RESTORATION
TS BUF +2
## Page 465
CAF BIT1 # TEST BIT1. SEE IF R1 TO BE BLANKED.
TC TESTBIT
CAF R1D1
TC 5BLANK -1
CAF BIT2 # TEST BIT 2. SEE IF R2 TO BE BLANKED.
TC TESTBIT
CAF R2D1
TC 5BLANK -1
CAF BIT3 # TEST BIT3. SEE IF R3 TO BE BLANKED.
TC TESTBIT
CAF R3D1
TC 5BLANK -1
CA BUF +2 # RESTORE DSPCOUNT TO STATE IT HAD
TS DSPCOUNT # BEFORE BLANKSUB.
DXCH BUF # CALL L+2 DIRECTLY.
TC SUPDXCHZ +1 # DTCB WITH SUPERBIT SWITCHING
TESTBIT MASK NVTEMP # NVTEMP CONTAINS BLANKING CODE.
CCS A
TC Q # IF CURRENT BIT = 1, RETURN TO L+1.
INDEX Q # IF CURRENT BIT = 0, RETURN TO L+3.
TC 2
ENDBSUB1 EQUALS
# DSPMM DOES NOT DISPLAY MODREG DIRECTLY. IT PUTS IN EXEC REQUEST WITH
# PRIO 30000 FOR DSPMMJB AND RETURNS TO CALLER.
# IF MODREG CONTAINS -0, DSPMMJB BLANKS THE MODE LIGHTS.
# DSPMM MUST BE IN BANK 27 OR LOWER, SO IT CAN BE CALLED VIA BANKCALL.
BANK 7
SETLOC PINBALL4
BANK
COUNT* $$/PIN
DSPMM XCH Q
TS MPAC
INHINT
CAF CHRPRIO
TC NOVAC
EBANK= DSPCOUNT
2CADR DSPMMJB
RELINT
ENDSPMM TC MPAC
# DSPMM PLACE MAJOR MODE CODE INTO MODREG
## Page 466
SETLOC ENDBSUB1
COUNT* $$/PIN
DSPMMJB CAF MD1 # GETS HERE THRU DSPMM
XCH DSPCOUNT
TS DSPMMTEM # SAVE DSPCOUNT
CCS MODREG
AD ONE
TC DSPDECVN # IF MODREG IS + OR +0, DISPLAY MODREG
TC +2 # IF MODREG IS -NZ, DO NOTHING
TC 2BLANK # IF MODREG IS -0, BLANK MM
XCH DSPMMTEM # RESTORE DSPCOUNT
TS DSPCOUNT
TC ENDOFJOB
# RECALTST IS ENTERED DIRECTLY AFTER DATA IS LOADED (OR RESEQUENCE VERB IS
# EXECUTED), TERMINATE VERB IS EXECUTED, OR PROCEED WITHOUT DATA VERB IS
# EXECUTED. IT WAKES UP JOB THAT DID TC ENDIDLE.
# IF CADRSTOR NOT= +0, IT PUTS +0 INTO DSPLOCK, AND TURNS OFF KEY RLSE
# LIGHT IF DSPLIST IS EMPTY (LEAVES KEY RLSE LIGHT ALONE IF NOT EMPTY).
RECALTST CCS CADRSTOR
TC RECAL1
TC ENDOFJOB # NORMAL EXIT IF KEYBOARD INITIATED
RECAL1 CAF ZERO
XCH CADRSTOR
INHINT
TC JOBWAKE
CCS LOADSTAT
TC DOPROC # + PROCEED WITHOUT DATA
TC ENDOFJOB # PATHALOGICAL CASE EXIT
TC DOTERM # - TERMINATE
CAF TWO # -0 DATA IN OR RESEQUENCE
RECAL2 INDEX LOCCTR
AD LOC # LOC IS + FOR BASIC JOBS
INDEX LOCCTR
TS LOC
CA NOUNREG # SAVE VERB IN MPAC, NOUN IN MPAC+1 AT
TS L # TIME OF RESPONSE TO ENDIDLE FOR
CA VERBREG # POSSIBLE LATER TESTING BY JOB THAT HAS
INDEX LOCCTR # BEEN WAKED UP.
DXCH MPAC
RELINT
RECAL3 TC RELDSP
TC ENDOFJOB
DOTERM CAF ZERO
TC RECAL2
## Page 467
DOPROC CAF ONE
TC RECAL2
## Page 468
# MISCELLANEOUS SERVICE ROUTINES IN FIXED/FIXED
SETLOC ENDBLFF
COUNT* $$/PIN
# SETNCADR E CADR ARRIVES IN A. IT IS STORED IN NOUNCADR. EBANK BITS
# ARE SET. E ADRES IS DERIVED AND PUT INTO NOUNADD.
SETNCADR TS NOUNCADR # STORE ECADR
TS EBANK # SET EBANK BITS
MASK LOW8
AD OCT1400
TS NOUNADD # PUT E ADRES INTO NOUNADD
TC Q
# SETNADD GETS E CADR FROM NOUNCADR, SETS EBANK BITS, DERIVES
# E ADRES AND PUTS IT INTO NOUNADD.
SETNADD CA NOUNCADR
TCF SETNCADR +1
# SETEBANK E CADR ARRIVES IN A. EBANK BITS ARE SET. E ADRES IS
# DERIVED AND LEFT IN A.
SETEBANK TS EBANK # SET EBANK BITS
MASK LOW8
AD OCT1400 # E ADRES LEFT IN A
TC Q
R1D1 OCT 16 # THESE 3 CONSTANTS FORM A PACKED TABLE.
R2D1 OCT 11 # DONT SEPARATE.
R3D1 OCT 4
RIGHT5 TS CYR
CS CYR
CS CYR
CS CYR
CS CYR
XCH CYR
TC Q
LEFT5 TS CYL
CS CYL
CS CYL
CS CYL
CS CYL
## Page 469
XCH CYL
TC Q
SLEFT5 DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
TC Q
LOW5 OCT 37 # THESE 3 CONSTANTS FORM A PACKED TABLE.
MID5 OCT 1740 # DONT SEPARATE.
HI5 OCT 76000 # MUST STAY HERE
TCNOVAC TC NOVAC
TCWAIT TC WAITLIST
TCTSKOVR TC TASKOVER
TCFINDVC TC FINDVAC
CHRPRIO OCT 30000 # EXEC PRIORITY OF CHARIN
LOW11 OCT 3777
B12-1 EQUALS LOW11
LOW8 OCT 377
VD1 OCT 23 # THESE 3 CONSTANTS FORM A PACKED TABLE.
ND1 OCT 21 # DONT SEPARATE.
MD1 OCT 25
BINCON DEC 10
FALTON CA BIT7 # TURN ON OPERATOR ERROR LIGHT
EXTEND
WOR DSALMOUT # BIT 7 OF CHANNEL 11
TC Q
FALTOF CS BIT7 # TURN OFF OPERATOR ERROR LIGHT
EXTEND
WAND DSALMOUT # BIT 7 OF CHANNEL 11
TC Q
RELDSPON CAF BIT5 # TURN ON KEY RELEASE LIGHT
EXTEND
WOR DSALMOUT # BIT 5 OF CHANNEL 11
TC Q
## Page 470
LODSAMPT EXTEND
DCA TIME2
DXCH SAMPTIME
TC Q
TPSL1 EXTEND # SHIFTS MPAC, +1, +2 LEFT 1
DCA MPAC +1 # LEAVES OVFIND SET TO +/- 1 FOR OF/UF
DAS MPAC +1
AD MPAC
ADS MPAC
TS 7 # TS A DOES NOT CHANGE A ON OF/UF.
TC Q # NO NET OF/UF
TS MPAC+6 # MPAC +6 SET TO +/-1 FOR OF/UF
TC Q
# IF MPAC, +1 ARE EACH +NZ OR +0 AND C(A)=-0, SHORTMP WRONGLY GIVES +0.
# IF MPAC, +1 ARE EACH -NZ OR -0 AND C(A)=+0, SHORTMP WRONGLY GIVES +0.
# PRSHRTMP FIXES FIRST CASE ONLY, BY MERELY TESTING C(A) AND IF IT = -0,
# SETTING RESULT TO -0.
# (DO NOT USE PRSHRTMP UNLESS MPAC, +1 ARE EACH +NZ OR +0, AS THEY ARE
# WHEN THEY CONTAIN TH E SF CONSTANTS.)
PRSHRTMP TS MPTEMP
CCS A
CA MPTEMP # C(A) +, DO REGULAR SHORTMP
TCF SHORTMP +1 # C(A) +0, DO REGULAR SHORTMP
TCF -2 # C(A) -, DO REGULAR SHORTMP
CS ZERO # C(A) -0, FORCE RESULT TO -0 AND RETURN.
TS MPAC
TS MPAC +1
TS MPAC +2
TC Q
FLASHON CAF BIT6 # TURN ON V/N FLASH
EXTEND # BIT 6 OF CHANNEL 11
WOR DSALMOUT
TC Q
FLASHOFF CS BIT6 # TURN OFF V/N FLASH
EXTEND
WAND DSALMOUT # BIT 6 OF CHANNEL 11
TC Q
## Page 471
# INTERNAL USE OF KEYBOARD AND DISPLAY PROGRAM
# USER MUST SCHEDULE CALLS TO NVSUB SO THAT THERE IS NO CONFLICT OF USE OR
# CONFUSION TO OPERATOR. THE OLD GRABLOCK (INTERNAL/INTERNAL INTERLOCK)
# HAS BEEN REMOVED AND THE INTERNAL USER NO LONGER HAS THE PROTECTION THIS
# OFFERED.
# THERE ARE TWO WAYS A JOB CAN BE PUT TO SLEEP BY THE KEYBOARD + DISPLAY
# PROGRAM. 1) BY ENDIDLE
# 2) BY NVSUBUSY
# THE BASIC CONVENTION IS THAT ONLY ONE JOB WILL BE PERMITTED ASLEEP VIA
# THE KEYBOARD + DISPLAY PROGRAM AT A TIME. IF A JOB ATTEMPTS TO GO TO
# SLEEP BY MEANS OF (1) OR (2) AND THERE IS ALREADY A JOB ASLEEP THAT WAS
# PUT TO SLEEP BY (1) OR (2), THEN AN ABORT IS CAUSED.
# THE CALLING SEQUENCE FOR NVSUB IS
# CAF V/N
# L TC NVSUB
# L+1 RETURN HERE IF OPERATOR HAS INTERVENED
# L+2 RETURN HERE AFTER EXECUTION
# A ROUTINE CALLED NVSUBUSY IS PROVIDED (USE IS OPTIONAL) TO PUT
# YOUR JOB TO SLEEP UNTIL THE OPERATOR RELEASES THE KEYBOARD + DISPLAY
# SYSTEM. NVSUBUSY ALSO TURNS ON THE KEY RELEASE LIGHT.
# NVSUBUSY CANNOT BE CALLED FROM ERASABLE OR F/F MEMORY,
# SINCE JOBSLEEP AND JOBWAKE CAN HANDLE ONLY FIXED BANKS.
# THE CALLING SEQUENCE IS
# CAF WAKEFCADR
# TC NVSUBUSY
# .
# NVSUBUSY IS INTENDED FOR USE WHEN AN INTERNAL PROGRAM FINDS THE OPERATOR
# IS USING THE KEYBOARD + DISPLAY PROGRAM (BY HIS OWN INITIATION). IT IS
# NOT INTENDED FOR USE WHEN ONE INTERNAL PROGRAM FINDS ANOTHER INTERNAL
# PROGRAM USING THE KEYBOARD + DISPLAY PROGRAM.
# NVSUBUSY ABORTS (WITH CODE 01206) IF A SECOND JOB ATTEMPTS TO GO TO
# SLEEP IN PINBALL. IN PARTICULAR, IF AN ATTEMPT IS MADE TO GO TO NVSUBUSY
# WHEN
# 1) DSPLIST NOT= +0. THIS IS THE CASE WHERE THE CAPACITY OF THE DSPLIST
# IS EXCEEDED.
# 2) CADRSTOR NOT= +0. THIS INDICATES THAT A JOB IS ALREADY USING
## Page 472
# ENDIDLE. (+-NZ INDICATE A JOB IS ALREADY ASLEEP DUE TO ENDIDLE.)
PRENVBSY CS 2K+3 # SPECIAL ENTRANCE FOR ROUTINES IN FIXED
AD Q # BANKS ONLY DESIRING THE FCADR OF(LOC
AD FBANK # FROM WHICH THE TC PRENVBSY WAS DONE) -2
NVSUBUSY TC POSTJUMP # TO BE ENTERED.
CADR NVSUBSY1
2K+3 OCT 2003
# NVSUBSY1 MUST BE IN BANK 27 OR LOWER, SO IT WILL PUT CALLER TO SLEEP
# WITH HIS PROPER SUPERBITS.
SETLOC ENDSPMM +1
COUNT* $$/PIN
NVSUBSY1 TS L
TC ISCADR+0 # ABORT IF CADRSTOR NOT= +0.
TC ISLIST+0 # ABORT IF DSPLIST NOT= +0.
TC RELDSPON
CA L
TS DSPLIST
ENDNVBSY TC JOBSLEEP
# NVSBWAIT IS A SPECIAL ENTRANCE FOR ROUTINES IN FIXED BANKS ONLY. IF
# SYSTEM IS NOT BUSY, IT EXECUTES V/N AND RETURNS TO L+1 (L= LOC FROM
# WHICH THE TC NVSBWAIT WAS DONE). IF SYSTEM IS BUSY, IT PUTS CALLING JOB
# TO SLEEP WITH L-1 GOING INTO LIST FOR EVENTUAL WAKING UP WHEN SYSTEM
# IS NOT BUSY.
SETLOC NVSUBUSY +3
COUNT* $$/PIN
NVSBWAIT LXCH 7 # ZERO NVMONOPT OPTIONS
TS NVTEMP
CAF BIT14
MASK MONSAVE1 # EXTERNAL MONITOR BIT
AD DSPLOCK
CCS A
TCF NVSBWT1 # BUSY
TCF NVSBCOM # FREE. NVSUB WILL SAVE L+1 FOR RETURN
# AFTER EXECUTION.
NVSBWT1 INCR Q # L+2. PRENVBSY WILL PUT L-1 INTO LIST AND
TCF PRENVBSY # GO TO SLEEP.
# RELDSP IS USED BY VBPROC, VBTERM, VBRQEXEC, VBRQWAIT, VBRELDSP, EXTENDED
# VERB DISPATCHER, VBRESEQ, RECALTST.
# RELDSP1 IS USED BY MONITOR SET UP, VBRELDSP.
RELDSP XCH Q # SET DSPLOCK TO +0, TURN RELDSP LIGHT
TS RELRET # OFF, SEARCH DSPLIST
CS BIT14
## Page 473
INHINT
MASK MONSAVE1
TS MONSAVE1 # TURN OFF EXTERNAL MONITOR BIT
CCS DSPLIST
TC +2
TC RELDSP2 # LIST EMPTY
CAF ZERO
XCH DSPLIST
TC JOBWAKE
RELDSP2 RELINT
CS BIT5 # TURN OFF KEY RELEASE LIGHT
EXTEND # (BIT 5 OF CHANNEL 11)
WAND DSALMOUT
CAF ZERO
TS DSPLOCK
TC RELRET
RELDSP1 XCH Q # SET DSPLOCK TO +0. NO DSPLIST SEARCH.
TS RELRET # TURN KEY RLSE LIGHT OFF IF DSPLIST IS
# EMPTY. LEAVE KEY RLSE LIGHT ALONE IF
# DSPLIST IS NOT EMPTY.
CCS DSPLIST
TC +2 # + NOT EMPTY. LEAVE KEY RLSE LIGHT ALONE
TC RELDSP2 # +0 EMPTY. TURN OFF KEY RLSE LIGHT
CAF ZERO # - NOT EMPTY. LEAVE KEY RLSE LIGHT ALONE
TS DSPLOCK
TC RELRET
ENDPINBF EQUALS
## Page 474
# PINTEST IS NEEDED FOR AUTO CHECK OF PINBALL.
PINTEST EQUALS LST2FAN
## Page 475
# VBTSTLTS TURNS ON ALL DISPLAY PANEL LIGHTS. AFTER 5 SEC, IT TURNS
# OFF THE CAUTION AND STATUS LIGHTS.
SETLOC ENDNVSB1 +1
COUNT* $$/PIN
VBTSTLTS INHINT
TC BANKCALL # OPP ERR IF NOT IN POO
CADR CHKPOOH
CS BIT1 # SET BIT 1 OF IMODES33 SO IMUMON WONT
MASK IMODES33 # TURN OUT ANY LAMPS.
AD BIT1
TS IMODES33
CAF TSTCON1 # TURN ON UPLINK ACTIVITY, TEMP, KEY RLSE,
EXTEND # V/N FLASH, OPERATOR ERROR.
WOR DSALMOUT
CAF TSTCON2 # TURN ON NO ATT, GIMBAL LOCK, TRACKER,
TS DSPTAB +11D # PROG ALM.
TC C13STALL
CAF BIT10 # TURN ON TEST ALARM OUTBIT
EXTEND
WOR CHAN13
CAF TEN
TSTLTS1 TS ERCNT
CS FULLDSP
INDEX ERCNT
TS DSPTAB
CCS ERCNT
TC TSTLTS1
CS FULLDSP1
TS DSPTAB +1 # TURN ON 3 PLUS SIGNS
TS DSPTAB +4
TS DSPTAB +6
CAF ELEVEN
TS NOUT
RELINT
CAF SHOLTS
INHINT
TC WAITLIST
EBANK= DSPTAB
2CADR TSTLTS2
TC ENDOFJOB # DSPLOCK IS LEFT BUSY (FROM KEYBOARD
# ACTION) UNTIL TSTLTS3 TO INSURE THAT
# LIGHTS TEST WILL BE SEEN.
FULLDSP OCT 05675 # DISPLAY ALL 8:S
FULLDSP1 OCT 07675 # DISPLAY ALL 8:S AND +
## Page 476
TSTCON1 OCT 00175
# UPLINK ACTIVITY, TEMP, KEY RLSE,
# V/N FLASH, OPERATOR ERROR.
TSTCON2 OCT 40674 # DSPTAB+11D BITS 3,4,5,6,8,9. LR LITES,
# NO ATT, GIMBAL LOCK, TRACKER, PROG ALM.
TSTCON3 OCT 0115 # CHAN 11 BITS 1, 3, 4, 7.
# UPLINK ACTIVITY, TEMP, OPERATOR ERROR.
SHOLTS OCT 764 # 5 SEC
TSTLTS2 CAF CHRPRIO # CALLED BY WAITLIST
TC NOVAC
EBANK= DSPTAB
2CADR TSTLTS3
TC TASKOVER
TSTLTS3 CS TSTCON3 # CALLED BY EXECUTIVE
INHINT
EXTEND # TURN OFF UPLINK ACTIVITY, TEMP,
WAND DSALMOUT # OPERATOR ERROR.
TC C13STALL
CS BIT10 # TURN OFF TEST ALARM OUTBIT
EXTEND
WAND CHAN13
CAF BIT4 # MAKE NO ATT FOLLOW BIT 4 OF CHANNEL 12
EXTEND # (NO ATT LIGHT ON IF IN COARSE ALIGN)
RAND CHAN12
AD BIT15 # TURN OFF AUTO, HOLD, FREE, SPARE,
TS DSPTAB +11D # GIMBAL LOCK, SPARE, TRACKER, PROG ALM
CS 13-11,1 # SET BITS TO INDICATE ALL LAMPS OUT. TEST
MASK IMODES33 # LIGHTS COMPLETE.
AD PRIO16
TS IMODES33
CS OCT55000
MASK IMODES30
AD PRIO15 # 15000.
TS IMODES30
CS RFAILS2
MASK RADMODES
AD RCDUFBIT
TS RADMODES
RELINT
TC BANKCALL # REDISPLAY C(MODREG)
CADR DSPMM
## Page 477
TC KILMONON # TURN ON KILL MONITOR BIT.
TC FLASHOFF # TURN OFF V/N FLASH.
TC POSTJUMP # DOES RELDSP AND GOES TO PINBRNCH IF
CADR TSTLTS4 # ENDIDLE IS AWAITING OPERATOR RESPONSE.
13-11,1 OCT 16001
RFAILS2 OCT 330 # RADAR CDU AND DATA FAIL FLAGS.
OCT55000 OCT 55000
ENDPINS2 EQUALS
## Page 478
# ERROR LIGHT RESET (RSET) TURNS OFF,
# UPLINK ACTIVITY, AUTO, HOLD, FREE, OPERATOR ERROR,
# PROG ALM, TRACKER FAIL.
# LEAVES GIMBAL LOCK AND NO ATT ALONE.
# IT ALSO ZEROES THE :TEST ALARM: OUT BIT, WHICH TURNS OFF STBY,RESTART.
# IT ALSO SETS :CAUTION RESET: TO 1.
# IT ALSO FORCES BIT 12 OF ALL DSPTAB ENTRIES TO 1.
SETLOC DOPROC +2
COUNT* $$/PIN
ERROR XCH 21/22REG # RESTORE ORIGINAL C(DSPLOCK). THUS ERROR
TS DSPLOCK # LIGHT RESET LEAVES DSPLOCK UNCHANGED.
INHINT
CAF BIT10 # TURN ON :CAUTION RESET: OUTBIT
EXTEND
WOR DSALMOUT # BIT10 CHAN 11
CAF GL+NOATT # LEAVE GIMBAL LOCK, NO ATT INTACT,
MASK DSPTAB +11D # TURNING OFF AUTO, HOLD, FREE,
AD BIT15 # PROG ALARM, AND TRACKER.
TS DSPTAB +11D
CS PRIO16 # RESET FAIL BITS WHICH GENERATE PROG
MASK IMODES33 # ALARM SO THAT IF THE FAILURE STILL
AD PRIO16 # EXISTS, THE ALARM WILL COME BACK.
TS IMODES33
CS BIT10
MASK IMODES30
AD BIT10
TS IMODES30
CS RFAILS
MASK RADMODES
AD RCDUFBIT
TS RADMODES
TC C13STALL
CS BIT10 # TURN OFF :TEST ALARM: OUTBIT.
EXTEND
WAND CHAN13
CS ERCON # TURN OFF UPLINK ACTIVITY,
EXTEND # OPERATOR ERROR.
WAND DSALMOUT
TSTAB CAF BINCON # (DEC 10)
TS ERCNT # ERCNT = COUNT
INHINT
INDEX ERCNT
CCS DSPTAB
AD ONE
TC ERPLUS
AD ONE
ERMINUS CS A
## Page 479
MASK NOTBIT12
TC ERCOM
ERPLUS CS A
MASK NOTBIT12
CS A # MIGHT WANT TO RESET CLPASS, DECBRNCH,
ERCOM INDEX ERCNT # ETC.
TS DSPTAB
RELINT
CCS ERCNT
TC TSTAB +1
CAF ZERO
TS FAILREG
TS FAILREG +1
TS SFAIL
TC ENDOFJOB
ERCON OCT 104 # CHAN 11 BITS 3,7.
# UPLINK ACTIVITY, AND OPERATOR ERROR.
RFAILS OCT 330 # RADAR CDU AND DATA FAIL FLAGS.
GL+NOATT OCT 00050 # NO ATT AND GIMBAL LOCK LAMPS
NOTBIT12 OCT 73777
ENDPINS1 EQUALS
SBANK= LOWSUPER
Computing file changes ...