the high altitude observatory
TRANSCRIPT
NCAR/TN-197+STRNCAR TECHNICAL NOTE
August 1982
The High Altitude ObservatoryMulti-User FORTH System Listing
P.H. Seagraves
HIGH ALTITUDE OBSERVATORY
NATIONAL CENTER FOR ATMOSPHERIC RESEARCHBOULDER, COLORADO
9
I l I - - .
iii
Foreword
One of the most important technical developments that took place during
the early phases of the High Altitude Observatory's (HAO) Coronal Dynamics
Project is the accomplishment of the multi-user FORTH System. The intent of
this document is to present the listing for the Prominence Monitor (P-MON) ver-
sion of this system, the version used to control the P-MON telescope at the
Mauna Loa Solar Observatory (MLSO) on the island of Hawaii. This is the same
version (but without the floating point package) that was supplied to the HAORocket CCD (charge-coupled device) group in the spring of 1981. Users
interested in further comments or information should contact P. Seagraves atthe Hilo, Hawaii, support base.
R. FisherProject ScientistProgram Manager
1
HA0 has operated an experiment system at the Mauna Loa site for a
number of years, beginning in 1964. In the fall of 1979, a new set of instru-
ments was installed at that site; these comprise the experiment effort of the
Coronal Dynamics Project. Early in the development phase of the project it was
decided that FORTH would be used to control the telescope systems and
present real-time diagnostic data to the observers. Following this decision the
first multi-user FORTH system was developed for the Mark-III K-coronameter. A
second version was written for a different telescope, P-MON, which has been
selected for demonstration and is shown in the following listing.
The specific systems of computing equipment available at MLSO have
evolved with time. A PDP-11/10 was initially used to control the Mark III K-
coronameter system; this was later changed to the existing PDP-11/44. The P-
MON system is controlled by a PDP-11/03, which is connected to the PDP-11/44
by a set of DRV-11 interfaces. At a later date, the P-MON system was installed
into a second PDP-11/10 system located in Boulder, Colorado, which was used
to develop the HAO Rocket CCD camera. At the same time, a second Boulder
system was installed into the Solar Maximum Mission PDP-11/34. Thus the P-
MON version of this system has been found to have use beyond what was
immediately envisioned at the beginning of the project. The following listing
may be configured for operation on a PDP-11/44 machine by performing the
directions given in Blocks 550-564, which contain instructions for system loads
for disk, magnetic tape, and DR11.
A convention of documentation used for the listing is: even numbered
blocks contain code and are written on the left of the listing page; odd num-
bered blocks contain documentation and comments which refer to the code in
the preceeding even-numbered blocks, and these are printed on the right hand
side of the page. Thus, the user may use standard FORTH editor commands to
search the listing using key words appended to odd-numbered blocks. Table 1
2
gives examples of the key words and the tasks associated with each.
Persons wishing more information or assistance in using a version of this
code are directed to:
P. SeagravesHigh Altitude ObservatoryPO Box 425Hilo, HI 96720phone: 808-935-0533
3
TABLE I
Block Location Key Description
258-376
516-522
426, 430-454
474-478
532-546
550-562
MF
CL
TT
ED
MT
576-600
622-630
632-344
636-718
Primative Meta FORTH code and definitions
Clock handler
Teletype handler
Editor definitions
Magnetic tape handler
Systems loaders for disk, tape andremote computer
Tektronix graphics package
Solar ephemerics
Floating point trig functions
HAO P-MON telescope applications
_ __
258 .'BOO LISTIHtG
BLOCK258
NCAR-HAO-MLSO 0:39:27o 6/7/82 DOY (157)158
##* INTERPRET PAGE OCTAL ASSEMBLER DEFINITIONS 6042 OBLK = IF$ /LTC THENS1 »CODE OFFt 0 S ) P ) ADBD NEXT
OHERE HERE ' OFF+ e -O INTEGER FLINK: LINK FLINK Q . OHERE 3 - FLINK « i
HERE CONSTANT Z 120 0 DO HERE CONSTANT L LOOP: L WORD 5 ' Z +! 300 HERE +1! HERE Z 2 MOVE OHERE Z 4 + ! ;: L L CR OHERE .0 HERE COUNT TYPE400 CONSTANT LOADPOINTLOAlFPOINT 2002 + CONSTANT LIMITLIMIT 250 + ' OPERATOR !; LI) OPERATOR -- U W) ;70001 SO MUL, 71001 SO DIV, 73001 SO ASHC»HERE OPERATOR - ' OFF+ !2 ' WORD 2 t we 1 !
ROSOTTK )QUE )TT Y )SPLIT )Dr''CONTEXT'LASICUF. FNTI '
100000 ,0 .OPERA1OR W,OPERATOR I - W,OPERATOR 101 - UW0 t0 90 r0 ,0 . ( FATCHED )0 v ( F'PACHED )0 .0 V ( PATCHED )
INTERPRET THE SYSTEM SL MFIF INTERPRET ON LSI/11 SATELITE TRUN LTC OFFA X ADD OFFSET OF META-FORTH OBJECT MODULE TO ADDRESS- A ADDRESS (OBJECT TIME) OF NEXT AVALIABLE LOCATION- A ADDRESS OF ADDRESS OF PRIOR WORD FOR DICTIONARY LINK- - INSTALL LINK LOCATION IN WORD DEFINITIONCONSTANTS FOR LABEL-TABLE IN META-FORTH SOURCE CODE
-- READ LABEL AND INSTALL NAME & ADDRESS IN LABEL TABLE- AS ABOVE BUT ALSO PRINTS NAME S ADDRESS
- A LOWEST ADDRESS WHICH DOES NOT INTERFER WITH VECTORS- A ROOM FOR TWO I/O BUFFERS; A IS HIGHEST ADDRESS- A BASS ADDESS FOR OBJECT (ROOM FOR STACK & RETURN-STACK)A IM INDEX MODE INTO USER STATUS TABLE VIA REG. 3EXTENDED INSTRUCTION SETINITIALIZE OFFSET OF META-FORTH OBJECT MODULESET BLOCK LOADING SEQUENCE TO EVERY OTHER BLOCK
OPERATOR'S STATUS TABLE HU MFEACH USER HAS A SIMILAR TABLE (INTERPRETED AT HIGHER LEVEL)
CLEARED (BY INTERPUPT ETC) FLAGS USER ACTIVE IN PAUSEUSED IN PAUSE TO RECOVER USER'S RETURN-STACKADDRESS OF FOLLOWING USER IN PAUSE LOOPHIGH ADDRESS OF USER PUSH-DOWN RETURN-STACK (REG 6)HIGH ADDRESS OF USER PUSH-DOWN STACK (REG 5)BYTE ADDRESS OF USER KEYBOARD BUFFER REGISTERLOW BYTE HAS KEYBOARD CHARACTER; HIGH HAS INT-SERVICE FLAGSBYTE ADDRESS OF USER PRINTER BUFFER REGISTERSPLIT SCREEN FLAGADDRESS OF NEXT AVALIBLE WORD AT TOP USER DICTIONARY SPACEADDRESS TO ACTIVE VOCABULARY TO SEARCH OR EXECUTEADDRESS OF LAST DICTIONARY ENTRY FOR LINKING ETC.ADDRESS OF VOCABULARY TO LINK NEW DICTIONARY WORDS
300 ,0 F0 OLIMIT 1+ Ws0 .0 90 v2400 »LOADPOINT 1001 + WsLOADPOINT 2002 + WU37767 WD37767 W.10 ,
0 FOR COMPILE MODEi 300 FOR EXECUTION MODE MU MFSOURCE BLOCK { OF NEXT COMMAND; 0 IF MESSAGE(TERMINAL) BUFFERNUMBER OF CHARATTERS OFFSET INTO SCRADDRESS OF USERS HESSAGE(TERhINAL) BUFFERACTIVE BLOCK i FOR EDITING ETC,TAPE UNIT NUMBERA TEMPORARY WORD FOR USE IN NUMBER I/Os ASSEMBLY, ETC.DELIMITER FOR NEXT WORD TO BE READY FORM SOURCEBYTE ADDRESS OF FIRST WORD OF LAST BLOCK ACCESSEDADDRESS OF ACTIVE BLOCK BUFFER STATUS (BLOCK # I UPDATE FLAG)ADDRESS OF ALTERNATE BLOCK BUFFER'S STATUS WORDBASE ADDRESS FOR FLOATING POINT STACKFLOATING POINT STACK POINTERNUMBER BASE (OCTALPDECIMALPHEXETC) FOR I/O
1
34567
9101 112131 41516
260
1
34
6
89
101 1.121314J5
1 ..
LL
((LLLL
2 62
LLL.LL
(L
t..LL
L
STATE 'SCR'Il 'MSB 'DLK'UNIT )OC 'DEL IM'' IUF'PFRE'ALTFO )F L'I )BAiSE '
1
34
67
91
1011121314
I. .
BLOCK264
12345 L QUESTION'6789
10111213 L ASSEMBLER'141516
NCAR-HAO-MLSO 0:39:54. 6/7/82 DOY (157)158
150410 300 + ,142525 ,LINK ( 0 )OHERE 1+ WU7 4 WU ) MVV.
QUESTION PRINTS BUGGY WORD AND PROMPTS USERTHE OUTS OF QUESTION IS INTERPRETED AT HIGHER LEVELAND IS ADDRESSED BY THE ERROR VECTOR IN WORD 4
JUMP TO THE ADDRESS IN ERROR VECTOR AT WORD 4
040411 ,051523 ,LINKOHERE 2 t Wt0 , ( PATCHED )P ASR,CONTEXT' U) P MVVtNEXT
ASSEMBLER ACTIVATES THE ASSEMBLER VOCABULARYNOTICE THAT THIS IS AN IMMEDIATE WORD WHICH WILL EXECUTEEVEN UNDER COMPILING A I WORD
LINK ADDRESS OF LAST WORD IN ASSEMBLER VOCABULARYWORD ADDRESS OF PARAMETER FIELDLINK USER TO SEARCH ASSEMBLER VOCABULARY
050005 300 + ,052501 ,LINKOHERE 1+ WUU ) CLRt0 U MVV,U 2 U W) MVVPU ) TST,=0 ENDU ) 100001 # MVV.0 U CMP,=0 IFNEXI
PAUSE IS MAIN TIME SLICE WORD
FLAG THIS USER TO BE REACTIVATEDADDRESS STATUS TABLE ( ENTRY POINT FOR SUSPEND )ADDRESS OF FOLLOWING USER'S STATUS TABLETEST IF USER IS FLAGGED TO BE ACTIVATEDZERO IS ACTIVATE FLAGCLEAR USER ACTIVATE FLAGCHECK IF USER TRANSITION IS REQUIRED
R -) S MVVIR -) I MVV,1 0 W) R MVV,
R 1 U W) MVV,I R )+ MVV,S R )+ MVV,NEXT
SAVE USER STACK POINTER ( ENTRY POINT FOR SUSPEND )SAVE USER INTERPRETER POINTERSAVE USER RETURN-STACK POINTER IN HIS STATUS TABLE
RESTORE USER RETURN-STACK POINTERRESTORE USER INTERPRETER POINTERRESTORE USER STACK POINTER
266
12345 L 'PAUSE67 BEGIN89
10111213141516
268
MF
ul
1 THEN23456
89
101112 -13141 -1 .6
NCAR-HAO-MLSO 0I40:13o 6/7/82 DOY (157)158
030004 ,052515LINK0 ,R -) 2 MVV, R -) 3 MVV, R -) 4 MVV,4 1 MVVg: <0 IF 4 NEG6 0 NEG, THEN2 CLR. 3 0 MVVr <0 IF 2 COM, THEN0 CLR, 1 CLR,4 RORP,1C IF1 3 ADD, 0 ADC, 0 2 ADD, 4 TST,=0 NOT IF3 ASL, 2 ROL, 4 ASR, SWAP 0 END4 R )+ MVV, 3 R )+ MVV» 2 R )+ HVVP 7-RTS,
SOFTWARE MULTIPLY ROUTINE OF REGISTERS 0 I 132 BIT PRODUCT IS RETURNED THROUG REGISTERS 0 1THIS IS A MACHINE LANGUAGE SUBROUTINEROUTINE IS LINK VIA INSTRUCTIONS LIKE OMUL' 7 JSR.
SAVE REGISTERS ON RETURN STACKPUT ONE OF THE NUMBERS IN REGISTER 4MAKE SURE FIRST ONE IS POSITIVEPUT OTHER NUMBER THROUGH 32 BITS (REGISTERS 213)CLEAR 011 TO ACCUMULATE 32 BIT PRODUCTISOLATE LOW BIT OF REG 4IF IT IS SIGNIFICANT
ACCUMULATE REGISTERS 213 INTO Oil0IF REGISTER 4 IS NOT ZERO
MAKE REGISTER 213 MORE SIGNIFICANT AND GO BACK THROUGHRESTORE REGISTERS AND RETURN TO CALLING ROUTINE
030004 r144504 ,LINK0 .R -) 2 HVV, R -) 3 MVVvR -) CLR,3 S ) MVV,.'0 IF R ) INC, 3 NEG,2 0 MVV,'.0 IF R ) INC, 1 NEG,0 1 MVV,1 2 MVV,2 20 I MVVr
THEN
2 ADC, 2 NEG, THEN
SOFTWARE DEVIDE OF 32 BIT NUMBER BY 16 BIT NUMBERDIVIDEND THROUGH REGISTERS O11 WITH 0 MOST SIGNIFICANTDEVISOR IS TOP STACK VALUE ( WHICH IS CLEARED OFF)QUOTIENT RETURNED IN REGISTER 0REMAINDER RETURNED IN REGISTER ITHIS IS A MACHINE LANGUAGE SUBROUTINEROUTINE IS LINKED VIA INSTRUCTIONS LIKE ODIV' 7 JSRP
SAVE REGISTERSCLEAR SIGN FLAGGET DEVISORIF NEGATIVE INCREMENT SIGN FLAG AND MAKE DEVISOR POSITIVEGET MOST SIGNIFICANT 16 BITS OF DIVIDENDIF NEGATIVE INCREMENT SIGN FLAG AND MAKE DIVIDEND POSITIVEPUT LEAST SIGNIFICANT PART OF DIVIDEND IN REGISTER 0PUT MOST SIGNIFICANT PART OF DIVIDEND IN REGISTER ISIGNIFICANT BIT COUNTER TO EXAUST QUOTIENT
EBEGI 0 A£L,1 ROL,IV NOT IF3 1 CMPF<0 NOT IF
SWAP THEN 0 INCr1 3 SUB,
THEN 2 DEC, ::-0 NOT ENDR )+ DEC,
:0 NOT IF-0 IF 0 NEG,S ) TST, <0 NOT IF
SWAP THEII 1 NEG,THEN THEN S )+ TST,
3 R )+ MVVY, 2 R )4 MVV, 7 RTS,
SHIFT LEAST SIGNIFICANT PART OF DEVIDEND LEFTSHIFT MOST SIGNIFICANT PART LEFTNEXT CHECK AUTOMATICALLY TRUE IF SIGN BIT SETSCOMPARE REMAINDER WITH DEVISORIF REMANDER IS LARGEST
THE DIVIDE INTO IS RECOREDED IN LOW BIT OF REGGISTER 0DECREASE REMAINDER BY SUBTRACTING THE DEVISOR
FINISHED AFTER 20 SHITS LEFTTEST THE SIGN FLAGFINISHED IF NO SIGN CHANGESIF ONE SIGN CHANGE, NEGATE QUOTIENTDISTINGUISH WEATHER DEVISOR OR DIVIDEND WAS NEGATIVEMAKE REMAINDER HAVE SAME SIGN AS DIVIDENDCLEAR DEVISOR OFF STACKRESTORE REGISTERS AND RETURN TO CALLING ROUTINE
IL OCK270
12345 L OMUL'6789
1011 BEGIN1213 THEN1415 THEN16
272
nF
12345678 L ODIV'9
10111213141516
274
123456789
1011121 314151 ;,
MF
BLOCK276
2345 OHERE 1t WU6 L EXECUTE P 0 MVV,7 1 -3 P W) MVVM8 STATE' U) I CMHP B9 <0 NOT IF
10 P )t ) JMF'11 L SHOVE12 THEN I DP' U) MVV.13 1 1 ADD,14 DP' U) INC,15 1 ) 0 HVV,16 NEXT
NCAR-HAO-MLSO 0O40142. 6/7/82 DOY (157)158
EXECUTE DETERMINES COMPILE OR EXECUTION MODEAND TAKES APPROPRIATE ACTIONON ENTRY REGISTER 0 POINTS TO THE ADDRESS FIELD OF THE WORD
MF
POINT REGISTER 2 TO ADDRESS FIELDCHARACTER COUNT, PRESSIDENCE BITS AND FIRST CHARACTERCHECK PRESIDENCE BITS FOR COMPILE/EXECUTION MODEIF EXECUTION MODE
INVOKE THE WORDUPDATE DICTIONARY BY ADDING CONTENTS OF REGISTER 0GET DICTIONARY POINTER
BYTE ADDERSSUPDATE DICTIONARY POINTERSTORE CONTENTS OF REGISTER 0 ON DICTIONARY
135401000000 .LINKOHERE 4 t W,OHERE 1+ WUI R )t MVV,NEXT
1 CURRENT' U) MVV,1 1 ADD,I ) LAST' U) MVV,STATE' U) 000300 1 MVVf0 F' MVV,SHOVE OFF+ 0 END
135405 ,147703 ,LINKOHERE 10 + W,OHERE It WfI LAST' U) MVV,1 1 ADD,3 1 W) I MVVri' 1t OFF+ 0 END
CONTEXT' U) ASSEMBLER' t MVV,i' 3 + OFF+ 0 END
; TERMINATES A : DEFINED WORD MF< THIS IS AN IMMEDIATE WORD DUE TO CLEAR PRECIDENCE BITS )
ENTRY CODE 4 WORDS DOWN WITH REGISTER 2 POINTED TO NEXT WORDI WHEN FINISHED WILL COMPILE THIS ADDRESSRETURN INTERPRETER REGISTER 4 TO CALLING WORD
ADDRESS OF ACTIVE VOCABULARYBYTE ADDRESSADD FINSIHED WORD TO VOCABULARYRESTORE EXECUTION MODECOMPILE RETURN TO CALLING WORD
iCODE IS A MOST IMPORTANT TOOL OF SOME WORD DEFINGING WORD lFIT IS HARD TO UNDERSTAND SO THE DISCRIPTION IS ELSEWHERETHIS IS AN IMMEDIATE WORD DUE TO CLEAR PRECIDENCE BITS )
ENTRY IS 10 WORDS DOWN POINTING REGISTER 2 TO NEXT WORDONCE INTERPRETED iCODE WILL COMPILE THIS ADDRESSADDRESS OF LAST DEFINED WORDBYTE ADDRESSREDIRECT ADDRESS FIELD TO INSTRUCTIONS FOLLOWING THE ;CODERETURN TO CALLING WORD
INVODE ASSEMBLER VOCABULARY FOR INSTRUCTIONS FORLLOUING iCODECOMPILE OBJECT CODE OF iCODE
278
12345 L i'
789
10111213141516
200
1
34
678 L iCODE'9
10111213141516
NCAR-HAO-MLSO 0:4106. 6/7/82 DOY (157)158
OHERE 1f WU0 DP' U) MVVtDP' U) 3 t ADD,LAST' U) 0 MVV»1 CURRENT' U) MVV,1 ASL,2 1 ) MVV»1 ) 0 MVV,0 ASL,0 )+ 300 * DISI0 )+ TST,0 )+ 2 MVVt0 )t TST,SHOVE OFF+ 0 END
ADD TENTATIVE WORD TO DICTIONARY
DP POINT TO CHARACTER COUNT FOLLOWED BY THE CHARACTERSINCLUDE CHARACTER COUNT AND FIRST THREE CHARACTERS I LINKSAVE WHERE WORD DEFINITION STARTSADDRESS OF DICTIONARY TAKING DEFINITIONBYTE ADDRESSPRESENT LINK TO TOP OF VOCABULARYLINK VOCABULARY TO NEW WORDBYTE ADDRESS OF NEW WORDSET EXECUTION MODESKIP CHARACTER 2 X 3LINK TO FORMER VOCABULARY TOPPOINT REGISTER 0 TO WORD'S PARAMETER FIELDCOMPILE PARAMETER FIELD ADDRESS IN ADDRESS FIELD
OHERE 1+ W,STATE' U) CLR,0 CURRENT' U) MVVPCONTEXT' U) 0 MVVp0 0 ADD,I LAST' U) MVV,1 1 ADD,0 ) 2 1 W) MVVPNEXT
COLON PREPARES SYSTEM TO START COMPILINGSET COMPILE MODEVOCABULARY TAKING NEW DEFINITIONVOCAUBLARY SEARCHED SAME AS DEFINING VOCABLUARYBYTE ADDRESS OF VOCABULARYADDRESS FIRST WORD IN DEFINITIONBYTE ADDRESSEXCLUDE NEW WORD FORM VOCABULARY SEARCH
035001 300 + ,000000 9LINKOHERE 5 f WU0 , ( PATCHED TO WORD)ENTER C,COLON C,;CODE' W,
R -) I MVV,I P MVVINEXT
I STARTS THE DEFINITION OF A NEW WORD I INVOKES COMPILE MODE MFTHE WORD IS NOT COMPLETED TILL i OR iCODE IS EXECUTED(NOTE : IS ITSELF A HIGHER LEVEL OF COMPILED WORD)
ADVANCE ADDRESS FIELD TO 4PUSHGET THE COUNT AND CHARACTERS ON DICTIONARY TOPLINK WORD TO DICTIONARY AS IF IT WERE AN ASSEMBLER WORDREVISE FOR : DEFINED WORD AND INVOKE COMPILEING *POINT NEW WORD'S ADDRESS FIELD TO NEXT INSTRUCTION
4PUSH DOES ONE STEP DEEP ON RETURN STACK FOR A WS ORD ENTRYSAVE ADDRESS OF WHAT USER WAS DOING ON RETURN STACKSTART INTERPRETER AT PARAMETER ADDRESS OF THIS S WORD
BLOCK282
123 L ENTER456789
10111213141516
MF
284
12 L COLON3456789
10111213141616
MF
00
2 86
12345 L o '6789
1011 L 4FUSH12131415I .
042004 300 + ,147722 ,LINKOHERE 1+ W,S )+ TST.NEXT
126001 300 + ,000000 ,LINKOHERE 1+ W.0 S )* MVV»SHOVE OFF+ 0 END
NCAR-HAO-MLSO 0:41:28. 6/7/82 DOY (157)158
DROP DELETES ONE WORD OFF USERS STACK MF
ADVANCE THE PUSH DOWN STACK POINTER BY ONE WORD
INSTALL TOP STACK NUHBER AT NEXT AVALIABLE DICTIONARY ADDRESSTHE WORD IS CLEARED OFF THE STACK I DP IS INCREhENTED
POP TOP STACK WORD INTO REGISTER 0INSTALL CONTENTS OR REGISTER 0 ON DICTIONARY
146003 300 + p152311 wLINKOHERE t1 W.0 I )+ MVV.S -) 0 MVV.NEXT
4PUSH W.LIT C,LIT C.' C,*' WC;I' W
LIT IN COMPILED CODE IS FOLLOWED BY A NUMBER WHICH IT MFPUSHES TO USER STACK. IT IS NECESSARY TO COMPILE NUMBERS.EACH COMPILED NUMBER ACTUALLY TAKES TWO CORE LOCATIONS
GET NUMBER ADDRESSED BY INTERPRETER ADVANCING THE INTERPRETERPUSH NUMBER ON USER STACK
IN-LINE USES 2 CORE WORDS TO COMPILE NUMBER FROM USER STACKIT IS THE SEQUENCE THAT FINISHES OFF A COMPILED NUMBERPUSH INTERPRETER TO ENTER THIS WORDMOVE NEXT NUMBER TO USER STACKADDRESS OF LITCOMPILE LITCOMPILE THE VALUE OF THE NUMBERRETURN TO CALLING WORD
292
1
34k L GET'6789101112 THEN13 THEN1415 L SYS-READY16
043403 300 + p152305 ,LINKOHERE 2 + WY0 .P ) U CMPi*-0 NOT IFP ) TST.-0O NOT IFI -) TST,'PAUSE JMP,P ) U MVV,NEXT
GET' OFF+ I) CLR»RTI,
GET LOOPS TILL BLOCK HANDLER IS AVAILABLE
ADDRESS OF OWNERf ZERO FOR NO OWNER
IS USER THE PRESENT OWNER ?
NO. IS HANDLER AVAILABLE ?
NO, TIME-SHARE AND TRY AGIANYES, TAKE POSSESSION
SYSTEM-DEVICE INTERUPT-SERVICE ROUTINE
BLOCK288
12345 L DROP'6
9101112 L t'13141516
290
12345 L LIT6789
1011 L IN-LINEJ213141516
I'D
HF
NCAR-HAO-MLSO 0:41:50 6/7/82 DOY (157)158
151007 300 t+146305 ,LINKOHERE 2 t W,GET' W,P )t ) U CMPF=0 IFP -) ) CLR,NEXT
'BUF U) 'ALT U) MVVr'ALT U) 'PREV U) MVV»'FREV U) 'BUF U) MVVY'BUF U) -1000 W# ADDv2 RTS3
OHERE 1t W,0 'F'REV U) ) MVVY0 100000 & BIC,S ) 0 CMF',=0 HOT IF0 'ALT U) ) MVV,0 100000 BDIC.S ) 0 CMf»=0 NOT IFNEXT>:-BUFFER- 2 JSR.I )t I )t CMPFNEXT
RELEASE TERMINATES THIS USERS OWNERSHIP OF THE BLOCK HANDLER MF
ADDRESS OF ADDRESS OF OWNER
IS THIS USER THE OWNER ?YESP RELEASE BLOCK HANDLER
>BUFFER< SWAPS ACTIVE BLOCK BUFFER FOR THE ALTERNATE(THIS IS A MACHINE LANGUAGE SUBROUTINE)GET THE ADDRESS OF THE ALTERNATE BUFFERSAVE ADDRESS OF ACTIVE BUFFER AS ALTERNATEFINISH OFF THE SWAPBYTE ADDRESS OF FIRST WORD IN ACTIVE BUFFER ACTIVE BUFFERRETURN TO CALLING ROUTINE
CHECK IF BLOCK IS ALREADY IN CORE BEFORE OPENING NEW BUFFER MFGET BLOCK t IN ACTIVE BUFFERCLEAR UPDATE BIT IN ORDER TO CHECK BLOCK tTEST IF DESIRED BLOCK IS ACTIVE BLOCK
NOGET BLOCK # IN IDLE BUFFERCLEAR UPDATE BIT IN ORDER TO CHECK BLOCK tTEST IF DESIRED BLOCK IS IDLE BLOCK
NOMUST OPEN NEW BUFFER AND READ THE BLOCK
IDLE BLOCK HAS THE BLOCK SO SWAP BUFFERSSKIP THE SYSTEM-DEVICE ACCESS
2 L EXCHANGE345678 THEN9
101112 L NULL13 L WMBFF14
1516
OHERE 1+ W>>BUFFER< 2 JSR,0 'PREV U) ) MVVY<0 IF0 100000 t BIC#S -) 0 iMVV,NEXTI R )* MVVYNEXT
OHERE 5 t W»OHERE 1t WYS ) '[UF IJ) MVV.S ) ASR,NEX I
OPEN THE IDLE BUFFER SAVING CONTENTS IF MARKED FOR UPDATESWAP ACTIVE I IDLE BUFFERSGET BLOCK * OF NOW ACTIVE BUFFERIS THIS BLOCK MARKED FOR UPDATE ?
YES, CLEAR UPDATE FLAGBLOCK NUMBER FOR OUTPUT TO SYSTEM DEVICE
EXIT WORD BUFFER
BASE ADDRESS OF ACTIVE BLOCK REPLACES BLOCK IWORD ADDRESS
BLOCK294
12345 L RELEASE'6789 THEN
101112 L >BUFFER<13141516
296
12 L CORE3456789
1011 THEN12 THEN13141.,16
: 98
HF
BLOCK300
1234 L RLSTATUS56789
10111213141516
302
NCAR-HAO-MLSO 042:12. 6/7/B2 DOY (157)158
OHERE 1t W,1 S ) MVVt'PREV U) ) 1 MVV»1 DEC,0 CLR,S -) 24000 0 MVV, ODIV' 7 JSR,7 I B) 0 MVV, B0 SWB.0 104 ! ADD.-1576 000013 0 MVV»-1600 0 MVVU
RLSTATUS DOES STATUS COMMAND ON RL11 UNIT HFIT COMPUTES THE BLOCK'S DISK ADDRESS WHEN THE COMMAND IS WORKING
GET BLOCK * FROM STACKSET BLOCK * IN 513'TH WORD OF I/O BUFFERDECREMENT FOR THERE NOT BEING A BLOCK 0DEVIDE BY 102400 (NUMBER OF BLOCKS PER DISK)
INSTALL DRIVE SELECT BIT IN READ/WRITE COMMANDCONSTRUCT STATUS COMMAND WITH UNIT I IN HIGH BYTE
DISK ADDRESS REGISTER FOR STATUS COMMAND (WITH RESET BIT)STATUS COMMAND TO RL11 CONTROLISTATUS
0 CLR.S -) 12 1 MVV. ODIV' 7 JSR,I ASL,11 1 1 CMP,>0 IF1 11 1 SUB,0 ASL, 0 ASL, 0 ASLP 0 ASL,0 1 ADDr0 ASL, 0 ASL,S -) 0 MVV,'PAUSE 1 JhMP
THEN
DEVIDE BY 10 (NUMBER OF BLOCKS PER TRACK)
MAKE BLOCK ORDER ON TRACK 0 5 1 6 2 7 3 8 4 9
SHIFT TRACK»HEAD e LEFT 4 BITSCOMBINE TRACKPHEAD 1 WITH SECTOR 1TWO MORE BITS SIGNIFCANCE FOR 4 SECTORS PER FORTH BLOCKSAVE DISK ADDRESS ON STACKWAIT FOR RL11 INTERUPT
12 L RLiHEADER3456789
1011121314
1 6
OHERE 1+ W,S -) 2 I W) MVV,S ) 110 t MVV, B-1600 S )+ MVV,'PAUSE 1+ JMP»
DO A READ HEADER COMMAND ON RL11GET UNIT * (IN HIGH BYTE)READ HEADER COMMANDCOMMAND THE RL11WAIT FOR RL11 INTERUPT
123456789
1011121 :141516
304
HF
MF
NCAR-HAO-MLSO 0:42I30o 6/7/82 DOY (157)158
DO A RL11 SEEK TO GET DESIRED HEAD OVER DESIRED TRACK MFGET DESIRED DISK ADDRESSGET PRESENT DISK ADDRESS (RUSULT OF RLHEADER)DON'T CARE ABOUT SECTOR NUMBER
IF ALREADY ON RIGHT TRACK AND HEAD DON'T DO THE SEEK
CLEAR HEAD BIT FOR TRACK DIFFERENCE CALCULATION
COHPUTE TRACK DIFFERENCESHIFT TO ONE LOWER BIT TO AVIOD SIGN BIT IF DEFFERENCE CALCULA
<0 IF1 NEGo1 2 1 BISP1 ASL,1 INC,S ) 100 1 BIT,=0 NOT IF1 20 # BIS,-1576 1 MVV,S -) 1 I W) HVVvS ) 106 1 MVV, B-1600 S )tf MVV'PAUSE 1+ JMP,
IF IT IS NAGATIVECOMPUTE ABSOLUTE DIFFERENCEAND SET DIRECTION BIT TO MOVE HEADS TOWARD SPINDLE
ROTATE DIFFERENCE BACK TO INCLUDE SIGN BITSET BIT 0 AS REQUIRED FOR SEEK (IN DISK ADDRESS REGISTER)CHECK FOR HEAD SELECT BIT MFIF HEAD SELECT BIT IS NEEDED
SET HEAD SELECT BIT FOR SEEK DISK ADDRESS REGISTER FORMATSET THE DISK ADDRESS REGISTERGET LOGICAL UNIT NUMBER (IN HIGH BYTE)COMBINE LOGICAL UNIT NUMBER WITH SEEK COMMANDSEEK COMMAND TO CONTROLISTATUS REGISTERWAIT FOR RL11 INTERUPT
OHERE It W0 -1575 W MHVVW0 ) -1000 1 MVVI0 --) S ) HMVV,0 -*) 'BUF U) MVV,0 -) I )+ MVVv'PAUSE 1+ JMPF
READ/WRITE FORTH BLOCK FROM/TO RL11ADDRESS OF MULTI PURPOSE REGISTERSET WORD COUNTSET DISK ADDRESS REGISTERSET BUS ADDRESS TO CORE I/O BUFFERREAD/WRITE COMMAND (HAS UNIT 1)WAIT FOR RL11 INTERUPT
8l OCK306
12 L RLSEEK3456789 THEN
10111213141516
OHERE 1I W,0 S ) MVV,1 -1575 MVV,0 77 0 BIC,1 77 ! BIC»0 1 CMP»=0 IFNEXT0 177 * BIC,1 177 ! DIC,000241 t0 ROR,1 ROR,1 0 SUB,
308
THEN
THEN
1
3456789
10111213141516
310
12 L RL345
78
1.01&1 I
1 2
I q
16
MF
NCAR-HAO-HLSO 0:42351. 6/7/82 DOY (157)158
READ RL02 BLOCK WHOS NUMBER IS ON THE STACKOF THE BLOCK IN CORE
151007 300 + p026714 rLINK4PUSH WURLSTATUS CoRLHEADER C,RLSEEK C.RL Cy000114 tI' U.
DO A RL11 STATUS (ALSO DETERMINE UNIT ! I DISK ADDRESS)DO A RL11 READ-HEADER COMMANDSEEK COMMANDS IF NECESSARYi TO GET HEAD OVER TRACKREAD BLOCK DATA FROM DISKRL11 READ COMMAND (RLSTATUS SETS UNIT # IN HIGH BYTE)RETURN TO CALLING WORD
1234 L RL-WURITE56789
10111213141516
316
12 L 'iDR11<3456789
10111213141516
WRITE RL02 BLOCK WHOS NUMBER IS ON THE STACK
4PUSHRLSTATUSRLHEADERRLSEEKRL000112;'
WU
C,C,C.C,c»#
DO A RL11 STATUS (ALSO DETERMINE UNIT ! I DISK ADDRESS)DO A RL11 READ-HEADER COMMANDSEEK COMMAND; IF NECESSARY! TO GET HEAD OVER TRACKWRITE I/O BUFFER TO DISKRL11 READ COMMAND (RLSTATUS SETS UNIT t IN HIGH BYTE)RETURN TO CALLING WORD
OHERE 2 + WU0 ,0 P ) MVVP'FREV U) 0 CMP,<0 NOT IFI )+ TST,-4004 CLR,NEXT
BLOCK312
1234567 L RL-READ89
10111213141516
MF
314
MF
MF
BLOCK318
1 THEN23456 THEN789
10111213141516
320
12 L DR11'345678 THEN9
101112 L HAS13141516
322
123456 L DR-READ789
101112 L DR-WRITE13141516
NCAR-HAO-MLSO 0:4304o 6/7/82 DOY (157)158
I ) TST.=0 IF0 )t -4002 MVVsELSE-4003 0 )+ MVVvP ) 0 MVVYI -) TST,-4004 41 HMVVY'PAUSE 1t JhMP
OHERE 1I Wi1 S ) MVV9'PREV U) ) 1 HMVV>DR11< 'BUF U) hMVV
I I W) TST.=0 NOT IF1 NEG.--4003 1 MVV,-4004 43 1 MVV.'PAUSE It JMP.
-4004 100 MVVYDRTIP
042007 300 +026722 pLINK4PUSH WeDRI1' Cy>DR11< Co0 9i' WV
4PUSH WVDRlI' C,>DR<11 C,1 W{' W,
HF
hF
H-4:z:
MF
BLOCK324
12345 L BUFFER'6 OBLK 2 = IFS789
10111213141516
12345 L BLOCK'67
9 OBLK 2 = IF$1011121314151 **
041006 300 + .143125 ILINK4PUSH U,EXCHANGE C.RL-WRITE C.DROP' Co;' W,
EISES DR-
NCAR-HAO-HLSO 0:43:16. 6/7/82 DOY (157)158
BUFFER EXCHANGES ACTIVE BLOCK BUFFER FOR ALTERNATE.(ALTERNATE IS WRITTEN TO SYS DEVICE IF HARKED FOR UPDATE)
EXCHANGE THE BUFFERS CHECKING IF ALTERNATE MUST BE SAVED-WRITE C. THENt WRITE BLOCK ON SYSTEM-DEVICE
DROP BLOCK DRETURN TO CALLING WORD
041005 300 + ,147714 ,LINK4PUSH W,'PAUSE C.GET' C,CORE C.BUFFER' C.RL-READ C. ELSES DR-READ C. THEN$WBUFF C.RELEASE' C.i' W
REPALCES BLOCK NUMBER ON STACK WITH THE STARTING ADDRESS HFOF THE BLOCK IN CORE
TIME SHAREGAIN OWNERSHIP SYSTEH DEVICE HANDLERCHECK IF BLOCK IS ALREADY IN CORE TAKING APPROPRIATE ACTION'NOT IN CORE' EXCHANGE BUFFERS (MAY REQUIRE SAVEING ALTERNATE)READ BLOCK FROH SYSTEM DEVICEREPLACE BLOCK O BY BUFFER ADDRESSRELEASE SYSTEM DEVICE HANDLERRETURN TO CALLING WORD
OHERE 2 + WU2 ,S ) ASL.0 S ) MVV.0 IN' U) ADDOl1 DELIM' U) HVV.I 0 )+ CMP. B=0 NOT END
.'WORD TRANSFERS NEXT CHARACTER STRING FROM SOURCE BUFFER MFTO THE TOP OF THE DICTIONARY. ON ENTRY THE BUFFER MUST BE INCORE AND THE ADDRESS ON THE STACK, IF THE BUFFER RUNS OUTTHIS WORD TRANSFERS TO NEXT BLOCK IN SEQUENCE
NUMBER OF BLOCKS TO NEXT BLOCK IN SEQUENCEBYTE ADDRESS OF SOURCE BUFFER
CHARACTER OFFSET ALREADY INTO BUFFERDELIMITER FOR THE NEXT CHARACTER STRINGCLEAR OFF LEADING DELIMITERS (USUALLY BLANKS)
A-nCLJ
I
3456 L 'WORD7B9
1011 BEGIN1213141516
NCAR-HAO-MLSO
R -) S ) MVV,R ) 2000 * ADD,R )+ 0 CMP,::0 NOT IFSCR' U) P ) ADD,IN' U) CLRpS )+ I -) CMP,I -) I -) CMF'INEXTR -) I MVV.4 DP' U) MVVY4 4 ADD,2 4 MVV,4 )+ CLRY B
0:43:35. 6/7/82 DOY (157)158
MF
CHECK FOR RUNNING OUT OF BOUNDS OF ONE BLOCKUPDATE SOURCE BLOCK NUMBERZERO THE CHARACTER OFFSETCLEAR STACK I JUMP BACK FOR NEXT BLOCK
SAVE REGISTER 4ADDRESS NEXT AVAILABE LOCATION IN DICTIONARYBYTE ADDRESSADDRESS WHERE CHARCTER COUNT IS HELDZERO THE CHARACTER COUNT
4 )f 0 -) MVV, B=0 NOT IF2 ) INC,0 INC,I 0 )+ CMP, B=0 ENDDELIM' U) 240 * MVVY4 )$ CLR, B4 )+ CLR, B0 S )+ SUB,IN' U) 0 MVV,I R ) M(VV,NEXT
MOVE CHARACTER TO DICTIONARYIF NULL CHARACTER (END-OF-TRANSMITION) JUMP OUT OF LOOPUPDATE CHARATER COUNTADDRESS NEXT CHARACTERCHECK IF DELIMITER REACHEDNO4 PROCESS NEXT CHARACTERRESTORE BLANKS AS DELIMITERCLEAR 2 ADDITIONAL BYTES AT END OF CHARACTER STRING(NEEDED FOR DICTIONARY SEARCH IF LESS THAN 3 CHARACTERS)NEW OFFSET BYTE NUMBER INTO SOURCEUPDATE OFFSET INTO SOURCE
OHERE 1t W,S -) SCR' U) HMVV=0 IFI )+ TSTPS ) MSB' U) MVV»S ) ASR,NEXT153404 300 + »151317 ,LINK4PUSH W,SCREEN C,BLOCK' C,'WORD C,'PAUSE C,;' W,
SCREEN SWITCHES MESSAGE/BLOCK BUFFER INTERPRETING hGET BLOCK NUMBER OF SOURCEIF SCR IS 0 THIS IS MESSAGE BUFFER
JUMP INTERPRETER OVER 'BLOCK'ADDRESS OF MESSAGE BUFFERWORD ADDRESS
WORD MOVES NEXT STRING TO DELIMITER TO DICTIONARY TOP
PUSH INTERPRETER TO ENTER e WORDSWITCH FOR MESSAGE/BLOCK BUFFER SOURCEREADY THE BLOCK (MOVE TO CORE IF NECESSARY)MOVE CHARACTER STRING TO DICTIONARY (WITH CHARACTER COUNT)TIME-SHARE FOR OTHER USERSRETURN TO CALLING WORD
BLOCK330
1
3456789
10111213141516
THEN
BEGIN
SWAPTHEN
332
123456789
10111213141516
334
MF
12 L SCREEN34567 THENB9
101112 L WORD'13141516
BLOCK336
1 OHERE 1t WU2 L DIGIT I S )t MVV.3 0 S )* MVV.4 2 1 )+ MVV* B5 R -) 1 MVVp6 2 177600 # BIC,7 2 71 * CMP.B <0 IF9 2 100 1 CMP,10 <0 IF11 2 7 1 SUBP12 SWAP THEN 2 60 1 SUB.13 <0 NOT IF14 0 2 CMP.15 <0 IF16
NCAR-HAO-MLSO 0143:59. 6/7/82 DOY (157)158
PROCESS ONE DIGIT OF ASCII CHARACTER STRINGADDRESS OF ASCII CHARACTERNUMBER I/O BASEGET CHARACTER, UPDATE CHARACTER ADDRESSPUSH CHARACTER ADDRESS TO RETURN STACKCLEAR PARITY 1 EXTENDED BITSPUT HEX DIGITS (A B C D E F) IN SEQUENCE FOLLOWING 9
(SEE ASCII CHARACTER TABLE)
SUBTRACT ASCII BASE OF CHARACTER 0NOT A DIGIT IF RESULT NEGATIVENOT A DIGIT IF GREATER THAN OR EQUAL BASE
R -) 2 MVV.2 0 HVVrI S )+ MVV,R -) 1 MVV.0 2 MVV.1 S ) MVV.S ) TST.<0 IF 0 20 R )+ ADD.I R )+ ADDr0 ADC,S ) 1 MVVS -) 0 MVV.
OMUL' 7 JSR»
OMUL' 7 JSR»
ADD* THEN
I -) TST.OP' U) INC.
THEN THEN 1 R )+ MVV.0 BASE' U) MVV,S -) 0 MVV, S --) 1 MVV,'PAUSE JMP,
OHERE 1+ W.R ) 1 WJ ADD,S -) CLR,S -) CLR,OP' U) 100000 1 MVV,I DP' U) MVV,1 1 A[D,1 INC.2 1 ) MVV, B2 55 t SUB,
PUSH DIGIT TO RETURN STACKBASE IN REG* 2BASE TIMES HIGH 16 BITSPUSH LOW PART OF HIGH PRODUCT TO RETURN STACKBASE IN REGISTER 0BASE TIMES LOW 16 BITSWAS SIGN BIT OF LOW WORD SET ?YES. ADJUST FOR 16 BIT POSITIVE ARITHMATICADD HIGH PRODUCT TO MOST SIGNIFICANT PARTADD THE DIGIT TO THE 32 BIT NUMBERCARRY INTO MOST SIGNIFICANT PARTSAVE 32 BIT DOUBLE-WORD ON USER STACK
BACKSTEP INTERPRETER TO PROCESS ANOTHER CHARACTERUPDATE NUMBER TYPE SWITCHPOP NEXT CHARACTER ADDRESS FROM RETURN STACKRESET NUMBER I/0 BASESAVE NUMBER BASE I CHARACTER ADDRESS ON RETURN STACKTIME-SHARE BETWEEN EACH DIGIT
SIGN INITIALIZES NUMBER INPUT SOFTWARE I CHECKS FOR SIGNSKIP INTERPRETER OVER 'EXECUTE' IN 'GO'CLEAR OUT 32 BIT ACCUMULATOR FOR NUMBER
INITIALIZE NUMBER TYPE FLAGADDRESS OF CHARACTER COUNT (FOLLOWED BY CHARACTER STRING)BYTE ADDRESSADDRESS OF FIRST CHAACTERGET THE FIRST CHARACTERCHECK FOR MINUS SIGN
338
1
3456789
10111213141516
340
123 THEN4 HERE
678 L SIGN9
10111213141516
MF
MF
NCAR-HAO-MLSO 0O44124. 6/7/82 DOY (157)158
R -) 2 MVV,=0 END1 INC* 0 ENDOHERE 1+ WU1 S )+ MVV. 0 S )+ HVVI56 t 1 -) CHMP B=0 IFOP' U) CLR,ELSE254 # 1 ) CMHP B=0 IFOP' U) 200 # MVVwELSE72 5 1 ) CMPP B=0 IF #TEMP 3$0 6 ! MWV,
THEN THEN I -) I -) CMPV1 INCrS -) 0 MVV» S -) I MVV»NEXT
3$ THEN 1 ) TST» B=0 IFI )+ TST,R )f TST»=0 IF1 5) NEGPS ) ADCrS ) NEG,
THEN THEN NEXT
OHERE 1+ W,OP' U) TST,
0O NOT IFI )+ I ) CMPF'NEXTS )+ TST»STATE' U) TSTi B.0 IFI )+ TSTPNEXT
SAVE FLAG TO TAKE CARE OF SIGN LATERIF NO MINUS TERMINATE (IN DIGIT)SKIP CHARACTER ADDRESS OVER MINUS SIGN
SPECIAL DOES SPECIAL CHARACTER FORMATTING IN NUMBERSGET CHARACTER ADDRESS AND NUMBER I/O BASECHECK FOR . (FLOATINT POINT FORMATER)
CHECK FOR , (DOUBLE WORD INTEGER FORMATER)
CLEAR TYPE FLAG FOR 32 BIT NUMBER
CHECK FOR I (SEXAGESIMAL FORNATER)
FOR SEXAGESIMAL ENTER NEXT DIGIT WITH I/O BASE 6
SKIP INTERPRETER BACK FOR NEXT 'DIGIT'UPDATE CHARACTER ADDRESSSAVE BASE I CHARACTER ADDRESS
THE CHARACTER IS NOT A DIGIT OF SPECIAL CHARACTERTHE NUMBER INTERPRETING TERMINATS
CHECK FOR VALID CHARACTER STRING TERMINATOR (SET BY 'WORD)FOR PROPER TERMINATION
SKIP INTERPRETER OVER ERROR CONDITIONCHECK FOR SIGN CHANGE
NEGATE 32 BIT NUMBER IF REQUIRED
LITERAL SWITCHES SINGLE/DOUBLE PRECISION NUMBERSAND COMPILES ONLY SINGLE PRECISION IN COMPILE MODE
CHECK IF DOUBLE PRECISIONYES
SKIP INTERPRETER TO DOUBLE WORD HANDLER
DROP MOST SIGNIFICANT WORDTEST IF EXECUTION MODEYES
SKIP INTERPRETER OVER IN-LINE IN EXECUTION MODE
BLOCK342
12 DUP345 L SPECIAL6789
10111213141516
344
123456789
10111213141516
346
MF
00
1234 L LITERAL5678 THEN9 TEMP 1$
101112 THEN131415J16
MF
NCAR-HAO-MLSO 0144:45. 6/7/82 DOY (157)158
234 L PARAMETER5678 1$9
10111213141516
OHERE It WU000241 t0 ROR,0 INC,S -) 0 MVV.0 END
PARAMETER MODIFIES A SUCCESSFUL 'SEARCH' TO THE WORD'SADDRESS FIELD AND COMPILES IT IN COMPILE MODECLEAR CARRYWORD ADDRESS OF WORDS ADDRESS FIELDPARAMETER FIELD ADDRESSPUSH ADDRESS TO USER STACKCOMPILE ADDRESS IN COMPILE MODE
350
OHERE 1+ UW0 CONTEXT' U) MVV,0 ASL.S -) 0 ) MVV,NEXTOHERE 1t Wr1 DP' U) HVV.1 ASL0 S ) MVV,S ) 20 M(VVY0 ASL,2 0 )t MVVY2 300 1 BIC,1 ) 2 CMP,=0 IF
VOCAB PUSHES (USER STACK) ADDRESS OF TOP VOCABULARY LINKADDRESS OF OPEN VOCABULARY TO SEARCHBYTE ADDRESSPUSH VOCABULARY TOP ADDRESS TO STACK
FIND SEARCHES VOCABULARY FOR MATCH TO THE CHARACTER STRINGAT THE TOP OF THE DICTIONARYADDRESS OF DICTIONARY TOPBYTE ADDRESSTOP VOCABULARY ADDRESS IN REG. 0WILL TIME-SHARE AFTER 20 TESTS FOR MATCHBYTE ADDRESS OF WORD IN VOCABULARYGET CHARACTER COUNT AND FIRST CHARACTERCLEAR PRECIDENCE BITSDOES COUNT I FIRST CHARACTER MATCH ?YES
1 1 W) 0 )+ CMP.=0 IFS )t TST,I R )t HVV,I )+ 0 )+ CMPFNEXT0 )+ TST,0 ) TST.=0 NOT IFS ) DEC. =0 NOT IF 0 0 ) MVV, 1$ 0 ENDS ) 0 ) MVV,I -) TST.'PAUSE JMPFI R )+ MVVYS )+ TST.NEXT
DOES SECOND I THIRD CHARACTER MATCH ?YES, THE COUNT & FIRST THREE CHARACTERS MATCH
DROP TIME-SHARE COUNTWILL EXIT TO WORD CALLING 'SEARCH'SKIP INTERPRETER OVER UNSUCCESSFUL ALTERNATIVEREGISTER 0 POINTS TO ADDRESS FIELD OF FOUND WORD
POINT REG. 0 TO LINKIF LINK IS 0 THE VOVABULARY IS EXAUSTEDLINK IS NOT ZERO
IF NO TIME-SHARE THIS STEP, TEST NEXT WORD DOWNTIME-SHARE THIS STEP, SAVE ADDRESS ON STACK
SET INTERPRETER TO REENTER 'FIND'TIME-SHARE
EXIT SHEARCH TO UNSUCCESSFUL ALTERNATEDROP TIME-SHARE COUNT
BLOCK348
HF
I 1
2 L VOCAB34
67 L FIND'89
1011 TEMP 1$1213141516
352
1
34
6789
10111213141516
MF
hF
SWAF, THENTHEN
THEN
THEN
BLOCK354
12 L UPPER34 BEGIN
6789
10111213141516 THEN THEN THEN
356
12 L SEARCH34567
91011 ( I )1213141516
NCAR-HAO-MLSO 0:45:08o 6/7/82 DOY (157)158
OHERE 1+ Wt1 DP' U) hVV, 1 ASL,0 3 # MVV,1 INC,2 1 ) HVV, B2 177600 * BIC,2 141 { CHMP>0 NOT IF2 172 # CMP,<0 NOT IF1 ) 40 1 BIC, B<0 IF1 ) 200 { BIC, BELSE1 ) 200 B bIS, B0 DEC, =0 END NEXT
4PUSHWORD'UPPERVOCABFIND'
023401 ,000000 FLINK4PUSHSEARCHQUESTION'PARAME TERIN-LINE;'
UPPER MODIFIES WORD ON TOP DICTIONARY TO UPPER CASE ASCII MF
POINT TO NEXT CHARACTERGET THE CHARACTERCLEAR PARITY AND SIGN EXTENDIS CHARACTER LOWER CASE ?
YESI CONVERT TO UPPER CASEAND COMPLEMENT PARITY BIT
LOOP THROUGH 3 CHARACTERS
WUC,C,C,C,
SEARCH GETS NEXT WORD FROM SOURCE A TRIES VOCABULARY MATCH HFGET NEXT WORD FROM SOURCE ON TOP OF DICTIONARYCONVERT ANY LOUWER CASE ASCII CHARACTERS TOP UPPER CASEPUSH ON STACK THE TOP ADDRESS OF OPEN VOCABULARYSEARCH FOR HATCH IN VOCABULARY (EXITS SEARCH)
' PUSHES TO USER STACK THE PARAMETER FIELD ADDRESS OF THEFOLLOWING WORD IN THE SOURCE(THIS IS AN IMMEDIATE WORD BECAUSE TWO WORDS MAY BE COMPILED)
PUSH INTERPRETER TO RETURN STACK FOR : WORD ENTRYGET THE WORD FROM THE SOURCE AND TRY MATCH IN VOCABULARYWORD WASN'T FOUNDi ERROR PROMPTPUSH PARAMETER FIELD ADDRESS ON STACK (COMPILE IF NEEDED)LING'PARAMETER' SKIPS THIS TWO WORD COMPILE IN EXECUTION MODERETURN TO CALLING WORD
358
WuC,Cu
C,
W,
047006 300 tf046525 fLINK4PUSH WISIGN C,DIGIT C,SPECIAL C,QUESTION' C,LITERAL C,IN-LINE C,;' W,NULL Cw ( PATCHED IN FLOATING-POINT ); ' WU
NUMBER TRIES TO INTERPRET STRING AT DP AS A NUMBER
INITIALIZE NUMBER INTERPRETERTRY PROCESS NEXT CHARACTER IN SEQUENCE AS A DIGITNOT DIGIT. CHECK FOR SPECIAL FORMAT CHARACTERINVALID CHARACTER ERROR PROMPTVALID TERMINATOR, SWITCH SINGLE/DOUBLE PRECISION'LITERAL' SKIPS COMPILING IN EXECUTION MODE
RETURN TO CALLING WORD
12345 L NUMBER6?89
10111213141516
MF
NCAR-HAO-HLSO 0:4532. 6/7/82 DOY (157)158
043402 300 + ,000317 ,LINK4PUSH 1* W.SEARCH C.NUMBER C.EXECUTE C,NULL C,GO C,
60 IS THE FUNDAMENTAL HIGH LEVEL INTERPRETER LOOP
( PATCHED TO QUERY )
OHERE 1* WU0 DP' U) MVV,0 ASL.S ) ASL,0 -) S )+ ADD,NEXT126005 300 + .147703 tLINK4PUSH WUWORD' C,ENTER C,FIELD C»ASSEMBLER' C,i' WU
HF
INTERPRETER STAYS IN LOOP SO NO NEED TO PUSH RETURN STACKGET AND TRY FIND NEXT WORD IN SOURCE'FIND' NOT SUCCESSFUL TRY TO INTERPRET AS A NUMBER'FIND' SUCCESSFUL EXECUTE OR COMPILECHECK FOR USER STACK UNDERFLOWBACK TO GO
FIELD ADVANCES ,CODE WORD BY NUMBER CHARACTERS ON STACK MFADDRESS OF PARAMETER FIELD OF THE »CODE DEFINED WORDBYTE ADDRESSNUMBER OF BYTES TO OFFSET THE ADDRESS FIELD ADDRESSOFFSET THE ADDRESS FIELD ADDRESS
,CODE LINKS AN ASSEMBLER LEVEL WORD IN DICTIONARY
: WORD ENTRYMOVE NEXT CHARACTER STRING FROM THE SOURCE TO DICTIONARY TOPLINK THE WORD TO DICTIONARYADVANCE ADDRESS FIELD ADDRESS BY NUMBER ON USER STACKINVOLE THE ASSEMBLER VOCABULARYRETURN TO CALLING WORD
141410 300 + .047317 ,LINK4PUSH W,WORD' C,ENTER C,.,' CC;CODE' WU,
S -) P ) MVV,NEXT
CONSTANT IS A WORD DEFINING WORD15 CONSTANT (15) DEFINES A WORD NAMED (15) THAT PUTS THENUMBER 15 ON THE STACK WHEN EXECUTED
: WORD ENTRYMOVE NEXT CHARACTER STRING FROM SOURCE TO DICTIONARY TOPENTER LINK AND ADDRESS FIELDS IN DICTIONARYINSTALL VALUE OF CONSTANT IN DICTIONARYPOINT ADDRESS FIELD OF NEW WORD TO FOLLOWING CODE
PUSH PARAMETER FIELD ON STACK
BLOCK360
12345 L GO67B9
10111213141516
12 L FIELD34
6789
.1011 ( CODE )1213141516
364
L CONSTANT'
234567
910111213141516
nF
051402 ,000317 7LINK4PUSH WVCONSTANT' C»iCODE' W.
1 DP' U) MVV.1 ASL,0 1 NMVVOP' U) 1 HVV,I )+ P ) MVV»
NCAR-HAO-MLSO 0:45:53. 6/7/82 DOY (157)158
SO IS A WORD DEFINING WORD USED TO ENTER THE OP CODESTO THE ASSENBLER VOCABULARY
SO IS A WORD DEFINING WORDPOINT ADDRESS FIELD OF DEFINED WORD TO FOLLOWING CODE
GET VALUE OF USER DICTIONARY POINTERBYTE ADDRESS
SAVE ADDRESS OF INSTRUCTIONPUSH OP CODE TO DICTIONARY
BEGIN
THEN
SWAP THEN
S ) 177700 1 BIT,=0 NOT IFS ) ASL,S -) 37 # MVV,2 S )+ MVV,60 # 2 CMP,<0 IFS -) 10 # BICyS )f 27 1 CMP,=0 IFI )+ S )+ HVV,
2 77 1 CMF'P=0 IF-1 1 W) I SUB,
THEN THEN 0 ) 1 # BIT,-0 IF0 ) 2 ADD,1 ROR,DP' U) 1 MVV,NEXT
THEN 0 ) 1 1 BIC,2 ASL, 2 ASL, 2 ASLP 2 ASLP 2 ASLP 2 ASLD0 ) 2 ADD,0 END
TEST FOR ABSOLUTE MODE
BYTE ADDRESSABSOLUTE MODE
MODE 10+REGISTERTEST FOR INDEX MODE
NOT INDEX MODE, TEST FOR ABSOLUTE OR IMMEDIATE MODE
INSTALL INDEX, IMMEDIATE DATA, OR ADDRESS IN DICTIONARY
CHECK FOR MEMORY INDIRECT MODE
REPLACE ADDRESS BY RELATIVE ADDERSSTEST IF SOURCE IN DOUBLE OP INSTRUCTION
INSTALL DESTINATION MODE
UPDATE DICTIONARY POINTER
CLEAR DOUBLE OP FLAGSHIFT NODE LEFT 6 BITSINSTALL SOURCE MODEBACK FOR DESTINATION MODE
BLOCK366
12345 ( SO )67
9101112131415i68
268
MF
123456789
10111213141516
370
123456789
10111213141516
MF
lN)(N)
MF
NCAR-HAO-MLSO 046:12. 6/7/82 DOY (157)158
1 042013 300 + *2 143305 ,3 LINK4 OHERE 1I WU5 ( DEFINITIONS )CURRENT' U) CONTEXT' U) MVV.6 NEXT78 143005 t9 151317 ,
10 LINK11 ASSEMBLER' 1+t W12 ( FORTH ) LINK13141516
CR OHERE * .OHEREuORD' I -ASSEMBLER'ASSEMBLER'FLINK e
DP' OFF+ !:' OFFf W!CONTEXT' OFF+ !CURRENT' OFFt IASSEMBLER' OFF+ I
DEFINITIONS HAKES VOCABULARY TAKING NEW DEFINITIONSTHE SAME AS THE VOCABLUARY OPEN FOR SEARCHING
FORTH OPENS THE FORTH VOCABULARY FOR SEARCHES(IMMEDIATE WORD)
ADDRESS FIELD SAME AS ASSEMBLER'SPARAMETER FIELD HAS TOP LINK OF FORTH VOCABULARY
PATCH FORWARD REFERENCE IN : TO WORDINITIALIZE DICTIONARY POINTERINITIALIZE DICTIONARY SEARCH TO ASSEMBLER VOCABULARYINITIAL DEFINITIONS GO TO ASSEMBLER VOCABULARYCHAIN FORTH TO FOLLOW ASSEMBLER VOCABULARY
CODE TRY 5 ,0 OPERATOR OFF+ W! MVV, U OPERATOR WM MVV,2 2000 t MVV. 1 U MVV, BEGIN 1 )+ 0 )+ MVVP 2 DEC, =0 END0 U lMVV, BEGIN 0 -) CLR, 0 TST -=0 END0 )+ 0 ! MVV, -1 DP +! 2 4 )+ MVV,0 ) 0 N MVV, -1 [F' +! 2 )+ ) JMP,70 Wt ) SYS--READY WI MVV,140 SYS-READY W« MVV»142 HAS WI MVV, 143 340 1 MVV,R RO U) MVV, S SO U) MVV,SCR' UI) SCR e 2 t I MVV,I GO WI MVV, NEXT
TRY
TRANSITION BLOCK FROM META-FORTH TO BASIC-FORTHTRANSITION WORD
ADDRESS OF OBJECT MODULE, ADDRESS WHERE IT WORKSMOVE META-FORTH OBJECT MODULE TO LOW CORECLEAR CORE BELOW OPERATORPUT INTERPRETER LOOP IN WORDS 0 I 1
POINT RL11 VECTORPOINT DR11-C VECTOR APOINT DR11-C VECTOR B, PROORITY 7INITIALIZE RETURN I FORTH STACKWILL START LOADING 2 BLOCKS FROM THIS ONELOAD BASIC-FORTH
GIVE REST OF REGULAR FORTH CODE A WHIRL
BLOCK372
374
MF
123456789
10111213141516
376
MF
",o(A4
123456789
10111213141516
SL MF
NCAR-HAO-MLSO 0:46:30. 6/7/82 DOY (157)158
1 100 SO JFP, 5000 SO CLR. 5100 SO COMN 5200 SO INCP 5300 SO DEC,2 200 SO RTS, 5400 SO NEG, 5500 SO ADC, 5600 SO SBC, 5700 SO TST,3 300 SO SWUB, 6000 SO ROR, 6100 SO ROL, 6200 SO ASR, 6300 SO ASL,45 30001 SO BIT, 40001 SO BIC, 50001 SO BIS, 20001 SO CMP,6 10001 SO MVV, 60001 SO ADD, 04001 SO JSR, 160001 SO SUB,78 70001 SO MUL, 71001 SO DIVe 73001 SO ASHCP9
10 2 CONSTANT P11 3 CONSTANT U12 4 CONSTANT I13 5 CONSTANT S14 6 CONSTANT R1516
SINGLE OPERAND INSTRUCTIONS, SEE PROGRAMMING CARD ASWHEN EXECUTED THE INSTRUCTION WILL BE ASSEMBLEDTHE DESTINATION IS TAKEN AND CLEARED FROM STACK TOP
DOUBLE OPERAND INSTRUCTIONS, WHEN EXECUTED THE SOURCE OPERANDIS EXPECTED ON TOP OF STACK WITH DESTINATION BELOW
EXTENDED INSTRUCTION SETREGISTER USAGE: ( 0 I 1 ARE FREE REGISTERS )FREE REGISTER$ ADDRESSES PARAMETER FIELD ON CODE WORD ENTRY.POINTS TO USERS STATUS TABLEPOINTER IN STRING OF COMPILED ADDRESSES FOR INTERPRETERPOINTS TO TOP OF FORTH STACK ( PUSH DOWN )POINTS TO TOP OF RETURN STACK ( PUSH DOWN )
380
: NEXT 7 CLR, i20 ,CODE ) 10 ,13 ,CODE )+ 20 ,
6 »CODE -) 40 r1 ,CODE B) 60 ,
7 )t CONSTANT !6 .CODE W# ,1 ,CODE I) 77 ,0 ,CODE U) S )
12 ,CODE S) S 55 ,CODE P) P ,1 ,CODE W)
S -) P ) MVV» :
15 12 BIS. NEXT
S ) ASL, S -) P ) MUVV NEXTASL. S ) U SUB, S -) 63 1 MVVY NEXT
RRRRNNAAUUWR
2 S B) ASL, S ) 60 i BISt NEXT
IPPPNIDI
DMBMBMBMBM
ASSEMBLE AN INSTRUCTION THAT JUMPS TO LOCATION 0SET INDIRECT MODESET AUTO INCREMENT MODESET AUTO DECREMENT MODESET INDEX MODEIMMEDIATE MODE FOR A NUMBERIMMEDIATE MODE FOR TWO TIMES NUMBERRELATIVE INDIRECT MODE ON WORD ADDRESS AINDEX MODE INTO USER STATUS TABLEWORD INDEX MODE ON STACKWORD INDEX MODE ON REGISTER 2 (PARAMETER FIELD)WORD INDEX MODE ON REGISTER R
1 FORTH DEFINITIONS23 164 .CODE BASE 32 ,4 152 ,CODE FO 30 ,5 140 .CODE PREV 266 126 ,CODE DELIM 247 114 ,CODE UNIT 228 102 ,CODE MSB 20 t9 70 rCODE SCR 16 ,
10 56 .CODE CURRENT 14 ,11 44 7CODE CONTEXT 12 t12 32 ,CODE SPLIT 10 ,13 20 7CODE QUE 6 ,14 6 »CODE SO 4 ,15 S --) U MVV, S ) ASR,1 6
157145133121107
7563513725131
S )
MUTHESE WORDS ARE THE VEHICLE USED TO ADDRESS USER STATUS TABLES.THE PARAMETERFIELD CONTAINS THE OFFSET OF THE USER TABLE FOREACH STATUS. THE SYMBOLS WHEN EXECUTED ADDS THE OFFSET TO THEADDRESS OF THE USER'S STATUS TABLE THUS SYPLYING THE ABSOLUTEADDRESS OF THE STATUS FOR THAT USER.
A COMMENT FOR EACH SYMBOL IS GIVEN LOW IN META-FORTH
f~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.CODE FLT 31
.CODE ALT 27,CODE BUF 25,CODE OP 23.CODE BLK 21,CODE IN 17,CODE STATE 15PCODE LAST 13,CODE DP 11,CODE TTY 7,CODE TTK 5,CODE RO 3F ) ADD, NEXT
BLOCK378
123456789
10111213141516
302
AS
IN',4-1^.
NCAR-HAO-MLSO 0:46:57. 6/7/82 DOY (157)158
123456789
10111213141516
: CODE 0 »CODE ;0 CONSTANT 0 1 CONSTANT 1 2 CONSTANT 2 3 CONSTANT 34 CONSTANT 4 5 CONSTANT 5 6 CONSTANT 6 7 CONSTANT 712 CONSTANT TENCODE HERE S -) DP U) MVV, NEXTCODE + S ) S )f ADD» NEXTCODE - S ) S )t SUBD NEXTCODE MINUS S ) NEG, NEXTCODE AND S ) CONM S ) S )+ BIIC: NEXTCODE 1+ S ) INCP NEXTCODE 2X S > ASLP NEXTCODE 2/ S ) ASR, NEXTCODE 2* 1 S) ASL» NEXT13 *CODE OCTAL 10 .6 .CODE DECIMAL 12 .1 .CODE HlEX 20 . BASE U) P ) MVV. NEXT
386
1 CODE Q 0 S ) hVV» 0 ASL. S ) 0 ) HVV, NEXT2 CODE WQ 0 S ) MVV. 0 ASL, S ) 0 ) MVV,3 000241 * S ) ROR. NEXT4 CODE I 0 S )+ MVV» 0 ASL. 0 ) S )+ MVV, NEXT5 CODE W! 0 S )+ MVV, 0 ASL. S ) ASL, 0 ) S )+ MVV.6 CODE H+ 0 S )t MVV, 0 ASL, 0 ) S )+ ADD, NEXT7 CODE OR! 0 S )t HVV, 0 ASL. 0 ) S )+ BIS. NEXT8 CODE CL! 0 S )+ MVV. 0 ASL. 0 ) S )+ DIC. NEXT9 CODE OVER S -) 1 S) MMVV NEXT
10 CODE SWAP 0 S )+ MHVy S -) S ) MVV. 1 S) 0 MVV.11 CODE DUP S -) S ) MVV, NEXT12 CODE :>SWAP< S ) SWB NEXT131415I n
DEFINE AN ASSEMBLER LANGUAGE WORD
- A NEXT AVAILABLE ADDRESS IN USER DICTIONARYXY Z Z=X+YXY Z Z=X-YX Z Z=-XXY Z Z=X.AND.YX Y Y=XtlX Z Z=2$XX Z Z=X/2
- - CHANGE NUMBER INPUT/OUTPUT BASE TO OCTAL- - CHANGE NUMBER INPUT/OUTPUT BASE TO DECIMAL- - CHANGE NUMBER INPUT/OUTPUT BASE TO HEX
NEXT
NEXT
AA
XAXAXAXAXAXYXYXX
X
XYXYXXXY
REPLACE A BY CONTENTS OF ITS ADDRESSREPLACE A BY WORD VALUE OF BYTE ADDRESS AT A
MOVE X TO ADDRESSPUT 25X AT ADDRESSADD X TO ADDRESSOR X TO ADDRESSCLEAR BITS AT ADDRESS WHICH ARE SET IN XDUPLICATE SECOND WORDSWAP TOP TWO WORDSDUPLICATE TOP WORDSWAP BYTES
388
1 CODE ROT 0 S )+ MVV, 1 S )+ MVV, 2 S ) HVV»2 S ) I VVF, S -) 0 MVV, S -) 2 hVV, NEXT3 CODE ROLL I S )+ MVV, S 1 ADD. S I ADD, 0 S ) MVV»4 1 S) S -) MVV. 1 DEC, 3374 , S ) 0 MVV, NEXT5 : W. 2X i;6 : C, 1 - W, ;7B9
101 1'213141
XYZ
N
AA
YZX BRING THIRD NUMBER TO TOP SM
- SQUEEZE THE N+1'TH WORD TO TOP OF STACKTHE TOP N WORDS ARE ROLLED DOWN
- CONVERT WORD ADDRESS TO BYTE ADDRESS AND PUSH DICTIONARY- COMPILE BYTE ADDRESS TO DICTIONARY ( FOR : WORDS )
BLOCK384
AR
SH
Ln
NCAR-HAO-MLSO 0:47:17. 6/7/82 DOY (157)158
1 : 2CONSTANT CONSTANT , 3CODE2 S -) I P) MVV S -) P ) MVV, NEXT3 0 0 2CONSTANT 0045 CODE 2DROP S )+ S )f CMP, NEXT6 CODE 28 0 S ) MVV, 0 0 ADD, S -) 0 )H MVV, I S) 0 ) HVV,7 NEXT8 CODE 2! 0 S )+ MVVY 0 0 ADD, 0 )+ S ) MVV,9 0 ) S )+ MVV, NEXT
10 CODE 2DUP S -) 1 S) MVV, S -) I S) MVV, NEXT11 CODE 2SWAP 2 S )+ MVV, 1 2 S) MVV, I S) S )+ MVV,12 0 S ) MVV, S ) 2 MVV, S -) I MVV, S -) 0 MVY, NEXT13 CODE. 20VER S -) 3 S) MVV, S -) 3 S) MVV, NEXT141516
DD - DEFINE DOUBLE WORD CONSTANT WHOSE VALUE IS DD
- 00 PUSHES TWO ZEROS ON STACK
DD - DROP DOUBLE WORDA DD GET DOUBLE WORD FROM ADDRESS A
DDA - STORE DOUBLE WORD AT ADDRESS A
DW DWDW DUPLICATE DOUBLE WORDDDEE EEDD SWAP DOUBLE WORDS
DDEE DDEEDD DUPLICATE SECOND DOUBLE WORD
SH
392
1 ASSEMBLER DEFINITIONS2 CODE B OP U) ) 100000 1 BIS, NEXT3 103400 CONSTANT 1C4 102400 CONSTANT IV5 002400 CONSTANT <06 001400 CONSTANT =07 003000 CONSTANT >089 : RTI* 2 t i
10 t NOT DUP 400 AND 2X - 400 + i11 : END NOT SWAP HERE 1+ - 377 AND + ,12 : BEGIN HERE i13 : IF NOT HERE SWAP HERE 1+ - s i14 : THEN HERE SWAP +15 E :LSE 0 IF SWAP THEN i16 FORTH DEFINITIONS
VvVvvv
VVV
I
AIIAA
JA
A
B
ASMAKE LAST ASSEMBLED INSTRUCTION A BYTE INSTRUCTIONVALUE OF BCS INSTRUCTION; BRANCH IF CARRY SETVALUE OF BVS INSTRUCTIONi BRANCH IF OVERFLOW SETVALUE OF BLT INSTRUCTIONi BRANCH IF LESS THAN (ZERO)VALUE OF BEG INSTRUCTIONi BRANCH IF EQUAL (TO ZERO)VALUE OF BGT INSTRUCTIONS BRANCH IF GREATER THEN (ZERO)
ASSEMBLE RETURN INTERUPT INSTRUCTION INTO DICTIONARYREVERSE LOGIC SENSE OF BRANCH INSTRUCTION ON STACKADDRESS NEXT AVAILABLE DICTIONARY LOCATIONASSEMBLE BACKWARDS BRANCH TO ADDRESS WITH I INSTRUCTIONASSEMBLE FORWARDS BRANCHP LEAVE ADDRESS ON STACKFINISH FORWARD BRANCH FROM ADDRESSASSEMBLE FORWARD BRANCHP FINISH BRANCH AP LEAVE ADDRESS
394
1 CODE 32MOVE 2 40 6 MVV, 0 IF2 CODE MOVE 2 S )+ MVV, THEN I S )
+MVVD 0 S )+ MVV,
3 0 ASL, I ASL» 0 IF BEGIN4 1 )+ 0 ) MVV, 1 )t 0 )+ MVVW I ) 0 ) ) MVV ) 0 ) MVVp5 1 t 0 )+ MVV, 1 )+ 0 )+ MVVv 1 )f 0 )+ MVV, 1 )+ 0 )+ MVV6 1 )* 0 ) HMVVI 1 )t 0 )
+MVV, 1 )f 0 )* MVV, I )
+0 )f MV¥V7 1 )+ 0 )+ MVV, 1 )+ 0 )+ MVV, 1 ) 0 )+ MVV 1 )+ 0 )+ MVV,8 1 )+ 0 )H MVV, )1 0 )+ 0 )O MVVF I ) 0 )+ MVVY9 1 t) 0 )+ MVV, I )+ 0 )+ MVV, 1 )+ 0 )+ MVV, ) 0 )+ MVV,1' 1 }+ 0 )+ MVV, 1 ) 0 )4 MVV, 1 )+ 0 )+ MVVF I ) 0 )+ MVV,11 1 0 )+ ) MVVV 1 ))+ )+ MVV, I )+ 0 )+ MVV, 1 0 ,1 SWAP THEN HERE 2 40 & SUB, SWA
F<0 END 2 40 1 ADD,13 :.:0 IF S -) ROT W# MVV, 2 ASL, S ) 2 SUB. 2 CLR,14 7 S )+ MVV, THEN NEXT
1 '16 ; CLEAR 0 OVER ! D'UP 1I ROT 1 - MOVE i
AB - MOVE 32 WORDS STARTING FORM A TO B GFABN - MOVE N WORDS STARTING FORM A TO B
MOVE IS THE PRIMARY WORD FOR MOVING ARRAY IN CORE.IT IS IMPROTANT THAT THERE ARE NO TIME SLICES IN THE WORD.AS THERE ARE NO TIME SLICES THE EXTRA CODE HERE IS FOR SPEED.IT IS TWICE AS FAST AS A WORD THAT COUNTS EACH MOVE.
NA - ZERO N WORDS STARTING AT ADDRESS A
BLOCK390
.IN
0'
NCAR-HAO-MLSO 0:4744. 6/7/82 DOY (157)158
HERE ASSEMBLER S --) F ) MVV,STATE U) TST» =0 IF 0 DP U) MVV» DP U) INC, 0 ASL»-4 P) 100 # BIT, =0 IF S ) DEC, S. ) ASL,ELSE DP U) INC, 0 )+ ' LIT 1 - WU MVV,THEN 0 ) S )+ hVV, THEN NEXT
2X CONSTANT A 0 CONSTANT ? 0 CONSTANT ? 0 CONSTANT ?0 CONSTANT ? 0 CONSTANT ? 0 CONSTANT ? 0 CONSTANT ?0 CONSTANT ? 0 CONSTANT ? 0 CONSTANT ? 0 CONSTANT ?0 CONSTANT ? 0 CONSTANT ? 0 CONSTANT ? 0 CONSTANT ?
300 HERE 0 CONSTANT < .. CL! A ' -- ':K< I - !HERE 1+ 2X , HERE ' :::< ! ASSEMBLER
2 20 4 MVV, 0 ' A 4 - W* MVV, I ' A 1+ WU MVV,BEGIN BEGIN 0 )t 1 )* MVV, 0 )+ 1 )+ MVV, 0 )+ 1 )+ CMP,0 )+ I )t MVV, 0 )+ I )+ MVV, 2 DEC, >0 NOT END-0 IF I S )1 MVV, 1 ASL, SWAP 0 ENDTHEN 0 -) S )+ MVV 0 -) A { MVV, NEXT
398
1 : TEMP 100 WORD HERE OR! HERE <<.<2 : 'TEMP WORD HERE <<:<..3 : TEMP HERE 'TEMP i4 ' ASSEMBLER 'TEMP ASSEMBLER'
6 ; ',CODE HERE t 1+ 2X , TEMP ASSEMBLER' ;7 : ::CODE 0 :,CODE i8 ' TEMP 1 -- e TEMP IPUSH9 :: IPUSH , TEMP 0 STATE ! CURRENT B ['UP CONTEXT ! [ LAST ! i
1011 CO[IE EXECUTE P S )+ MVV, P DEC, P ASL, P )f ) JMP,
1314
TEHP SYMBOL ADDRESS FIELDS POINT HERE, GET SYMBOL VALUEIF COMPILING:
COMPILE NUMBER IF PRESIDENCE BIT IS SETOTHERWISE COMPILE WORD
SYMBOL TABLE
GF
«««<<<<<< IS A TEMP SYMBOL FOR UNLINKED WORD IN NEXT LINEUNLINKED WORD TEMPORARY CALLED <<<<<<
PUSH THE SYMBOL TABLE DOWN, OLDEST IS LOST
GET NEW SYMBOLTAKE SYMBOL VALUE OFF STACK, POINT THE ADDRESS FIELD
X -- TEMP SYMBOL WHICH COMPILES X AS A NUMBER IF COMPILING GFX - TEMP SYMBOL WHICH COMPILES X AS A WORD IF COMPILING- - TEMP SYMBOL TO LABEL NEXT AVAILABLE DICTIONARY LOCATION
( THIS APLICATION OF 'TEMP ALOWS ASSEMBLER TO COMPILE )
<,CODE <CODE I <: ARE DEFINED TO SAVE THREE CORE LOCATIONS FOREACH USE. THE CHARACTER COUNT, FIRST 3 CHARACTERS, AND LINKARE NOT PUT IN THE DICTIONARY. THEIR USE IS INTENDED ONLY FORTHE AREA OF CODE BEING INTERPRETED.
P - EXECUTE WORD WHO'S PARAMETER FIELD IS ON THE STACK
16
400
' ' TEMP I'IMMEDIATE 300 LAST B CL! iFORGET I' [UP 2 - B CONTEXT B DUP CURRENT I ! 4 - DP ! ;
: VOCABULARY HERE DUP 3 + CONSTANT , IMMEDIATE{CODE P ASR, CONTEXT U) F MVV, NEXT
CHAIN I' 2 - CONTEXT B 1+ I ;INTEGER CONSTANT ;CODE P ASR, S -) P MVV, NEXTSET 2X SWAP CONSTANT , ;CODE P )+ ) P )+ MVV, NEXTALIAS ' QUESTION CONSTANT iCODEP P ) MVV, P F[EC, P ASL, P !$ ) JMP,
CODE /RETURN R RO U) MVV, NEXT( 251 DELIM ! WORD i IMMEDIATE
- P NON IMMEDIATE FORM FOR ' GFMAKE LAST DEFINED WORD EXECUTE IMMEDIATE WHEN COMPILING
- - [DISCARD DICTIONARY DOWN THROUGH FOLLOWING WORD- - lDEFINE A NEW VOCABULARY BY FOLLOWING WORD
- - CHAIN ACTIVE VOCABULARY TO FOLLOWING VOCABULARYX - INTEGER CONSTRUCTION , SEE FORTH MANUALXA - DEFINE NEW WORD WHICH INSTALLS X AT ADDRESSA -- DEFINE NEW WORD WHICH EXECUTES WORD AT PARAMETER ADDRESS
- - CLEAN RETURN STACK( ...... ) DELIMITS COMMENT
L OCK396
123456/
910111213141516
123456789
1011121314151 6
NCAR-HAO-MLSO 054808. 6/7/82 DOY (157)158BLOCK402
1 TEMP 2DIV ASSEMLER2 R -) 0 MVV. R -) I hVV. 0 2 MVVr 1 3 HVV» ' ODIV 7 JSR.3 2 0 MVV, 3 1 MVV. 1 R )+ MVVU 0 R )+ MVVt 7 RTS.456789
10111213141516
TEMP 2MULR -) 0 MVVv R -) 1 MVV. 0 2 MVV. 1 3 MVV. ' OMUL 7 JSRD2 0 MVVP 3 1 MVV» 1 R )+ MVV'. 0 R )* MVVv. 7 RTS.TEMP 2ASHCS ) TST, >0 IF 3 ASL, 2 ROL, S ) DEC. DUP 0 END THEN <0 IF
2 ASRP 3 ROR, S ) INC. DUP 0 ENDTEMP OASHCS ) TST. >0 IF 1 ASLr 0 ROL, S ) DEC. DUP 0 END THEN <0 IF
0 ASRP 1 ROR. S ) INCr DUP 0 END THEN THEN S )4 TSTP 7 RTSD
DIVIDE USING REGISTER 2 ( SOFTWARE )
MULTIPLY USING REGISTER 2
SHIFT USING REGISTER 2
SHIFT USING REGISTER 0
404
1 ASSEMBLER DEFINITIONS23 -: MOVJSR MVV, 7 JSR» t4 10 .CODE ASHCP OASHC * 2ASHC v5 2 »CODE DIV. ' ODIV » 2DIV 9 0 S -) # MVV? 0 IF6 2 .CODE MULF ' OMUL 9 2MUL v 0 S ) MVV9 0 INC.7 THEN P S )+ ADD» 1 P ) MV')8 2 S )+ MVVr 100 # 2 CMP» <0 IF9 60 t 2 CMP, <0 IF S -) 10 # BICF S )* 27 ! CMP.
10 =0 IF SWAP [HEN R -) S ) MVVp S ) 1 MVV,11 S -) 0 MVV? S -) R )+ MVVN ELSE12 SWAP THEN S -) 1 MVV» S -) 0 MVVe THEN S -) 2 MVV»13 R -) I MVV» I MOVJSR W MVV.f NEXT1415 FORTH DEFINITIONS16
MACROS FOR MUL. DIVP ASHCP (SEE PROCESSOR HANDBOOK)
COMPILE MVV 8I JSR. FOR EACH INSTRUCTION
STACK IS USED TO GET SOURCE OF DIV. OR ASHC. TO ROUTINESOTHER REGISTER IS USED TO CARRY SOURCE TO MUL ROUTINESADDRESS FOR JSRs INSTRUCTIONCHECK FOR ABSOLUTE MODE ( 1 WORD ON STACK )CHECK FOR INDEX AND IMMEDIATE MODE ( 2 WORDS ON STACK )ARRANGE STACK FOR TWO WORD SOURCE
ARRANGE STACK FOR ONE WUORD SOURCEINSTALL MVV, AND JSR? INSTRUCTIONS
406
1 CODE 1/ 2 S )I MVV. 0 5 )f MVVv S ) 0 MULP 2 0 DIV¥2 S ) 0 MVVF 0 CLR, 1 ASLF <0 IF 0 COMo THEN3 2 0 DIV, S ) 0 ADD, NEXT45 CODE /MOD 2 S )t MVV.6 0 CLR. 1 S ) MVV, <0 IF 0 COM» THEN 2 0 DIV.7 S ) MVVp <:0 IF S ) 2 ADDo 0 DEC. THEN8 S -) 0 MVV, NEXT9
10 CODE / 2 S )* MVVU 0 CLRv 1 S ) MVVv11 ::0 IF 0 COMN THEN 2 0 DIVP S ) 0 NMVV NEXT1213 CODE * 0 S )+ MVV. S ) 0 MUL. S ) 1 MVVv NEXT1415 : MOD /MOD DROP ;16
XYZ W FORM W=X*Y/Z
XY ZW FORM W=X/Y Z= X MODULES YZ IS COMPUTED TO BE ALWAYS POSITIVE OF ZERO
XY Z FORM Z=X/Y
XY Z FORM Z=X*Y
XY Z FORM Z- X MODULES YZ IS COMPUTED TO BE ALWAYS POSITIVE OF ZERO
AS
00
AR
NCAR-HAO-MLSO 0O48:33. 6/7/82 DOY (157)158
12 CODE ADS S ) TST. <0 IF S ) NEG. THEN NEXT3 CODE MAX S ) S )t CMP, :.0 NOT IF NEXT4 CODE MIN S ) S )t ChMP» :0 IF5 SWAP THEN S ) -1 S) MVV. THEN NEXT6789
10111213141516
410
1 CODE D+ 1 S) S )t ADD, 1 S) S )t ADD. S ) ADC. NEXT DDEE2 CODE DMINUS I S) NEG, S ) ADCP S ) NEG. NEXT DD3 CODE DABS S ) TST. ' DMINUS <:0 NOT END NEXT DD4 CODE DSHIFT 2 S )+ MVV, 0 S )t MVV» 1 S ) MVV, DDN5 2 0 ASHC. S ) I MVV, S -) 0 hVV, NEXT6 : D- DMINUS Dl i DDEE7 CODE EXTEND S --) CLR. I S) TSTP <0 IF S ) DEC. THEN NEXT X8V CODE M+ 0 CLRt 1 S )+ MVV, '<0 IF 0 COM. THEN DDX
10 S )t 0 ADD, S ) I ADD. S -) ADC, NEXT11 CODE M/ 2 S )+ MVV, 0 S )t MVV, 1 S ) MVV, 2 0 DIV. DDX12 S ) 0 MVV, NEXT13 CODE M* 0 S )+ MVV. S ) 0 MULt S ) 1 MVV. S --) 0 MVV, NEXT XY141516
ARX Z Z=ABS(X)XY Z MAXIMUM OF X AND YXY Z MINIMUM OF X AND Y
FFEEEEEE
FFXE
EE
Y
DD
FORM FF=DD+EEFORM EE=-DDFORM EE=DABS(DD)SHIFT DD N BITS LEFT (NEGATIVE N FOR RIGHT SHIFT)
FORM FF=DD-EEEXTEND SIGN BIT TO MAKE X A DOUBLE-EWORD
ADD X TO DOUBLE WORD DD
DEVIDE DOUBLE WORD BY X LEAVING SINGLE WORD
FORM DOUBLE WORD PRODUCT ON X I Y
AR
[~D
A
412
1
34
6789
10111213141516
CODE M$/R -) U MVV, R -) I MVVY4 S )+ MVV,R -) S )+ MVVf <0 IF R ) NEG, 4 NEG. THEN0 S )+ MVV, ::0 IF S ) NEG. 0 ADC» 0 NEG. 4 NEG. THEN2 S ) MVV, R ) 2 MUL. S ) TST. <0 IF 2 R ) ADD, THENR ) 0 MUL, 1 2 ADD, 0 ADC»R ) 4 MVV. (0 IF 4 NEG> THEN3 ASL. 1 ROL. 0 ROL,3 4 ADD, I ADC, 0 ADC,4 0 DIV.2 1 MVV. 000241 . 2 ROR. 3 ROR, 4 2 DIV.2 ASL» 0 ROR, 2 ROR,R )+ TST, .::.0 IF 2 HEG, 0 ADC, 0 NEG, THENS ) 2 MVV. S -) 0 MVV.I R )+ MVV, U R )+ MVV, ' PAUSE JMP.
EEMD FF FORM FF = EE*M/DSAVE REGISTERS 3 1 4GET THE DEVISORGET THE HULTIPLYER ADJUSTING TO POSITIVE IF NECESSARYHIGH WORD OF EE ADJUSTING TO POSITIVE IF NECESSARYMULTIPLY LOW WORD IN EE DOUBLE-WORDFORM HIGH 32 BIT OF 48 BIT PRODUCT THROUGH REG 0 I 1GET MAGNITUDE OF DEVISOR SAVING SIGN FLAG IN R )MAKE ADJUSTMENT TO AVOID 16 BIT POSITIVE QUOTIENTADD 1/2 DEVISOR TO 48 BIT PRODUCT TO AVOID ROUND OFF ERRORDEVIDE HIGH 32 BITS OF 48 BIT PRODUCTDEVIDE LOW 32 BITSFINAL COLLECTION OF TERMS AVIODING 16 BIT QUOTIENTFINAL MINUS SIGN ADJUSTMENTPUT 32 BIT ANSWER ON STACKRESTORE REGISTERS 3 & 4, TIME SHARE BACAUSE WORD SO LENGTHY
AR
BLOCK408
NCAR-HAO-MLSO O048S56S 6/7/82 DOY (157)158
I1 »TEMP 'IF S )+ TST; =0 NOT IF I )+ TST» NEXTS$ #TEMP 'SKIP THEN I I ) ADD, NEXT
'IF C, HERE 0 * i IMMEDIATEHERE OVER - 2X SWAP I I IMMEDIATE ' THEN 'TEMP THEN''SKIP C. HERE 0 , SWAP THEN' ; IMMEDIATE
S ) TST =-0 IF S ) INC» NEXT THEN S ) CLR» NEXT0 CLRt S ) TSTv <O IF 0 INC. THEN S ) 0 MVV¥ NEXTS ) S )+ SUB, ' O 1+ 0 ENDS ) S )+ SUB. ' 0< 0 ENDS ) S )+ SUB* S ) NEG6 ' 0< 0 ENDS ) S )f BIS. ' 0= 1+ 0 END
FORTH IF ELSE THEN CONSTRUCTION ( SEE FORTH MANUAL )
XXXY
XYDD
zzzzzz
SET Z=I (TRUE) IF X=OSET Z=1 (TRUE) IF X<0SET Z=l (TRUE) IF X=YSET Z=l (TRUE) IF X<YSET Z-l (TRUE) IF X>YSET Z=l (TRUE) IF DD=O
Z=O (FALSE) IF X.NE.OZ=O (FALSE) IF X.GE.0Z=O (FALSE) IF X.NE.YZ=O (FALSE) IF X.GEoYZ=0 (FALSE) IF X.LE.YZ=O (FALSE) IF DD.NE.0
123456789
10111213141516
CODE DO-1 I W) ' DO I - WU CMP»=0 NOT IF R -) IN U) MVV»ELSE R -) I MVV» THEN0 S )f MVV, R -) S )+ MVV» R -) 0 MUVV NEXT
CODE I S -) R ) MVV» NEXTCODE I' S -) I R U) MVVU NEXTCODE J S -) 3 R W) MVV» NEXTCODE J' S -) 4 R W) MVVP NEXT
CODE EXIT0 S ) MVVV 0 ASL, 0 S )+ ADDv 0 ASLP R 0 ADD.I R )t MVVY NEXT
418
1 CODE /LOOP R 3 WU ADDv NEXT23 CODE +LOOP R ) S ) ADD,4 S )t TST. <0 IF 1 R W) R ) CMP -<0 IF ' /LOOP 0 END56 CODE LOOP R ) INC»7 SWAP THEN I R W) R ) CMP, ' /LOOP <0 END THENU TEMP OS 0 QUE U) MVV, <0 IF9 0 TST» B =0 NOT IF ' QUESTION JMP» THEN THEN10 0 2 R W) MVV. 0 176000 ! BIT. =0 IF IN U) 0 MVV,11 ELSE I 0 MVV, THEN ' PAUSE JMF'P1213 CODE OLOOP 0$ HERE 1 -- W!141516
LI - BEGIN DO LOOP WITH STARTING INDEX I AND LIMIT LCHECK IF DO IS BEING CALLED FROM COMPILED CODENOT COMPILED. SAVE OFFSET INTO SCR FOR LOOPCOMPILED CALL» SAVE ADDRESS INTERPRETER IS TO RETURN TOSAVE LIMIT I STARTING INDEX
- I PLACE INDEX OF INNER LOOP ON STACK- L PLACE LIMIT OF INNER LOOP ON STACK- J PLACE INDEX OF OUTER LOOP ON STACK- L PLACE LIMIT OF OUTER LOOP ON STACK
N - EXIT CURRENT WORD FROM N'TH EMBEDDED LOOPCLEAR 3 TIMES N LOCATIONS FROM RETURN STACKRETURN TO CALLING WORD
LOOP ALL PAU§ CLEAN RETURN STACK AND GO ON
- N ADD N TO LOOP INDEX AND LOOP TO DO IF NOT DONEFOR NEGATIVE NF NOT DONE TILL LIMIT IS PASSED
- INCREMENT INDEX AND LOOP IF LIMIT NOT REACHEDTEST IF LIMIT HAS BEEN REACHEDKEYBOARD ABORT IS ENABLED IF DUE IS NEGATIVEIF A KEY HAS BEEN TOUCHED ABORTIF LOOP BACK TO IS LESS THAN 1000 LOOP IN SOURCE CODEIF LOOP BACK TO IS GREATER THAN 1000 LOOP IN COMPILED CODE
-- LOOP BACK TO DO WITH NO CHANGE IN LOOP INDEX
BLOCK414
1234567
91011121314
<CODE 1$<CODE S$
: iF: THEN: ELSE
CODE O=CODE O<CODE =CODE <CODE >CODE DO=
1516
416
O(C)
OF'
bLOCK
420NCAR-HAO-MLSO 0:49:19.
1 CODE TTGET 0 , ' GET I* ' TTGET I - WI2 CODE POET 0 GET + ' POET 1 - W!3 CODE OGET 0 , ' GET 1t ' OGET 1 - WI4 CODE 1GET 0 , ' GET If ' 1GET I - WI56 CODE TTRELEASE ' TTGET W, ' RELEASE 1+ ' TTRELEASE I -7 CODE PRELEASE ' PGET Wr ' RELEASE +t ' PRELEASE 1 -8 CODE ORELEASE ' OGET WU ' RELEASE 1+ ' ORELEASE I -9 CODE IRELEASE ' 1GET UW ' RELEASE If ' IRELEASE 1 -1011 CODE ME S -) U MVV, 000241 , S ) ROR,12 CONTEXT U) CURRENT U) MVVr NEXT1314 ME CONSTANT OPERATOR1516 CODE SUSPEND ' PAUSE 1 HERE 1 - WU!
U!W!WlWI
- A
A
6/7/82 DOY (157)158
LOOP TILL TERMINAL AVAILABLE FOR PRINTINGLOOP TILL PROMINENCE MONITOR IS AVAILABLELOOP TILL TAPE UNIT 0 IS AVAILABLELOOP TILL TAPE UNIT I IS AVAILABLE
RELEASE CONTROL PRINTERRELEASE CONTROL OF PROMINENCE MONITORRELEASE CONTROL OF TAPE UNIT 0RELEASE CONTROL OF TAPE UNIT 1
ADDRESS OF USER'S AREA# ACTIVATE USERS VOCABULARY
STATUS TABLE ADDRESS OF SYSTEM CONSOLE USER
SUSPEND USER TILL FLAGGED ACTIVE IN PAUSE
Mn
422
CODE LOAD R -) I MVV» R -) SCR U) MVV, R -) IN U) MVV,IN U) CLR» SCR U) S )+ MVVu I ' GO WU MVV» NEXT
CODE ;S IN U) R )+ MVV, SCR U) R')t MVV» I R )t MVV» NEXT
CODE UPDATE PREV U) ) 100000 t BIS, NEXTCODE ERASE-CORE PREV U) ) CLR. TEMP 1$ ALT U) ) CLR, NEXT
FLUSH GET BUFFER BUFFER RELEASE i: FLEECE FLUSH ERASE-CORE i.CODE /SAME 0 ALT U) ) HVV, 0 100000 ! BIC,
PREV U) ) 0 CMP, 15 =0 NOT END NEXT: COPY SWAP BLOCK 1000 t ! /SAME UPDATE i
0 INTEGER OFFSET<..: -COPY. DUP OFFSET e + COPY ;
RELOAD OFFSET L 0 > IF DO I .COPY< -1 +LOOPELSE 1+ SWAP DO I .::COPY.. LOOP THEN FLUSH i
NM
NNM
- INTEPRET BLOCK N SL GF
- STOP INTERPRETING SOURCE CODE AND RETURN TO CALLER
- FLAG LAST ACCESSED BLOCK TO BE WRITTEN TO SYS DEVICE- MARK CORE BUFFERS AS HAVING NO USEFUL INFORMATION- WRITE UPDATED BLOCKS ON SYSTEM DEVICE
- ERASE ALT BLOCK IF SAME AS PREV BLOCK IN COPY
- IN EFFECT COPIES BLOCK N TO M
A ADDRESS OF OFFSET FOR RELOAD I >COPY<- COPY BLOCK N TO BLOCK N+OFFSET- COPY BLOCKS N THROUGH M TO N+OFFSET THROUGH M+OFFSET
424
2 42 CONSTANT OBLK34 ; !(BOOT) DUP F SWAP5 1000 /MOD OBLK + BLOCK UPDATE + ! FLUSH ;6789
101112131415I1 S
- N FIRST BLOCK OF CORE OBJECT MODULE FOR REBOOT
XA - SAVE X IN ADDRESS A OF REBOOT BLOCKS
123456789
10111213141516
C(
H'
SL
NCAR-HAO-MLSO 0949o43. 6/7/82 DOY (157)158
123456789
10111213141516
ASSEMBLERTEMP UNIVERSALR -) 3 MVV, R -) 0 HVV,3 2 R U) HMVV U 1 3 W) HVV,0 TTK U) ) MVV, 0 177600 * BICP23 1 0 CMP. =0 IF QUE U) 000400 # BIS, ELSE21 ! 0 CMPr =0 IF QUE U) 000400 1 BIC, ELSEQUE U) TST, =0 IF QUE U) 0 HVVY0 R )+ MVV, 3 R )t MYVV 7 RTS, THENQUE U) 0 HVV, BTHEN THEN 0 R )+ MVV. 3 R )+ MVV, R )+ TST, RTI»
HERE 30 WU UNIVERSAL 7 JSR,HERE 32 WU! OPERATOR CLR, RTI»177562 TTK 1177566 TTY !
428
2 TEMP 2$ 0 120 DP H+ TEMP 1$ 03 0 INTEGER WATCHER -1 DP +!4 000001 , 0 v OPERATOR W.5 1S 21 - DUP UW 37 - W, 0 0 , -105 WU 0 S 266 0 , 0 , ' FORTH r 0 r 0 , 0 , 1$ 20 - WU 0 , 0 r 0 , 240 p7 DUF , FPREV e i ALT Q 0 0 p TEN r89 TEMP 2$ 0 , 120 DP +! TEMP 1$ 0 ,
10 0 INTEGER MONITOR -1 OP +!11 000001 , 0 , WATCHER WU12 1$ 21 - DUP W. 37 - UW 0 0 0 * 0 a 2$ .13 0 , 0 , ' FORTH , 0 , 0 0 , 1$ 20 - W, 0 , 0 0 * 240 ,14 BUF Q , PREV e , ALT 8 , 0 , 0 , TEN ,1516 MONITOR OPERATOR 2 f U!
430
12 TTY e CONSTANT STTY3 ASSEMBLER HERE 32 U! ' TTGET I) CLR. RTIR45 S TYGET TTY 0 STTY = IF PAUSE TTGET THEN ;6789
1011121314
16
BODY OF INTERUPT SERVICE ROUTINE FOR KEYBOARD TERMINALSSAVE REGISTER 3 £ 0GET ADDRESS OF USER STATUS TABLE IN REGISTER 3GET ASCII CHARACTER FROM KEYBOARD BUFFERCHECK FOR XOFF CHARACTER TO SUSPEND TYPING ("S)CHECK FOR XON CHARACTER TO RESUME TYPING ("Q)QUE IS ZERO FOR NORMAL KEYBOARD (SEE QKEY)IF NORMAL PUT CHARACTER IN QUE AND PROMPT USERSAVE CHARACTER IN OUE NOT DISTURBING HIGH BYTEABNORMAL RETURNS CAUSES ABORT UNLESS /KEY WAS EXECUTED
CONSOLE TERMINAL KEYBOARD INTERUPT SERVICE ROUTINECONSOLE TERMINAL PRINTER INTERUPT SERVICE ROUTINESET ADDRESS KEYBOARD BUFFER REGISTER IN OPERATOR'S STATUS TABLESET ADDRESS PRINTER BUFFER REGISTER IN OPERATOR'S STATUS TABLE
LOAD MULTI-USER WATCHERROOM FOR DICTIONARY, MESSAGE BUFFERf STACKS
- A ADDRESS WATCHER'S STATUS TABLEINITIAL STATUS TABLE (SEE META-FORTH)
LOAD MULTI-USER MONITORROOM FOR DICTIONARY, MESSAGE BUFFER, STACKS
- A ADDRESS MONITOR'S STATUS TABLEINITIAL STATUS TABLE (SEE META-FORTH)
COMPLETE PAUSE LOOP TO INCLUDE WATCHER & MONITOR
MU
CA
MU TT- B BYTE-ADDRRESS OF SPLIT SCREEN TERMINAL PRINTER REGISTERINTERUPT SERVICE ROUTINE FOR HULTI-USER SPLIT SCREEN
- - GAIN CONTROL OF SPLIT SCREEN MHEN AVAILABLE
BL OCK426
NCAR-HAO-MLSO 05004. 6/7/82 DOY (157)158
<CODE LETTER I -) TST,QUE U) 000400 t BIT, =0 NOT IF ' PAUSE JMP,2 TTY U) MVV. S )+ DEC,>0O NOT IF -1 P) CLR, I )+ I )t CMP, THEN2 ) S )t ) MVV, B S -) INC.S -) I -) CMPf NEXT
CODE COUNT S ) ASL, 0 S )t ) HVV, B0 177700 t BIC. S -) INC. S -) 0 MVV, NEXT
TYPEDUP 0 > IF TTY Q IF TYGET000100 TTY W I1 - !SUSPEND LETTERTHEN THEN 2DROP i
: MSG CONSTANT ;CODE TEMP 11S0 P )t MVV. B S -) P MVVp S -) 0 MVV.P ' TYPE 1 - WM MVV. P )+ ) JMP.
000001 MSG NL106402 MSG CR 000012 ,003401 MSG BL104003 MSG \RUB 104240 *015013 MSG APAGE 000007 , 0 . 0 * 0 * 0 * 0
2 ,CODE XYC' 036433 , 000000 ,1 S )t MVV, 0 S ) MVV,S ) F MVV. S -) 4 1 MVV, P )+ TST.F )+ 1 MVVU B P )+,0 MVV, B P -) 020040 1 ADDIR --) I MVV, I ' TYPE W# MVV. NEXT
: XYC TTRELEASE TYGET XYC' i
THENBN CH TYPE CHARACTERS TILL COUNT EXAUSTS TT
DELAY IF XOFF ACTIVE ("S SEE INTERPUPT SERVICE)PRINTER REGISTER ADDRESS. DECREMENT CHARACTER COUNTIF COUNT EXAUSTED DISABLE INTERUPT I DO NOT REENTER LETTERMOVE CHARACTER TO HARDWARE AND UPDATE BYTE ADDRESSREENTER AT SUSPEND BEFORE LETTER IN TYPE
A BN FROM STRING AT A GET CHARACTER COUNT AND BYTE ADDRESS
BN - OUTPUT N CHARACTERS STARTING AT BYTE ADDRESS BCHECK THAT COUNT IS AT LEAST ONE AND THAT USER HAS A PRINTERENABLE PRINTER INTERUPT AND WAIT FOR READYTYPE CHARACTERS
X - DEFINE TYPE STRING ( X HAS COUNT I 1ST BYTE )GET BYTE ADDRESS AND COUNT OF MESSAGEGO INTO TYPE
TYPE NULL CHARACTERSEND CARRIAGE RETURN AND LINE FEEDRING TERMINAL BELLRUB OUT STRING FOR VIDIO TERMINALPAGE STRING FOR ADM TERMINAL
LC - MOVE CUSOR TO LINE L COLUMN C
LC - MOVE CUSOR TO LINE L COLUMN C (PRECEEDED BY TIME SLICE)
TEMP 1$ 0 , 0
240 »CODE SLINE240 DP tf0 S )+ MVV» 0 ASL,P S )+ MVV, P ASL,P 0 ) ADIDF1 S ) MVV, 0 ) 1 AlDD0 1 S) HVV,BEGIN P )t 0 )t MVV, B i 1 DLC --0 END NEXT
10 ..,CODE PLINE 25 225 :::,CODE OLINE ' SLINE , ' SLINE 120 + ,2 .<,CODE ILINE 1$, 1$ 1+ ,
P SPLIT U) AlimD, S -) P -) MVV', NEXT
OFFSETS INTO SCROLL BUFFERS FOR USERS OPERATOR I MONITOR
BNSA - SAVE N CHARACTERS FROM B TO SCROLL BUFFERROOM FOR FOUR 80 CHARACTER LINESADDRESS OF OFFSET INTO BUFFERADDRESS WHERE BUFFER STARTSSTARTING ADDRESS IN BUFFER FOR STRINGUPDATE OFFSET INTO LINE BUFFERADDRESS WHERE TYFE STRING LOCATEDMOVE STRING INTO LINE BUFFER
- L OFFSET FROM TOP OF SCREEN OF USER'S 3 L INE SCROLL- S STARTING ADDRESS OF USER'S SAVE BUFFERS,- A ADDRESS WHERE OFFSET INTO SAVE BUFFER IS STOREI.
SPLIT IS 2 FOR OPERATOR & 4 FOR MONITOR
BLOCK432
123456789
10111213141516
434
123456789
10111213141516
436
TT
(A(A
1
3456789
10111213141516
TT
BLOCF43a
1 :23456789
10 :111213 '14 11516
CR SPLIT Q IF0 ILINE I0 PLINE XYC OLINE 50 + 2X 107 TYPETTRELEASE PAUSE OLINE DUP 50 + 50 MOVIPAUSE 120240 OLINE I OLINE DUP 1+ 4,0 PLINE 2 + XYC OLINE 2X 107 TYPE0 PLINE 1+ XYC OLINE 50 + 2X 107 TYPEELSE CR THEN I
TYPE SPLIT e IF ILINE e PLINE 2 + X'THEN TYPE i
TTY B MONITOR + #TEMP MTTYPLEX 2 SPLIT !4 STTY MTTY 2!00 ILINE 2! ' SLINE 120240 OVER ! DUP
<: LCOMPILE Co HERE WORD We 77 AND 1+ I*CODE ?STATE STATE U) TST, =0 IF
R )+ TSTP I LCOMFILE W# MVV# THEN<CODE LITERAL HERE tTEMP 'LITERAL
P I MVVu 0 I )+ MVV. 0 177401 # BIC0 P )+ MVV, B S -) P MVV, S --) 0 MVkP ' TYPE 1 - W» MVV» P )t ) .JMP.
: ]I\ DELIM ! ?STATE DROP WORD i
: C 'LITERAL 335 ]&\ HERE COUNT TYPE i
: SP ]3
NCAR-HAO-MLSO 0:50:29. 6/7/82 DOY (157)158
- - IF SPLIT DO COMPUTED SCROLL FOR CRZERO OFFSET INTO SCROLL BUFFERSOVER WRITE OLDEST LINE
E SAVE NEW LINE WHERE OLDEST WAS7 MOVE BLANK SCROLL BUFFER TO TAKE NEW TYPE STRINGS
BLANK OUT LAST LINE OF SCREEN SCROLLTTRELEASE PAUSE TYPE JUST COMPLETED LINE ABOVE LAST LINE
YC OLINE ILINE SLINE BN - TYPE N CHARACTERS FROM B; SAVE FOR SCROLL IF SPLIT
- A ADDRESS OF TTY IN MONITOR'S STATUS TABL.E-- ENABLE SPLIT SCREEN MODE
1t 237 MOVE ;
F' +1 ; B - COMPILE B AND LITERAL STRINGIF COMPILING LEAVE 3J\ AND SET INTERPRETER TO LCOMFILE
NEXTC COMPILES THIS WORD WHICH TYPES THE LITERAL. STRING
I 0 ADD, SKIP INTERPRETER OVER LITERAL, GO INFO TYPEING
BD - COMPILE B OR EXECUTE LITERAL TO DELIMITER D
; IMMEDIATE [ o........] DELIMITS A LITERAL MESSAGE STRING
- -- PRINT A SPACE
442
1 CODE /KEY2 QUE U) 040000 4 MVV,3 0 TTK U) MVV. =0 NOT IF45 CODE ?KEY S -) CLR,6 QUE U) TSTP B =0 NOT IF78
10111:'I t
l.qt14
1.6
0 -) 000101 . MVV, THEN NEXT
S ) 40000 # MVV, THEN NEXT
- DISABLE KEYBOARD ABORT AND ENABLE KEYBOARD INTEIlUPIT T1FLAG QUE TO PREVENT KEYBOARD ABORT IN DO LOOPSENABLE KEYBOARD INTERUPT IF USER HAS ONE
L L=16384 IF A KEY IS TOUCHED AFTER /KEY; OTHERWISE L=O
440
123456789
10111213141516
T
TT
(A44::^
NCAR-HAO-MLSO 0:50:50.t HOCK444
1 CODE OF- 0 S )+ MVV, OP U) DEC, OP U) ) 0 MVV, B
2 CODE OP+ 0 S )+ hVV, OP U) ) 0 hVV, B OP U) INC»34 CODE CTYPE S -) S MVV, S -) 1 t HVV»5 R -) I MVV. I ' TYPE WU HVV, NEXT67 ALIAS RUB ' \RUB ' RUB !8 ALIAS PAGE ' CR ' PAGE !9
10111213141516
446
NEXT BNEXT B
C
1 1 <.CODE LC>UC 40 , S ) 177600 # BIC,2 140 1 S ) CMP, >0 IF 173 * S ) CMPF :.0 IF3 S ) P ) BIC, THEN THEN NEXT45 <CODE PARITY S ) SWUB 0 S ) MVV,6 BEGIN 0 ASLy 1C IF S ) 100000 1 ADD, THEN -=0 END7 S ) SUB, NEXT89 KEY TTK e IF
10 /KEY 0 QUE I TTRELEASE SUSPEND QUE e /KEY11 LC::.UC PARITY12 DUP 3 = IF 141736 120003 HERE 2! QUESTION THEN13 ELSE 0 THEN i1415 40 LC.-IIC SET UC16 0 LC>UC SET LC
6/7/82 DOY (157)158
C
DECREMENT OF' AND MOVE B TO OP BYTE STRINGMOVE B TO OP BYTE STRING AND INCREMENT OF'
TYPE THE CHARACTER ON THE STACK
- - RUB IS AN ALIAS TO BE REDEFINED-- - PAGE IS AN ALIAS TO BE REDEFINED
L U CONVERT LOWER CASE LETTER TO UPPER CASE( NO EFFECT IF PARAMETER FIELD IS 0 )
C E INSTALL EVEN ASCII PARITY
C INPUT A CHARACTER FROM KEYBOARDENABLE KEYBOARD, WAIT FOR TOUCHt READ VALUE VIA QUECONVERT TO UPPER CASE* EVEN PARITYCHECK FOR CTRL C ABORT
- UPPER CASE KE(BOARD..- - LOWER CASE KEYBOARD
448
WKEY1 0 DOHERE OP WI 0 OPF'+I 0 DO BKEYDUP 0= IF DROP [ RATS) CR LOOP OLOOP THENDUP 377 = IF HERE e AND IFSPLIT 0 IF -1 ILINE +! [ " 3 -2 ILINE t! ELSE RUB THEN-1 HERE + 0 OP- THEN OLOOP THENDUF 215 -- IFDUP DELIM e - IFCTYPE SPLIT Q IF [ 1] -1 ILINE +! THENOPt I HERE +! OLOOPTHEN THEN DROP LOOP LOOP240 DELIM 1 i
- DIRECTLY FROM KEYBOARD INSTALL. WORD ON DICTIONARYRETURN HERE ON BREAK KEYSET OP TO HIGH BYTE AT DPi CLEAR CHARACTLR COUNTCHARACTER INPUT LOOPIF BREAK KEY START A NEW WORDIF RUB KEY DELETE LAST CHARACTER
(DELETED ONLY IF CHARACTER COUNT IS POSITIVE)FINISHED IF RETURN KEYFINISHED IF DELIMITERPRINT CHARACTER. FOR SPLIT SCREEN PRINT CURSOROTHERINSTALL* INCREMENT COUNT. RETURN FOR ANOTHERCHARACTER STRING INPUT FINISHEDBLANK DELIMITER
T1
TT
CnCUl
123456789
10111213141516
TT
BLOCK450
NCAR-HAO-MLSO
1 <CODE DP>MSB2 1 MSB U) MVVt 0 DP U) hVV* 0 ASL» 2 0 )+ HVV» B3 BEGIN I )+ 0 )* MVV, B 2 DEC» >0 NOT END4 1 )+ CLfR B NEXT56 <( COMMANDS7 OO SCR 218 215 lDELIM ! WKEY SF TTRELEASE9 DP>MSB
10 100000 QUE ! i1112: *KEY SP13 215 DELIM ! WKEY CR14 3 HERE +! 240 OP+ 273 OF'+ 123 OP+ DP>:MSG15 0 LOAD 50 MSBS e CLEAR ;16
:
3 :45 :678 19
10111213141 ,'
KEY DKEY DROP i
FKEY BL C (KEY TO CONTINUE)] BL KEY CR i
(Y-OR-N) [ (Y OR N) ? 3@KEY 131 = IF I C Y] ELSE 0 £ N] THEN CR i
DKEY SP @KEY 177 AND 60 MAXDUP 71 ) IF DROP 60 THEN CTYPE CR 60 -- ;
Ot51lo 6/7/82 DOY (157)158
- MOVE OP STRING TO MESSAGE BUFFER TIADDRESS MESSAGE BUFFER. ADDRESS STRINGY NUMBER OF CHARACTERSMOVE THE STRINGCLEAR AN ADDITIONAL BYTE FOR END-OF-TRANSMISION (EOT)
? ? INPUT ASCII COMMAND STRING FROM KEYBOARDSET INTERPRETING TO MESSAGE BUFFERWITH CR DELIMITER READ COMMANDSMOVE COMMANDS TO MESSAGE BUFFERSET KEYBOARD VECTOR FOR ABORT
? KEYBOARD COMMAND STRING FROM F'ROGRAMSWITH CR DELIMITER READ COMMANDSAFIX :S TO OP STRING AND MOVE STRING TO MESSAGE BUFFERINTERPRET THE STRING AND CLEAR MESSAGE BUFFER FOR EO1
-- - WAIT FOR KEY PRESS
- - PROMPT USERi WAIT FOR KEY PRESS
-- L PROMPT FOR Y OR NL=l FOR Y * L=O FOR ANY OTHER KEY
- D ENTER A DIGIT (0-9) FROM KEYBOARDKEYS OTHER THAN 0-9 GIVE O, NO CR REQUIREl
T 1
LC0'
QUIT/RETURN RELEASE TTIRELEASE PRELEASE ORELEASE IRELEASETTK e IF COMMANDS GO THENI 0 DO SUSPEND OLOOP ; -1 DP +!
X [ OK] CR QUIT ; -1 DP +H 0 ' X 4 -- !
? ? WAIT FOR AND EXECUTE NEXT COMMAND STRINGRELEASE CONTROL OF TIME-SHARED DEVICES AND SOFTWARESUSPEND NON TERMINAL USER PROTECTING AGIANST INTERUFTSGET AND EXECUTE COMMAND STRING IF USER HAS KEYBOARD
- EVERYTHING IS OK PROMPT ( END-OF--TANSMITION )
452
45 4
.1 o
34
67
91011121314151 6
TT
NCAR--HAO-MLSO 0:51:29. 6/7/82 DOY (157)158
1 ::: ?? DECIMAL HERE COUNT TYPE C ?] CR QUIT ; -1 DP +!
3 1 .CODE ?THERE 0 , 0 S ) MVV, P ) 0 MVV,4 0 ASL, 0 ) TST, TEMP IS S ) P ) MVV, NEXT56 HERE HERE 2 W! 4 W!7 R ) IS WU CMPr =0 IF ' ?THERE CLR, RTI, THENB9 TEMP <QUESTION10 R RO U) MVV, S SO U) MVV, FLT U) FO U) MVV,11 S ) SCR U) MVV,12 STATE U) 000300 i MVV, I ?? Ut MVV, NEXT1314 <CODE QUERY S SO U) CMP, <QUESTION *<0 NOT END15 FLT U) FO U) CMP, <QUESTION <0 NOT END NEXT16 QUERY I - ' GO 3 WU!
- ERROR CONDITION PROMPT Di
A L L=A IF ADDRESS ANSWERS UF', L=0 OTHERWISE
POINT VECTORS FOR ERRORSACTION FOR LEGAL ADDRESS AVALIABLE CHECK VIA ?THERE
GENERAL ERROR TRAP INTERPUPT SERVICEINITIALIZE RETURN STACK, STACK, AND FLOATING-POINT STACKPUT SCR IN STACK SO A , WILL PRINT BLOCK NUMBER CAUSING ERRORSET EXECUTION MODE AND PROMPT
- - ' STACK UNDER-FLOW CHECK PATCHED INTO META-FORTH GO
458
1 CODE READY2 0 S MVV, 0 6 WU SUB,3 0 -) 240 t MVV, B OF' U) 0 MVV, NEXT45 10 ,CODE DIGIT6 130460 , 031662 , 032664 , 133466 .7 034670 , 041101 * 042303 , 143305 ,8 0 CLR, I S )+ MVV,9 S ) ASL, I ROL,
10 =0 NOT IF BASE U) 0 DIV, THEN R -) C11 0 1 MVV, I S ) MVV, 000241 , 0 ROR,12 BASE U) 0 DIV,13 0 ASL, R ) ASR, 0 ROR,14 S ) 0 MVV, S -) R )+ MVV,15 OP U) DEC, OP U) ) ' DIGIT 1 W) MVV, B16
- -- INITIALIZE AN OF'P STRING IN USERS STACK SPACE NOSTART THE STRING 4 LOCATIONS BLEOW CURRENT STACK POINTERTERMINATING BLANK, INITIAL OP BYTE ADDRESS
DD EE EE-DD/BASE USING REMAINDER AS ASCII DIGIT IN OP STRINGASCII REPRESENTATION OF FIRST 16 HEX DIGITSEACH NUMBER HOLDS TWO DIGITSGET MOST SIGNIFICANT PARTINCREASE SIGNIFICANCE TO PROTECT AGIANST 16 BIT QUOTIENTDEVIDE MOST SIGNIFICANT IF NECESSARY AND SAVE QUOTIENTPREPARE LEAST SIGNIFICANT PART FOR DEVIDEDEVIDE LEAST SIGNIFICANT PARTCOLLECT TERMSPUT EE ON STACKINSTALL. ASCII DIGIT IN OF'P STRING
0 MVV,I ROR,
NEXT
460
CODE SIGN0 OP U) MVV,S )+ S )+ CMP,S ) TST, <0 IF 0 -) 55 * MVV, B THENS ) 0 MVV,0 S SUB, 0 10 WU ADD, 0 NEG, S -) 0 MVV, NEXT
: DIGITS I 0 DO DIGIT 2DUFP DO-= LOOP SIGN i
SXX BN INSTALL SIGN TO OP STRING AND COMPUTE BN FOR TYPEOF STRING BYTE ADDRESSDROP THE XXAFIX MINUS SIGN TO STRING IF S NEGATIVEBYTE ADDRESS OF STRINGNUMBER OF CHARACTERS IN THE STRING
SDD BN CONVERT POSITIVE DD TO ASCII, S IS USED FOR SIGNB IS BYTE ADDRESS OF STRING AND N IS COUNT FOR TYPE
EI OCK
456
"-4
123456789
101i1213141 5II ,c
NO
NCAR-HAO-MLSO 0:511
.COUNT DUP ADS 0 READY DIGITS 1 - i
PERIOD .COUNT TYPE i* PERIOD SP 3.0 0 SWAP 0 READY 6 0 DO DIGIT LOOP SIGN TYPE i? e .;
XDIGITS 0 1 0 DO DIGIT OVER 0= tLOOP 2DROP iTAB DUP 0 > IF DUP 0 DO SP LOOP THEN DROP iRTYPE OVER -- TAB TYPE iLITYPE OVER 2SWAP TYPE - TAB i
LEFT, SWAP .COUNT ROT LTYPE ;RIGHT. SWAP .COUNT ROT RTYPE ;
e SWAP OVER DABS READY 56 OP-2 0 DO DIGIT 6 BASE ! DIGIT 72 OP- DECIMAL LOOP DIGITS14 RTYPE ;//. READY XDIGITS 57 OF'- XDIGITS 57 OP-0 SWAP 0 DIGITS 11 RTYPE ;
D. SWAP OVER DABS READY DIGITS TYPE B
D.D2O0VER DO= IF I MAX THEN2SWAP SWAP OVER DABS READY3 ROLL DUF ',IF15 MIN 0 DO DIGIT LOOP ELSE DROP THEN 56 OP-2DUP D0= IF SIGN ELSE DIGITS THEN 2 -- ROT RTYPE ;
.D ROT EXTEND 2SWAP .0D ;
DUMPOVER + SWAP DO CR 1 6 RIGHT. I :: ]
I 10 I I DO I @ .0 LOOP 10 +LOOP ;
54. 6/7/82 DOY (157)158
N
NNXA
CONVERT NUMBER N TO ASCII STRINGB IS BYTE ADDRESS OF STRING. C IS NEMBER OF CHARAC:PRINT N AS SIGNED NUMBER ( NO FOLLOWING SPACE )PRINT N AS SIGNED NUMBERPRINT X UNSIGNEDPRINT VALUE AT ADDRESS A
X - CONVERT X TO ASCII AFIXED TO OF STRINGN - TYPE N SPACES (FOR N.::O)BCF - TYPE RIGHT JUSTIFIED ASCII STRINGBCF - TYPE LEFT JUSTIFIED ASCII STRING
B BYTE ADDRESS, C CHARACTER COUNT . FFIELD WIDTHXF - TYPE X LEFT JUSTIFIED IN F CHIARACTER FIELDXF - TYPE X RIGHT JUSTIFIED IN F CHARACTER FIE'LD
DD - TYPE DD (SECONDS OF ARC) IN A FORM HH:Mh:SS.RIGHT JUSTIFIED IN 12 CHARACTER FIELD
MDY - TYPE DATE IN A FORM MM/DD/YYRIGHT JUSTIFIED IN 9 CHARACTER FIELD
DP - TYPE DOUBLE WORD
DDFN -- TYPE DD RIGHT JUSTIFIED WITH DECIMAL POINTF IS THE FIELD WIDTH. N IS NUMBDER DECIMAL PLACES
XFN - TYPE X RIGHI JUSTIFIED WITH DECIMAL FOINT
AC - PRINT C NUMBERS STARTING AT ADDRESS A
l OCK462
1 1234 t5 :6 :7
9101112
13141516
464
1 :23 :4 :56 '7 :B9
101112 :1314
466
00
1
34567
91 0111213141516
NC
NCAR--HAO-MLSO 0:52:13. 6/7/82 BOY (157)158BL OCK
468
123456789
10111213141516
<CODE USWAP2 S )+ MVV, 1 2 )t MVVv B0 S )+ MVV» 0 ASL,U ) CLR» R -) S MVV, R -) I MVV» 1 U W) R MVVFU 0 MVV»0 MSB U) MVV,BEGIN 0 )+ 2 )H MVV, B 1 DEC» >0 NOT END0 )+ CLR, BSCR U) CLR, IN U) CLR, STATE U) 000300 t MVV,CONTEXT U) CURRENT U) MVV,BASE U) 12 ! MVVP2 TTK U) MVV, =0 NOT IFOUE U) 100000 1 MVV. 2 --) 000101 1 MVV» THENR RO U) MVV. S SO U) MVV» FLT U) FO U) MVV,I ' GO W! MVV, NEXT
UA - SWAP USER WITH Up GET COMMAND STRING FROM A FOR GO Ml.ADDRESS AND CHARACTER COUNT OF COMMAND STRINGBYTE ADDRESS OF NEW USERPAUSE CALLING USERUSER TRANSITIONADRESSS OF UtSE.S MESSAGE BUFFERMOVE THE COMMAND STRING TO MESSAGE BUFFERAFIX END-OF-TRANSHISION TO COMMAND STRINGWILL INTERPRET MESSEAGE BUFFER IN EXECUTION MODESET PROPER VOCABULARY FOR DICTIONARY SEARCHISDECIMAL NUMBER I/O BASEIF USER HAS KEYBOARD
ENABLE KEYBOARD ABORTINITIALIZE STACK POINTERSGO INTO SOURCE CODE INTERPRETER LOOP
470
1
3456789
10111213
I: INVOKE GET TTGET RELEASE TTRELEASE USWAP i
<CODE INVK HERE »TEMP 'INVKS -) I MVV, 0 I )+ MVV, 0 177401 t BIC» I 0 ADDrR --) I MVV, I INVOKE W! MVV, NEXT
: DOES 'INVK 134 ]I\ HERE 2X INVOKE ; IMMEDIATE
141516
472
2 CODE -BLANKS S ) ASL, 0 S ) MVV, 0 -) CLR, 0 41 WI ADDr3 BEGIN 0 -) 120240 t CMP, =0 NOT END 0 )H TST.4 0 S ) SUB, S -) 0 MVV. NEXT56 : TEXT HERE 54 +7 : LINE 1 - 20 MOD 40 * BLK [BLOCK + i8 : BL.K-TO-MSB LINE HERE 1I 32MOVE: PAUSE i9 : TLINE BLK-TO-MSB HERE 1+ -BLANKS TYPE ;
1011 : LIST PAGE BLK ! LK ?12 21 1 DO CR 1 2 RIGHT. SP- I ILINE LOOP CR i1314
IJ
UA UA MASTER SHARED DEVICES, SWAP USERS AND GO
U UA DOES COMPILES THIS CODE TO GET INTO INVOKE
U - COMAND USER U WITH FOLLOWING STRING TO \ DELIMITER
A
NNL
TTBN PREPARE LINE STARTING AT ADDRESS A FOR TYPE
B IS BYTE ADDRESS, N IS t NON-BLANK CHARACTERS
AA
ADDRESS OF A BUFFER IN USER DICTIONARY 45 WORDS UPADDRESS A OF LIVE N IN I/O BUFFEF:SMOVE LINE N FROM I/O BUFFERS 1T0 DICTIONARY 1--TYPE LINE L OF USER'S ACTIVE BLOCK
B - LIST BLOCK D
BLOCK NCAR-HAO-MLSO 0O52:33. 6/7/82 DOY (157)158474
1 VOCABULARY EDITOR EDITOR DEFINITIONS EDITOR 'TEMP EDITOR' EDITOR HAS OWN SUB VOCABULARY AND IS CORE RESIDENT2 EDITOR ( A WORD) INVOLKS EDITORP FORTH ( A WORD) GETS YOU OU3 -<CODE /H S ) ASL» 0 S ) MVV* S -) 0 )+ MVV, B4 2 0 MVU 2 126 t ADD, I 0 MVV,5 BEGIN 0 )+ 336 * CMPP B =0 NOT IF CHECK FOR INSERT MODE, CHARACTER6 0 -) 245 ! CMP, B =0 NOT IF CHECK IF CHARACTER DELETEP CHARACTER %7 0 ) 137 0 CHP. B =0 IF 1 )t 2 ) MVVP B ELSE CHECK IF CHARACTER UJNCHANGED, CHARACTER _8 1 )* 0 ) MVV, B THEN THEN 0 )t 2 )+ ChP1 B9 S ) DEC» B SWAP >0 NOT END THEN
10 BEGIN 1 )+ 0 )+ MVV, B S ) DEC, B >0 NOT END FINISH OUT INSERT MODE IF ANY11 1 -) S )t CMP» B 0 S ) MVV, 0 230 t ADD,12 BEGIN 0 2 CMP, <0 IF 1 )+ 2 )V MVV, B ELSE BRING DOWN TAIL OF LINE BUFFER13 1 I) 240 1 MVVY B THEN 0 1 CMP, >0 END BLANK ElD OF LINE BUFFER IN CASI-1 OF DELETE314 S ) ASRk NEXT LEAVE STACK UNCHANGED ( HERE)1516
4/76
1
3456789
.· STRING DELIM ! -1 IN +1 WORD PAUSE HERE /M PAUSE1+ TEXT 32MOVE i
<CODE ?MATCH 0 S )+ MVVt 0 ASL» S ) ASL»2 0 MVVp 2 37 UW ADD,BEGIN 1 S ) MVV, TEMP 25 0 ) 1 )+ CMPF B=0 IF 0 )t 210 4 CMPF B 2S =0 END NEXT THENBEGIN 0 2 CMP, '::0 IF S ) CLRp NEXT TIIEN0 )+ 240 t CMPf B =0 END 0 END
1 (111 :1 3141 .
{57
I V CR SF SP TEXT 2X 100 TYPE i2 ; 42 STRING V i3 T LINE TEXT 32MOVE V ;4 F BLK e 145 + BLK «i DO I BLK ! 21 1 DO TEXT I LINE5 ?MATCH IF CR J , I . I T 2 EXIT THEN LOOP 2 ILOOP i6 : B 120240 TEXT ! TEXT TEXT 1+ 32MOVE i7 I R LINE TEXT SWAP 32MOVE UPDATE B i8 : D DUP T 20 SWAP DO I 1+ LINE I LINE UPDAFE 32MOVE LOOP9 20 LINE 120240 OVER ! DU' 1+ 37 MO'.E UPDAITE i
10 I 1+ DUP 17 DO I LINE I 1+ LINE 32MOVE UPDATE -I +LOOP11 R i12? L CR BLK e LIST V i1314 CHAIN FORTH FORTH DEFINITIONS15 : EDITOF EDITOR B EDITOR' i IMMEDIATE16
-- - VARIFY THE LINE BUFFER- LINE BUFFER DELIMITER
L - MOVE LINE TO LINE BUFFER I T)PE IT- - SEARCH 100 BLOCKS FOR FIRST WORDi IN LINE BUFFER
( EVERY OTHER BLOCK IS SEARCHED I-- - EBLANK THE: LINE BUFFERL -- REPLACE LINE WITH LINE: BUFFEI ( BLANKS I INE L'JFFER )L - DELETE LINE, MOVE 10TO LIE E.UFFER
( BLANK LINE 16 )L - IHSERT LINE E;UF'IR AFTER i.INI' · bl..Ai4;. I IlE BUFF ER )
-- - LIST CURRENT BLOCI;
BLANKS LINE BUFFER O.N IlITOR INVOKE
E
[.t OCK0400
1 : ; LOAD2 : >LINE34 : #IF$5 : IF$6 : ELSES7 : THENS8
NCAR-HAO-MLSO 0;52:54, 6/7/82 DOY (157158
SCR e + SCR ! 0 IN ! i1 - 100 * IN ! i
SWAP IF DROP ELSE 0 D0 44 DELIM ! WORD LOOP THEN i1 tIF$ i0 IF$ ;i
ASSEMBLER HERE #TEMF' 1$R -) I MViT R -) SCR U) hMVV R -) IN U) MV',1 P ) MVV, 0 CLR' 20 * 0 DIV, SCR U) 0 MUV,0 1 MVV, 100 t 0 MUL, IN U) 1 MVV,I ' GO W! MVV» NEXT
HERE tTEMP LABELS SCR @ tTEMP SOURCE4000 D
P+! HERE tTEMP INTO 0 ,
::: SEARLCH IN 8 INTO !1604 402 DO SOURCE BLOCK lDROP 1000 0 DOJ BLOCRK I + DUF 1+ e EWAFP 121643 - SWAP 120243 - AND IFJ SCR I I 2X 4 f IN ! J 20 * 1 40 ' CONSTANT1$ HERE 2 - WITHEN 40
+LOOFP 2 +LOOf SOURCE SCR ! INTO Ca IN ;LABELS DP ! SEARCH EXECIUiE
: it WORD ;CR [ BASIC ORTH L IOADE[D IOkTH LOADED D~~~~[ECIMtAL
N -N' -
LN --L -
SKIP SOURCE INTERPRETER N BLOCKSJUMP INTERPRETER TO LINE N
IF L=O SKIP THROUGHi THE NTH t IN THE SOURCE CODEIF L-O0 SKIP THROUGHi SOURCE TO NEXFT $SKIP THROUGH SOURCE TO NEXT $NULL UNDER EXECUTIONi SUPPF'LIES THE $ FOR iB(OVE IW,4I01'
WORDS DEFINED BY #11 HAVE ADDRESS FIELD POINTED HERE
SEARCHS BLOCKS 258 TO 898 FOR Itt ENTRIES
DO THE SEARCH AND FORGET[ UNNEEDED CODE- -- IN EXECUTION SKLIP SYMBOL OF THE Itt ENTRY
1 OCTAL2 CODE .AbS FLT U) ) 100000 & BIC,;3 CODE .MINUS F'LT UI) ) 100000 I AIDD,45 : TOP FLT W86 : 2?TOP TlOP 2 ;
8 CODE 8IlFP S --) FLT U) ) MVV, NEXT9 CODl ?.TOF S -- ) CL.
10 I FLT U) ) MVV, 1 077400 1 BIT,11 1 TST, '.0O IF S ) DEC, ELSE S1213 : ?0. ?TOP 0-- ;1415IA
NEXTNEX r
=- NO' IF) INC;, TIHEN 1 HEN NEXT
10I 11:-.1..
1 415I a
482
13456789
101112J 3141516
484
E ..
BLOCK486
NCAR-HAO-MLSO 0:53:10. 6/7/82 DOY (157)158
1 6 .CODE .DROP 4 WU2 1 ,CODE .RECOVER -4 Up FLT U) P ) ADD, NEXT34 CODE .SWAP 0 FLT U) KVV,5 0 4 WU ADDr I 0 MVV, 1 4 Wt ADD,6 BEGIN 2 1 -) MVV 1 ) 0 -) MVV>7 0 ) 2 MVVr FLT U) 0 CMPF =0 END NEXT89 : .ROT .DROP .SWAP .RECOVER .SWAP i
10111213141516
488
1 CODE 'SSSS S 4 WU SUD» 2 S MVVp2 TEMP 2$ 0 FLT U) MVVr 2 )+ 0 H) MVV, 2 )+ 0 )t MVVF3 2 )+ 0 )+ MVV» 2 ) 0 )+ MVV, FL.T U) 0 MVV» NEXT45 CODE .1 2 S )* MVVv 2 ASL, 2$ 0 END67 : .CONSTANT :..SSSS 2CONSTANT , ; COIDE8 TEMP 1$ 0 FLT U) MVV, 0 4 Wt SUB, FLT U) 0 MVV, 49 0 )i P )+ MVV, 0 ) + P F MVV. 0 )+ P )t MVV» 0 ) P ) MVV.
10 ' PAUSE JMPY1112 CODE . P S )+ MVV,' P ASL, 1$ 0 END13 CODE oDUP P FLT U) MVV, 1$ 0 END14 COLE .OVER P FLT U) M'VV, P 4 W# A[IDD 1$ 0 END15 CODE .UP P FLT U) MVV, 0 S )t MVV,16 0 ASL, 0 ASL, 0 ASL» P 0 ADDP 1$ 0 END
490
1 .RECOVER .CONSTANT 0. -4 lF'P 0 . 0 0 p 0 »2 0. .CONSTANT t*****$ -4 FP t! 777;7 , 177777 ['lJP D'UP , ,34 CODE UNPACK 0 FLT U) MVV.5 1 0 ) MVII, 1 0 B) CLl. E1 0 ) 200 BISy6 2 1 MVV» 2 77777 t BIC,7 1 ASL, I CLRP B I -3WBya =0 IF 0 )t CLR, 0 )+ CLR, 0 )+ CLR. 0 ) CLF: 2 CL.Rp9 THEN S -) 1 MVV, S -) 2 liVt', NEXT
10111 21 -14
1 6}
EL OCK NCAR-HAO--MLSO 0:53:24. 6/7/82 [tOY (157)158
492
1 CODE PACK 0 FLT U) MVV. 1 4 ! MVV, 2 S )+ MVV,
2 BEGIN 0 ) TST, =0 IF S ) 20 1 SUB» 0 ) 1 0 W) MVV,
3 1 0 W) 2 0 W) hVV> 2 0 W) 3 0 W) MtVV 3 0 W) CLR»
4 1 DEC, SWAP =0 END S )t TST» NEXT THEN
5 BEGIN 1 0 B) TST. B =-0 NOT IF S ) INC,
6 1 0 MVV 000241 ,7 1 )+ ROR. 1 )- ROR, 1 )I rOR. 1 ) ROR, 3WAP 0 END THEN
8 BEGIN 0 ) TST. B .0 NOT IF S ) DEC,
9 1 0 MVV. 1 3 Wt ADlilt10 I ) ASL, 1 --) ROL, 1 - ) ROL 1 -) ROL, SWAP 0 END THEN
11121314
16
494
1 S )+ TST :>0 NOT IF 0 )+ CLR, 0 )+ CLR, 0 )t CLRi 0 ) CLR,
2 ELSE3 377 t S -) CMP. :-0 IF S ) 377 ! MVV. 1 0 MVV.
4 1 )+ 377 1 HVV» 1 )+ 177777 * MVV, I )- 177777 HMVV,
5 1. ) 177777 1t VV, THEN6 S ) SWBt 2 ASL» S ) ROR,7 0 ) 200 I BIC. 0 ) S )+ BIS. THEN ' PAUSE JMP
8 -^9
101112
14:1 K.I ..
'V6
:1 <CODE FMINUS TEMPF 1$2 ( FLT U) MVV. 0 3 WI ADD.
3 0 ) NEG 0 -) ADC. -1 0 W) ADC. -2 0 W) ADIC.
4 0 ) NEG. 0 -) ADC, -1 0 W) ADIC,
5 0 ) NEG, 0 -) ADC,6 0 ) NEG, NEXT7 <CODE SIGNEDr8 S )+ TST. 1$ .:0 NOT END NEXT
9 <CODE UNSIGNEDl10 S --) FLT i) ' 4VV, S ) 077777 1 lBIC 1$ -:0 NOT END NEXT
11121314
16
BLOCK NCAR-HAO-MLSO 0:53:36. 6/7/82 DOY (157)158498
1 <CODE F2X2 0 FLT U) HVV, 0 3 WUt ADD,3 0 ) ASL, 0 -) ROL» 0 -) ROLP 0 -) ROL, NEXT4 <CODE F2/5 0 FLT U) MVV,6 0 )+ ASR, 0 )+ ROR, 0 )t RORP 0 ) ROR, NEXT7 ::CODE Ft8 0 FLT U) MVV, 1 0 MVV, 0 3 U# ADD, 1 7 WU ADD.9 1 ) 0 ) ADD, 1 -) ADC. -1 1 W) ADC, -2 1 W) ADC,
10 1 ) 0 -) ADD I1 -) ADC, -1 1 W) ADC,11 1 ) 0 -) ADD I -) ADC,12 1 ) 0-) ADD,13 FLT U) I MVV, NEXT141516
500
1 : .+2 TOP 4 + 8 0= IF .SWAP THEN3 ITOP 0= IF .DROP 0 EXIT THEN4 .DROP UNPACK SIGNED5 .RECOVER UNPACK SIGNEFl6 2JP F :: IF SWAP . SWAP THEN7 2DUP - DUP IF DUP 0 DO F2/ LOOP THEN 2DROP8 F t UNSIGNED PACK ;9
10 : .- .INUS .+ t11 : . DUP .e o .! i
12 I .ChP .- ?TOP MINUS .DROP i13 . CMP. CF' 0O14 . :: .CMF 0 : ;1516
502
1 .*CODE *ESF 2 FLT U) YVV, 2 3 WU ADD,2 BEGIN S ) AS'3L, IV NOT IF3 2 S) lEC , SWAP 0 FN l TI[:N S ) ROF,4 0 2 ) MVV, S ) 0 MUL, 0 TST, :: IF 0 S ) ADD, THEN5 BEGIN 2 ) 0 MVV. 0 2 --) iMVi S ) 0 FIUL,6 0 TST. <0 IF 0 S ) AlDD, THIEN7 1 P) 1 ADDi 0 ADC. 2 FLT U) CMFP. =0 END 2 ) 0 MVV,8 2 S) 17 t ADD, S )+ TST, NEXT9
10 . I* [DUP IF11 D[UP 0< IF MINUS MINUS THEN12 UNPACK F2X ROT *ESF PACK13 ELSE DROP °DROP 0. THI" H141516
BLOCK NCAR--HAO-MLSO 0:53:49. 6/7/82 DOY (157)158504
1 <CODE /ESF R -) I MVV. 2 FLT U) MVV,2 BEGIN S ) ASL, 1V NOT IF3 2 S) INC. SWAP 0 END THEN S ) POR.4 4 2 hVV, 0 4 nVV, 1 4 )+ MVV,5 0 )+ 4 )+ MVV, 0 )+ 4 )f MVV, 0 )t 4 )H MVVi 0 ) CLRf6 BEGIN 0 CLR» 2 ! ASL, 1 ROL, S ) 0 DIV, F -) 0 iVVY7 0 1 MVV. 1 2 ) MVV, 000241 p 0 FOR, 1 ROR, S ) 0 DIV,8 0 ASL, R )T ROR, 0 ROR 2 ) + 0 MVVY 2 4 CPF' =0 ENDt9 2 S) 20 ! SUB, S )H TST, I R )H MVV. NEXT
1011: I/ DUP IF12 DUP 0< IF MINUS .MINUS THEN13 UNPACK ROT /ESF PACKt14 ELSE [DROP ?TOP .DROP **$**$* 0.:: IF .MINUS THEN THEN ;1516
506
1 f<CODE S:S R -) U MVV. R -) I MVV, 4 FLT U) MVVY2 2 4 MVV. 2 S ) SUB, 3 4 MVV, 3 4 WI SUB, 3 1 S) SUB,3 0 2 ) MVVY. 3 ) 0 MUL,4 2 ) TST, <:0 IF 0 3 ) ADD. THEN5 3 ) TST, .0 IF 0 2 ) ADD. THEN6 4 10 W ADD. 4 S )T SUB, 4 S )f SUB.7 4 ) 1 ADD, 0 ADC, 4 -) 0 AID1.8 I R )t MVV. U R ) MVV, ' PAUSE JhP,9
10 : .$ .OVER UNPACK .OVER UNPACK 40 FLT T! 0. 0.11 6 2 S*S 4 4 S*S 2 6 S*S12 10 2 S*S 6 4 S*S 4 6 S*S 2 10 S*S 10 4 S*S 6 6 S*S13 4 10 S*S 10 6 S*S 6 10 S*S 10 10 S*S .SWAP .DlROP14 ROT f ROT ROT + 210 -- SWAP PACK i1516
508
1 : ./2 .DROP ?TOP IF .RECOVER3 ?TOP 0= IF .DROF ******* .SWAP4 ?10OP .DROP 0< IF .MINUS THEN ELSE5 0. .SWAP UNPACK FMINUS .ROT UNPACK6 ROT + SWAP ROT7 - 201 t SWAPB 70 0 DO09 . DROP . [DROP F2X .RL (l[VER . RECOVER
10 .OVER .OVER Ft11 TOP -1 > IF .SWAP 1 TOP 17 f +! THEIN12 . DROP F2X LOOP .EROP' .DROP lACK fHEll THEN ;13141516
BLOCK510
123456789
1011121314
NCAR-HAO-MLSO 0O5400. 6/7/82 DOY (157)158
: DFLOAT 0. TOP 21 230 UNSIGNED PACK ;: FLOAT EXTEND DFLOAT i[ DFIX UNPACK SWAP230 - DUP IF DUP 0< IF0 OVER DO F2/ LOOP ELSEDUP 0 DO F2X LOOP THEN THEN DROP<SSSSS 2SWAP 2DROPROT IF DMINUS THEN ;
: FIX DFIX DROP ;
<: 10EXP [UP IF DUFP o: IF0 OVER DO TEN I/ LOOP ELSETHEN THEN DROP ;
DUP 0 DO TEN I1 LOOP
1516
5 12
1 OCTAL2 ' .CONSTANT 5 + TEMPF' F$3 <CODE 3$ HERE #TEMP 4LIT4 P I MVV, I 4 WI ADDL 7 F$ W{ MVVv
6 .: 32BIT#7 OP e 200 AND 0- IF DFLOAT OP 8 MINUS 10EXP8 STATE 8 0= IF 41 IT C, HERl: ' DP t! THEN TiEN9 32BIT 1I - ' NUMBER 7 . W!
1011 : E12 STAlE 8 0= IF HERE 4 -- . THEN13 STATE 8 300 STATE O WORD 4UMBER QUESTION SWAP STATE !14 10EXF'15 STATE 8 0= IF HERE 4 - . THtEN IiiMErIAlIE16
514
1 DECIMAL
3 ?0. IF ,DROP 00 -6 ELSE4 8TOP .ABS 05 1 0 DO ,DUP 100000. .< IF6 TEN I* 1 - OLOOP THEN LOOP7 1 0 DO *DUP 999999.5 .; IF8 TEN I/ 1+ OLOOP THEN LOOP9 .499999 .+ DFIX
10 3 ROLL 0< IF DMINUS THEN Rl0 THEN11 DUP 1 < OVER -7 AND IF 9 SWAP MINUS D.D 6 TAB ELSE12 ROT ROT 9 6 D.D C E 3 6 t DUP13 DUP 0 > IF SP THtEN AE:S 9 .: IF SF THEN THEN i14 DECIMAL1516
NChR--HAO--MLSO 0:54:14. 6/7/82 DO( (157)158
1 DECIMAL2 0 CONSTANT TICKS3 00 2CONSTANT TIMING45 00 2CONSTANT TIME6 HERE #TEMP DOY 0 .7 HERE #TEMP YEAR 0 ,89 TEMP 1$ ASSEMBLER HERE 1+ W. RTI,
1011 HERE OCTAL 40 DECIMAL W! R --) 0 MVV,12 ' TICKS INC, ' TIMING If 1 ADD. TIMING ADCP13 0 ' TIME It W! MVV. 0 ) I 1 ADD, 0 -) ADC,14 24:00 3600 M*I 0 )+ CMP, =0 IF15 SWAP 1 0 )f CMP. =0 IF 0 ) INC. 0 -) CLR, 0 -) CLR.16 THEN THEN 0 R )+ MVV, 1$ I) JMP,
N TICKS ON 60 CYCLE CLOCK- TT TICKS ON 60 CYCLE CLOCK FOR SCREEN DISPLAY
- D UNIVERSAL TIME IIOUBL.E WORD ( UNIT IS 1/,'60 SEC'c
)- A AlDDRESS DOY OF YEARA ADDRESS WHERE YEAR IS lEEP
ALOW A METHOD TO EXPAND INTERUPT SERVICE ROUTINE
1** START KWl1-L INTERUPT SERVICE ROUTINE
INCREMENT TICKS I TIMINGUPDATE UNIVERSAL TIMECHECK FOR 24:00 HOURSRESET 24:00 TO 00:00CLEAN STACK AND CONTINUE WHERE 1$ POINTS
518
1
3456789
10111213
I"I
1e,
O11
DECIMALCODE CYCLE 0 S ) MVV, 0 ' TICKS SUB' 0 TST.-0O NOT IF I -) TST, ' PAUSE JMPF', THEN S )+ TST. NEXT
:CYCLES TICKS + CYCLE ;: SYNC + DUP CYCLE ;: SECONDS 0 DO 60 CYCLES LOOP ;: DWELL 3 SECONDS ;
T - DELAY TILL TICKS COUNT PAST T
N -TN MN -_ .
DELAY FOR N TICKS ON 60-CYCLE CLOCKWAIT TILL TICKS-M.-TINN SECOND WAIT3 SECOND WAIl
1 13 <»CODE CALENDER 0 ,31 , 28 , 31 , 30 , 31 , 30 , 31 , 31 , 30 , 31 , 30 31 ,3 DOY S )U tVV, 0 S )U MVV
4 BEGIN DOY F )+ ADD, 0 DIEC, =0 END NEXT
6 <CODE DATE7 P CALENDER Wt MVV, 0 CLR, BEGIN
P ) S ) CMP' :>0 IF 0 INC, S ) F' ) SUB SWAP 0 END9 THEN S -) 0 MVV, NEXI1011 :CODiE LEAP12 CALENDER 2 f 2'8 MVV,13 S )+ 3 ! BIT, =0 IF CALENDER 2 t INC, THEN NEXT141516
MD - SET DOY FOR DAY D OF MONTH M
N DM COMPUTE DAY AND MONTH FOR DAY-OF-YEAR H
Y - SET PROPER DAYS IN MONTH FOR FEBUARY FOR YEAR Y
BLOCK516
Cl
CL
NCAR-HAO-MLSO 0:54:35. 6/7/82 DOY (157)158
123456789
10111213141516
: TIME.DUP 2 f 2@ ROT 2 '2DUP 1 60 MH/ ::.2OVER 5 ROLL LEAP DATE SWAP ROT //.
[C DY 3 3600 M/ 10:00 < OVER READY XDIGITSIF 41 OF- 1 - XDIGITS 40 OP- ELSE DROP THEN0 00 SIGN 9 LTYFE ;
.UT ' TIME TIME.
UT SWAP 60 * + SWAP 3600 M* ROT Mt60 1 Mf/ ' TIME 2! i
: DAY 100 MOD DUF' YEAR ! LEAP CALENDER ;
4 1 80 [AY
A - PRINT TIME STORED IN 4 WORDS STATRING AT ADDRESS A C.READ FROM ADDRESS YEARIDOY WITH DOUBLE WORD TIME ON TOPPRINT THE TIMECHECK LEAF' YEAR, COMPUTE MONTHIDAY, TYPE RIGHT JUSTIFIEDCHECK FOR OVERLAP OF UNIVERSAL I LOCAL DOY TIF OVERLAP PRINT LOCAL DOY IN ( ) AND PRINT
lOY(DOY IS LEFT JUSTIFIED)
- PRINT UNIVERSAL TIME & DOY S YEAR
HMS - SET THE 60-CYCLE CLOCK TO KEEP UNIVERSAL TIME
MDY - SET DATE ( SET DOY & YEAR IN HEADER )
INITIALIZE DATE
524
I OCTAL2 <CODE LENTRY3 0 S )+ MVV. 0 ASL, 0 )+ S )+ MVV, 0 )+4 1 S ) MVV, 2 I MVV, B5 1 ) 55 ! CMPF 8 =0 NOT IF 1 ) 240 1 MVV,6 74 i 2 CMP, >-0 IF 2 74 h MVV, THEN S7 BEGIN 0 )+ I )+ MVV, B 2 DEC, -0 END8 2 74 MVV, 2 S )+ SUB, ::0 IF9 BEGIN 0 )+ 240 1 MVV, B 2 DEC -=0 END
1011 : OLOG 1 BLOCK 777 + UPDATE ;12 : 21 ITERAL 12 /MOl SWAP >SWAPF:: f 030060 + i1314 TEMF ?LOG 0 ,15 0 ?LOG SET -LOG16 1 ?LOUG SET It OG
S )+ MVV,
B THEN) 2 MVV,
THEN NEXT
'26
1 OCTAL2 .::: ::LOG TIME 7020 M/ 74 /MOD 2LITERAL SWAP 2LITERAL SWAP3 FLEECE OLOG 1I OLOG
+! FLEECE 20 /MOJ[ 240 F DUP BLK4 BLOCK UF'PATE
5 SWAP 40 * + LENTRY FLEECE i6 CODE CLOG HERE tTEMP 'CLOG7 S -) I MVV, 0 I ':+ MVV, 0 177401 t BIC, I 0 ADD,B R -) I MVV, I -:..OG Wt MVV, NEXT9 :: ::LOG IN H 'CLOG 134 ]&\ /KEY HERE 2X : :LOG .10
11 : LOG -1 ::LOG ; IMMEDIATE12 -- -4 ::LOG ; [MM HEITA'TE13: /LINE FLIEECE --1 JO[C_ +! FLI:r'E14 /LOG ' TIME 1 IBL.OCK 504 I 4 IOVE-15 0 OLOG ! UPF'DATE FLEECE ;16
BLOCK
522
00
BL OCK NCAR-- IAO--ML528
1 PROMINENCE-MONITOR2 ' BLOCK 4 + We 1+ I DR-READ -. IFS INIT THEN$3 FORGET F'-MON
56789
101 1
OCTAL2 ' OBLK !0 ' STTY !056001 ' \RUB !' CR ' PAGE !30 W@ 2 + 32 W!
1213141516
530
I DECIMAL2 180:00 2X 10000 2X 31416 */ ITEMP ONE34 : COS*SIN*5 45:00 /MOD6 7 AND 2 /MOD SWAP ROT7 OVER IF 45:00 SWAP - THEN 2X 2XB P[UP 7 2 DO 2DUP ONE */ I / SWAP LOOP DROP9 MINUS ROT + SWAP ROT - SWAP ROT - SWAP ROT F SWAP ONE +
10 ROT IF SWAP THEN11 ROT DUP IF DUP 1 = IF DROP SWAP MINUS ELSE12 2 = IF MINUS SWAP THEN MINUS SWAP THEN13 ELSE DROP THEN14 ROT DUP ROT ONE */ SWAP ROT ONE */ ;1516
532
1 OCTAL ASSEMBLER 0 UNIT2 HERE I AND IFS 0 , THEN$.E HERE ITEMP OBUF45 0 , 0 , 0 , 0 ,6 HERE 5 + W, 0 , ? W, 220 27 10 DP +!8 -2530 W, -2527 W, 0 , 0 , 0 0 , 0 , 0 ,9 0 , HERE 6 + W, 112 5 WU ADD, ' OGET I) CLR,
1011 0 , 0 , 0 , 012 HERE 5 + W, 0 , 7 W, 220 ,13 10 [IF +!14 -2526 WU -2525 W, 0 , 0 , 0 , 0 »0 , 015 0 H tHERE 6 + W, 174 5 WI ADD, ' 1GET I) CLR,16
RTI
RTI,
SO 0:54:52. 6/7/82 bOY (157)158
LOAD AND SAVE OBJECT MODULE FOR PROMINENCE MONITORIF SATELITE SYSTEM IS DOING INTERPRET QUIT NOWFORGET PROMINENCE MONITOR SOFTWARE
REVISE FOF: STANDARD SYSTEMOBJECT FOR REBOOT WILL BE WRITTEN STARTFING IN BLOCK ' 2NO SLIT SCREEN TERMINAL FOF; NOWCHANGE RUB TO ECHO A '.REGRESS ON PAGE TO A CRDVECTOR OPERATOR PRINTER TO NOIMAL MODE
- X ONE RADIAN IN UNITS OF 1/4'TH MINUTI-S OF A,:
RA XY COMPUTE X=R*COS(A) Y=R*SIN(A) A IN MINUTES OF' 0 CMINUTES INTO OCTANT & OCTANT NUMBERDROP FULL CIRCLE, QUADRANT t, EVEN/ODD OCTANT, ANGLE ON TOPREFLECT ABOUT 45:00 FOR ODD OCTANT, 4 TIMES SIGNIFICANCEEXPANSION FOR SIN AND COSCOLLECT TERMS FOR SIN AND COS ( COS ON TOP )EXCHANGE SIN FOR COS IF ODD OCTANTMAKE APPROPRIATE CHANGES IF QUADRANT OTHER THAN 0
COMPUTE X & Y
HARDWARE REQUIRES COMMAND PACKETS ON MODULO 4 ADDRESSES- A ADDRESS OF 32 LOCATION WORK SPACE FOR TAPE UNIT * 0
4 LOCATIONS TO PREPARE COMMAND PACKETS FOR UNIT 0CHARACTERISTICS DATA BUFFER FOR WRITE CHARACTERISTICS COMMANDTSSR REGISTER CONTENT 8 7 LOCATION MESSAGE BUFFERADDRESS TSSR S TSDA REGISTERS & SOME SPARE LOCATIONSINTERUPT SERVICE ROUTINE, PROTECTS AGIANST MULTIPLE INTERPUT
'.
4 LOCATIONS TO PREPARE COMMAND PACKETS FOR UNIT 1CHARACTERISTICS DATA BUFFER FOR WRITE C'HAIRACTERISTICS COMMANDTSSR REGISTER CONTENT 2 7 LOCATION MESSAGE BUFFERADDRESS TSSR I TSDA REGISTERS & SOME SPFARE LOCATIONSINTERUPT SERVICE ROUTINE, PROTECTS AGIANST MULTIPLE INTERF'PUTS
SL
4.to
MT
NCAR-HAO-MLSO 0:55:16* 6/7/82 DOY (157)158
1 CODE UNIT-BUF2 0 UNIT U) MVV,3 0 ASL» 0 ASL, 0 ASL, 0 ASL, 0 ASL,4 0 OBUF # ADD, S ) 0 ADD, NEXT56789
10111213141516
1
34
6789
101112-I?1314151 6
OCTAL<CODE MSSG>
U ) 100000 # MVV,0 UNIT U) MVV, 0 SWUB 0 ASR, 0 ASR, 0 OBUF WU ADD,34 0 W) ) 31 0 W) MVV,S ) TST, B <0 IF 34 0 W) ) 5 WU SUB, THEN0 ) S )+ MVV. 3 0 W) S )t MVV, 1 0 U) S )+ MVV,20 0 W) ) 0 MVV, NEXT
<: TGETUNIT 0 2 MOD DUP UNIT !IF 1GET ELSE OGET THEN1 0 DO 21 UNIT-BUF We Q 200 AND IF I EXIT THEN OLOOP i
: MSSO-WAIT MSSG> SUSPEND ORELEASE IRELEASE ;
N A ADDRESS N'TH LOCATION IN WORK BUFFER OF USER'S UNITGET TAPE UNIT t USER IS USINGMULTIPLY BY 32OFFSET BY OBUF IN CORE & OFFSET BY N IN UNIT BUFFER
OCTALHEB - SEND COMMAND PACKET (HEADER, EXTENT, ADDRESS)
PROTECT AGIANST INTERUPTS THAT MIGHT HAVE OCCUREDBYTE ADDRESS OF TAPE UNIT'S WORD AREAVECTOR UNIT TO THE RTI,VECTOR FOR INTERPUT ENABLE IN COMMAND PACKET IF NECESSARYSET HEADER WORD, BUFFER EXTENT, BUFFER ADDRESSADDRESS THE TSBA REGISTER
- - GAIN CONTROL TAPE UNITMAKE SURE UNIT IS 0 Of 1GAIN USER'S UNITWAIT FOR READY IN TSSR REGISTER
HED - SEND COMMAND PACKET AND WAIT FOR READY
538
OCTAL.<: !MSSG TGET
4 UNIT-BUF: DWRITE TGET: WRITE TGET: READ 1GET: #SKIF !MSSG: IBACK !MSSG
F: -TMK !MSSG: R--IMK !MSSG: END-FILE !MSSG: ISSTATUS !MSSG
2X 102* 2X2* 2X2* 2X
0000
0(00
140204 MSSG.: SUSPEND i140205 MSSG:> i140205 MSSG-WAIT ;140201 MSSG-WAIT 1140210 MSSG-WAIT140610 MSSG-WAIT ;141210 MSSG-WAIT i141610 MSSG-WAIT;140211 MSSG--WAIT ;140217 MSSG-WAIT s
ANANANNNNN
MiTGAIN CONTROL TAPE UNIT AND SETUP MESSAGE BUFFER
WRITE N WORD RECORD FROM ADDRESS A (NO WAIT FOR READY)WRITE N WORD RECORD FROM ADDRESS AREAD N WORD RECORD FROM ADDRESS ASKIP N RECORDS FORWARDSKIP N RECORDS BACKWARDSKIP N FILE-MARKS FORWARDSKIP N FILE-MARKS BACKWARD'WRITE FILE MARKGET STATUS (TO BE READ FROM MESSAGE BUFFER)
BLOCK534
0
1
3456789
10111213141516
LIOCK540
1 OCTAL2 : REWIND iMSSG 00 142010 MSSG:>3 0 22 UNIT-BUF ! ORELEASE 1RELEASE i4 : SKIP I tSKIP ;5 : BACKSPACE 1 #BACK i6789
1011
1 3141 '5I. e,
NCAR-HAO-MLSO 0:55:37. 6/7/82 BOY (157)158
- - F'REWIND TAPE UNIT(ZERO RECORD LOCATION FOR SYSTEM TAPE)
- - SKIP ONE RECORD FORWARD- -- SKIP ONE RECORD BACKWARD
OCTAL20 ,CODE RLS?13 ,CODE DOT?
6 ,CODE EOT?I ,CODE EOF?
S -) CLR,OBUF 14 + 0
040000 ,000002 ,000001 ,100000 ,
0 UNIT U) MVV, 0 SWB,W) F ) BII, --0 NOT IF
: ?ERR21 UNIT-BUF We e DUP 10 UNIT-BUF !176000 AND 0= 0= ;
: .ERR CR [ TS11 ERR: ]BASE B OCTAL 0 UNIT-BUF 20 DUMP
0 ASR, 0 ASR,S ) INC, THEN NEXT
BASE ! ;
- L L=l (TRUE) IF RECORD-LENGTH-SHORT IS SET- L L=l (TRUE> IF BEGINNING-OF-TAPE IS SET- L L-1 (TRUE) IF END-OF-TAPE IS SET- L L=1 (TRUE) IF END-OF-FILE IS SET
SET L=O (FALSE), ADDRESS TAPE WORD AREAFROM MESSAGE BUFFER TEST FOR BIT IN XSTATO REGISTER
- L L=l (TRUE) IF ERROR CONDITION DETECTED IN TSSF:GET COPY OF TSSR REGISTER TO LEAD MESSAGE BUFFERCHECK IF ERROR BIT SET IN TSSR
--- PRINT COMMAND PACKETS, TSSR, I MESSAGE BUFFER
I DECIMAL
I [I DD 10240 OFFSET ! 1 10240 RELOAD 0 OFFSET ! BL45 : T:: D REWIND ERASE--CORE 0 1 BLOCK lUF' DO6 I 513 READ EOF? IF DROP REWIND BL 1 EXIT THEN7 RLS? 0= IF I 512 4t ?ERR IF CR DUP . [ BLOCK ERR ]8 EL SE SWAP OVER = IF CR DUP . [ REWRITE I THEN9 TH'lEN UPF'DATE FLUSH THEN OLOOPF'
10111213'14I1.
- COPY RL02 DISK UNIT 0 TO DISK UNIT 1
R- ESTORE A DISK FROM BACKUP TAPECHECK FOR LOGICAL END-OF-DATASKIP SHORT RECORDS, CHECK FOR INPUT ERRORCHECK FOR MULTIPLE RECORDS OF A BLOCKWRITE BLOCK TO DISK
MT
123456789
10111213141516
5;44
MT
Jn
NCAR-HAO-MLSO 0:55:55. 6/7/82 DOY (157)158
DECIMAL: BACKUP
REWIND ERASE-CORE1 BLOCK 256 + 256 2DUP WRITE WRITE10241 1 DO I BLOCK 513 2DUP WRITE?ERR IF CR I . I BLOCK ]13 2 DO 2DUP WRITE ?ERR IF LOOP .ERR QUESTIONELSE I . C WRITES 3 12 +LOOP THENTHEN 2DROP LOOP END-FILE END-FILE REWIND BL ;
- MAKE BACKUP TAPE OF RL02 DISKPOSITION TAPE TO BOT, MAKE SURE ALL DATA COMES FROM DISKTShU BOOTSTRAP IN FIRST TWO RECORDSWRITE 10240 BLOCKS TO TAPECHECK FOR WRITE ERRORTRY 12 TIMES TO GET GOOD RECORD OR ABORT WITH ERROR MESSAGEPRINT THAT THERE WAS MULTIPLE WRITESTERMINATE TAPE WITH TWO END-FILE MARKS
OCTAL: PROMPT
-115 ?THERE IF 100 -115 ! ELSEPAGE I TURN LTC ON] 1 CYCLES THENQUESTION ;
<:::- INIT ERASE-CORE OPERATOR DOES PROMPT\
CODE INITHERE HERE HERE JMP, 20 2 MOVE DP !5 ,' GET CLRE T C'GET CLR, ' TTGET CLR, ' OGET CLR9 ' 1GET CLR,U OPERATOR Wt MVV, BEGIN U 2 U W) MVVv U ) 100000 I HVV,U OPERATOR WI CMP, -0 END U ) INC,R RO U) MVVv S SO U) MV,p FLT U) FO U) MVV,I ::INIT WI MVV, NEXT
CODE BOOT OCTAL0 400 WI MVV, BEGIN 36000 0 W) 0 -) MVVp 0 TST, =0 END7 36000 WI ADD, 1 1 I MVV, BEGIN3 1 MVV, 2 CLR, BEGIN 12 # 3 CMP, ::0 NOT IF2 INC, 3 12 # SUB, SWAP 0 END THEN3 ASL, 11 # 3 CMPF :'0 IF 3 11 I SUB, THEN2 ASL, 2 ASL, 2 ASL, 2 ASL, 2 3 ADD, 2 ASL, 2 ASL,-1600 10 # MVV, BEGIN -1600 TST, B <0 END3 2 MVV, 4 --1575 MVV, 3 177 t BIC, 4 177 # BIC,4 3 SUB, :0 IF 4 NEG, 4 4 I BIS, THEN 4 INC,2 100 I BIT -=0 NOT IF 4 20 1 BIS, THEN -1576 4 MVV,-1600 06 I MVV, BEGIN --1600 TST, B <0 END--1575 -1000 g MVV, -1576 2 MVV, --1577 0 MVV,-1600 14 # MVV, BEGIN -1600 TSTY B .<0 END0 1000 WI ADD, 1 INC, 35000 WI 0 CMPF' =0 ENDR RO It MVV, R -) CLR, R -) 20 WI M'VV, RTIv
RL02 DISK BOOTSTRAPRELOCATE BOOT TO 36000JUMP TO HIGH CORE, START READING CORE FFOM BLOCK 1 2IN REGISTER 2 COMPUTE DISK ADDRESS FOR BLOCK(DISK ADDRESS COMPUTATION FOLLOWS THE OMPFUTATION INMETA--FORTH)
READ HEADER COMMAND AND WAIT FOI.: READtTRACK I DESIRED AND CURRENT TRACK tCOMPUTE SPECIAL DISK ADDRESS REGIST!-'l COrNTEOT FOf: SEEK
RL02 SEEK COMMAND I WAIT FOR RK11 READ DilWORD COUNT, DISK ADDRESS, CORE ADDRESS REGISTERSRL02 READ COMMAND & WAIT FOR RK11 READ BITUPDATE CORE ADDRESS I BLOCK #i TEST IF TIIHROUGHUSE RTI, TO 0 FSW ON FORTH START Alr LOCATIONi 20
BLOCK546
123456789
1011121314J51. 6
5i48
1
3456789
1011
13141516
550
UlIN1
123456789
10111213141516
SL
NCAR-HAO-MLSO 0:56:16. 6/7/82 DOY (157)158
1 OCTAL2 : SAVE ' BOOT 1 BLOCK 400 MOVE UPDATE FLUSH3 SAVE FORGET BOOT456789
1011121314
1 .
. CODE BOOT OCTAL2 0 IF 0 ,0,0,0,0,0,0,3 140004 , 36014 WU 0 , 4 WU 36001 U, 0 . 7 U, 04 140001 , 37000 W, C , 1001 W, THEN5 1 400 WUt MVV, BEGIN 36000 1 W) I -) MVV, 1 TST, =0 END6 7 36000 WU ADD, 2 0 MVV, 0 ASL, 0 ASL, 0 -2527 Wt ADD,7 -1 0 W) 36010 WU MVV, BEGIN 0 ) TST, B <:0 END0 BEGIN -1 0 W) 36020 WU MVV, BEGIN 0 ) TST, B <:0 END9 0 ) 100000 t BIT, UP F' 0 END 1 t 40000 CMP, DUP :: 0 END
10 3 40000 Wt MVV, 4 3 ) MVV, 4 DEC, 4 SWB, 4 ASL, 4 ASL,11 BEGIN 4 -) 3 -) MVV, 37000 WUt 3 CMF'P, =0 EN12 36 t 40000 CMP, ,>0 END13 U OPERATOR WUt MVV, UNIT U) 2 MVV,14 0 [P U) MVV, 0 ASL, 0 ) CLR,15' RRO U) MVV, R --) CLR, R -) ' QUESTION WU MVV, RTI,16
- - INSTALL RL02 BOOT INTO BLOCK * 1
TS11 BOOTSTRAP MTMESSAGE-BUFFERSET CHARACTERISTICS COMMAND PACKET & CHARACTERISTICS BUFFERREAD COMMAND PACKETRELOCATE TO LOCATION 36000REG. 0 FROM 11/44 BOOT HAS UNIT I, COMPUTE TSSR ADDRESSSEND CHARACTERISTICS COMMAND PACKETREAD RECORDS VIA READ COMMAND PACKETS TO LOCATION 37000SKIP SHORT OR BAD RECORDS; SKIP BLOCK t 1COMPUTE TOP CORE ADDRESS FOR BLOCKMOVE BLOCK TO CORETEST IF DONESET SYSTEM TO BRING UP SYSTEM CONSOLENULL CHARACTER STRING ::OR QUESTIONPROMPT CONSOLE VIA OLIESTION USING RTI, TO CLEAR PF'SW
5S.6
12 : SAVE ' BOOT 1 BLOCK 400 + 200 MOVE UPDATE FLUSH ;3 SAVE FORGET BOOT456789
1011121 31-1I ,! -
INSTALL TS11 BOOT IN HIGH HALF OF :b-CI I
BLOCK552
Ln,4
NCAR-HAO-MLSO 0:56:31. 6/7/82 IDY (157)158
1 OCTAL2 TEMP DPSAVE34 ;: SYSSAVE5 I 1000 *6 PF'SAVE DF' !78 C SYSTEM9 INIT
10111 21 31 1.1 .
36000 LP ! ASSEMBLER
40 0 DO0I OLLK + BLOCK UPDATE 1000 MOVE LOOP FLUSH i
SYSSAVE EXECUTE
READY ]
660
I I*l /442 DRi--SATELITE3 VT554 TEKTRONIX56 OCTAL7 CODE REBOOT 5 , 0 CIR, 7 -2273 WUt MVV,8 VOCABULARY PRINTER PRINTER DEFINITIONS CHAIN FORTH9 HERE 3767 t 2X [UP FO 2!10 HERE 4000 + PROGRAMMER ' DP e t t
11 HERE 7767 + 2X DUF PROGRAMMER ' FO + 2!12 HERE 10000 + GRAPHER ' DP @ B !13 37767 2X DUP GRAPHER ' FO 8 + 2!14 PROGRAMMER ' TTY e + W@ ?THERE IF$ PROGRAMMER DOES PAGE\ THEN$15 GRAPHER ' TTY e + WQ ?THERE IF$ GRAPHER DOES PAGE\ THEN$16 DECIMAL 5;S
CONFIGURE FOR PDP 11/44 SYSTEMLOAD SOFTWARE TO HANDLE DR11 CABLE TO SATELITE SYSTEMLOAD USER PROGRAMMER AT VT55 TERMINALLOAD USER GRAPHER AT TEKTRONIX TERMINAL
SL MU
- REBOOT USING 11/44 RL02 BOOT ROM ON UNIT 0VOCABULARY FOR OPERATOR CONSOLE7 FORTH VOCAE BECOMES STATICINITIALIZE OPERATOR'S FLOATING POINT STACK2K LOCATIONS OF DICTIONARY SPACE FOR OPERATORINITIALIZE PROGRAMMER'S FLOATING POINT STACK2K LOCATIONS OF DICTIONARY SPACE FOR PROGRAMMERFINITIALIZE GRAPHER'S FLOATING POINT STACKPROMPT VT55 IF CONTROL REGISTER IN ON BUSPROMPT TEKTRONIX IF CONTROL REGISTER IN ON BUS
562
1 *#* DR11-SATELITE OCTAL2 42 #TEMP OBLK' OBLK' 36 t1 TEMP BBLK OBLK' 37 + ITEMP MBLK3 TEMP 25 0 , 120 DF' +! TEMF' 1$ 0 , 000001 INTEGER DRll1 04 OPERATOR 2 + 1$ 21 - DUP WU 37 - WU
0 0 , 0 , 0 0 2 * O , 0 06 ' FORTH t 0 , 0 9 0 1 20 - WU MBLK u 0 O 0 , 240 ,7 BUF e D PREV e ALT , 0 , 0 ,0 08 DR1I OPERATOR 2 + W!9 HERE ITEMF' $VL;C ASSEMBLER DR11 CLRv RII,
1011 -4004 #TEMP CIS C&S 1+ #TEMP OBLIF OBUF lf+ TEMP IBUF12 ::: C&S 101 C&S ! SUSPEND ;13 <: OlR i1 LK 8 BLOCK IN l + @ OBUF ! 1 IN ! CIS C14 ::: IDR11 IBUF B BLK @ BLOCK IJF'DAfl: IN ( + !15 IN B 777 - IF FLUSH THEN 1 IN +! 'C&S16
DR11--C CABLE TO PLESSEY- B BASE BLOCK OF PLESSEY SYSTEM- B BLOCK I USED TO TRANSFER INFO FROM 11/10 CORESET UP BACKGROUND USEK ro RUN DR-LOOP. BELOW
INTERUPT SERVICE ROUTINE FOR A READY BIT
ADDRESSES OF DRl -C REGISTIERSREADY A BIl IN PLESSEY SIDE AMD WAIT FOR INTERUPTOUTPUT WORD IN IN BLOCK BLK TO CABLEINPUT WORD IN IN BLOCK BLK FROM CALBEFLUSH IF LAST WORD IN BLOCK IS INPUT
: OCK558
HU
NCAR-HAO-MLSO 0:5653. 6/7/82 DOY (i57)158
1 OCTAL2 : DRLOOP 100 CIS ' 60 CYCLES SUSPEND3 1 0 D04 CIS e 2 CIS ! 0< IF5 0 IN ! IBUF Q6 DUP 0< IF MINUS BLK ! 0 OP I !CIS7 [DUP 0= IF DROP BBLK THENB DUP MBLK = IF DUP BLOCK UPDATE9 ' TIME OVER 4 MOVE
10 DROP THEN11 BLK ! 1 OP !12 THEN OP @ IF ODR11 OLOOP THEN IDR1113 : PLESSEY $VEC 150 W! DR11 DOES DRLOOP\14 $VEC 2 + 2X 150 SET /PLESSEY15 PLESSEY16 DECIMAL iS
1
3456789
1011121314
OLOOP THEN
OLOOP ;*
DR11il ESECUTES THIS LOOP
READ CONTROL, ACKNOWLEDGE PLESSEY, CHECK NEGATIVE CONTROLIF CONTROL NEGATIVE 0 WORD COUNT I READ BLOCK !IF BLOCK i NEGATIVE READY FOR BLOCK INPUTIF BLOCK I ZERO READY FOR SENDING BOOT BLOCKIF BLOCK * IS MBLK SEND INFO FROM 11/10 CORE
DATE t TIME
SAVE BLOCK i, FLAG FOR OUTPUT TO CABLEOUTPUT/INPUT WORD TO/FROM CABLE
#tt LOG-LIST /KEY DECIMAL : TASK ;: HEAD PAGE
IC t» NCAR--HAO-MLO LOG] 1 BLOCK 504 t TIME. [ »t#3 CR CR ;: JUNK 1 BLOCK 511 + e DUP O= IF CR DROP 0 EXIT THENHEAD 0 DO CR I 16 /MODOVER O= IF 160 + BLK ! DROP1 DBK-TO-MSB HERE 1+ 2X 64 TYPE SP BLK ?ELSE DROP It TLINEI 1+ 16 MOD 0= IF CR FKEY HEAD THENTHEN LOOP i
JUNK FORGET TASIOBLK 34 - IFS FLEECE CR FKEY STATUS THEN$;S
i168
,hA8
1 Il! SQUARE-ROOT OCTAL2 CODE- <SORT3 0 S ) MVV, 0 1 S) ADD, 0 0 MUL,4 1 3 S) ADD, 0 ADC, 0 2 S) ADD,5 :0 IF 1 S) S ) ADD, THEN6 S ) ASR, NEXT7: LDSORT8 DMINUS 0 400009 17 0 DO .:SQRT LOOP
10 DROP DUP DO1I I I M* 2OVER it DROP ABS12 ROT ROT I 1+ DUP M* D[ DROP ABS13 : IF I 1+ ELSE I THEN14 LOOP 0 ;15 DECIMAL ;S16
32 BIT SQUARE ROOT ( MAX ROOT 32767 OCTAL 77777EEXB EEYA (EE IS -DD BELOW)
(X+B)*(X+B)(XtB)*(X+B)-DDIF (X.B)*(X+B) LESS THAN DD[ REPLACE X BY Y-(XtB)A - B/2 (ONE LESS SIGNIFICANT BIT)
DD XO FIND SQUARE ROOT OF ilDDNEGATE DD, INITIAL X, HIGHEST ALLOWED SIGNIFICANT BIT IN XINSTAL BITS IN X FROM HIGH TO LOW SIGNIFICANCEDROP THE Or X BECOMES IN1I::X IN SINGIE P'A3S I OPABS( X*X - DD )ABS( (X+1)*(Xtl) -- DD )USE X+l FOR ANSWER IF IT IS NEARER DD0 TO MAKE ANSWER DOUBLE WORD
BLOCK
564
MU
cn1.n
NCAR-HAO-MLSO 0:57:15. 6/7/82 BOY (157)158
1 #tt PRINTING OCTAL /KEY 0 CONSTANT TASK2 : JUNK3 1+ SWAP DO4 I 1+ BLOCK 37 + 8 146116 - IF5 TASK 0= IF CR [ BLOCK ] I 5 LEFT.6 42 TAB I NCAR-HAO-MLSO] *UT CR THEN7 TASK 1+ 4 MOD ' TASK !8 21 1 DO CR9 J 1+ BLK ! I LINE TEXT 32MOVE TEXT -BLANKS
10 J BLK ! I BLK-TO-MSG11 DUP IF HERE 1+ 2X 100 TYPE SP SP SP SP12 ELSE DROP DROP HERE 1+ -BLANKS THEN TYPE13 LOOP THEN 2 +LOOP14 TASK IF 4 TASK -- 20 * 0 DO CR LOOP THEN i1516 DECIMAL JUNK FORGET TASK iS
572
1
3456789
10111213141 6'1.6
tt» LISTING OCTAL /KEY 0 CONSTANT TASK: JUNK
1+ SWAP DO1 1+ BLOCK 37 + 8 146116 - IF CR CRTASK 0- IF [ BLOCK] 50 TAB I NCAR-HAO-MLSO] .UT THENTASK 1+ 3 MOD ' TASK !CR I . CR21 I DO CR I 2 RIGHT. SPJ 1+ BLK ! I LINE TEXT 32MOVE TEXT -BLANKSJ BLK ! I BLK-TO-MSGDUP IF HERE 1+ 2X 100 TYPE SPELSE DROP DROP HERE 1+ -BLANKS THEN TYPELOOP CR CR THEN 2 +LOOPTASK IF 3 TASK - 26 * 0 DO CR LOOP THEN
DECIMAL JUNK FORGET TASK ;S
MN - DUMP COMMENTED LISTING OF BLOCKS M TO N(FOUR BLOCKS DOWN PAGE; NO LINE NUMBERS)ARANGE M I N IN INCREASING ORDER FOR DO LOOPCHECK COMMENT BLOCK FOR NL (NO-LIST) AT END OF FIRST LINEIF FIRST BLOCK ON PAGE PRINT BLOCK NUMBER S HEADING
UPDATE THE PAGING INDEX (4 BLOCKS DOWN A PAGE)16 LINES PER BLOCKGET BYTE-ADDRESS AND CHARACTER COUNT OF COMMENT LINEMOVE SOURCE CODE LINE TO DICTIONARYTYPE SOURCE-CODE LINE ENTIRELY IF THERE ARE COMMENTSFINISH TYPING LINE DROPING TRAILING BLANKSLOOP ON LINE INDEX AND BLOCK INDEXPAGE AT END OF LISTING
MN - DUMP COMMENTED LISTING OF BLOCKS M TO N
ARANGE M & N IN INCREASING ORDER FOR 1DO LOOPCHECK COMMENT BLOCK FOR NL (NO-LIST) AT END OF FIRST LINEIF FIRST BLOCK ON PAGE PRINT HEADINGUPDATE THE PAGING INDEX (3 BLOCKS DOWN A PAGE)PRINT BLOCK NUMBERSTART EACH LINE WITH LINE NUMBERGET BYTE-ADDRESS AND CHARACTER COUNT OF COMMENT LINEMOVE SOURCE CODE LINE TO DICTIONARYTYPE SOURCE-CODE LINE ENTIRELY IF THERE ARE COMMENTSFINISH TYPING LINE DROPING TRAILING BLANKSLOOP ON LINE INDEX AND BLOCK INDEXPAGE AT END OF LISTING
574
1 t#l V155 OCTAL ME DROF /KEY2 360 2/ ITEMP V$3 175610 2/ #TEMP RS4 VOCABULARY VT55 VT55 DEFINITIONS CHAIN FORTH5 TEMP 2f 250 DP +! TEMP 1$6 FORTH DEFINITIONS 0 INTEGER PROGRAMMER -1 iP +!7 1 , 0 , OPERATOR 2 + Q . PROGRAMMER OPERATOR 2 + WU8 1$ 1 - W, 16 101 - W,9 RS 1+ WU 0 D RS 3 + W, 0 ,
10 2$ 51 + , 0 , 0 , ' VT55 , 0 , 0 s 0 ,11 2$ W. SCR 8 , 0 , 0 , 240 ,12 BUF e , PREV 8 , ALT @ ,13 2$ 50 + W, 2$ 50 + W. 0O1415 ASSEMBLER HERE V$ W! 30 We 1+ W8 7 JSRP16 HERE V$ 2 + WI PROGRAMMER CLR, RTI,
ADDRESS OF VT55 VECTORADDRESS OF VT55 CONTROL REGISTERSDEFINE VOCABULARY FOR USER Al VT55 TERMINALSPACE FOR MESSAGE BUFFERP STACK I RETURN STACKTHE USER'S NAME AND STATUS TABLE ADDRESS IS PROGRAMMERSET UP STATUS TABLE FOLLOWING PATTERN IN META-FORTH
INTERUPT SERVICE ROUTINE FOR VT55 KEYBOARD
BLOCK570
LI
LI
Ml.)
NCAR-HAO-MLSO 0:5741. 6/7/82 DOY (157)158
OCTAL VT55 DEFINITIONS015402 MSG 1ESC 000061015402 MSG 2ESC 000062 ,044404 MSG P-ERASE 040460 v 000040 ,044404 MSG P-START 040457 , 000047 ,24 .CODE VLINE 46003 , 0 ,16 *CODE HLINE 42003 , 0 ,10 ,CODE XSET 44003 * 0 ,
2 ,CODE YPLOT 41003 , 0 , O S )+ MVV»0 ASL, 0 ASL, 0 ASL, 0 ASR» B 0 ASR» B 0 ASR, B0 170340 # BIC, 0 030040 1 BISg I P) 0 MVV.I MSG 2 + JMP»
; CURSOR 400 ' YPLOT OR! YPLOT 400 ' YPLOT CLI i41003 ' YPLOT SET OGRAPH45003 ' YPLOT SET 1GRAPH
OCTAL015402 MSG HOME 000110 ,015402 MSG S-ERASE 000112 .015402 MSG L-ERASE 000113 ,015402 MSG L-UP 000101 .
054433 ' XYC' !I STTY 1+ VS 2 + W!Ri 3 + WATCHER ' TTY e + W!RS 3 + ' STTY W!' VT55 WATCHER ' CURRENT e +' VT55 MONITOR ' CURRENT e +MONITOR ' TTY 8 + #TEMP MTTY
*$* VT55 GRAPHICSESCAPE SEQUENCE TO GRAPHICS MODEESCAPE SEQUENCE TO ALPHANUMERIC MODEERASES GRAPHICS ( WHILE IN GRAPHICS MODE )ENABLES GRAPHSX - MAKE VERTICAL LINE AT X O<=X<=511Y - MAKE HORIZONTAL LINE AT Y 0<'-Y<=235X - SET INITIAL X BUFFER ( INCREMENTS ONE EACH YPLOTY - PLOT POINT Y AT X BUFFER INCREMENTING X BUFFER
EACH X OR Y VALUE IS SPLIT IN TWO ( SEE VT55 MANUAL )SEND THREE CHARACTER STRING OFF TO TYPEX - REPLACE POINT AT X WITH CURSORMAKE YPLOT AND CURSOR EFFECT GRAPH 0 ( SEE MANUAL )MAKE YPLOT AND CURSOR EFFECT GRAPH 1
$** VT55 GRAPHICSHOME CURSORERASE ALPHANUMERICS FROM CURSOR TO END OF SCREENERASE ALPHANUMERIC LINE FROM CURSORMOVE CURSOR UP A LINECR - MOVE CURSOR TO COLUMN C LINE F.
(0,0) IS UPPER LEFT CORNER
ENABLE SPLIT SCREEN FOR VT55CORRECT CONTROL CHARACTER FOR VT55 CURSOR CONTROLVECTOR VT55 TO SPLIT SCREEN INTERUPT SERVICEMAKE TTY FOR WATCHER SAME AS FOR VT55MAKE STTY THE SAME AS TTY FOR VT55WATCHER USES VT55 VOCABULARYMONITOR USES VT55 VOCABULARY
- A ADDRESS OF TTY IN MONITOR'S SATUS TABLE
1 OCTAL VT55 DEFINITIONS2 <:CODE ?PROGRAMMER S -) CLR,3 U PROGRAMMER Wt CMP, =0 IF S ) INC, THEN NEXT4 ' PAGE e 'TEMP OPAGE5 <: 1PAGE ?PROGRAMMER IF6 TYGET 00 MTTY 2! 0 SPLIT ! WATCHER DOES QUIT\7 1ESC P-ERASE 2ESC HOME S-ERASE ELSE OPAGE THEN ;8 1PAGE ' PAGE !9 ' RUB @ 'TEMP ORUB
10 ::CODE .:RUB 104003 , 104240 , ' MSG 2 + :RUB 1 - W!11 < 1IRUB ?PROGRAMMER IF 'RUB ELSE ORUB THEN ;12 IRUB ' RUB !13 DECIMAL FORTH DEFINITIONS iS141516
- L ONE IF USER IS PROGRAMMER, ZERO OTHERWISE
- - OLD PAGE DEFINITION FROM ALIAS- - NEW PAGE DEFINITION WITH SPECIAL VT55 CODE
PAGE ALIAS FORWARD ADDRESSED TO IPAGE- - OLD RUB DEFINITION FROM ALIAS- - BACKSPACES VT55 ONE SPACE- - NEW DEFINITION FOR RUB WITH SPECIAL VT55 BACKSPACERUB ALIAS FORWARD ADDRESSED TO 1RUBI
BLOCK576
123456789
10111213141516
578
123456789
10111213141516
GR
GR
Cn--1
580
MU
NCAR-HAO-MLSO 0:58:07. 6/7/82 DOY (157)158
1 It# TEKTRONIX OCTAL ME DROP /KEY2 350 2/ ITEMP V$3 175620 2/ »TEMP R$4 VOCABULARY TEKTRONIX TEKTRONIX DEFINITIONS CHAIN FORTH5 TEMP 2S 250 DP +! TEMP 1$6 FORTH DEFINITIONS 0 INTEGER GRAPHER -1 DP +!7 1 , 0 . OPERATOR 2 + e , GRAPHER OPERATOR 2 WU!8 15 I - W, 1$ 101 - Wr9 RI 1+ W. 0 , RS 3 + W, 0 ,
10 2$ 51 + , 0 r 0 , ' TEKTRONIX , 0 0 0 ,11 2$ WU, SCR Q , 0 . 0 , 240 U12 BUF @ , PREV e . ALT e ,13 2$ 50 4 WU 2S 50 + W, 0 ,1415 ASSEMBLER HERE V WU! 30 UW 1+ WU 7 JSRe16 HERE V$ 2 + W! GRAPHER CLR, RTI,
ADDRESS OF TEKTRONIX VECTORADDRESS OF TEKTRONIX CONTROL REGISTERSDEFINE VOCABULARY FOR USER AT TEKTRONIX TERMINALSPACE FOR MESSAGE BUFFERP STACK I RETURN STACKTHE USER'S NAME AND STATUS TABLE ADDRESS IS GRAPHERSET UP STATUS TABLE FOLLOWING PATTERN IN META-FORTH
INTERUPT SERVICE ROUTINE FOR TEKTRONIX KEYBOARDINTERUPT SERVICE ROUTINE FOR TEKTRONIX SCREEN
584
12
456789
101112I -141516
OCTAL TEKTRONIX DEFINITIONS017401 MSG ALPHA016401 MSG GRAPHICS::CODE ESCFF 015402 t 000014 u ' MSG 2 + ESCFF I - W!
<; TPAGE ESCFF 60 CYCLES ;16 PCODE XSCALE I 1 ,10 ,CODE YSCALE 1 , 1 v2 ,CODE XYORG 0 , 0 , P )+ S )+ MVVr P ) S )+ MVV, NEXT
:::: XY<.. ' YSCALE 22 1/ SWAP ' XSCALE 22 5/'XYORG 1+ @ t SWAP ' XYORG e@ +
2 <.:,CODE XORY 0 D 0 , F )+ 020002 1 MVV> P ) S )+ MVV»1 S )+ MVV, 1 176000 ! BIC, 0 1 MVV, 1 177740 # BICPF ) 1 ADD, 0 ASLF 0 ASL, 0 ASL, 0 CLR» B P -) 0 ADDP
MSG 2 + JMPF
TEKTRONIX GRAPHICS- - ENTER ALPHA MODE- - ENTER GRAPHICS MODE- - CLEAR SCREEN- - CLEAR SCREEN GIVING TIME TO FINISHUV - X-AXIS SCALED TO PLOT X*U/VST - Y-AXIS SCALED TO PLOT Y*S/TNM - X-ORIGEN IS N D Y-ORIGEN IS MXY PO P=X*U/V+N Q-Y*S/T+M
ZB - TYPE CHARACTER CONVERSION OF Z ( B DETERMINES X OR Y )( SEE TEKTRONIX MANUAL )
50lf6
2X tTEMP LOX>XY< 140 XORY 100 XORY ;GRAPHICS XY--' ;GRAPHICS LOX 1 TYPE XY-'. ALPHA iXYO' ALPHA iXYO' LOX 1 TYPE ;XY.' ALPHA i
0 0 XYORG 0 0 XYO CR iPAGE ;
TEKTRONIX GRAPHICS
XYXYXY -XY -XY -XY -XY -
IN GRAPHICS MODE VECTOR TO XYENTER GRAPHICS MODE. DARK VECTOR TO XYDRAW VEXTOR FROM LAST XYO , XY. OR XY- 1TO XYMOVE CURSOR TO XYPLOT POINT AT XY ( STAY IN GRIPHICS MODE )PLOT POINT AT XY ( RETURN TO0 ALPHA MODE )MOVE CURSOR TO PRINT DOWN RIGHT HALF SCREENPAGE THE SCREEN
BLOCK582
HU
GR
0n00
OCTALXORY 1+: XY-':XYO': XY-: XYO: XY.': XY.: FIN: HOME
1234567139
10111213:1 415:1 6
GR
NCAR-HAO-MLSO 0:58:31* 6/7/82 DOY (157)158
12 <CODE ?GRAPHER S -) CLR,3 U GRAPHER W'U CMP» =0 IF S ) INC, THEN NEXT45 PAGE 0 'TEMP OPAGE6 <: 1PAGE ?GRAPHER IF TPAGE ELSE OPAGE THEN I7 IPAGE ' PAGE89 FORTH DEFINITIONS
10 DECIMAL ;S111213141516
- L ONE IF USER IS GRAPHER» ZERO OTHERWISE
-- OLD DEFINITION OF PAGE FROM ALIAS- -NEW DEFINITION FOR PAGE WITH SPECIAL 4006-1 CODE
PAGE ALIAS FORWARD ADDRESSED TO IPAGE
590
1 I*# OLY ME GRAPHER = IF$ /KEY : TASK ;2 : 'SIN* 360 MOD 1:00 * COS*SINt SWAP DROP3 'COSt 360 MOD 1:00 * COStSIN* DROP4 : OLY 512 390 XYORG 361 0 DO 2DUP5 380 I ROT * 'SINt SWAP 380 I ROT * 'COSt6 I IF XY- ELSE XYO THEN LOOP 2DROP7 PAGE OLY FORGET TASK ELSES 2DROP THENS ;S891011121314
16
592
1 ltt CPACK DECIMAL234 0 CONSTANT LVL5 0 CONSTANT DLVL67 0 CONSTANT UL8 0 CONSTANT LL9
10 0 CoNSTANT XL11 0 CONSTANT YL1213 0 CONSTANT A14 '0 CONSTANT XO15 0 CONSTANT Xl16
0 CONSTANT UR0 CONSTANT LR
0 CONSTANT XR0 CONSTANT YU
0 0 2CONSTANT B0 CONSTANT YO0 CONSTANT Y1
EXECUTE CPACK TO LOAD TEKTRONIX CONTOUR PACKAGE
- C VALUE OF A CONTOUR LEVEL- D CONTOUR LEVELS LESS THAN DLVL DRAWN DASHEDFOLLOWING 8 WORDS DEFINE RECTANGLE TO TAKE CONTOURS- G VALUE OF DATA IN UPPER LEFT I UPPER RIGHT CORNERS- G VALUE OF DATA IN LOWER LEFT & LOWER RIGHT CORNERS
- X LEFT & RIGHT SCREEN POSITION- Y LOWER I UPPER SCREEN POSITION
REST OF THE CONSTANTS USED IN DRAWING DASHED LINES
BLOCK588
GR
GR
Ul
NCAR-HAO-MLSO 0:58:47o 6/7/82 DOY (157)158
1 ALIAS WARP : NOTHING i I NOTHING ' WARP !2 : XYD WARP LVL DLVL . IF ' YO ! ' XO ! ELSE XYO' THEN i3 : XYP WARP LVL DLVL < IF ' Y1 ! ' XI !4 XI XO - ABS Y1 YO - ABS - IF5 Yl YO - XI XO - ' B 2! Yl XI B -- A6 XO X > IF XO XI ' XO ! ' XI ! THEN7 XI 1+ XO DUP 8 Mori - DO8 I XO MAX I 3 + XI MIN 2DUP > IF 2DROP ELSE9 IUP B */ A + XYO' DUP B */ A + XY-' THEN 8 +LOOP E10 XI XO - Yl YO - ' B 2! XI Yl B / - ' A !
11 YO Y1 > IF YO Yl ' YO ! ' Y1 ! THEN12 Yl I+ YO DUP 8 MOD - DO13 I YO MAX I 3 + Y MIN 2DUP' > IF 2DROP ELSE14 DUP B */ A + SWAP XYO' DUP B */ A + SWAP XY-- THEN15 8 +LOOP THtEN16 ELSE XY-' THEN i
596
1 :234 :567 :89
10 :111213141516
598
lOUT IF 1 ELSE UL LVL . IFXL YL YU YL - LVL LL - ULTHEN THEN i2OUT IF 1 ELSE UR LVL < IFXL XR XL - LVL UL - UR UL -THEN THEN i3OUT IF 1 ELSE LR LVL < IFXR YL YU YL - LVL LR URTHEN THEN i4OUT IF 1 ELSE LL LVL . IFXL XR XL - LVL LL - LR LL -THEN THEN
0 ELSELL - */
0 ELSE*1 +
0 ELSELR - */
0 ELSE*/ t
+
YU
1
YL
1 AROUND2 LL LVL = IF 1 ' LL +! THEN UL LVL = IF 13 UR LVL - IF 1 ' UR +! THEN LR LVL = IF 14 LL LVL IF UL LVL -: IF5 XL. YL YU YL -- LVL LL - UL LL- */ +6 0 2OUT 3OUT 4OUT DROP THEN THEN7 UL LVL > IF UR LVL -IF8 XL XR XL - LVL UL - UR UL - / + YU9 0 30UT 4OUT lOUT DROP THEN THEN
10 UR LVL ;:- IF LR LVL - IF11 XR YL YU YL - LVL LR - UR LR - /12 0 4OUT TOUT 2OUT DROP THEN THEN13 LR LVL > IF LL LVL . IF14 XL XR XL - LVL LL - LR LL - */ + YL15 0 1OUT 2OUT 3OUT DROP THEN THEN i16 ;S
XYP
XYP
XYP
XYP
' L ! THEN'LR + ! THEN
X YD
XYD
XYD
XYD
ALOWS USER DEFINED CORRIDINATE TRANSFORMATIONXY - PEN UP MOVE TO XYXY - PEN DOWN MOVE TO XY, BASHED IF LVL LESS THAN DLVL
DETERMINE IF CHANGE IN X GREATER THAN CHANGE IN YCOMPUTE STRAIGHT LINE FUNCTION Y = A + DXWORK FROM LOW TO HIGH IN X ( IN FOLLOWING DO LOOP )LOOP INDEX DETERMINES # OF DASHES ( DASH + SPACE - 8 )RANGE IN X OF A BASH ( DRAW ONLY IF FROM LOW TO HIGH )
ELSE COMPUTE Y VALUES AND DRAW THE DASHSAME AS ABOVE LINES BUT FOR DASHES IN Y DIRECTION
SOLID LINE IF LVL NOT LESS THEN DLVL
L M IF L FALSE CHECK FOR CONTOUR EXIT LEFT SIDEIF SO DRAW THE CONTOUR AND MAKE M TRUE TO SKIP OTHER SIDES
L M IF L FALSE CHECK FOR CONTOUR EXIT UPPER SIDEIF SO DRAW THE CONTOUR AND MAKE M TRUE TO SKIP OTHER SIDES
L M IF L FALSE CHECK FOR CONTOUR EXIT RIGHT SIDEIF SO DRAW THE CONTOUR AND MAKE M TRUE TO SKIP OTHER SIDES
L M IF L FALSE CHECK FOR CONTOUR EXIT LOWER SIDEIF SO DRAW THE CONTOUR AND MAKE M TRUE TO SKIP OTHIR SIDES
DRAW CONTOUR LEVEL LVL THROUGH DEFINED RECTANGLEMAKE SURE CONTOUR DOES NOT PASS IHROUGH A CORNER
CHECK IF CONTOUR ENTERS LEFT SIDEIF SO MOVE PEN TO THE SIDEFIND AND DRAW CONTOUR TO OUT SIDE
CHECK IF CONTOUR ENTERS UPPER SIDEIF SO MOVE PEN TO THE SIDEFIND AND DRAW CONTOUR TO OUT SIDE
CHECK IF CONTOUR ENTERS RIGHT SIDEIF SO MOVE PEN TO THE SIDEFIND AND DRAW CONTOUR TO OUT SIDE
CHECK IF CONTOUR ENTERS LOWER SIDEIF SO MOVE PEN TO THE SIDEFIND AND DRAW CONTOUR TO OUT SIDE
BLOCK594
0\0
NCAR-HAO-MLSO 0:59:14. 6/7/82 DOY (157)158BLOCK600
t*# DASHED-LINES 0 CONSTANT A 0 0 2CONSTANT B0 CONSTANT XO 0 CONSTANT YO 0 CONSTANT XI 0 CONSTANT Y1: XYi ' YO ! ' XO ! i: XYP 2DUP ' Yl ! ' X1 i
XI XO - ADS Y1 YO - ADS > IFY1 YO - XI XO - ' 2! Y1 XI B / - ' A !XO XI :;- IF XO XI ' XO ! ' XI ! THENXI I + XO [UP 8 MOD - DOI XO MAX I 3 + XI MIN 2DUP > IF 2DROP ELSE[UP B */ A + XYO DUP B */ A + XY- THEN 8 +LOOP ELSEXl XO - Y1YO - ' B 2! XI Y1 B / - ' A !YO Yl IF YO Yl ' YO ! ' Yl ! THENY1 1t YO DUP 8 MOD - DOI YO MAX I 3 t Yl MIN 2DUP > IF 2DROF ELSE[UP B */ A + SWAP XYO DUP B */ A + SWAP XY- THEN8 +LOOP THEN XYD ; ;S
DASHED LINES FOR TEKTRONIX
XY - PEN UP MOVE TO XYXY - PEN DOWN MOVE TO XY
[lETERMINE IF CHANGE IN X GREATER THAN CHANGE IN YCOMPUTE STRAIGHT LINE FUNCTION Y = A t BXWORK FROM LOW TO HIGH IN X ( IN FOLLOWING DO LOOP )LOOP INDEX DETERMINES t OF DASHES ( DA'3iH { SPACE - 8 )RANGE IN X OF A DASH < DRAW ONLY IF FROM LOW TO HICH )COMPUTE Y VALUES AND DRAW THE DASHSAME AS ABOVE LINES BUT FOR DASHES IN Y DIRECTION
i*l PRINTER-GRAPHICS OCTAL: PAGE PAD 10000 + PAD DO 120240 I ! LOOP ;: PRINT PAD 10000 t PAD DO CR I 2X 200 TYPE 100 +LOOP ;CODE >PAD 0 S )+ MVV, 1 S )+ MVV, 0 ) 1 MVV, B NEXT: LC! 0 MAX 177 MIN 77 ROT 0 MAX 77 MIN - 200 * +
PAD 2X + . PAD ;DECIMAL
C-"
00 2CONSTANT XYSAV14 ,CODE YSCALE I , 1 ,
8 ,CODE XSCALE 64 , 55 ,2 ,CODE XYORG 64 , 56 ,
P )+ S )- MVV, P ) S )'t MVV, NEXT: XYO YSCALE 2 /
/' XYORG f +
SWAP ' XSCALE 28L / ' XYORG 1+ 8 + SWAP ' XYSAV 2! ;: XYDOT 2 /MOD SWAP IF 126 ELSE 95 THEN SWAP ROT LC! ;: XY. XYO XYSAV X([DOT iDECIMAL
2
3456789
10111213141516
602
123456789
101112131 4
1.,
3456789
10111213L4:15
NCAR-HAO-MLSO 0:59:28. 6/7/82 DOY (157)158I.. OCK606
1 0 CONSTANT XO 0 CONSTANT YO 0 CONSTANT XI 0 CONSTANT Y123 : XY- XYSAV ' YO ! ' XO ! XYO XYSAV ' Y ! 'i XI !4 Y1 YO - 2/ ABS XI XO - ABS > IF5 Yl YO < IF Yl YO XI XO ' XI ! ' XO i ' Yl ! ' YO I6 Yl It YO DO XO XI XO - I YO - Yl YO - I/ +7 I XYDOT 2 fLOOP ELSE8 XI XO < IF Yl YO XI XO ' XI! ' XO i ' Yl I ' YO !9 XI It XO DO YO Yi YO - I XO - XI XO - 1 MAX
10 I SWAP XYDOT LOOP THEN ;1i1 : XYO' XYO ; : XY-' XY- ;12 DECIMAL ;S13141516
THEN
THEN«/ t
608
*t* EAE OCTAL -237 ?THERE 0= IF$ DECIMAL ;S THENS
TEMP OMUL' ASSEMBLER-236 0 MVV, -235 1 MVV, 1 -236 MVV, 0 -237 MVV, 7 RTS,OMUL' ' OMUL HERE OMUL' - MOVE
TEMP ODIV'-236 1 MVV, -237 0 MVV» -240 S )+ MVV»1 -237 MVV. 0 -236 MVV, 7 RTS,ODIV' ' ODIV HERE ODIV' - MOVE
16
610
TEMP 2MUL-236 2 MVVP -235 3 MVVt 3 -236 MVVP 2 -237 MVV, 7 RTSP2MUL ' MUL 1it t HERE 2MUL - MOVETEMP 2DIV-236 3 MVV, -237 2 MVV, -240 S )+ MVVP3 -237 MVVF 2 -236 MVV, 7 RTS,2DIV ' DIV? 1* e HERE 2DIV - MOVETEMP OASHC-236 1 MVV --237 0 MVV, -231 S )+ MVV,0 -237 MVVP 1 -236 MVV, 7 RTS,OASHC ' ASHC B HIERE OASHC - MOVETEMP 2ASHC-236 3 MVVP -237 2 MVV, -231 S )+ MVVs2 -237 MVVr 3 -236 MVV, 7 RTS,2ASHC ' ASHCp 1+ t HERE 2ASHC - MOVE OMUL' DP !DECIMAL iS
123456789
101112131415
OC
123456789
10111213141516
NCAR-HAO-MLSO 059:41. 6/7/82 DOY (157)158612
1 *#t TRANSCENDENTAL DECIMAL ME DROP
3 1. .CONSTANT 1.4 3.14159265 .00000000358979323 o+ .CONSTANT PI5 PI 2 It .CONSTANT 2PI6 PI 2 I/ .CONSTANT PI/TWO7 PI 4 I/ .CONSTANT PI/FOUR8 PI 180. ./ .CONSTANT RADIAN9
: 1/F 1. *SWAP ./ ;
: .SORT.DIUP .DUP 1, .< IF 1. .+.OVER .OVER .- .ABS34 0 DO 2 I/.SWAP .DiJP .DUP .3 .UF .:: IF .OVER .- ELSELOOP .DROP .SJAP .DROP ;
: ./MOD.OVER .OVER ./?TOP FIX SWAP 0:: IF 1 -DUF I* .-- ;
THEN 2 I/
.OVER .+ THEN .SWAP
c((A
THEN
<EXPAND.SWAP .UUP ., °MINUS .SWAF' .UUP14 SWAP DO I I 1+ I/ 2 .UP .*.SWAP .OVER .t .SWAP 2 +LOOP .DROP .SWAP .DROP ;1 <SIN .DIUP 2 ?:.EXPAND ;<..COS 1. I .:EXPAND ;.SINPI/FOUR ./MOD 7 ANDDUP 1 AND IF .MINUS P'I/FOUR .+ THENDUP 0= IF ::SIN ELSE DUF 1 -- IF -COS ELSEDUP 2 = IF <COS ELSE [DUP 3 = IF -:SIN ELSEDUP 4 = IF :SIN ELSE DUP 5 - IF :COS ELSEDUP 6 = IF <COS ELSE <:SIN THEN T[HEN THEN .MINUSTHEN THEN THEN THEN DROP ;
COS PI/TWO .t .SIN i
1011121314
1 6
614
123456789
10111213141516
c616
123456789
10111213141516
BLOCK
I
BLOCK618
1 : <ATAN2 .DUP oDUP .* .DUP3 9 2 DO .OVER .OVER .*4 .0028662257 .*5 *SUAP .0429096138 .* .+6 .SWAP .1065626393 .* .+7 .SWUAP .1999355085 .* .+8 1. .* .* ;9
10111213141516
NCAR-HAO-MLSO 0:59:54. 6/7/82 DOY (157)158
.SWAP LOOP .DROP
.SWAP -. 0161657367 .* .+,SWAP -. 0752896400 .* .+.SWAP -. 1420889944 .* .+.SWAP -. 333331453 .* .+
: oATAN.DUP DABS 1. .> IF 1/F <ATAN .HINUSELSE <ATAN THEN.DUP PI/TWO .> IF PI 0. THEN ;
PI/TWO .+
620
CODE NULL NEXT: ) STATE 0 IF
NULL.+
o/.SIN.COS.SORT
CONSTANTCONSTANTCONSTANTCONSTANTCONSTANTCONSTANTCONSTANTCONSTANT
EXECUTE ELSE Cp
(+(
SIN(COS(SQRT(
THEN IMMEDIATE
IMMEDIATEIMMEDIATEIMMEDIATEIMMEDIATEIMMEDIATEIMMEDIATEIMMEDIATEIMMEDIATE
622
1 **# EPHEMERIS ME DROP23 0. .CONSTANT EL4 O. .CONSTANT RLDST5 0. .CONSTANT RA6 0. .CONSTANT DEC7 0. .CONSTANT DT8 0. .CONSTANT P9 0. .CONSTANT B
10 0. .CONSTANT DIAM11 0 .CONSTANT LO12 TRANSCENDENTAL1314 1900 MOD CONSTANT IYR15 CONSTANT IDAY16 36 M/ CONSTANT ITIME
SOLAR EPHEMERIS
ECLIPTIC LONGITUDERELATIVE DISTANCE TO SUN ( MEDIUM IS 1.0 )APPARENT RIGHT ASCENSIONY RADIANSAPPARENT DECLINATIONe RADIANSEQUATION OF TIME ( RADIANS TO GO BEFORE NOON MEREDIAN PASSAGE )POSITION ANGLE OF SOLAR POLE RADIANSLATITUDE CENTER OF SUNP RADIANSDIAMETER OF SUN, ARC-SECCARRINGTON LONGITUDE OF DISK CENTER. RADIANS( LOAD TRANSCENDENTAL FUNCTIONS .SORT .SIN .COS ETC. i
YEAR IS TAKEN FORM STACKDOY IS TAKEN FROM STACKTIME (32 BIT) TAKEN FROM STACK; 60 CYCLE . 1/100 HOURS
123456789
10111213141516
BLOCK
624
1 0 CONSTANT N2 O0 .CONSTANT UTIHE3 0. .CONSTANT 64 0. .CONSTANT ESO5 0. .CONSTANT AT6 0. .CONSTANT H7 0. .CONSTANT SINXX8 0. .CONSTANT SINXXX9
10 : .ATAN2 ?TOP .F11 : .ASIN 1. .OVEF12 : ,ACOS 1. .OVEF13141516
NCAR-HAO-MLSO 1:00:10. 6/7/82 DOY (157)158
0 CONSTANT0. .CONSTANT0. .CONSTANT0 .CONSTANT0. .CONSTANT0. .CONSTANT0. .CONSTANT0. .CONSTANT
IHRTAMAEEOMzCOSXXCOSxxx
0 CONSTANT IMN0. .CONSTANT TSQ0. .CONSTANT EX0. .CONSTANT D0. .CONSTANT FP20. .CONSTANT EL-Z
/ .ATAN 0' IF PI .+ THEN ;R .DUP .4 .- .SORT ./ ATAN ih .DUP .4 .- .SORT .SWAP ./ .ATAN ;
LOCAL SYMBOL TABLE FOR EPHEMERIS PROGRAMTHESE SYMBOLS DOWN TO IYR WILL BE FORGOTTEN
SC A DETERMINE ATAN(S/C). DETERMINE QUADRANT BY StC SIGNSS A DETERMINE ANGLE WHOSE SIN IS SC A DETERMINE ANGLE WHOSE COS IS C
626
1 ' N
3 ' IHR4 ' IMN5 ' UTIME6 ' D7 ' T8 ' TSO9
10 ' G111213 ' AM141516
IYR 1 - 4 / IYR 1 - 100 /IYR 299 + 400 / + SWAP !ITIME 100 / SWAP iITIME IHR 100 * -- SWAP !.0416666667 IHR I 4+( .000694444444 IMN I* ) .!365. IYR I* N IDAY + FLOAT .4 .5 .-- UTIME .4 .!D 36525../ .1T T .* .!
TSO $( 5.23598776 E -8 T .* 7.90634151 E -6 .+ )+( 8.21498554 E -7 D .* ) 4.90822941 .+ .!
.0172019698 D .*-( TSO *( 5.23598776 E -8 T .4 2.61799388 E -6 .f ) )6.25658352 .+2PI ./MOD DROP .!
628
1 ' EX .016751042 -( T l( 1.26 E -7 T .* 4.18 E --5 .4 ) ) .3 ' ESO EX EX .4 .!45 ' AE ESO *( SIN( 3 AM I* ) .375 .4 EX .46 t( SIN( 2 AM I* ) 2 I/ ) )7 +( EX -( ESO EX .125 .4 .4 ) SIN( AM ) .t )8 AM .+ .:9
10 ' COSAE COS( AE ) .!11 ' AT COSAE EX .-- 1. EX COSAE .4 .- ./ .ACOS .!121314151 6
0\Ln
G IS THE LONGITUDE OF PERIGEE
AM IS MEAN ANOMALY
EX IS EXCENTRICITY
AE IS EXCENTRIC ANOMALY
AT IS TRUE ANOMALY
NCAR-HAO-MLSO 1:00:27. 6/7/82 DOY (157)158
AE PI .> 4 #IF$AT ?TOP .DROP 0 ' IFS' AT 2F'I AT .- .!ELSES' ATTHENSAT ?TOPI EL' RLDST' DIAM
' EOM
PI AT .- .8 ::>LINE THENS.DROP 1 < IFS ' AT. AT PI .t .1 THENS 8 >LINEG AT .+ 2PI ./MOD DROP .!( 1. ESO .- ) /( COS( AT ) EX .* 1. .+ ) .11922.36 RLDST ./ .!
T *( T ( T *( 8.77900614 E -9 )-( 2.86233997 E -8 ) ) -( 2.27110969 E -4 ) )+( 0.409319748 ) I!
' DEC SIN( EOM ) SIN( EL ) .$ .ASIN .!P2 COS( EL ) COS( DEC ) ./ .!RA F'P2 .ACOS .!
' N 1. EL PI/TWO ./ .+ FIX SWAP tN 1 < N 4 > N 2 += f IFS ' RA RA PI .tN 3 = IFS ' RA F'I RA .- ! THENSN 4 = IFS ' RA 2PI RA . I-- . THEN$' H TSO .675582047 E -5 .o D .0172027913 o.
1.73993589 . 2PFI ./MOD DROP .!' DT RA H - F'I - . !L[T -4. .< IFS ' DT DT 2PI .+ .! THENS· Z 2.85652803 .000243613057 IYR 50 + I*' EL-Z EL Z .- .!
CONVERT ECLIPTIC COORDINATES INTO EQUATORIAL COORDINATESEOM IS MEAN OBLIQUITY OF THE ECLIPTIC
. THENS
-Z SIN( EL-Z ) .*-Z COS( EL-Z ) .!· .126199 COSL--Z . !* SORT( 1. SIN-B SIN-B . .-- ) .!
.99200495 COSL--Z .* SINL--Z .MINUS .AlAN2+( .247564433 *( 14980.5 D .- ) 1.96813799 .t )2F'I . /OD DROP .SIN-B COS-B .ATAN2 ..126199 SINL-Z . CO(S-- ./ .ASIN-.397842 P2 .5 .ASIN .f .!
IDAY ;S
BLOCK630
123456789
10111213141516
632
1
3456789
10111213141516
634
I ' SINL-2 ' COSL3 'SIN-I4 ' COS-156 ' LO789 ' B
10 ' P1112 FORGET13141516
B
BLOCK636
1 t*t PROMINENCE-MONITOR OCTAL
23 MONITOR ' TTY Q + #TEMP MTTY45 <: OPAGE TYGET 00 MTTY 2!6 WATCHER DOES QUIT\ APAGE i78 OPAGE ' PAGE !9 J
10 <: 99NL 143 0 DO NL LOOP i1112 : /LTC PAGE [ TURN LTC OFF313 1 0 DO TICKS 99NL TICKS - 0=
141516
NCAR-HAO-MLSO 1:00:42. 6/7/82 BOY (157)158
: P-MON ;
0 SPLIT !
+LOOP PAGE 99NL
638
1 OCTAL2 0 CONSTANT ?CTTE34 <CODE CBOOT HERE HERE HERE JMP» 24 2 MOVE PF' !
5 HERE 12 U! 0 -140 WU MVVv 0 ) CLR,6 1 7 MVV» TEMP 3$ 1 0 WU ADD, 2 1 )+ MVV, B
7 TEMP 2$ 0 ) I )f MVV. B8 TEMP 1$ 0 ) 100240 t KITs 1$ -0 NOT END 0 IF
9 THEN 2 INC 2$ '::0O NOT END
10 2 ) 2 0 B) MVV, B 1$ 0 END11 HERE 3$ - 3$ t1 W! 017775 , 002415 ,
1213 : CBOOT /LTC CBOOT ;141516
7 CLK,
640
1 OCTAL ASSEMBLER HERE #TEMP CBT
2 000240 , 0 CLR, 1 36000 WU MVV,
3 BEGIN 1 )+ 0 )+ MVV, =0 END 36010 JMPF
4 0 CLR» 1 -140 WU MVHV 1 ) 5 5 MHVV
5 BEGIN BEGIN I ) 240 t BIT, -0 NOT END
6 36000 WU 0 CMP, >0 NOT IF7 =0 IF 1 ) 20 t BIS, 0 INC, ELSE 0 )+ -137 MVV, B THEN
8 SWAP 0 END9 THEN ' ?CTTE 1 t MVV, 7 20 WU MVV,
10 0 ,11121314151 6
ICK NCAF--HAO-MLSO 1:00:52. 6/7/82 [OY (157)158
OCTAL6 ,CODE 1WIND 437 ,1 ,CODE OWIND 37 ,
-140 P ) MVV, BEGIN -140 40 * BIT, -0 NOT END NEXT6 ,CODE 1WRITE 403 ,1 *CODE OWRITE 3 , 0 -140 W HMVV» 0 ) ) MVV
2 S )t+ MVV 1 S )+ MVV, 2 ASL» I ASL,BEGIN BEGIN 0 ) 240 { BIT» =0 NOT END2 TSTs <0 IF NEXT THEN =0 IF 0 ) 20 DBIS, ELSE-137 1 )t MVV. B THEN 2 DEC, 0 END
: BACKUP C WARNING: BACKUP ON LEFT CASSETTE] PKEY OWINDCBT 100 OWRITE CDT 100 OWRITE 0 36000 OWRITE OWIND ;
lE CIMAL0 INTEGER #LOOP0 INTEGER #FRAME0 CONSTANT OUT: ?OUT ?KEY DUP O= IF DROP OUT THEN i: /LOOP 16384 ' OUT1 STATUS PAGE PLEX WATCHER DOES WATCH\;
OCTAL76002076002'1760030760034760040
2/2/2/2/2/
CONSTANTCONSTANTCONSTANTCONSTANTCONSTANT
: RDY 0 DO DPF40 CYCLES i
W20W24W30W34W40
7600227600267 0032760036
2/2/2/2 /
CONSTANTCONSTANTCONSTANTCONS rANT
W2'2W26W32W36
W20 @ AND O= 0=
+L.OOF' ROF [RELEASE
<CODE RESET 5 , NEXT: RESET MONITOR DOES Q1IIf\
RESET 60 CYCLES /KEY
L. O642
123456789
10111213141516
644
133456789
101112134
I d.
.466 '16
C0
123456789
10111213141516
]BLOCK NCAR-HAO-MLSO 1:01:02. 6/7/82 DOY (157)158
648
1 ALIAS PRIMITIVE ' SP ' PRIMITIVE 12 0 INTEGER #PRIMITIVE3 PF' PAUSE PF'GET ' PRIMITIVE ! DUP #PRIMITIVE !4 [STEPS #PRIMITIVE ? C STEPS 3 i5 CSIX tFPRIMITIVE ? t SIX 3 ;6 CEIGHT tPRIMITIVE ? C EIGHT ] i7 CF tPRIMITIVE ? C CF 3 ;8 PICTURE C PICTURE ]39 TVFLIP [ TVFLIP ]
10 CACFLIP C ACFLIP 3 ;11 CHALLE [ HALLE ] ;12: C/HALLE C /HALLE ];13 C[BP C BP 314 : [/BP /BP 31516
650
1 OCTAL2 5 tCODE LED 177777 DUPF' DUF', DUP , DUP , ,3 0 S )+ MVV, 1 0 MVV, 1 ASR, P 1 ADD, 1 S )+ MVVI4 0 ASR 1IC NOT IF P ) 17 *t IC. B ELSE5 P ) 360 * BIC, B I ASL» 1 ASL, I ASL, I ASL» THEN6 P ) 1 BIS» E P 1 t BIC, W40 ' LED - P) P ) MVV» NEXT7 \8 # ILED DUP ROT + SWAP DO C9 DUP 0= IF 17 ELSE 12 /MOD SWAP THEN
10 I LED LOOP DROP ;111213141516
652
1 DECIMAL2 : LEDS W40 ?THERE IF3 #FRAME e 4 16 ILED 15 15 LED4 TIME 2DUP 1 1:00 MS/ 2DUP 1:00 M/ 1:00 M* D- DROP5 100 + 2 9 #LED6 3600 M/ 1:00 /MOD 100 + 2 13 ILED 100 t 2 11 fLED7 ' TIME 2 + 2@ 4 5 fLED 2 3 #LED 0 3 0 #LED8 THEN i9
1011121314151[6
NCAR-HAO-MLSO 1:01:14. 6/7/82 DOY (157)158
OCTAL: HALLE ' [HALLE P!
20 WU20 CLI 20 W34 OR!: /HALLE ' [/HALLE P!
20 W20 CL! 20 W34 CL!
BP ' [BPP!4 W20 CL! 1 W34 OR!
: /BP ' [/BP PI4 W20 CL! I W34 CL!
: CF ' CCF P!2 f 2X W34 e 177761 AND
20 RDY ;
20 RDY ;
4 RDY ;
4 RDY ;
+ 10 W20 CL W34 ! 10 RDY ;
OCTAL: STEPS ' [STEPS P! 20 $ W36 e 17 AND + W36 !
20000 W20 CL! 20000 RDY i
: PICTURE f [PICTRUE P! 1 tFRAME +! LEDS1 W36 CL! 10000 U20 CL!' 10000 RDY ;
TVFLIP ' CTVFLIP P!100000 W20 CL! 2 W36 OR!
ACFLIP ' CACFLIP P!100000 U20 CL! 2 W36 CL!
100000 RDY ;
100000 RDY i
OCTAL 0 CONSTANT 8STN 0 CONSTANT BOLD: EIGHT 10 NOD ' [EIGHT P! 8STN ' 8OLD ! ' 8STN !
8STN BOLD > IF BSTN BOLD - 10 8STN - BOLD +ELSE 10 BOLD - 8STN t SOLD 8STN - THEN
< IF 400 ELSE 0 THEN 8STN 40 * + W34 @ 177037 AND +40 W20 CL! W34 ! 40 RDY
o SIX 6 MOD ' CSIX P!1000 * W34 @ 170377 AND t1000 W20 CL! W34 ! 1000 RDY ;
BLOCK654
123456789
10111213141516
656
123456789
10111213141516
658
CD0
1234567B9
10111213141516
NCAR-HAO-MLSO 101:26. 6/7/82 BOY (157)158
: 6DESCRIPTDUP 0= IF I CAL WEBGE ] ELSE UF' 1 = IFDUP 2 = IF C CLEAR-DISK ] ELSE DUP 3 = IF[UP 4 = IF [ (OCCULTER) 3 ELSETHEN THEN THEN THEN THEN TTRELEASE DROP
: BBDESCRIPT[UP 0= IF E 6555 ANGS. 3 ELSE [UP 1 = IFDUP 5 = IF C -8 A. BLUE 3 ELSE DUF 6 = IFBUP 7 = IF [ +8 A. RED 3 ELSETHEN THEN THEN THEN THEN TTRELEASE DROP
[
I
C
I
OCCULT)2 R 3 ELSEOCCULT)1.253 ELSERETICLE 3
6540 ANGS. 3 ELSE6563 HALPHA] ELSE(BLOCKED) 3
J DECIMAL. : FRAME STEPS PICTURE ;3 : IBLANK 00 ' TIMING 2! 0 FRAME ;4 : 3BLANKS IBLANK PICTURE PICTURE ;5 : 6BLANKS 3BLANKS PICTURE PICTURE PICTURE ' FRAME !(BOOT) i6 : BLANKS IBLANK 19 0 DO PICTURE LOOP BL ;78 : HIN /BP 0 CF HALLE C HALLE IN] CR ;9 : HOUT /BPF' 0 CF /HALLE [ HALLE OUT] CR ;
1011 : ACF ACFLIP C FILM MOIE]3 CR ;12 : TVF TVFLIP [ VIDEO MODE3 CR ;13141516
664
DECIMAL100 CONSTANT S1200 CONSTANT S2 274 CONSTANT S'385 CONSTANT S5 450 CONSTANT S6690 CONSTANT S8 830 CONSTANT S90 CONSTANT DEXP0 CONSTANT lEXP 0 CONSTANT 2EXP1 ,CODE ?AM 0 , 7 I E) P ) MtVV: /AM 175 ' ?AM !
S4 ' IEXP ! S7 ' 2EXF ! S ': AM 160 ' ?AM !
55 ' 1EXP ! S8 ' 2EXF ! '9 '/AM: 3FRAME 1EXP FRAME 2EXP FRAME
335 CONSTANT S£4533 CONSTANT S7957 CONSTANT S10
0 CONSTANT 3EXPB HEXT
3EXF ! S7 /
[EX:
3EXP ! S8 ' DEXF
3EXP FRAME ;
ULOCK660
123456789
101112131415
' 62
lh--
123456789
10111213141516
1:1 ! ;
F ! i
BLO666
123456789
10111213141516
CK NCAR-HAO-MLSO 1:01:39. 6/7/82 DOY (157)158
DECIMAL: 8STATION DUP EIGHT 8DESCRIPT CR8 8BLACK 3 8STATION i: 8HALPHA 6 8STATION 3
8VFILM C VELOCITY SCAN] CR 2EXP STEPS7 6 5 3 0 DO EIGHT PICTURE LOOP ;
: 8VFILM3 C 3 EXP VELOCITY SCAN] CR 7 6 53 0 DO DUP EIGHT C ] 8DESCRIPT 3FRAME LOOP CR8VTV 7 6 53 0 DO DUP EIGHT E 3 8DESCRIPT DWELL LOOP CRC VELOCITY SCAN PAU3 CR 8HALPHA ;
668
1 DECIMAL2 : 6STATION DUP SIX 6DESCRIPT CR i34 : 6CAL. 0 6STATION i5 : 6DISK 2 6STATION ;6 : 6LIMB 4 6STATION ;78 : LIMB 6L.IMB HOUT 8HALPHA ACF ;9 : DISK HIN 8HALPHA 6DISK ACF i
1011 : ACLOOK 1 0 DO LIMB 3600 CYCLES DISK 3600 CYCLES OLOOF i12 : SHOW 1 0 DO ACF 1800 CYCLES TVF 1800 CYCLES OLOOP13141516
670
1
34567B9
10111213141516
OCTAL: lEADER /KEY 0 ILOOF 0 ' OUT ! CR
IBLANK 8HALPHA HOUT iHERE 14 + S:TEMP 'LOOP'LOOP 7 + tTEMP 'FRAME.: --- PAU ... PAU AFTER LOOP FRAME t \#: (LOOP) 00 ' TIMING 2! ?OUT IF#LOOP e 2LITERALILOOP e 12 : IF 177400 'AND 240 + '::SWAP< THEN 'LOOP !IFRAME e 144 /MOD 2L ITERAL 'FRAME I 2LITERAL 'FRAME f1+--- PAUCR [ PAUl AFTER LOOF' ] tLOOP ?CR BL 120001 HERE ! QUESTION THEN1 tLOOP +t ;
--4ts)
NCAR-HAO-MLSO 1:01:52. 6/7/82 DOY (157)158
TEST Si FRAME S2 FRAME S3 FRAME S4 FRAME S5 FRAMES6 FRAME S7 FRAME S8 FRAME S9 FRAME S10 FRAME ;
1-TEST CR I EXPOSURE TEST FOR LIMB CALIBRATION ] CR6CAL 8HALPHA HOUT ACF TEST TVF ;2-TEST CR C EXPOSURE TEST FOR DISK CALIBRATION ] CR6CAL 8HALPHA HIN ACF TEST TVF ;3-TEST CR C EXPOSURE FOR GRADED SEQUENCE ON DISK 3 CRDISK TEST TVF ;CALIBRATE --- CALIBRATE\ ACF 1BLANK 2-TEST 3-TEST BL ;FOCUSTEST DISK DEXP FRAME PICTURE PICTURE
LIMB 2EXP FRAME PICTURE PICTURE i
1 : PA2 : OCCULT3 : 3DISK456 : ?VERSION789
10111213141516
TVF HIN 5 SIX 8HALPHA ;RESET HIN TVF 8HALPHA 6LIMB LEDS ;DISK S9 FRAME DEXP FRAME S3 FRAME i
CR C VERSION: 6-JUN-82 PHS3]
"-U41
676
123456789
10111213141516
DECIMAL: PTRL 6LIMB LEADER
?AM --- AM PATROL\TICKS 1 0 DO (LOOP)LIMB 3FRAME TVF 3600 SYNCDISK DEXP FRAME TVF 3600 SYNCLIMB 8VFILM TVF 8VTV 7200 SYNC OLOOP ;
: PATROL MONITOR DOES PTRL\ ;
BLOCK672
1:
3:45 :67:89 :
10:111213141516
674
BLOCK NCAR--HAO-MLSO 1:02:01. 6/7/82 DOY (157)158
678
1 DECIMAL2 : HAA 6L IMB LEADER3 ?AM --- AM HALPHA\4 TICKS 1 0 DO (LOOP)
5 LIMB 3FRAME TVF 3600 SYNC6 DISK DEXF FRAME TVF 5400 SYNC7 6LIMB HOUT 8HALPHIA 5400 SYNC OLOOF i89 : HALPHA MONITOR DOES HAA\ {
10111213141516
680
1 DECIMAL2 I ,LPTRL 6LIMB LEADER3 ?AM ---- AM LIMBPATROL\4 TICKS 1 0 DO (LOOP)5 LIMB 3FRAME TVF 3600 SYNC6 ACF 2EXP FRAME TVF 3600 SYNC7 ACF 8VFILM TVF OVTV 7200 SYNC OLOOP ;89 : LIMBPATROL MONITOR DOES LPTRL'.
10111213141516
682
I DECIMAL2 : OFFSETUP OCCULT3 E WANT 2 RADII OFFSET] (i-OR-N) IF 1 ELSE 3 THEN SIX
4 E REPOSITION IMAGE] PKEY HOUT E REFINl OCCLt.!lING] [PKEY
56 : 10FF LEA.DER7 ----- 1OFFSET\8 TICKS 1 0 ,DO (LOOP)9 ACF 3FRAME TVF 3600 SYNC
10 ACF 2EXi' FRAME TVF 1800 SYNC11 ACF 8VFILM3 7200 SYNC12 TVF 8VTV 9000 SYNC OLOOP'1314 8 1OFFSET OFFSETUP MONITOR DOES 10FF\ i1516
BLOCK NCAR--HAO-MLSO 1:02:11. 6/7/82 DOY (157)158684
1 DECIMAL2 : 20FF LEADER3 --- 2OFFSET\4 TICKS I 0 DO (LOOP)5 ACF 3FRAME TVF 3600 SYNC6 ACF 2EXP FRAME TVF 3600 SYNC7 ACF 8VFILM TVF 8VTV 7200 SYNC OLOOP i89 2OFFSET OFFSETUP MONITOR DOES 2OFF\
10111213141516
686
1 DECIMAL2 : SPTRL 6LIMB LEADER3 --- SLOW-PATROL\4 TICKS I 0 DO (LOOP)5 DISK DEXP FRAME LIMB 2EXP FRAME TVF6 12 0 DO 3600 SYNC LOOP OLOOP i78 : O-OBS /KEY 0 ILOOP ! 0 ' OUT ! CR 019 --- I-OBS\
10 TICKS 1 0 DO (LOOP)11 ACF PICTURE TVF 3600 SYNC OLOOP ;1213 : SLOW-PATROL MONITOR DOES SPTRL.\ ;14 : I-OBS MONITOR DOES O-OBS\ i1516
68U
I : FILCAL CR 7 6 52 3 0 DO DUP EIGHT C ] 8ODESCRIPT TEST LOOP CR3 1 FILCAL IS PAU] CR ,45 I: IIOCAL ACF CR I 3MM STOP MUST BE IN PLACE 3 PK.EY6 --- 1BI(3CAL\7 1BLANK 6DISK HOUT FILCAL CR C iBIOCAL IS PAU ] BL89 : 2BIGCAL ACF CR 1 36MM STOP MUST BE IN PLACE I PKEY
10 --- 2BIGCAL\11 1BLANK lHIN 6DISK FILCAL CR [ 2BIGCAL IS PAU I3 L ;1213141516
CK NCAR-HAO-MLSO 1:02:23. 6/7/82 DOY (157)158
DEC I MAL0 CONSTANT PANGLE
00 2CONSTANT E-TIME10P372 3600 1000 MH/ 2CONSTANT L-SITE24,000 3600 1000 H»/ 2CONSTANT 24HOURS: HA 60 M*TIME 1 60 M*/ D+ E-TIME D- L-SITE D-DUP 0< IF 24HOURS D+ THEN
: ET 60 * SWAP 3600 M* ROT Mf ' E-TIME 2! ;
OBLK 31 + tTEMP MBLK: INFO FLUSH
TICKS MBLK BLOCK DUP ' TIME 4 MOVETICKS ROT - TIME ROT M+ ' TIME 21DUP 4 + e ' PANGLE ! 5 + 2e ' E-TIME 2! ;
RSAMPLE 7 DP +!
202o
1 XYC2 XYC3 XYC4 XYC
[
EEE[
P-ANGLE3EPH-TRANS3DOC NOW]DDC 2 MINI
3 6 XYC C TIMING]
34333537353838343532
0 8 XYC C REGISTERS]8 0 DO CR W20 I + 2X .0
I XYC [2 XYC C3 XYC C4 XYC I5 XYC C6 XYC C7 XYC [8 XYC C9 XYC [
11 XYC [
LOOP #3FRAME ]HALLE ]SIX]EIGHT]BP]CF]MIRROR]STEPS]PRIMITIVE]
LOOP DECIMAL ;
694
1 DECIMAL2 <: OWATCH3 PANGLE DUP 1:00 M*4 E-TIME5 0 HA 15000 3600 M*/6 2 HA 15000 3600 M*/7 TIMING 1 60 M*/8 OCTAL 8 0 DO W20 I9 ;
1011121314
1 I.1.6
10 1 XYC10 2 XYC10 3 XYC10 4 XYC10 6 XYC+ e 79
:: S 100 60 */ 7 2 .D
10 3 D.D10 3 Do.
I + XYC .0 LOOP DECIMAL
D LO690
123456789
10111213141516
692
1 DECIMAL2 0 INTEGER34 <: SCREEN56789
101112131415 OCTAL16
BL[ICK NCAR-HAO-MLSO 1:02:35. 6/7/82 BOY (157)158
696
1 OCTAL2 3 <,CODE W34R RSAMPLE 6 + W,3 1 <,CODE W36G RSAMPLE 7 + WU S -) P )+ ) MVV, NEXT
45 <: IWATCH 74 26 XYC C <]6 LOOF'P 53 1 XYC . IFRAME e 53 2 XYC I C ]7 ' PGET e 0= IF W20 RSAMPLE 10 MOVE8 w34e 20 AND 53 3 XYC IF f IN I ELSE C OUT] THEN
9 U34Q 7000 AND 1000 / 53 4 XYC BLDUIP . 6DESCRIPT10 W34Q 340 AND 40 / 53 5 XYC DUJP . 8DESCRIPT
11 W34g I AND 53 6 XYC IF C 13 ELSE [ 1/2] THEN [ ANGSTROM ]
12 W36Q 2 AND 53 10 XYC IF C TV ] ELSE I ACME] THEN
13 W36@ 20 / 7777 AND 53 11 XYC . C I THEN
14 53 13 XYC PRIMITIVE TTRELEASE ;1516 : WATCH SCREEN 1 0 DO 0 0 XYC .UT OWATCH 1WATCH OLOOP ;
698
1 DECIMAL2 : SETUP STATUS3 1 0 DO [ FRAME t OK] (Y-OR-N) O= IF4 [ ENTER FRAME 3 ] #KEY tFRAME ! OLOOP THEN LOOP5 1 0 DO C TIMEIDATE OK] (Y-OR-N) 0= IF6 [ ENTER MTH DAY YR] CR IKEY IKEY #KEY DAY7 [ ENTER HR MIN SEC] CR IKEY IKEY #KEY UT OLOOP THEN LOOP
8 1 0 DO [ PANGLE OK] (Y-OR-N) 0= IF -4
9 C ENTER PANGLE (MUST DECIMAL. POINT)] #KEY -
10 ?TOP *ABS 60 I* .5 .f FIX t11 ' PANGLE ! OLOOP THEN LOOP12 1 0 DO C EPH-TRANS OK] (Y--OR-N) 0- IF
13 [ ENTER HR MIN] CR #KEY IKEY ET OLOOF THEN LOOP ;
141516
700
1 OCTAL2 : PROMPT3 -115 ?THERE IF 100 -115 ! QUESTION THEN
4 PAGE C TURN LTC ON] I CYCLES5 ?CTTE IF OWIND -LOG ELSE INFO +LOG THEN6 SETUP ;7 :: <INIT ERASE-CORE OPERATOR DOES PROMPT\ i
8 CODE INIT9 HERE HERE HERE JMhP. 20 MOVE DP !
10 5 r ' GET CLRr PGET CLRv ' TTGET CLR,11 U OPERATOR WI MVV. BEGIN U 2 U W) MVV, U ) 100000 J MVV.
12 U OPERATOR Wt CMP, =0 END U ) INC,13 R RO U) MVV, S SO U) MVV, FLT U) FO U) MVV,14 I <INIT WI MVV, NEXT1516
BLOCK702
1234567
910111213141516
<CODE REBOOT OCTAL5 , 0 CLR,2 -4004 WU MVV. 2 ) 2 1 MVVW2 ) INC. BEGIN 2 ) TSTP <0
5 p BEGIN 2 ) TSTP >00 )+ 2 2 W) MVV, =0 END 7 17
: REBOOT /LTC REBOOT
TEMP DPSAVE 36000 DP ! ASSEMBLI
5 * 0 CLR,2 -4004 Ut MVV, 2 2 2 ! MVVP2 ) INC, BEGIN 2 ) TST» <0
5 , BEGIN 2 ) TST >.00 )t 2 2 W) MVV, =0 END
NCAR-HAO-MLSO 1:02:50. 6/7/82 DOY (157)158
BEGINENDENDWU MVV,
ER
BEGINENDEND
704
123456789
1011121314
OCTAL1 0 HVV, 1 36000 W1 APD[,BEGIN I -) 0 -) MVV, 0 TST, =0 END r3 OBLK I MVV»BEGIN 0 777 WU BIT» -0 IF36000 WU 0 CMP, =0 IF
BLOCK 4 t ' DR-READ 1 - WU MVV,' BUFFER 1+ ' DR-READ 4 + WU MVV,7 ' INIT WU MVV,THEN -4003 3 MVV, 3 INC, 2 ) 2 # MVV»2 ) INC, BEGIN 2 ) TST7 <0 END2 ) CLR» BEGIN 2 ) TSTp B <0 END0 )+ -4002 MVVY 0 END 0 ,
HERE 2 + JMP,
0l00
THEN
1516
706
I DECIMAL
3 -: SYSSAVE 32 0 DO4 I 512 1 I OBLK + BLOCK UPDATE 512 MOVE LOOP FLUSH I5 DPSAVE DP I SYSSAVE EXECUTE67 CR I P-MON SYSTEM LOADED]8 iS9
1011121314I
H:1OCK NCAR--HAO-MLSO 1:03:02. 6/7/82 DOY (157)158708
1 **# MENU PAGE ?VERSION2 CR C CORE BOOT: ODT 40G33 CR C DISK BOOT: REBOOT (LTC OFF) (ODT 446)34 CR C CTTE BOOT: CBOOT (LTC OFF) (ODT 500)]5 17 7 XYC C GOOD MORNING ! ]6 16 8 XYC C TODAY'S P-MON MENU 3 CR7 C OBSERVING WORDS CALIBRATION WORDS 3 CR CR8 C 1-OBS TEST ] CR9 C LIMBPATROL CALIBRATE 3 CR
10 [ AM PATROL IBIGCAL 1 Ck11 C /AM PATROL 2BIGCAL 3 CR12 C DISK I CI<13 [ SLOW-PATROL 3 CR14 C HALPHA 3 CR15 CR PKEY STATUS ;S16
710
I (turn P-Mon power strip off) opertator does what's ui-iJerscured2 (turn computer Power strip or.)3 (turn computer PWR or,)4 (turn LTC switch off)5 (switch HALT then ENAB)6 :x>::.::>: where: ;;:>:>::-: can be anrthinr7 BeO/.::x::::<: 5<lf-> ::f>` is linefeed k.ey8 000002/>:xx>:;x>: 5000<lf> : <cr> is return rke9 000004/.:.4<xxx 1 2702 -:'.1 f:
10 000006/>xx>:x>>:> 167770<1f>11 OOOOO/'<xx:.:':: 12712<1f>12 000012/>:::x>x>>x> 2<lf>13 000014/::::vxxxx 5212<lf>:14 000016/x>:;:>:>xx 5712<1f>15 000020/x;<x<;x::x 2376<l' f>16 000022/xx>::;>x;> 5< 1 f
18:09:30. 2/8/81 DOY 39P-ANGLE -14:55:00. -14.92
EHP--TRANS 12:14:00.DDC NOW 293.304
DDC 2 MIN 293.808
TIMING 0:03:45.
REGISTERS160020 137667160022 177777160024 177777160026 177777160030 000000160032 000000160034 174704
LOOP 3FRAME t 1622
HALLE OUTSIX 4 (OCCULTER)
EIGNT 6 6563 HALPHABiF 1/2 ANGSTfOMCF 0
MIRROR TVSTEPS 534
PRIMITIVE 6 EIGHT
712
000024/n;xx:;<;x 5712'.1 f>000026/x>:::>;: >: 3776< f>000030/:xx::xx: 16220<1f>000032/>:>:x>:>:>: 4< lf:>000034/.xxxx:x 1367 1 f>000036/:.;:::;.::; OG (15 second delay)TURN LTC ON (turn LTC on)
FRAME * OK (Y OR N) ? NENTER FRAME * nnrin<cr> (nnnn corresponds to acme counter)TIMEIDATE OK (Y OR N) ? Y (usua11l ok when booting)
PANGLE OK (Y OR N) ? YEPH-TRANS OK (Y OR N) ? YBIENRESET (turn on instrument Power strip) <cr>systepm and instrument are ready
160036 020556
VELOCITY SCAN PAU6563 HALPHA
/LOOP BIEN--- STOPPING PATROL TO DO ACLOOK BIENACLOOK-
123456789
10111213141516
BLOCK NCAR-HAO-MLSO 1I714
1 Itt SCAN-LOG /KEY DECIMAL : TASK 1 BLOCK 510 + e i2 TASK FORGET TASK DUP 0= IF$ DROP iS THENS CONSTANT TASK3 PAGE ['SCAN-LOG3] JUNK 1 BLOCK 504 + TIME. ; JUNK4 0 INTEGER FRMT OCTAL5 0 INTEGER ERRORS6 0 INTEGER IHEAD 777 , 40 DP .H7 i 1 1HEAD + B ia8 STIME 7 It 6 1i 1 74 M*/ :S .9
1011121314151. 6
716
1 DECIMAL2 I JUNK TASK 0 DO3 I 16 /MOD 130 + BLOCK SWAP 32 $+ iHEAD 32 MOVE4 20 1# IF CR5 I IF C 3 ERRORS ? C ERRORS]6 20 TAB PKEY THEN7 0 ERRORS 8 0 FRMT I8 C t$t TAPE UNIT 3 1 It PERIOD IHEAD 6 + TIME. C 3tt J9 3 lt 0= IF C UN] THEN C COMPRESS 3 THEN
10 16 1* ERRORS +!11 15 It 1000 - IF CR STIME12 15 1i 10 / * C TILT CAL.3 0 FRMT 8 ELSE13 FRMT e 5 MOD 0= IF CR THEN 1 FRMT +! STIME THEN14 LOOP i15 JUNK CR C 3 ERRORS ? I ERRORS316 FORGET TASK PKEY STATUS iS
03:21, 6/7/82 DOY (157)158
00C)
718
1 Ott PEEK /KEY DECIMAL 0 CONSTANT TASK2 5000 CONSTANT HISTORY-BLOCKS3 HISTORY-BLOCKS CONSTANT HBLK4 365 4 t 1+ CONSTANT 4YEARS5 : 80DOY 80 MODl6 DUP 365 * SWAP 3 + 4 / +7 41-;8 : <DOY> 4YEARS MOD DUP 365 :> IF 1 -9 i ?HIST0 DUP 2X HISTORY-BLOCKS + BLOCK 8 +I1 SWAP <DOY> - 2/ 0= ;2
PAGE C PEEK] -UT CR
365 MOD THEN 1+ ;
e
13141 5J 6
1
11
NCAR-HAO-MLSO 1:03:33. 6/7/82 DOY (157)158
: PRINTCR C EXTRA:]HBLK 81 + BLOCK DUP B SWAP 6 + TIME. C CHAN 3CR CR C OIMAGE:]HBLK BLOCK DUP 8 SWAP 6 + TIME. C CHAN 3CR C 1IMAGE;]HBLK BLOCK 256 + ['UP B SWAP 6 + TIME. C CHAN 3 .CR CR C HISTORY:] ' TIME 2 + 28 TIME 3600 M/ 10:00 < -SWAP 80DOY ' TASK ! TASK ?HIST IFTASK 2X HISTORY-BLOCKS + BLOCK[UP e SWAP 6 + TIME. C CHAN 3 .ELSE C NONE ] THEN iPRINT CR FORGET TASK PFKEY STATUS ;S
BLOCK720
123456789
10111213141516
00H-A