the high altitude observatory

84
NCAR/TN-197+STR NCAR TECHNICAL NOTE August 1982 The High Altitude Observatory Multi-User FORTH System Listing P.H. Seagraves HIGH ALTITUDE OBSERVATORY NATIONAL CENTER FOR ATMOSPHERIC RESEARCH BOULDER, COLORADO 9 I l I - - .

Upload: others

Post on 16-Oct-2021

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: The High Altitude Observatory

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 - - .

Page 2: The High Altitude Observatory
Page 3: The High Altitude Observatory

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

Page 4: The High Altitude Observatory

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

Page 5: The High Altitude Observatory

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

Page 6: The High Altitude Observatory

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

_ __

Page 7: The High Altitude Observatory

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. .

Page 8: The High Altitude Observatory

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

Page 9: The High Altitude Observatory

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

Page 10: The High Altitude Observatory

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

Page 11: The High Altitude Observatory

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 .

Page 12: The High Altitude Observatory

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

Page 13: The High Altitude Observatory

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

Page 14: The High Altitude Observatory

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

Page 15: The High Altitude Observatory

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

Page 16: The High Altitude Observatory

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

Page 17: The High Altitude Observatory

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

Page 18: The High Altitude Observatory

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

Page 19: The High Altitude Observatory

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

Page 20: The High Altitude Observatory

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

Page 21: The High Altitude Observatory

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

Page 22: The High Altitude Observatory

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

Page 23: The High Altitude Observatory

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

Page 24: The High Altitude Observatory

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

Page 25: The High Altitude Observatory

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

Page 26: The High Altitude Observatory

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

Page 27: The High Altitude Observatory

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^.

Page 28: The High Altitude Observatory

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

Page 29: The High Altitude Observatory

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'

Page 30: The High Altitude Observatory

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

Page 31: The High Altitude Observatory

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

Page 32: The High Altitude Observatory

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

Page 33: The High Altitude Observatory

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'

Page 34: The High Altitude Observatory

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

Page 35: The High Altitude Observatory

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

Page 36: The High Altitude Observatory

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

Page 37: The High Altitude Observatory

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::^

Page 38: The High Altitude Observatory

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

Page 39: The High Altitude Observatory

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

Page 40: The High Altitude Observatory

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

Page 41: The High Altitude Observatory

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

Page 42: The High Altitude Observatory

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

Page 43: The High Altitude Observatory

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

Page 44: The High Altitude Observatory

[.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 ..

Page 45: The High Altitude Observatory

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}

Page 46: The High Altitude Observatory

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

Page 47: The High Altitude Observatory

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

Page 48: The High Altitude Observatory

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

Page 49: The High Altitude Observatory

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

Page 50: The High Altitude Observatory

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

Page 51: The High Altitude Observatory

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

Page 52: The High Altitude Observatory

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

Page 53: The High Altitude Observatory

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

Page 54: The High Altitude Observatory

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

Page 55: The High Altitude Observatory

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

Page 56: The High Altitude Observatory

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

Page 57: The High Altitude Observatory

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

Page 58: The High Altitude Observatory

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

Page 59: The High Altitude Observatory

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.)

Page 60: The High Altitude Observatory

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

Page 61: The High Altitude Observatory

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

Page 62: The High Altitude Observatory

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

Page 63: The High Altitude Observatory

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

Page 64: The High Altitude Observatory

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

Page 65: The High Altitude Observatory

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

Page 66: The High Altitude Observatory

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

Page 67: The High Altitude Observatory

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

Page 68: The High Altitude Observatory

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

Page 69: The High Altitude Observatory

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

Page 70: The High Altitude Observatory

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

Page 71: The High Altitude Observatory

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

Page 72: The High Altitude Observatory

]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

Page 73: The High Altitude Observatory

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

Page 74: The High Altitude Observatory

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

Page 75: The High Altitude Observatory

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)

Page 76: The High Altitude Observatory

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

Page 77: The High Altitude Observatory

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

Page 78: The High Altitude Observatory

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

Page 79: The High Altitude Observatory

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

Page 80: The High Altitude Observatory

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

Page 81: The High Altitude Observatory

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

Page 82: The High Altitude Observatory

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

Page 83: The High Altitude Observatory

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

Page 84: The High Altitude Observatory

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