~2 𩓍ЩЍЩR     S `I0ݭ  ^`]BULL)\\U?=YWZS1\[Z\\LI: HʕhiLm H `EXECUTŐ LBRANCȨ eHȱehLT 0BRANC iLR (LOOP  hhhhL (+LOOPHH}h}hL(DOOHHHHLR % nHLK 4 DIGIԇ80HLM  LLHLM H(FIND s Q)?/ȱQ %ieeHLK ȱеHLK ENCLOS$ s 88LR LR D8Up666uuuuLR CMOV s LR LU666uuuLR U" *66866L]dAN_5H5LM OtHLM XOҊUHULM SPHLK SPLR jRPLR ;hhLR iLEAVLR >RHHLR RhhLR %HLK 0;ȔLR 60P*LR UbHLhHLh~PIHLhHLhuuLR zDuuuuL[]MINU8LR DMINU8LoOVE HLK DRO]SWA'HLM DU?HLK +NuuL[9TOGGLoUL[K~HLM ICLR YL[CL[!i%s|f?9HHieLR CONSTAN? 9HȱLK VARIABL 9iHeLK USE 9eHeLK zkB sC/ #LINK"FIRSfLIMI {B/BUB/SC[HIME+ORIGI8 TIJ WIDTJ WARNINJFENCJD VOC-LINJBLJcIJOUUSCJ?OFFSEJICONTEXJ ^CURRENJ"kSTATJ$.BASJ&DPJ( FLJ*xCSJ,RJ.HLJ07INPJ2PHYSOFJ41e2mHER|ALLOTLmCe?+-9%|RO%%SPAC~"7-DU= = TRAVERSŏuuL]LATES]]Ms|fk |  ` % aCFm-CNFu-8 PFeuLFm-!CSR?ERRO%  1?COM~|9k 8L?EXE~|k 8c?PAIR-k 8x?CS|-k 8?LOADIN2|9k 8COMPILR=| ]~qk ~SMUDGk mHEk DECIMAk  (;CODE;COD9) >#EXPEC] %M"=9 f]f  QUER|k x?]:2| *e2L]:2|e-]9 i  FIL s LR 8ERAS]OBLANK~HOL8 L|PAk DWOR2|v  |:|%"k ":L -#97BITӋ s )LR ((NUMBER=| &|n]| eL NUMBE]]S=k -9=8 =~- =k .-]8]  HASe-]==m-FIN~>f|C=9 f|s|- s|C>(ABORT~cERRO|N # ? !2|v :|%NoID,k k _= -,%,k ]=,=k ]%#gCREAT|k `m8] i k !g=|Tk 9=k me-k ms| Cm-  |%m-m 8OMPILEi9]8 qLITERA~| 8 DLITERA~| %?STACk |%`e8k |`k 8INTERPREi ~||     |   CIMMEDIATk @mVOCABULARg)| )]Ms|fk m 8  wfFORTȃkfWefefR]\DEFINITIONf|sk )>QUI]2IuM~|9  oK IABORIfig-FORTH 1.4S]8 .NCOLIJ# " #     ةlLS->=N+N "D+N xAB=!DAB=%MI  E %PMA  | %hM  7%7%M F#7 #%%/MO%MO*/MO*%M/MO]# % <PTA1 ALLOT-V @PRE1G3AL1L"EMPTY-BUFFERl|k b|M]fk k ADR]Yk DR8 Yk BFN]%l|k b|M=f|9 fk  %f%k BUFFE==9 l|#|#|#k =b|- '=k - k k -=b|9  b|k b|=b| - 5b|k k ] b||b||]O$]b|k b|b|| BLOCY|=b||-b|k 9r 8& =b|k 9 b||eO$eb|k   b|m|](LINE .LINd!e8 #]8 rMESSAG| Kv A=k E k -m k Y|-k @ k @# MSG # <(LOA2|:|]:2M:2!--]:2| -2LhICCBa"ICLHl"ICAD "TCIO֊" VHLK KE|"k f"eq"" ~=k 9 ]?"EMIe#"Ck "?TERMINA]"TYPv k f"q"|"" ~  #DECMAD#&*&   ee8 (iiLR "SIύ# YLR #SECI8 8 k ]m9 k @ k 8 k 8 k 18 ]#v k !;#DIk 8 #8 |k 8 #DDI8 8 #8 |8 8  R/ k R k P8 %8 ]8  =u]8 %k %=k ] E8 k r8 k ] ] 8 %k ]M=B#$  Dk ] mk ]M='$ "|k k ]M=$ !FLUSl|k b|Mfk k ] f|f|]O$efk k "UPDATk b|k "i9]8&%FORGEs|f|-k 8%=|`k 8)|# ` .|=) ]M=mfk =m|=l` % |v9 m-K$BAC- 6&BEGIRes%ENDIRm -%"$THE_&u&DMu&LOOu ;&#+LOOu;&Y&UNTIe ;&&EN&w"AGAIe ;&G&REPEA&m-_&&I ] m&ELSm ] %m_&m%WHIL'&SPACE]lv ]Mg &<,Y'#|, -'SIGSN k -'|(Sk | k k 0'#'  r9 z'D.% F}'''' -`'#'D]'g%.')(|k 9  ](I'|<((LIS"=MSCR # <(]M"fu,(gfM|! "'INDE"%M"fu,(g]f!#  e(TRIAuuu %M"fj( "k !"k ":(VLIS]M=f|fk |ff ]Mff| eM  ` % v 4]Mff| 9 =|ff v g "(ASSEMBLE҃/../2///-XSAVUI)PO]*POPTW["*PUM /*PUSK *NEXR SETUs *INDE1   ,)MOD1D*.]*O*e**MEm*,u**,8 *9*X8 *[*)8 **8 * BO*]*SE*m+RP*8 *UPMOD *8 ]9 8 *Le*8 ]v ]M= |]9+CPgw*++BRK++CLC++CLD+غ+CLI+X+CLV+*DEX++DEY+*INX++INY+Ȑ*NOP+*PHA+H,PHP+&,PLA+h2,PLP+(+RTI+@J,RTS+`+SEC+8b,SED+n,SEI+x+TAX+,TAY+,TSX+,TXA+,TXS+,TYA+;+M/CPg w=8 ] 8 *L 8 ]B+B+ *"u*a**8 ] *8 ]8 |   *,ADC,`nR-AND, nz,CMP,n,EOR,@n,LDA,n)ORA,nn-SBC,n-STA,l`-ASL, -DEC, -INC, -LSR,A V,ROL,,! -ROR,a -STX,.CPX,%.CPY,-LDX,A.LDY, 3.STY, .JSR,k.JMP,@y.BIT, .BEGINe|-UNTILie--IF]m.ENDIFim  % -%.ELSEme~.% -%mO.THEN. /END.,NO8 ].C>,0f/0M/>x/VP]/Cs|fi'CODi?)*%o/xe/hihiHHLR /xec/hhl@/EXEC8 /p. 8 / )1+e%L01e-]!0SE]%&2=/0H=8 | 8 0 8 7"/CH=8 ]8 P08 ]P0r0CHv0M0H=8 ]8 8 ]v0v00H|0@0BDUM%Mf0gf8 ]M=f0g \"8 (8 ]M8 f-|8 |fmm\JN1TBgw"0ALLO=n1ARRAgt1w)NO9('U](0C 0("=018 ">`1DEPT8 -m1."1 (8 8 1m-C0-%Mf[(8  e!1SAVENFA]M8 8 f8 |8 "fC0 1V1.4~2 R'SЍ`v2VLIS8 R|8 '8 R"]Mf|f8 |ff ]Mff| eM  ` % = 4]Mff| 9 =|ff v F8 U|8 | 8 8 U "8 U|8 | 8 8 U " R8 R"1BEL8 ]M8 8 и8 ]M ]8 и8 ]M 3BINARm3BI31TASgw3TOFLA14Te 42VAg w 4|  |] 41MSBYT]8  %4LSBYT8 ]"4>=h48 %O41IO1P4IO14IOC8 T]l8 =48 @4t4.IOg w|4|4ICDNσ44ICCO̓44ICST45ICBÃ45ICPT̃45ICBL̃4+5I1CA؃4 95I2CA؃4 92CI[5H4 VhLR Y(Gep54 VHLK j5GE8 4n5U5CLOS8 4Y55OPEu45?5M5Y5G5ACI54 VL]4F1AUҖ5C1AU5F2AU5C2AU5F3AU6C3AU6F4AU6C4AU76SKCT5AUDCTa4DLS0\6DMACT/3RTCLC6CRSIN6CHBA6COL6COL6COL6COL6COL6CONSO6Ct6BOTSg6LMARGRO6ATACHH4MEMTO6ATRACM6DRKMSN6COLRSO5WSYN 37S1S:L7COLOR17Qbas11PBASh7|@7GRe45]15=8 ]%8 0]8 8 O757|e8 ]8 -=h78 7n7POS8 T8 U&7LOC75U7C=\777SP|8 ]8 -=h78 7PU8 45;8PL7\7|?8+6FILDA8SE%8 %8 7DR78 4\7=7h8Y5~7GRAPHIC7O8PLOS88LOCAT7n8SETCOLOr88COLO88POSITIO78DRAWT88CLEA]]78 }?88XIO1=h878 4Y59SOUNu8 Ҹ]8 Ҹ%8 8 %m8 Ҝ49PADDL8 p9PTRI8 |T9STIC8 x9STRI8 6RN8 ґ8GRACTХ9PMBAS9PRIOa8VDELA9COLP9GPRIOo :PLAYEh7:u9m- 8  8 n6|8 ]rn6=:HPOS8 М$:SIZE8 М:COLPM*::NOPL9408 8 ] 9THER7|:FRE:-0:OCTA8 :OC::TMPHYӃ.4:SETPHY|4;=8 9RESPHY;=8  7MSO4;LSh4c;ECH1{;EVTB13=;3=SET960e48 ?58 $4<5Y550:DINS>|=8 ] =8 ]e9 88 @] JVB JMP >0>||=>0>40 =8 ]8  | MAP CHR8 ]<(=8 ] H=8 ] V=8 ] I=8 ] =8 @] ,8 @] u>|0 e> -BLK=8 ] I,8 p]8 <(e>">|>L;EDITO҃)FT"ASMnT'Q+T|TJ?EDIM;Q?>TEX>,>#OFLINE?LIN=?]  NOT ON SCREEN~M|d!S*9r 3*9r%)*9r=  ]B;CENB|=FB9%QB9rKEr/E1WR5EE 5EECSEEBDIBE6BNDIB]M5E EISCODB|=m-|9  primitive "E IB||=m-|%BA9  ;CODE word" odd entry point"EFISCOB|=|A- =|=B9 #B||B DOES> word"e %=0B9  CONSTANT : B||0" U=%B9 USER variable " 2;B9 ( VARIABLE : B|=0| = 0" F] eENXTm`'B|=0 : |mBLm`'BbCBpBM}'''RZERO-BLOCM| ==8 8 1 ( scr# empty block 1/1 ) ;S S%8 HSS%z%,%%SLZER%MfMeS @ZERO-BLOCNeSQ}OQLOACP19 M|"ST8 bL8 bLl||~?O4QN8 bLM|e~?ONQP8 bLM|e-~?OWIPS TDRAIaT to wipe, N to abort "8 N19 fTSDRAIPWIPeSNREBL1 SSBL1QPSBL1TDIST|TGTPAT|T|]TTMVIUMf TeTL "UMOVOUY|%Y|%Mf& T%eTLz%,% TDUPLICATTTT|T|-:8 E  TOO MANY N"'UINSERT DESTINATION DISK "RETURN TO CONTINUE ""KUTCPS"? Incorrect screen range"NVCPN"scr# %=<( --> %=<(2VCPMT|T|-=T|T]MT|f-T|f-7V`A [VCPMT|T|-]MT|fT|f7V`A VCOPIETTTT|T||  VT|T|E `V V"I1STCHA1U?CONSO8 Б8 EUMATCv * %M=f- 9  9VCHECKI,,=,%CSFIN&XX]M,WW%Mf==g<( mX$W " "" Search ended"WP1P:YPCI!Yp VHLK ULPCN1YPERR=N 8 ] P: ERROR 1YLPOPEu8 Y8 m8 8 8 YCYgYLYP8 8 8 8 YCYYLPEMIeYYLPC8 Ye7YLYLYP= =8 PE e7YLY 8 eYtWCRLY7Y|8 =E YYYY]7YXFFL)Z7Y| )Z $ZSHRIN8 Y8 Y)ZWEXPAN8 Y8 Y)ZMZ.CL]}''''YZ.L]}'''YYLINEL=ZM|d!elY)ZhZSCR1SCR # ZLISTL=MZ8 YZY]MfZ ZLPSP]M8 Y ZSHOWL%8 9 hM)ZZ8 YfZ8 4[Z8 YfZ)Zf8 ]M=MfZfM|d!Y8 4[=MfZ m M)Zf[ RZ.[LPINDE%MfZ]fd!YY ZVERIF8 W8 ^$\NOVERIF8 P8 ^$H[SYJ]n68 "8 "n6XGOBOOZ\LwQ\GpJP_\WARNOel\WARNOF]1\#SEC\CALLD˨\ SHLK [DKI8 8 8 \=N !ERROR 8 ]|%$<(N\W ( USER INDEX SCR #0 1/1 ) ;S ̠ԺΠSCR #| Contents 00/00| INDEX 01/01| COVER SCREEN 02/06| ERROR MESSAGES 07/0A| BOOT MAKER - call SYS | incl.single drive BACKUP- | requires 2 passes on 48K 0B/0B| disk RPM checker 0C/0E| FREE 0F/0F| low level DECOMP info ϠԠŠŠӠ17/18| REV.F COMMENTS 10/23| TUTORIAL 24/28| COMMAND SUMMARY ϠŠϠŠԠƠŠˠŠŠϠξ ****** fig-FORTH MODEL ****** Through the courtesy of FORTH INTEREST GROUP P. O. BOX 1105 SAN CARLOS, CA. 94070 Implemented on the ATARI 800/400 by Steve Calfee 1/26/81 4/01/82 PETER LIPSON/ROBIN ZIEGLER 4/10/82 HARALD STRIEPE 5/5/82 - 8/20/82 RELEASE 1.4S REV.F WITH COMPILER SECURITY VARIABLE LENGTH NAMES SWITCHABLE TOP OF STACK DISPLAY DECOMPILER/DISSASSEMBLER ENHANCED SCREEN EDITOR & FAST EDIT WORDS, BASE BORDER DISPLAY ENHANCED SYSTEM SET UP/BOOTMKR Further distribution must include the above notice. Abort. IOCB already open. Non-existant device. IOCB is write-only. Invalid command (for this device) Device or file not open. Bad IOCB # IOCB is read-only End Of File Truncated Record Device Timeout Device NAK (Negative AcKnowledge) Serial Bus input framing error Cursor out of range Serial Bus data-frame overrun Serial Bus data-frame checksum error. ( SCREEN INDEX REV D 1/1 ) ;S ΠӠϠƠӠϠΠҠΠӠ̠Ġ00/00 SCREEN INDEX 01/01 SOURCE CREDITS 02/06 ERROR MESSAGES 07/09 SYSTEM SETUP / BOOTMAKER 0A/0A SINGLE DRIVE BACKUP: CLONE0B/0B RPM CHECKER 0C/0E 0F/0F DECOMP DISSEMBLER DATA ŠҠŠ10/10 EDITOR LOADER 11/14 SCREEN EDITOR 15/17 LINE EDITOR 18/1A ADDITIONAL EDITOR WORDS 1B/22 DECOMPILER/STACK DISPLAY 23/24 COPIES/DUPLICATE 25/26 EDITOR EXPANSION 27/27 1.4S KERNEL MODS 28/2E ASSEMBLER 2F/2F DECUS MODS 30/30 ̠Ġ 31/35 HARDWARE/GRAPHICS/SOUND 36/36 PON/POFF 37/38 RS232C SUPPORT 39/39 DISPLAY LIST STUFF 3A/3B PLAYER/MISSILE & OLD CLONE3C/3D EXPANSION 3E/41 LINEPRINTER WORDS 42/45 FORMATTED LIST PROGRAM ( ERROR MESSAGES ) 135 159 9 8 7 10 ;S empty stack dictionary full has incorrect address mode isn't unique disc range ?? full stack ! disc error ! THIS IS IT HELP ME! ( ERROR MESSAGES ) compilation only, use in definition execution only conditionals not paired definition not finished in protected dictionary use only when loading off current editing screen declare vocabulary outside allocated file space writing off current line string stack empty !! ( TARGET COMPILER ERROR MESSAGES WFR-79JUN02 ) below lower bound of virtual memory disc compiler assembly error in mode of can't find in TARGET target redef. T: error, is it paired with T; ? above virtual memory bounds ( SYS/BOOTMAKER 1/5 ) FORTH DEFINITIONS HEX SAVENFAs HERE 1C +ORIGIN ! ( FENCE ) HERE 1E +ORIGIN ! ( DP ) HERE DUP FENCE ! 0 +ORIGIN - 80 / 1+ CONSTANT #SECT CODE CALLDK XSAVE STX, E453 JSR, TYA, PHA, ( STATUS ) XSAVE LDX, PUSH JMP, C; : DKIO 301 ! ( CMD, DRIVE # ) 30A ! ( SECT. # ) 304 ! ( RAM BUFFER ) CALLDK ( DKHND) DUP 0< IF ." ERROR " 0FF AND BASE @ SWAP DECIMAL . BASE ! QUIT ENDIF DROP ; : WTSEC SWAP 304 ! 130 300 ! ( verif $57->) 50 302 C! SECIO ; : RDSEC SWAP 304 ! 130 300 ! 52 302 C! SECIO ; : FORMAT ." FORMAT DRIVE " DUP . ." -ARE YOU SURE?" 0 PAD ! PAD 1 EXPECT PAD C@ 59 ( Y) = IF 2100 OR PAD 0 ROT DKIO ELSE DROP THEN ; 0 VARIABLE BOOT ( ->CODE ) --> ( SYS SET UP/BOOTMKR 2/5 ) : MAKEBOOT FLUSH EMPTY-BUFFERS ." INSERT NEW DISK, TYPE Y" CR 0 PAD ! ( DEFAULT ) PAD 3 EXPECT PAD C@ 59 = IF 1 52 C! CR ." Writing sectors:" CR CR BOOT @ 1 DUP . WTSEC #SECT 0 DO I 80 * +ORIGIN I 2 + WTSEC I 2 + . LOOP 0 52 C! CR ." BOOT COMPLETED" CR THEN ; ( BOOT CODE:) HERE BOOT ! ( PT TO US ) ASSEMBLER 1FF , 480 , ' V1.4S , #SECT # LDA, 0= IF, 0 +ORIGIN , 1 , ENDIF, N STA, 2C8 C@ # LDA, 2C8 STA, D01A STA, 2C6 C@ # LDA, 2C6 STA, D018 STA, 52 # LDA, 302 STA, 48C LDA, 30A STA, 48D LDA, 30B STA, ( SCT1 ) 1 # LDA, 301 STA, 48A LDA, 304 STA, 48B LDA, 305 STA, ( ORIGIN) BEGIN, 30A INC, 0= IF, 30B INC, ENDIF, E453 JSR, 303 LDA, .A ASL, CS IF, RTS, ( FRETURN ) ENDIF, 304 LDA, 80 # EOR, 304 STA, 0< NOT IF, 305 INC, ENDIF, ( BUMP PTR.) N DEC, 0= UNTIL, 48A LDA, 0A STA, 48B LDA, 0B STA, E C@ # LDA, 2E7 STA, F C@ # LDA, 2E8 STA, CLC, RTS, FORTH --> ( BACKUP HES 82AUG15 3/5 ) 35F ARRAY BUCD BLK @ BLOCK A0 + BUCD 35F CMOVE CODE bg E474 JMP, C; : BACKUP BUCD 480 35F CMOVE 480 C ! STOF bg ; --> j8iR'Sx867X /E /XB / / / /1    I  Lȍ /ɠ R    /  ` /! 8  /Q P  `詀R@ YLii    R `Я` /m L / / L  ` LwPpM`W7 ` / Lfig-FORTH 1.4S FAST BACKUP Vers.1.2 BY H.E.STRIEPE 1982 START - commence I/O SELECT - write with verify OPTION - REBOOTInsert source disk and press START, or select OPTION to REBOOTReading SOURCE disk...Insert destination disk, press START, or SELECTWriting DESTINATION disk...****** DUPLICATION SUCCESSFUL *********** DISK I/O ERROR!TRY AGAIN *********** BREAK KEY INTERRUPT! ******( scr# A BOOTMKR/SYS 4/5 ) : DoFORget ( forgets below ) ' TEXT NFA ( FENCE ) FENCE ! 0 FORGET TEXT ; : SETSYS ( SETS RESET PARAM ) LMARGN @ DUP ( MARGINS ) LSB ' V1.4S 4 + C! MSB ' V1.4S 8 + C! COL1 @ DUP ( COLORS ) LSB ' V1.4S C + C! MSB ' V1.4S 11 + C! COL4 C@ ( BORDER ) LSB ' V1.4S 16 + C! ; : HOOK ( hooks your assembly ) ( routine into WARMSTRT ) ( ->use HOOK word ) [COMPILE] ' ' V1.4S 1+ ! ; : UNHOOK ( restore vector ) E4C0 ' V1.4S 1+ ! ; --> ( SYS SET UP/BOOTMKR 5/5 ) HEX LMARGN @ 2700 LMARGN ! ." }fig-FORTH 1.4S SYSTEM SET-UP Vers.1.1 " CR CR ." DoFORget WORD forgets below FENCE." CR CR ." n SETPHYS permanently changes the OFFSET of screen #0." CR CR ." RESPHYS resets the OFFSET to its original value; use" CR ." n SETPHYS twice to set RESPHYS to a new value" CR CR ." n FORMAT formats disk in drive n. " CR CR ." MAKEBOOT writes out compiled boot sectors." CR ." SETSYS sets booton parameters:" CR ." screen margins, colors" CR CR ." BACKUP fast single drive utility " CR LMARGN ! EMPTY-BUFFERS SP! ;S ( DISK RPM CHECKER 1/1 ) CODE ZIO XSAVE STX, BOT LDA, E459 JSR, XSAVE LDX, BOT STY, BOT 1+ STA, NEXT JMP, C; 246 CONSTANT DSKTIM : DSIO ( DISK HNDLR VIA SIO ) ( BADDR AUXS UNIT-CMD DATFLG ) 303 C! ( SET DATA-FLAG ) 301 ! ( DUNIT,CMD) 31 300 C! ( DEVICE) 30A ! ( AUXES ) 304 ! ( BUFER-ADDR ) 0 ZIO ; 1 VARIABLE DR# : BIO DSKTIM @ 306 C! 80 308 ! ( BUFLEN) DSIO ; : RDSEC 5200 OR 40 BIO ; ( DISK SPEED CHECKER ) 14 CONSTANT RTCLOCK 2F2 CONSTANT KBCHAR FF CONSTANT EPTY : READ-SEC PAD 1 DR# C@ RDSEC ; : CLR-KBRD EPTY KBCHAR C! ; : RPM DECIMAL CLR-KBRD 1 2F0 C! DR# C! 0 17 POS. ." = " BEGIN KBCHAR C@ EPTY = WHILE READ-SEC DROP 0 RTCLOCK C! 10 1 DO READ-SEC DROP LOOP D2F0 0 RTCLOCK C@ U/ SWAP DROP 4 17 POS. . REPEAT CLR-KBRD 0 2F0 C! HEX ; ;S ( ӠŠΠŠ ) ( EMPTY BLOCK D ) ;S ( EMPTY BLOCK E ) ;S !iDi@ @oiB i PiFiH H*ii WD@@x@uBxxPFHxHxHDH@c@lHBcTHc$PHFHHcH0HHcD@rB{T'PFHD@@@E PFHHJ`BZD]B`@Z@]@ZB`Z]PZF`HZH]J3Z`Z]> DECOMP DISASSEMBLER STUFF << DO NOT MOVE FROM THIS SCREEN ! ( Greetings from ) welcomes you to the world of Atari fig-Forth. We aretrying to make FORTH easy for you to learn and use. Since we are learning too, we would be pleased to get any feed back youmay have on this version of fig-FORTH, and the included documen-tation. Please send any commentsto Team Atari, 4029 Payne Ave., San Jose, Ca., 95117 or leave E-mail on Compuserve for [70525,434] We'll try to answer all correspondence. (TYPE LL) This disk is an attempt to writea self-tutorial on using this version of fig-FORTH. Just read the text and try the examples byplacing the cursor on the line with the example and pressing the key. Have fun. To continue, type in the lower screen area. First type UL then to return here type LL , then to go to the next screen, type N . ( P/N/T/INDEX/LL/UL )Now type P and then use the T command to get back here. OK, N = next, P = previous and T = toggle; FORTH stores the last two screens you LOADed or LISTedor EDITed in two buffers which you can toggle by using . This is especially handy to compare screens from different areas of a disk, or from two different disks. The next handy-dandy command to learn is the INDEX word. (TYPE LL TO CONT.) INDEX is the word you use to seewhat is on one of your FORTH source disks. It shows you the first line of each screen on thedisk. ( perhaps I should mentionthat FORTH organizes the disk inscreens, the units you have beenlooking at, not files like you are used to in DOS ) A good ruleto follow is to make the first line of any screen you write a short description of what is on the screen. Then when you use INDEX you get a quick list of the contents. By printing this you have a nice (TYPE N) ( ."/LPINDEX/SHOWLP/LPOPEN/ )listing of the contents of the disk. To try this out type in the following line below: 0 GR. 0 4D INDEX or you might try using ." }" instead of 0 GR.} is typed by typing and then or . ( ." is a FORTH word pronounced DOT QUOTE that works with QUOTE to print the text included between them.) ϠΠŠŠŠ報̠宠 Now to print the Index, you needto get your printer all ready, type LPOPEN, and then type- 0 4D LPINDEX. This will print itout. To print any single screen you type xx LISTLP (xx being thescreen number). Two screens may be shown side by side on a page from the printer by typing - xx SHOWLP. This will print scrn.xx and the next screen after xx. ҠϠΠŠŠ ( BACKUP/CSECTS/WARN/GS/WS/N/+ )By now you may have wondered howto copy this disk. You can't do it using standard DOS as there is no Directory on a FORTH disk.You can use 'SUPERDUP', ARCHIVE,or any other sector copier. You may also use the command BACKUP to copy it on a one disk system.This command is available after calling SYS, which gives access to MAKEBOOT, FORMAT etc.; SYS will load a menu screen giving instructions. NOTE: DO NOT MOVE any of the screens 1 through B and F !!! (type LL) To turn on the english error message system, type WARNON. To turn them off and get only # msgs type WARNOFF. The options available now for screen color are GS=green scrn, WS=white screen, NS=normal scrn,BS=black screen. Give them a tryand see which ones you like. Now try HX, DX. The border colorwill change to remind you which number base you are in. (type N to cont.) ( GENERAL INFO. ) Now that we have some basic tools with which to find our way around the disk, a little general information on how the goodies are stored here. This disk contains most of the words of this version of fig-FORTH in the compiled form, i.e. they areLOADed and ready to use. You gotthe list of words available to you if you printed out the VLIST. The second disk in this package contains a very small # of words in compiled form and (type LL to cont.) the rest are on source screens. This allows you to keep your kernel (the compiled words) of FORTH as small as possible, thussaving as much memory space in RAM as possible. The more words compiled in RAM the less room for you to work with in your ownapplications. In order to add a section of words to the kernel just LOAD the screen they are onby typing xx LOAD. (xx is the screen number). xx L& turns of the screen for faster compila- tion, but use it only on tested screens. (type N to cont.) ( LIST/L./DOIT/WIPE )The format you have been using so far is the EDITOR format. You can look at screens in two different formats. By typing L# you will get line numbers on theediting screen to facilitate useof line edit commands. If you want to get rid of them later just type NL# and they will go. The other major format for look-ing at screens is the LIST or L.format. Type xx L. to see this one. (type LL to cont.)In the LIST format you have to use the <1> key to stop and start the scrolling of the screen. The next screen is blank so you can try some screen editing. Type N to go there and then typeon the screen. When done use thecursor arrow keys to move down to the line with "DOIT" on it & press the key. Then type FH and your stuff will be on disk. To erase it type 16 WIPE, or W while in the editor (TYPE 17 UE TO SKIP THAT) ( EMPTY BLOCK 16 ) ;S HELLO THERE ( scr# 17 REV.F COMMENTS ) ;S ( HES 82AUG23 ) REV.F has a number of bug fixes for REV.A OS. It also interceptsthe DOSINI vector during BOOT, and at WARMSTART (RESET). This makes it possible to set screen colors and margins at boot up and reset. Simply set your margins and screen colors before calling SYSSelect STACKON or STACKOFF. Thencommand SETSYS, and MAKEBOOT. Your new disk will now boot in your colors, and have your mar-gins. You can also hook in an ML SUB- ROUT.at this time. It must have been defined prior calling SYS. After calling SYS, command HOOK word (356-3921, or you can leave MESSAGES at the following BBS's: TABBS <408> 244-6229 IBBS <408> 298-6930 (The latter is the preferred communications technique.) Since DAVE FLORY is distributingthis package, naturally he can also be contacted. May fig-FORTH be with you... H.E.STRIEPE < N > ( PLAYER/MISSILE DEMO )Now let's take a look at the player/missile demo. To do this please type 1A 1B SHOWLP. If youhave not previously used the printer words type LPOPEN first.Then you will have the two scrnsprinted out and can compare themas you read the rest of this. The B/H word is used to convert a binary shape table to hex and decimal for use in Players and missiles. See screen 1C for moreinfo. ( type 1C UE to cont.) ( PLAYER/MISS.STUFF-RZ 1/1 ) 0 VARIABLE 0VP 64 VARIABLE 0HP 0 VARIABLE 0VPOLD : SPB HIMEM @ 1+ F800 AND 800 - DUP Qbase ! 17F + HIMEM ! ; : GETPS 0VP ! ROT BLOCK ROT + Qbase @ 400 + 0VP @ + ROT CMOVE ; : SPLAY 0 0 HPOS! 7 GR. SPB Qbase 1+ C@ PMBASE C! 2A 0 COLPM! 1 0 SIZE! 3E D400 C! 3E DMACTL C! 3 GRACTL C! 1C 20 8 64 GETPS ; : CLRPM Qbase @ 800 ERASE ; : MOVEH 0 STICK F XOR C AND DUP IF 2 / 3 - ENDIF 0HP @ + DUP 0HP ! 0 HPOS! ; : VPOS! 0VPOLD @ 9C00 + DUP 9800 8 CMOVE 8 ERASE 9C00 + 9800 SWAP 8 CMOVE ; : MOVEV 0 STICK F XOR 3 AND DUP IF 2 * 3 - ENDIF -DUP IF 0VP @ DUP 0VPOLD ! + DUP 0VP ! VPOS! ENDIF ; : RUNIT BEGIN MOVEH MOVEV 2FC C@ FF = NOT END ; : BN BINARY ; : OCT OCTAL ; : B/H DUP HEX ." HEX =" . DX ." DEC.=" . BN QUIT ; 6 GPRIOR C! ;S ;S ( P/M COMMENT & INSTRUCTIONS by Dave Flory/ Bay Area User Group. 0VP = P/0 vert. position 0HP = P/0 hor. position 0VPOLD = P/0 old vert. position GETPS = get player shape & placein P/M memory space. SPLAY = show player. The 2A in front of the COLPM! is the colorof player in HEX. The first no. in front of SIZE! is the P/Mwidth no., 2nd is no. of P/M. The no.s for GETPS in SPLAY are:1. the no. of screen holding P/M2. the # of bytes into the scrn.where the Player data starts. 3. the # of bytes of player data4. the hor. pos. to show player You must be careful to place thedata correctly on the data scrn.Count in carefully and enter thedata in characters. This is doneby using BDUMP to enter the HEX numbers into RAM buffer positioncorresponding to the screen. SeeBDUMP comments & comments on thenext screen which holds sample player data. ) (TYPE N TO CONT.) ( PLAYER/MISSILE SHAPE TABLE ) Z<~$< The characters on the top of thescreen were entered into the scrbuffer usinG BDUMP after gettingthe correct HEX numbers using the B/H word. It is already available in this version. (Whenworking with the source disk Load the P/M screen.) (Type LL to cont.) This will give the numbers for asmall flat box shape: BN 11111111 B/H HEX =FF DEC.=FF 10000001 B/H HEX =81 DEC.=81 10000001 B/H HEX =81 DEC.=81 11111111 B/H HEX =FF DEC.=FF To use B/H you must be in BN or binary base, then you enter the binary shape line and type B/H and press , FORTH will type the HEX and DEC. no.s for you. (Type N to cont.) ( BDUMP/ EXAMPLE ) To put these numbers onto the disk without having to look up Atari control keys in the table,you use the BDUMP word. In this case it works like this. You type the following: 1C BLOCK DUP 2A + BDUMP This gives youthe top 2A character positions of screen 1C displayed on the monitor. You then count in the number of spaces you want the data to be and enter it on the screen using the cursor and pressing on the same line. (Type LL to cont. ) It looks like this: 1C BLOCK DUP 2A + BDUMP 0500 28 20 50 4C 41 59 45 52 \ 0508 2F 4D 49 53 53 49 4C 45 \ 0510 20 53 48 41 50 45 20 54 \ 0518 41 42 4C 45 20 29 20 20 \ 0520 18 FF 24 DB 24 5A 99 81 \ 0528 20 20 20 20 20 20 20 20 \ oK The place that the player is on now is displayed on line 520. By putting the cursor on that line and typing in the no.s you see how I entered the player shape. (type N to cont.) ( SPLAY/RUNIT/GRAPHICS WORDS ) Enter 6 GPRIOR C! To see the shape and run the player/missile demo type SPLAY and RUNIT. This will display theshape under the control of joy- stick 0. You will notice that the shape "hides" behind the text window and and the stack display (if the latter is on). Later you can draw some play- field stuff and experiment with making him go in front of some and behind others by putting a different # in GPRIOR. ( LL ) The graphics commands in this FORTH for the Atari are very like those you use in BASIc except that as you have noted here the numbers come first not after the commands. x C. = COLOR x x GR. = GRAPHICS x x y PL. = PLOT x y x y DR. = DRAWTO x y similarly POS. is POSITION, SE =SETCOLOR, etc. The fill command is XIO18 and it requires you to put the fill color on the stack first. (N) ( DEMO OF P/M PRIORITY )( For a demo load this screen. It will draw a couple of bars of vertical colors for the bug to play in. After typing SPLAY type 1F LOAD then type RUNIT. ) DX 1 C. 90 90 PL. 90 10 DR. 80 10 DR. 80 90 POS. 1 XIO18 ( FIRST BAR ) 2 C. 70 90 PL. 70 15 DR. 50 15 DR. 50 90 POS. 2 XIO18 ( 2ND BAR ) 3 C. 30 40 PL. 30 20 DR. 10 15 DR. 10 80 POS. 3 XIO18 ;S 3rd bar fill runs over to the right this time (LL) as the POS. statement is lower than the initial PL. statement for this bar. After looking at this one play around a little. It will take some work to make this display four players at the same time, but its fun to try. You may wantto go back and redefine some of the words to expect the player number on the stack to tell themwhich player to work on, or you can just define a word for each player and call them by name. Hope you have fun. (N) ( STACK DISPLAY )One of the nice features of thissystem is the stack display. To use it just type STACKON. Then type a few numbers and press . You will see them showon the stack display at the top of your monitor screen. To turn it off when unwanted STACKOFF. You will find the STACK display very useful to you as you start defining your own words as you can go through each step in the word singly and watch what it does to the stack. The stack is the single most difficult (LL) thing for most begiinning FORTH nuts to understand, and this display is used by even the experienced programmers I know. Put some numbers on the stack and try some of the Math words like + and /, and *. Use SWAP, and ROT, and . and DROP, etc. and observe their stack effects. (N) ( DECOMPILER/DCP/ZZ )Now we come to one of the most useful and powerful words in thevocabulary of this FORTH versionthe decompiler word. To use it just type DC xxxx, with xxxx theword you want decompiled or taken apart. This word works on even the primitive words in the fig-FORTH kernel. Try a few of the simple words first, like GS, or NS. When you do you will find that the numbers above 0,1,and 2 all have LIT after them. The first three are used so muchthat they are FORTH words. (LL) ( screen 21 ) The LIT tells FORTH that the They are to be taken as literal values. To give you an idea how this works try typing in this definition and then DC AS. DX : AS 26 709 C! 18 710 C! 16 712 C! ; You now have another word avail.to you AS or amber screen. To make this a permanent part of your disk you can use MAKEBOOT to write out all the compiled words you have in RAM. (N) ( TEXTS ON FORTH )This should give you enough to think about for quite a while ifyou are new to FORTH. We haven'ttried to make you a programmer, but just to introduce you to thefeatures of this version of the language and help you over a fewof the initial rough spots. There are several good books fornew people in FORTH. The one I personally found most helpful was Ҡ published by McGraw Hill. The best next book and probably the best (LL) if you can only afford to buy one is Ǡ by Leo Brodie, and published by FORTH Inc. I wish you the best of luck and hope that you will keep us up todate on your extensions to this language. We will try to act as a clearing house for ATARI FORTHpeople. AS we come up with more features we will add them to thepackage. we will try to upload the new stuff onto Compuserve ACCESS area so that you can get (N) ( CONCLUSION )updates without a lot of mailingdisks and paying postage. To this end I suggest that you keepthe original source disk withoutchange so that you can recompileyour working kernel as you get updates. If someone writes us a terminal prgram written in Atari FORTH we will make it available immediately so that wecan all communicate FORTH stuff more easily, without typing in the screens on the keyboard. (LL) That's all, keep on SWAPing, Dave Flory Presently pres. BAY AREA USER GROUP 4029 PAYNE AVENUE SAN JOSE, CALIF. 95117 408) 244-7181 COMPUSERVE [70424,434] 嬠 PLEASE COPY AND PASS THESE DISKS AROUNDTO EVERY ONE YOU KNOW ҠӠĠ EDITOR - VOCABULARY name n EDIT - Enter editor on screen n L,N,P - List current,next or previous screensLL - List lower 1/2 of current edit screenUL - List upper 1/2 of current edit screenDOIT - Take top 16 lines of screen and place them into the top or bottom 1/2 ( LL or UL ) of the edit screen. x y COPY - Copy block x to block y. No change to block x n LIST - Set SCR to n and list the block x y SHOW - List blocks x to y inclusive x y INDEX - List first line of blocks x thru y FLUSH - Return to FORTH voc and write out all updated blocks UPDATE - Mark block (SCR) as updated fig-FORTH 1.4S comnds next block ԠԠ EDT - same as EDITOR FORTH - exits EDITOR without action n UE - same as n EDIT UL n LE - same as n EDIT LL N - edit next upper scrn N. - edit next lower scrn P - edit prev upper scrn p. - edit prev lower scrn T - edit other upper scrn in buffer T. - edit other lower scrn in buffer FH - same as FLUSH WIPE - clr scrn to be edited W - WIPE,will respond with question, RETURN or Y will execute LOAD - FLUSH scrn edited,and LOAD n LOAD - will flush and load n L#OFF - off LINE # display L#ON - on LINE # display SOUNDOFF - remove tone cue (the beep heard for various edit comnds) SOUNDON - reset tone cue LINE EDITOR COMMNANDS NXT SCRN ҠŠǠ n TL - Type line n >(PAD) n HL - line n >(PAD) n DL - Delete line n >(PAD) n IL - Insert (PAD) after n n RL - Replace n with (PAD) n SL - Spread at line n n BL - Blank line n n $_ - Text following $_ will replace line n and go to PAD n %_ - Text following %_ will be inserted after line n and go to PAD s n CL - Move line n of block s to PAD *** NOTE *** >(PAD) : Means that line n is also moved to PAD ȠӠ n1 n2 n3 COPIES - move scrns n1 to n2 to location starting at scrn n3 (n1-->n3, n1+1-->n3+1 etc.) n1 n2 DUPLICATE - will duplicate scrns on a single drive SYS - loads bootmaker and related words on SCREEN # $7 STACKON - turn stackdisplay on STACKOFF- turn stackdisplay off NOTE: BORDER REFLECTS # BASE STON - STACKON STOF - STACKOFF WARNON - display warning txt WARNOFF- just display error # DRAIN - EMPTY-BUFFERS n1 n2 LZERO - CLEARS scrns n1 to n2 n SETPHYS - set PHYSOFF to n RESPHYS- reset PHYSOFF to orgnl value, use n STEPHYS twice to chnge RESPHYS DCP - DECOMP ZZ - DECOMP x y CDUMP - dump char. x to y continued on next screen ȠӠ ٠ ӯàŠn >< - swap bytes n MSBYTE - leave MSB of n n LSBYTE - leave LSB of n VAR - TO variable n TO will ! n will @ n MSB - shortform MSBYTE n LSB - shortform LSBYTE ٠ҮĠšӠx y FIND text - search for text starting with scr# x to y, willsearch all scr of DR1 as defaultabort by pressing START button NS,GS,WS,BS - change screen colors n U. - n . unsigned VERIFY & NOVERIFY - change diskhandler write command n SNDOFF - turn off channel n (e.g. n 0 0 0 SOUND) THERE - returns adr below display FREE - THERE HERE - OCTAL - change BASE to 8 BINARY - change BASE to 2 HX,DX,BX - shortforms PON now does not require POFF in same expression. ( scr# 29 empty block 1/1 ) ;S ( scr# 2A empty block 1/1 ) ;S ( scr# 2B empty block 1/1 ) ;S ( scr# 2C empty block 1/1 ) ;S ( scr# 2D empty block 1/1 ) ;S ( scr# 2E empty block 1/1 ) ;S ( scr# 2F empty block 1/1 ) ;S ( scr# 30 empty block 1/1 ) ;S ( scr# 31 empty block 1/1 ) ;S ( scr# 32 empty block 1/1 ) ;S ( scr# 33 empty block 1/1 ) ;S ( scr# 34 empty block 1/1 ) ;S ( scr# 35 empty block 1/1 ) ;S ( scr# 36 empty block 1/1 ) ;S ( scr# 37 empty block 1/1 ) ;S ( scr# 38 empty block 1/1 ) ;S ( scr# 39 empty block 1/1 ) ;S a machine subroutine, and end with RTS,. The screen editor now has a KEYBOARD intercept, so you can not accidentally hit CR while editing the upper screen. To override CR on the upper portion( while editing) hit CTRL CR (N)( scr# 18 REV.F contd. ) ;S Note that a lot of screens have been changed from the previous REV., so full compilation requires staying with one group of source screens. The enhanced SYS commands should not be used with KERNELS of previous REV.s. CHECK SCR#'s $28 for EDITOR COMMANDS If you have questions, contact me (at reasonable hours, please) at <408>356-3921, or you can leave MESSAGES at the following BBS's: TABBS <408> 244-6229 IBBS <408> 298-6930 (The latter is the preferred communications technique.) Since DAVE FLORY is distributingthis package, naturally he can also be contacted. May fig-FORTH be with you... H.E.STRIEPE < N > ( PLAYER/MISSILE DEMO )Now let's take a look at the player/missile demo. To do this please type 1A 1B SHOWLP. If youhave not previously used the printer words type LPOPEN first.Then you will have the two scrnsprinted out and can compare themas you read the rest of this. The B/H word is used to convert a binary shape table to hex and decimal for use in Players and missiles. See screen 1C for moreinfo. ( type 1C UE to cont.) ( PLAYER/MISS.STUFF-RZ 1/1 ) 0 VARIABLE 0VP 64 VARIABLE 0HP 0 VARIABLE 0VPOLD : SPB HIMEM @ 1+ F800 AND 800 - DUP Qbase ! 17F + HIMEM ! ; : GETPS 0VP ! ROT BLOCK ROT + Qbase @ 400 + 0VP @ + ROT CMOVE ; : SPLAY 0 0 HPOS! 7 GR. SPB Qbase 1+ C@ PMBASE C! 2A 0 COLPM! 1 0 SIZE! 3E D400 C! 3E DMACTL C! 3 GRACTL C! 1C 20 8 64 GETPS ; : CLRPM Qbase @ 800 ERASE ; : MOVEH 0 STICK F XOR C AND DUP IF 2 / 3 - ENDIF 0HP @ + DUP 0HP ! 0 HPOS! ; : VPOS! 0VPOLD @ 9C00 + DUP 9800 8 CMOVE 8 ERASE 9C00 + 9800 SWAP 8 CMOVE ; : MOVEV 0 STICK F XOR 3 AND DUP IF 2 * 3 - ENDIF -DUP IF 0VP @ DUP 0VPOLD ! + DUP 0VP ! VPOS! ENDIF ; : RUNIT BEGIN MOVEH MOVEV 2FC C@ FF = NOT END ; : BN BINARY ; : OCT OCTAL ; : B/H DUP HEX ." HEX =" . DX ." DEC.=" . BN QUIT ; 6 GPRIOR C! ;S ;S ( P/M COMMENT & INSTRUCTIONS by Dave Flory/ Bay Area User Group. 0VP = P/0 vert. position 0HP = P/0 hor. position 0VPOLD = P/0 old vert. position GETPS = get player shape & placein P/M memory space. SPLAY = show player. The 2A in front of the COLPM! is the colorof player in HEX. The first no. in front of SIZE! is the P/Mwidth no., 2nd is no. of P/M. The no.s for GETPS in SPLAY are:1. the no. of screen holding P/M2. the # of bytes into the scrn.where the Player data starts. 3. the # of bytes of player data4. the hor. pos. to show player You must be careful to place thedata correctly on the data scrn.Count in carefully and enter thedata in characters. This is doneby using BDUMP to enter the HEX numbers into RAM buffer positioncorresponding to the screen. SeeBDUMP comments & comments on thenext screen which holds sample player data. ) (TYPE N TO CONT.) ( PLAYER/MISSILE SHAPE TABLE ) Z<~$< The characters on the top of thescreen were entered into the scrbuffer usinG BDUMP after gettingthe correct HEX numbers using the B/H word. It is already available in this version. (Whenworking with the source disk Load the P/M screen.) (Type LL to cont.) This will give the numbers for asmall flat box shape: BN 11111111 B/H HEX =FF DEC.=FF 10000001 B/H HEX =81 DEC.=81 10000001 B/H HEX =81 DEC.=81 11111111 B/H HEX =FF DEC.=FF To use B/H you must be in BN or binary base, then you enter the binary shape line and type B/H and press , FORTH will type the HEX and DEC. no.s for you. (Type N to cont.) ( BDUMP/ EXAMPLE ) To put these numbers onto the disk without having to look up Atari control keys in the table,you use the BDUMP word. In this case it works like this. You type the following: 1C BLOCK DUP 2A + BDUMP This gives youthe top 2A character positions of screen 1C displayed on the monitor. You then count in the number of spaces you want the data to be and enter it on the screen using the cursor and pressing on the same line. (Type LL to cont. ) It looks like this: 1C BLOCK DUP 2A + BDUMP 0500 28 20 50 4C 41 59 45 52 \ 0508 2F 4D 49 53 53 49 4C 45 \ 0510 20 53 48 41 50 45 20 54 \ 0518 41 42 4C 45 20 29 20 20 \ 0520 18 FF 24 DB 24 5A 99 81 \ 0528 20 20 20 20 20 20 20 20 \ oK The place that the player is on now is displayed on line 520. By putting the cursor on that line and typing in the no.s you see how I entered the player shape. (type N to cont.) ( SPLAY/RUNIT/GRAPHICS WORDS ) Enter 6 GPRIOR C! To see the shape and run the player/missile demo type SPLAY and RUNIT. This will display theshape under the control of joy- stick 0. You will notice that the shape "hides" behind the text window and and the stack display (if the latter is on). Later you can draw some play- field stuff and experiment with making him go in front of some and behind others by putting a different # in GPRIOR. ( LL ) The graphics commands in this FORTH for the Atari are very like those you use in BASIc except that as you have noted here the numbers come first not after the commands. x C. = COLOR x x GR. = GRAPHICS x x y PL. = PLOT x y x y DR. = DRAWTO x y similarly POS. is POSITION, SE =SETCOLOR, etc. The fill command is XIO18 and it requires you to put the fill color on the stack first. (N) ( DEMO OF P/M PRIORITY )( For a demo load this screen. It will draw a couple of bars of vertical colors for the bug to play in. After typing SPLAY type 1F LOAD then type RUNIT. ) DX 1 C. 90 90 PL. 90 10 DR. 80 10 DR. 80 90 POS. 1 XIO18 ( FIRST BAR ) 2 C. 70 90 PL. 70 15 DR. 50 15 DR. 50 90 POS. 2 XIO18 ( 2ND BAR ) 3 C. 30 40 PL. 30 20 DR. 10 15 DR. 10 80 POS. 3 XIO18 ;S 3rd bar fill runs over to the right this time (LL) as the POS. statement is lower than the initial PL. statement for this bar. After looking at this one play around a little. It will take some work to make this display four players at the same time, but its fun to try. You may wantto go back and redefine some of the words to expect the player number on the stack to tell themwhich player to work on, or you can just define a word for each player and call them by name. Hope you have fun. (N) ( STACK DISPLAY )One of the nice features of thissystem is the stack display. To use it just type STACKON. Then type a few numbers and press . You will see them showon the stack display at the top of your monitor screen. To turn it off when unwanted STACKOFF. You will find the STACK display very useful to you as you start defining your own words as you can go through each step in the word singly and watch what it does to the stack. The stack is the single most difficult (LL) thing for most begiinning FORTH nuts to understand, and this display is used by even the experienced programmers I know. Put some numbers on the stack and try some of the Math words like + and /, and *. Use SWAP, and ROT, and . and DROP, etc. and observe their stack effects. (N) ( DECOMPILER/DCP/ZZ )Now we come to one of the most useful and powerful words in thevocabulary of this FORTH versionthe decompiler word. To use it just type DC xxxx, with xxxx theword you want decompiled or taken apart. This word works on even the primitive words in the fig-FORTH kernel. Try a few of the simple words first, like GS, or NS. When you do you will find that the numbers above 0,1,and 2 all have LIT after them. The first three are used so muchthat they are FORTH words. (LL) ( screen 21 ) The LIT tells FORTH that the They are to be taken as literal values. To give you an idea how this works try typing in this definition and then DC AS. DX : AS 26 709 C! 18 710 C! 16 712 C! ; You now have another word avail.to you AS or amber screen. To make this a permanent part of your disk you can use MAKEBOOT to write out all the compiled words you have in RAM. (N) ( TEXTS ON FORTH )This should give you enough to think about for quite a while ifyou are new to FORTH. We haven'ttried to make you a programmer, but just to introduce you to thefeatures of this version of the language and help you over a fewof the initial rough spots. There are several good books fornew people in FORTH. The one I personally found most helpful was Ҡ published by McGraw Hill. The best next book and probably the best (LL) if you can only afford to buy one is Ǡ by Leo Brodie, and published by FORTH Inc. I wish you the best of luck and hope that you will keep us up todate on your extensions to this