@L}5 _$% l0$)$$Hȱ$ UhL" `e$$%`$%`  R@P!( L(1   Y I`  d  Ld M * @  $ % CC$$)%1 Udߥ$9%: !0 S$% DD˙`  }J)Lr d M * @  $ % CC$$)%1 Udߥ$9%: !0 S$%} DD˙`  }J)Lr J  ((  p L ()   J}L= ( L 0q A    IB JC;? D W } LL  ` W )LA!  ߰")-݆ p" } $G@LL 08`Q")<2Q0 -G$Ș݆ UL# ; p8(()(0ʥ)NQ` }$GȘ݆LU )L ݆ L GȘ ݆LL )W>Z   HH)H }p h  hyhy D L> L JJ    ! LA*` BF }7'8  M HN H` 8 Z  \LdJJ!"! GFE@F (!L }EE !E^ ^ E E7EȩEdE/EȩE  D } .L }  ;F d  ;?F7F? ( .   Z D LL d } . D  L    p  E` , d)  D L) 0BM݊L݉} ML  N݆ L NLML [ TEqEHȱEqEh 0Gȹ G} HLL GɛL  LFREE SECTORS G) *Gȩ GȽG GȌ*jj >G} C8jJ3j2CD( C202C ԠBX` N 1? l LlD:RAMDISK}.COMLu L1 L ;LHL  T`  `8  ɐ     `TU  } L ? .  t`GBJ ~DEHI B V0dV!}QDEHI VF9 ,0 ,0 s0hhL  L` H hDHEh"}DEL8HI4 0 HI,0 0  9 .G VLO#},0 L4*IJ`llD1:AUTORUN.SYSNEED MEM.SAV TO LOAD THIS FILE.D8:MEM.SAV J y08 B|DEHI$} V0 0`B;DEL`?<0LV`@ʆ v s? F0Ξ05: [ BDEHI%} VY8 B V  @  /DE `E:D8:DUP.SYSERROR-SAVING USER MEMORY ON DISKTYPE Y TO &}STILL RUN DOS B;DE J  (` 9 V⪍ ઍ  -'}LLu ÝDEHILV 9 .l 9 .l  `` s$B BH(}I|DE V BLV nB,DE JLV B V BLVDEIʩ BꭝLu } 3E:}DISK OPERATING SYSTEM II VERSION COPYRIGHT 1984 ATARI CORP.A. DISK DIRECTORY I. FORMAT DISKB. RUN CARTRIDG*}E J. DUPLICATE DISKC. COPY FILE K. BINARY SAVED. DELETE FILE(S) L. BINARY LOADE. RENAME FILE M. RUN AT ADDRES+}SF. LOCK FILE N. CREATE MEM.SAVG. UNLOCK FILE O. DUPLICATE FILEH. WRITE DOS FILES P. FORMAT SINGLEL !N',}#"&))9(&*)/h)''-&؆莟R'S  vL/ˢ L }Insert DOS 2.0s, type Y Λx -}DEfHI 1莏#q! @ y0ɛ8A0,' ȅ 1 1ild! 1L!NO SUCH ITEMSELECT.} ITEM OR FOR MENU! 0 .z:*{}.|{ 1 0 0JB 18L%|DL/}%DIRECTORY--SEARCH SPEC,LIST FILE?[# 0 0 &|D3" 1L!NOT A DISK FILEN !B 1L!E# 1 !BD0}ED:}:1BJ|DE 1DEBHI 1 h0ߢ 0.1}  0?詛 1 y0YЛ 1 ;#L" ;#L! BL1TYPE "Y" TO DELETE...DELETE FILE SPEC2}COPY--FROM, TO?OPTION NOT ALLOWED394 FREE SECTORS COPYING---D1:DIRSORT.COMl# 0|D .L/%#3}##JB|DE 1BHID#E 1#0: B 1L!#͑### B 1#c$0SY4}S1}:## # # .#Ƚ# # 𩛙## 1,#PD#ELJ- <.BJD#E 5}1 1HH 0hh|DL%1}:̳# L% #D#EL% 1 0 . .0O% 1L!WILD CARDS NOT A6}LLOWED IN DESTINATION 0 <.|K}N 2 FORMAT. t* 5) 1L!`) 0NΞ 0 L1) 1 L!BAD LOAD FILELOAD FROM WHAT FILE?) 0 ?}0#B 1L!WHAT FILE TO LOCK?) 0 0$B 1L!WHAT FILE TO UNLOCK?DUP DISK-SOURCE,DEST DRIVES?TYPE "Y" IF OK TO US@}E PROGRAM AREACAUTION: A "Y" INVALIDATES MEM.SAV.FE! +L1   `*  70 2 2A} 0.* 1 y0 0)INSERT BOTH DISKS, TYPE RETURN^, 1 y038逍 N, 1L! ,B}C, t*  Lx+, 0 ^, 1 y0 , ,0,0 ,L+ ,I0 ,Vǭ0C}Ξ, 0 }, 1 y0C,ШC, 0K'!" H H 'h h Lx+!EF 5L1L!D,I,HhD}` NOT ENOUGH ROOMINSERT SOURCE DISK,TYPE RETURNINSERT DESTINATION DISK,TYPE RETURNE}`  `8 rL1`-* 1P* 1 y0Y`hhL!NAME OF FILE TO MOVE?- 0 0|DL% <.F},^ 1 70 0 .@L# .BJ 1  DEHIB V L1 ,} 1 70,L.  G}JB|,#P#DE 1 HI BDEHHII 1 B 1 ,^ 1 70,0La- B V,#PH},^ 1 70 0L#L!-* 1P* 1 y0Yj383}mm ݭI}}`8}``|* ? ɛ,`|:-)| / 1L!`DESTINATION CANT BE DOJ}S.SYS0 0H{ 24Δ 28/L!/) 2 Π 2 0 ξK}hAΞB,0 J 1 BDEHI,HÝDE 1HIHIDELSAVE-GIVE L}FILE,START,END(,INIT,RUN)O S0 1`BDEPHI V` S0H 1 L!M}0 0 1L~0`PLEASE TYPE 1 LETTER,0`hhL! 70 1L0L<1 ,;ɛ7,"ɛ:ݦ1ݥN}A"D|ݤD|ȩ:|ȩ|ɛ,,(/+.ީ1 1,ɛ`轤{NAMEO} TOO LONG B VL!` L1I H1EΝDL1|mDiE` V0`8d/8 i:222 1 LP}!ERROR- 128ɛ+,' 20*.. өr2 1``2TOO MANY DIGITSINVALID HEXAQ}DECIMAL PARAMETER800 0 8 00`,0'D800 H,ɛh`2L1NEED D1 THRU D8uR} ECIMAL PARAMETER800 0 8 00`,0'D800 H,ɛh`2L1NEED D1 THRU D8u05  15 2 2151^116115ύ011$r2ԭ5 3)5)5ԭx GT}@@L00)+& 2 L0=ɛ -L!1LV1L1 /3 3ȹ441L-4 v3 25 2H 2h͔5U}L3L3 2 k3U hh`DOC`QL3P1Lk0S1H /3h0B k3@ VL0LU!#$53 1181118V}1111Ε5 1Lk0552 1Ȍ1i111i11115Lk0pppB4f5&&&&&&&&^6f^6&&&&&W}&&A1@BJ D2ELVK@BHILV^Щ6 2BD2EJ VBD5EHI0 V0%5X}5 2iХiL[2 25 25`D:*.*` i@`8 ``@i `8@`0 BLV525<4Y}5`HH i ԍΗ552 ԍhh@ Lح1Э1Ѣ 24.4 24Z}4`D4E` 2BJ k3LVRH` 2BD4EhK)I JLV333 BASIC languag i}e OBJ > MACHINE language DOC > DOCumentation PIC|MIC|FNT|MVM > Graphics AMS|MUS|MBD > Music LST j} > BASIC LISTing -Some MACHINE language programs can only be run by booting the disk MENU "without" BASIC! -For s k}ome programs, XL/XE models may require a "TRANSLATOR" program to be booted first! [Also available from BELLCOM] - l}Most programs are relatively self-explanatory; however, some have separate DOCumentation files available. Some BASIC m} programs may contain instructions in their program listings. -To use this great MENU program on your own disks, n}simply copy the file "AUTORUN.SYS" onto your disk. * MENU written by DAVID CASTELL * program on your own disks, ^ ---------------------- HELP4th, by Sally Nagy ----------------------This file contains information onprp}ograms and other articles foundon Forth.Before you get to far in your studyof FORTH, you should purchase abook on the suq}bject. The booksrecommended to me were, LeoBrodie's "Starting Forth" and"Thinking Forth".To read the TUTORIAL to thefir}gFORTH disk, first load withoutBASIC and using a TRANSLATOR, thenenter... 10 UE...from there just follow ts}heprompts in the tutorial. Programs --------DEITY- See Analog Issue 9, pgs.74-76.FORTH at}nd BOOT-DISKS don't use theATARI file structure at all. Transferring FORTH screens, or BOOTdisks on the phone seemed animu}possibility. Data for thesefiles is simply physical sectors. There are no "real" files.After William Volk finished CREATv}ORthis problem seemed to have asolution. Since he wrote a programthat wrote out physical sectors,then a program generatow}r that readthose sectors and generated such aprogram.Diety prompts you for a startsector, the number of sectors (upto 8x}0), and generates a BASICprogram that will re-generate thosesectors. Finally a program thatcan be used to send out those y}FORTHscreens to BBSs.When CREATOR is run, it prompts theuser for an object file name, and a7 character name for the seriz}es ofBASIC programs it creates. Whenthese programs are run in sequencethey re-create the object file. Upto nine BASIC p{}rograms in LISTedformat are created.FORTH-DOS- see Analog Issue 9, pgs. 55-56.FORTH'S files are arranged in|}"screens", which are physicalsectors that are read in sequence. You edit 1 screen at a time, 1 or1/2 K of memory.FORTH d}}oesn't use the ATARI filestructure for some valid reasons. DOS takes up memory and manyapplications don't require itspres~}ence, games for example. Somepeople have written DOS links inFORTH, but this negates FORTH'scompact nature. If you're no}tgoing to be using the DOS in yourapplication, why include DOS in it?FORTH-DOS is a program that willload a text file in}to memory,format the file for FORTH, and saveit on specified screens. It alsoaccomplishes the reverse process.FORTH Scr}een Syntax--FORTH code hasseveral features that impose somekind of formatting requirements onFORTH-DOS. FORTH definitions} musthave spaces between functions(words). Also, you don't want aword split between two lines. FORTH-DOS cleans up the t}ext file,formatting if for the FORTH screen.The reverse process is simiplier.There are two formats for FORTHscreens, APX} FORTH uses 1K screens(16 lines of 32 characters). FORTH-DOS takes this into accountwhen processing the text files. Inth}e FORTH screen to text fileprocess, FORTH-DOS starts with theappropriate line length (32 or 64characters), and attempts to}elimate trailing blanks.THE FILES... FORTHA.TXT, FORTHB.TXT, FORTHC.TXT, and } FORTHTUT.TXT...are files that were createdusing FORTH-DOS. They are takenfrom the Tutorial Side ofFIG-FORTH. NOTE:} THESE ARE LEFTTHE WAY THEY WERE MADE, SO THEY AREOFTEN ONTO IN COMPLETE SENTENCESTRUCTURE and etc. They were lefton the} disk to show you what can bedone and give you some of thecommands of Forth. If you haven'tseen MESA FORTH, I would sugge}sttrying that out also. In AppendixA of MESA FORTH DOC there is a listfig FORTH words and definitions.ASK SALLY FORTH:} -Analog Issue 13, pg.91-94.In Sally Forth's column, shecompares ATARI BASIC, FORTH andmachine language for speed.FO}RTH1--is the Basic program thatuses nexted FOR/NEXT loops anddirect POKEs to fill a GRAPHICS 24hi-res screen with color. }It isdone in 4270 jiffies. (256 jiffiesequal 4.23 seconds.)FORTH2A--is a BASIC program thatuses a machine language subro}utineto fill a GRAPHICS 24 screen.FORTH2B--is the source code for theDATA statements, created with theMAC/65 Macro Assem}bler. It isstructured to work in a mannersimiliar to the pure BASIC version.FORTH Listing 3 shows one way toimplement t}he screenfill routine inFORTH. SCR#1 0 (BASIC/ML/FORTH BENCHMARK) 1 (FORTH VERSION BY SALLY FORTH) 2 3 0 VARI}ABLE READING 4 5 88 CONSTANT SCREEN 6 7 : SCREENFILL (THE FILL LOOP) 8 32 0 DO 9 240 0 DO 10 255 I SCREEN} @ + C! 11 LOOP 12 240 SCREEN @ + SCREEN ! 13 LOOP ; 14 15 FORTH Listing 4. Speed testresults.Listing 1 is a} very inefficient wayto fill a GRAPHICs 24 screen. RunFORTH5.Now run FORTH6.Now compile Listing 7 into yourFORTH syst}em. SCR#3 0 (FAST VERSION OF BENCHMARKK ) 1 (SALLY FORTH) 2 3 0 VARIABLE READING 4 5 88 CONSTANT SCREE}N 6 7 : BENCHMARK-2 8 24 GR. 9 0 19 ! 10 SCREEN @ 7680 255 FILL 11 256 19 C@ * 20 C@ + 12 READING ! 13 0} GR. 14 READING @. 15 ." JIFFIES" CR; SCR#2 0 (BENCHMARK CONTINUED) 1 2 :BENCHMARK 3 24 GR. 4 0 19 ! (}ZERO TIMERS) 5 SCREENFILL 6 256 19 C@ * 20 C@ + 7 READING ! (SAVE READING) 8 0 GR. 9 READING @. (SHOWING READ}ING) 10 ." JIFFIES" CR; 11 12 13 14 15 FOR MORE INFO ON FORTH, REFER TO: ---------------------------------}ASK SALLY FORTH: -ANALOG ISSUE 14, P.59-61.ASK MR.FORTH: -ANALOG ISSUE 23, P.18-20. 24, P.20-26.} 25, P.24-28. 26, P.18-22. 27, P.26-30. 29, P.13-18. } MAY 1985, P.19-16. JUNE 1985, P.19-26.FORTH FACTORY / ANTIC,DEC.82/JAN.83, P.49-51.WHY GO FORTH? BY THOM}AS MCNAMEE,P.96-100.DOS SECTORS TO FORTH:SALVAGE THATDATA BY BILL VAN HASSEL, P.32-33,OCT.1983.DISASM.4TH, ANTIC, MARC}H 1984 ROBOT.4TH, ANTIC, JUNE AND JULY1984-----------------------------------P.32-33,OCT.1983.DISASM.4TH, ANTIC, MARCRab{ BABUECSTARSIZLINSCRSECTOAMMBUFFEOPCOUNBUFHBUFLSECHSECLRESUL} } F;@ ,;@,46-+I:,&A,F;,;A ,?67,. '67@<@},. ?67@,.7@,oAdA'Ae@29Af@KAf@]AgA(o}Ah@2$$(THIS PROGRAM TRANSFERS FORTH<''(INTO TEXT FILES, AND VISA-VERSAF%%(USE TEXT FILES TO EDIT FORT}H!K(NAME OF TEXT FILEP""(WHAT IS THE FORMAT OF YOURZ''(FORTH,-1K SCREEN 64 CHAR. LINE_=#(-1/2K SCREE}N 32 CHAR. LINE'=01*02@d( START SCREENn;6-@6-@d#42/6-@;6-@2}x+'(1-FORTH TO DOS, 2-DOS TO FORTH+41A42A A FORTH TO TEXT FILE11(})INSERT DISK IN DRIVE # 1, TO READ SCREENS1( # OF SCREENS1$$A(!A$6-@%$6-$$6-C:},'6-@-@' A@6-%@6-%A( K(CREATING TEXT FILE -G($INSERT DISK} TO WRITE TO, HIT RETURN K"1@1@@D:*.*,-@+$$A(,'66.7$&+}&@,<$,@ 6-B:,J,7<,4 "6-&@, A0T)(@7@<,) APY(@}^ @TEXT TO FORTH-)(!INSERT TEXT-FILE DISK, HIT RETURN- @@}6- A@!@ 6-B:,6-$%@("66-%@@ A@&6 67<%&@},.,6-%@6 A@0. 6-.7%@<%@,4 A:,7<,0 "6-&@, ApD'}"6-'CANT FIND BLANKNL#67<%&@,.7@<,46.7%@,B6-%@L AEX6@}6-'@%P:,66-P:,%@bN(INSERT DISK IN DRIVE #1:( TO WRITE  SCREENSJ( HIT RETURNNl$ 6-}$6-C:,$6-@%$v'6-@-@' A@6-%@6-%A( 6-P:'A}V,6-&$AVArAs!Ai@!Ap6-P:'AV,6-&$AV}AxAy6-?:Ad,$ D:FORTHDOS?WRITING6-P:'AV,6-&$AVT0^nSCREEJIFFIEd""****************************n""* ATARI/FORTH/ML BENCHMA}RK *x""* BY SALLY FORTH *""**************************** +@$* FIND ADDRESS OF SCREEN%}%6-F:@,%AV$F:@, * ZERO SYSTEM JIFFY TIMERS'@'@ * S}CREEN-FILL LOOP-@@2-A9%AU 6-%A@ ",* DE}TERMINE FILL TIME6%%6-F:@ ,%AV$F:@,@J* DISPLAY FILL TIMET +^  JIFFIES}D:FORTH1L TIME6%%6-F:@ ,%AV$F:@,@J* DISPLAY FILL TIMET +^  JIFFIES 'SCREEJIFFIEd +@$nI@'@ I6-F:@,%AV}$F:@,xE-%AvAU# E6-F:@ ,%AV$F:@, +  JIFFIESD}:FORTH6,xE-%AvAU# E6-F:@ ,%AV$F:@, +  JIFFIESD$%e SSTRINSCREETABLOFFSEHLJIFFIEd +@$ }n'@'@ x;Av,%%6-F:A@,%AV$F:AA,%%6-F:@,%AV$F:@ },%%6-F:A4,%AV$F:A5, 6-&6-P:'AV,6-&+$AV,%@%@ }##67@<@,.>:AU,##67Av<Av,.>:AU,67@,.%%6-F:@ ,%AV$F:@ }, +  JIFFIES D:FORTH67Av,.>:AU,67@,.%%6-F:@ ,%AV$F:@ 50MLBYTJIFFIEd""****************************n""* BASIC/ML/FORTH BENCHMA$}RK *x""* ASSEMBLY DEMO FROM BASIC *""* BY SALLY FORTH *""***************************** READ $}ML DATA INTO ML$;@E,-@@E"67,.>:, * SET UP GRAPHICS MODE +@$$}* FILL SCREEN, GET TIMING6-?:C:,,* DISPLAY TIMER READING" +,  JIFFIES$}6@* DATA FOR ML ROUTINEJ[[104,169,0,133,19,133,20,162,32,160,0,169,255,145,88,200,192,240,208,249,24,165,88,105T$}QQ240,133,88,165,89,105,0,133,89,202,208,229,165,19,133,213,165,20,133,212,96 D:FORTH2A,240,208,249,24,165,88,105T$a<czXPOINTSYPOINTSA A< @@ @ 9@ ,9@ ,-@ (}"68,- (-@ 2"68,- < +@@F-@ P,8,8,Z(} d* X-COORDINATE DATAn##20,16,20,24,12,28,16,20,24,20x* Y-COORDINATE DATA6,8,8,8,9,9,10,10,10,12(}D2:SALFORTH.BASRDINATE DATAn##20,16,20,24,12,28,16,20,24,20x* Y-COORDINATE DATA6,8,8,8,9,9,10,10,10,12(Scr #10 ( GRAPHICS - SUBROUTINE WORD ) : SUBROUTINE O VARIABLE -2 ALLOT [COMPILE] ASSEMBLER ?EXEC !CSP ;,} --> Thanks to Valpar International for the use of this word.Scr #11( VBLANK EQUATES, INSTALL )HEX22,}4 @ CONSTANT OLDBLANKE45C CONSTANT SETVBLE462 CONSTANT JVBDECIMALCODE INSTALL ( ADDR -- ) # 1 LDA, SETUP JSR, XSAVE ,}STX, N LDY, N 1+ LDX, # 7 LDA, SETVBL JSR, XSAVE LDX, NEXT JMP, C; -->SCR #12 ( GRAPHICS -,} VBLANK ROUTINE ) 0 CONSTANT OFF 1 CONSTANT ON : VBLANK ( ADDR/ON or OFF -- ) IF INSTALL ELSE OLDBLANK INSTA,}LL ENDIF ; --> To use: Compose SUBROUTINE, then turn on with: SUBROUTINE ON VBLANK,} Turn off with: OFF VBLANKScr #13 ( GRAPHICS - TEST VBLANK ) SUBROUTINE ROTBAK 712 INC, ( INCREMENT COLOR4 ,}) JVB JMP, ( MUST END THIS WAY ) : TEST ROTBAK ON VBLANK ;Scr #20 ( DISPLAY LIST INSTALLATION ) : DLI ( ADDR/O,}N or OFF -- ) IF 192 54286 C! 512 ! ELSE 64 54286 C! ENDIF; --> To use: ,}Compose SUBROUTINE, then turn on with: SUBROUTINE ON DLI Turn off with: OFF DLIScr #21 ( MODIFY THE GR. 7 DISPL,}AY LIST) : DLIMOD 7 GR. 560 @ ( FIND DISPLAY LIST ) DUP 85 + SWAP 6 + DO I C@ 128 + I C! LOOP ;,} -->Sets the high bit in every mode7 (Antic D) line.Scr #22 ( DISPLAY LIST INTERRUPT ,} ) HEX 0 VARIABLE COUNTR D01A CONSTANT COLBAK D40A CONSTANT WSYNC 0200 CONSTANT COLTABSUBROUTINE GR7DLI PHA, TXA, P,}HA, COUNTR INC, WSYNC STA, COLBAK STA, # 4F CPX, EQ IF, # 0 LDA, COUNTR STA, ENDIF, PLA, TAX, PLA, RTI, C; DECIM,}AL -->SCR #23 ( 80 COLORS ON THE SCREEN ! ) : 80COLORS DLIMOD GR7DLI ON DLI ;SCR #24,} ( GRAPHICS 7 RAINBOW ) 0 VARIABLE RESET SUBROUTINE RAINBOW PHA, COUNTR INC, COUNTR LDA, WSYNC STA, COLBAK S,}TA, SEC, RESET SBC, # 79 CMP, EQ IF, RESET LDA, COUNTR STA, ENDIF, PLA, RTI, C; : SPECTRUM DLIMOD RES,}ET @ COUNTR ! RAINBOW ON DLI ; -->Scr #25 ( CYCLE THE COLORS IN VBLANK ) 1 VARIALBL,}E MVFLG SUBROUTINE CYCLE PHA, MVFLG LDA, EQ IF, COUNTR INC, ENDIF, PLA, JVB JMP, C; 1 CONSTANT UP 0 CONSTANT DO,}WN : MOVECOLORS ( UP or DOWN -- ) MVFLG ! CYCLE ON VBLANK SPECTRUM ; -->T UP 0 CONSTANT DO,jScr # 5 ( DOS TO FORTH ) 0 VARIABLE DEST 2 ALLOT : MOVEIT ( ADDR. -- ADDR.) DUP DUP 127 + C@ DUP Scr # 6 ( DOS TO FORTH ) : CHAIN ( FORTH.SECTOR.# -- ) BEGIN 0} BLOCK MOVEIT NEXTSECTOR DUP -1 = UNTIL DROP ; : ?RETURN ." PRESS RETURN." BEGIN KEY 155 = UNT0}IL ; -->Scr # 7 ( DOS TO FORTH .. GETFONT) : GETFONT ( DOS.SECT.# FORTH.SCREEN.# -- )0} 4 * SWAP 1- PAD DEST ! CR ." INSERT SOURCE DISK." ?RETURN CHAIN CR ." INSERT DEST. DISK." 0} ?RETURN 1024 0 DO 1+ DUP 1- BLOCK PAD I + SWAP 128 CMOVE UPDATE 128 +LOOP DROP FLUSH ; 0} -->Scr # 8 ( VERSAWRITER PICTURE FETCH ) : BLANKSCREEN ( -- ) 0 0 0 SE. 1 0 0 SE. 2 0 00} SE. 4 0 0 SE. ; : GR8CLRS ( ADDR. -- ) DUP 4 + C@ 1 0 ROT SE. DUP 6 + C@ SWAP 5 + C@ 2DUP 2 Scr # 9 ( VERSAWRITER PICTURE FETCH ) : GR7CLRS ( ADDR. -- )0} DUP 4 + C@ OVER 7 + C@ 0 Scr # 10 ( VERSAWRITER PICTURE FETCH ) : VERSA@ ( GR.MODE DOS.SECTOR.# -- ) 1- SWAP GR. BLANKSCREEN 0}88 @ 14 - DEST ! CHAIN ( NOW GET COLORS ) 88 @ 14 - DUP 3 + C@ 30 = IF GR8CLRS ELSE 0} GR7CLRS ENDIF ; ( NOW GET COLORS ) 88 @ 14 - DUP 3 + C@ 30 = IF GR8CLRS ELSE 0SCR #30 0 ( FORTH DISASSEMBLER ANTIC 3/84 ) 1 HEX 0 VARIABLE MULTIMODE -2 ALLOT 2 1D , 1E , 3C , 3D , 3E , 5C , 34} 5D , 5E , 7D , 7E , 9C , 9D , 4 9E , BC , BD , BE , DC , DD , 5 DE , FC , FD , FE , 6 7 : SEARCH 1 + 0 DO OVER O4}VER I 2 8 * + C@ - DUP 0= IF DROP 9 DROP DROP I 1 LEAVE ELSE 10 0 IF DROP DROP I 0 LEAVE 11 ENDIF E4}NDIF LOOP ; 12 13 0< VARIABLE POINTER 14 15 -->SCR #31 0 : STRING ( COMPILE TEXT ) 1 BL BLK @ IF BLK @ 4}BLOCK ELSE 2 TIB @ ENDIF IN @ + SWAP 3 ENCLOSE IN +! OVER - >R + 4 HERE R CMOVE R> ALLOT ; 5 6 0 V4}ARIABLE MULTINAME -2 ALLOT 7 8 STRING ORAASLBITANDROLJMPEORLSR 9 STRING ADCRORSTYSTASTXLDYLDALDX 10 STRING CPYCMPD4}ECCPXSBCINC 11 12 : CHKMODE DROP DUP 2 * ' 13 MULTIMODE + @ POINTER @ C@ - 14 4 /MOD SWAP IF SWAP 1+ SWAP 14}5 ENDIF ; -->SCR #32 0 0 VARIABLE ONEMODE -2 ALLOT 1 2C00 , 2C08 , 280A , 3010 , 2 2C18 , 1020 , 2C28 , 284}2A , 3 3030 , 2C38 , 2C40 , 2C48 , 4 284A , 3050 , 2C58 , 2C60 , 5 2C68 , 286A , 246C , 3070 , 6 2C78 , 2C88 , 2C4}8A , 3090 , 7 2096 , 2C98 , 2C9A , 14A0 , 8 14A2 , 2CA8 , 2CAA , 30B0 , 9 20B6 , 2CB8 , 2CBA , 04BE , 10 2CC8 , 2C4}CA , 30D0 , 2CD8 , 11 2CE8 , 2CEA , 30F0 , 2CF8 , 12 00FF , ( 00FF IS A DUMMY ) 13 14 15 -->SCR #33 0 0 VARI4}ABLE ONENAME -2 ALLOT 1 STRING BRKPHPASLBPLCLCJSRPLPROL 2 STRING BMISECRTIPHALSRBVCCLIRTS 3 STRING PLARORJMPBVSSEIDE4}YTXABCC 4 STRING STXTYATXSLDYLDXTAYTAXBCS 5 STRING LDXCLVTSXLDXINYDEXBNECLD 6 STRING INXNOPBEQSED??? 7 8 0 VAR4}IABLE MODE -2 ALLOT 9 STRING ,X,Y,X)Y..##0PX).Y().AIMRE 10 11 0 VARIABLE LENGTH -2 ALLOT 12 2 C, 2 C, 1 C, 1 C, 2 C,4} 1 C, 13 1 C, 1 C, 1 C, 2 C, 0 C, 0 C, 14 1 C, 0 C, 15 -->SCR #34 0 : PRINTNAME SPACE SWAP 3 * + 1 4} 3 TYPE 2 SPACES ; 2 3 : PRINTMODE 2 * ' MODE + 2 TYPE 4 2 SPACES ; 5 6 : PRINTADD POINTER @ C@ D4}UP 20 7 = OVER 40 = OR OVER 4C = OR 8 OVER 60 = OR SWAP 6C = OR 9 SWAP ' LENGTH + C@ 1 POINTER 10 4}+! POINTER @ OVER POINTER +! 11 OVER 0= IF DROP DROP ELSE 12 OVER 1 = IF C@ . DROP ELSE 13 @ 0 D. DROP ENDI4}F ENDIF ; 14 15 -->SCR #35 0 : DISASSEMBLE POINTER ! CR 1 BEGIN CR 2 POINTER @ DUP 0 D. 2 SPACES 3 5} C@ ' ONEMODE 2D SEARCH 4 IF ( FOUND ) DUP ' ONENAME 5 PRINTNAME 2 * 1+ ' 6 ONEMODE + C@ 5}4 / 7 ELSE ( NOT ) DROP POINTER @ 8 C@ ' MULTIMODE 16 SEARCH 9 CHKMODE CHKMODE CHKMODE 10 5} SWAP ' MULTINAME 11 PRINTNAME ENDIF 12 DUP PRINTMODE PRINTADD 13 ?TERMINAL OR 14 UNTIL ;5} 15 : DIS DISASSEMBLE ;4}Scr # 100 0 ( Port setup and variables ) 1 DECIMAL 2 3 54016 CONSTANT PORTA 4 54018 CONSTANT PACTL 5 6 : PORTSE9}T ( -- ) 7 PACTL C@ DUP 4 - PACTL C! 8 16 PORTA C! PACTL C! ; 9 10 128 VARIABLE SERVO 11 120 VARIABLE OPULSE 12 9}150 VARIABLE TOP 13 14 : LABEL 0 VARIABLE -2 ALLOT ; 15 -->Scr # 101 0 ( Driver routi9}ne ) 1 HEX ASSEMBLER 2 100 DP C@ - ALLOT ( PAGE BNDRY ) 3 4 LABEL DRIVER ( -- ) 5 OPULSE LDX, INX, 6 10 # LDA9}, PORTA STA, 7 BEGIN, NOP, NOP, DEX, EQ 8 UNTIL, ( END FIXED LENGTH ) 9 SERVO LDX, INX, 10 BEGIN, NOP, NOP, NO9 }P, NOP, 11 DEX, EQ 12 UNTIL, ( END VARIABLE LENGTH ) 13 0 # LDA, PORTA STA, 14 E463 @ JMP, ( EXIT VBLANK ) 15 9 } -->Scr # 102 0 ( Oscillating Demo ) 1 DECIMAL 2 3 : DEMO ( -- ) 4 PORTSET 5 9 } 0 54286 C! DRIVER 548 ! 6 64 54286 C! ( INSTALL VBI RTN ) 7 BEGIN TOP @ 0 8 DO I SERVO C! 9 100 0 DO LOOP 9 }( DELAY ) 10 LOOP 11 0 TOP @ 12 DO I SERVO C! 13 100 0 DO LOOP ( DELAY ) 14 -1 +LOOP ?TERMINAL 15 UNTIL ;9 }Scr # 103 0 ( Keyboard control demo ) 1 2 : KEYBOARD ( -- ) 3 TOP @ 2 / SERVO ! 4 BEGIN 5 764 C@ > R 9}255 764 C! 6 SERVO C@ 7 R 6 = 8 IF 1 + 9 ELSE R 7 = 10 IF 1 - 11 ENDIF 12 ENDIF 0 MAX TOP @9} MIN 13 SERVO ! 14 R > 22 = 15 UNTIL ;8}Screen: 50 0 ( CONSTANTS ***** EWR/ANTIC MAG ) 1 : EQU CONSTANT ; HEX 2 10 EQU POKMSK 3 D400 EQU DMACTL 22F EQU SD=}MCTL 4 D208 EQU AUDCTL D203 EQU AUDC2 5 D302 EQU PACTL D300 EQU PORTA 6 224 EQU VVBLKD 212 EQU VTIMR2 7 600 EQU S=}ERVO0 601 EQU SERVO1 8 602 EQU SERVO2 603 EQU SERVO3 9 604 EQU SERVO4 605 EQU SERVO5 10 606 EQU SERVO6 607 EQU SE=}RVO7 11 608 EQU OPULS0 609 EQU OPULS1 12 60A EQU OPULS2 60B EQU OPULS3 13 60C EQU OPULS4 60D EQU OPULS5 14 60E EQU=} OPULS6 60F EQU OPULS7 15 -->Screen: 51 0 ( PAGE 6 CODE ) 1 2 0 VARIABLE 6CODE -2 ALLO=}T 3 2020 , 2020 , 2020 , 2020 , 4 DECIMAL ( OPULS0-7 VALUES: ) 5 64 C, 64 C, 64 C, 64 C, 6 64 C, 64 C, 64 C, 64 C, HE=}X 7 0000 , 11AD , 8D06 , D300 , 8 110E , AE06 , 0610 , 08E0 , 9 10F0 , BD18 , 0600 , 087D , 10 8DO6 , D202 , 098D , EE=}D2 , 11 0610 , A260 , 8E00 , 0610 , 12 088E , 8ED2 , D400 , 8EE8 , 13 0611 , 10A5 , 0209 , 0E8D , 14 20D2 , 0612 , 624C ,=} 8AE4 , 15 2048 , 0612 , AA68 , 4068 , -->Screen: 52 0 ( SETUP START STOP ) 1 : SETUP ( -- ) 2 6CODE 600 58 CMOVE =} 3 PACTL C@ DUP FB AND PACTL C! 4 FF PORTA C! PACTL C! 5 A0 AUDC2 C! 64F VTIMR2 ! ; 6 7 SETUP 8 9 : START ( -- )=} 10 C2 POKMSK C! 0 D40E C! 11 633 VVBLKD ! 40 D40E C! ; 12 13 : STOP ( -- ) 14 0 D40E C! E462 VVBLKD ! 15 40 D=}40E C! C0 POKMSK C! ; -->Screen: 53 0 ( TEST ) 1 2 DECIMAL 3 4 : TEST ( -- ) 5 START 10 0 6 DO 8 0 7 =} DO SERVO0 I + C@ DUP 20 + 8 SERVO0 I + C! 6000 0 DO LOOP 9 SERVO0 I + C! 6000 0 DO LOOP 10 LOOP 11 ?TER=}MINAL IF LEAVE ENDIF 12 LOOP STOP ; 13 14 15<} rs+ BABUECSTARSIZLINSCRSECTOAMMBUFFEOPCOUNBUFHBUFLSECHSECLRESULBA}ppp@x@"@@d@" AS Av B& @ AwASA'@@A }@@Ad F;@ ,;@,46-+I:,&A,F;,;A ,?67,. '67@A!}<@,. ?67@,.7@,oAdA'Ae@29Af@KAf@]AgA"}A(oAh@2$$(THIS PROGRAM TRANSFERS FORTH<''(INTO TEXT FILES, AND VISA-VERSAF%%(USE TEXT FILES TO A#}EDIT FORTH!K(NAME OF TEXT FILEP""(WHAT IS THE FORMAT OF YOURZ''(FORTH,-1K SCREEN 64 CHAR. LINE_=#(-1A$}/2K SCREEN 32 CHAR. LINE'=01*02@d( START SCREENn;6-@6-@d#42/6-@;6A%}-@2x+'(1-FORTH TO DOS, 2-DOS TO FORTH+41A42A A FORTH TO TEXT FIA&}LE11()INSERT DISK IN DRIVE # 1, TO READ SCREENS1( # OF SCREENS1$$A(!A$6-@%$6-A'}$$6-C:,'6-@-@' A@6-%@6-%A( K(CREATING TEXT FILE -G($INA(}SERT DISK TO WRITE TO, HIT RETURN K"7@7@@ D:FORTH.TXT,-@+$$A(,'A)}66.7$&+&@,<$,@ 6-B:,J,7<,4 "6-&@, A0T)(@7@<,) APA*}Y(@^ @TEXT TO FORTH-)(!INSERT TEXT-FILE DISK, HIT RETURN- @@A+}6- A@!@ 6-B:,6-$%@("66-%@@ A@&6 A,}67<%&@,.,6-%@6 A@0. 6-.7%@<%@,4 A:,7<,0 "6-&@A-}, ApD'"6-'CANT FIND BLANKNL#67<%&@,.7@<,46.7%@,B6-%@L AEA.}X6@6-'@%P:,66-P:,%@bN(INSERT DISK IN DRIVE #1:( TO WRITE  SCREENSJ( HIT RETURA/}NNl$ 6-$6-C:,$6-@%$v'6-@-@' A@6-%@6-%A( A0}6-P:'AV,6-&$AVArAs!Ai@!Ap6-P:'AV,6A1}-&$AVAxAy6-?:Ad,$D:FORTHDOS.NEWFORTHB?WRITING' 11 L( FOR6@wl15 r7510 GREETINGS FROM ͠ 11 P/N/T/INDEX/LL/UL12 ."/LPINDEX/SHOWLP/LPOPEN 13 BACKUP/CSECTS/WARN/GS/WN/+14E3} GENERAL FORTH INFO 15 LIST/L./DOIT/WIPE16 EMPTY EDIT PRACTICE BLOCK 17 EDITOR COMMANDS/FUNCTIONS18 LINE EDIT E4}COMMANDS 19 PLAYER/MISSILE STUFF1A PLAYER MISSILE STUFF 1B PLAYER MISSILE INSTRUCTIONS1C PLAYER/MISSILE SE5}HAPE TABLE 1D BDUMP/ EXAMPLE1E SPLAY/RUNIT/GRAPHICS WORDS 1F DEMO OF P/M PRIORITIES20 STACKON/STACKOFF 21 DE6}ECOMPILER/DC22 SYS/MAKEBOOT/ETC. 23 PHYSOFF24 SYS/MAKEBOOT/PHYSOFF cont. 25 TEXTS ON FORTH26 THE END. 21 DDv >> DECOMP DISASSEMBLER STUFF << DO NOT MOVE FROM THIS SCREEN !may have on this version of fI8}ig-FORTH, and the included documen-tation. Please send any commentsto Team Atari, 4029 Payne Ave.,San Jose, Ca., 95117 or lI9}eave E-mail on Compuserve for [70525,434] We'll try to answer all correspondence. Special features of this versionTo prI:}ogress beyond his tutorialtry one of the books I mention later on in the disk. This is espeI;}cially handy to compare screens from differentareas of a disk, or from two different disks. I<} The next handy-dandy command tolearn is the INDEX word. )INDEX is the word you use to seewhat is on oneI=} of your FORTHsource disks. It shows you the first line of each screen on thedisk. ( perhaps I should mentionthat FORTH orI>}ganizes the disk inscreens, the units you have beenlooking at, not files like youthe screen. Then when you use INDEX you I?}get a quick list ofthe contents. By printing this you have a nice print out. To print any single screen you type nn LISTLP I@}(nn being thescreen number). Two screens may be shown side by side on a pagefrom the printer by typing - nn SHOWLP. ThisIA} will print scrn.nn and the next screen after nn.to copy it on a one disk system.If you should experience anerror during cIB}opying, using BACKUP, note the last sector copied.Then type in nn 2D0 CSECTS to copy from sector nn to the endof the diskIC}. The options available now forscreen color are GS=green scrn, WS=white screen, NS=ID}normal scrn,DECIMAL, OCTAL, BINARY. The screen border will change colorto remind you which number base you are using. IE} the compiled form, i.e. they areLOADed and ready to use. You gotthe list of words available to you if you printed oIF}ut theVLIST. The second disk in this package contains a very small #of words in compiled form and saving as much meIG}mory space in RAM as possible. The more wordscompiled in RAM the less room for you to work with in your ownapplications.IH} In order to add a section of words to the kerneljust LOAD the screen they are onby typing nn LOAD. (nn is thescreen numberII}) ( LIST/L./DOIT/WIPE )The format you have been usingso far is the IJ}EDITOR format. You can look at screens in twowant to get rid of them later just type L#OFF and they will goaway.The oIK}ther major format for look-ing at screens is the LIST or L.format. Type nn L. to see this one. (LL to cont.)IL}In the LIST format you have to use the <1> key to stopand start the scrolling of the screen. 15 LE ӠŮ IM} The next screen is blank so youcan try some screen editing. Type N to go there and then typeIN}on the screen. When done use thecursor arrow keys to move downto the line with "DOIT" on it & press the key. ThenIO}type F. and your stuff will be on disk. To erase it type16 WIPE. ŠŠϠРԩ( EMPTYIP} BLOCK 16 ;SHELLO THERE IT IS NICE TO SEE YOU. ŠŠϠРԩ( EMPTYHG ҠӠĠ EDITOR - VOCABULARY namen EDIT - Enter editor on screen nUL MR} - List upper 1/2 of current edit screenDOIT - Take top 16 lines of screen and place MS} them into the top or bottom 1/2 ( LL or UL ) of the edit screen.x y COPY - MT}Copy block x to block y. No change to block x n LIST - Set SCR to n and MU} list the block x y SHOW - List blocks x to y inclusive x y INDEX - List first line of MV} blocks x thru y FLUSH - Return to FORTH voc and write out all updated blocks UPDATE MW} - Mark block (SCR) as updated Line editing commands next block ҠŠMX}Ǡӛ n TL - Type line n >(PAD) n HL - line n >(PAD)n BL - Blank line n n $_ - Text followin MY}$_ will replace line n and go to PAD n %_ - Text following %_ will be insertedMZ} after line n and go to PADs n CL - Move line n of block s to PAD*** NOTE *** >(PAD) : Means that lineM[} n is also moved to PAD( PLAYER/MISSILE DEMO )Now let's take a look at theplayer/missile demo. To do tM\}his please type 1A 1B SHOWLP. If youas you read the rest of this.The B/H word is used to convert a binary shape table to heM]}x anddecimal for use in Players and missiles. See screen 1C for moreinfo. ( type 1C UE tM^}o cont.)( PLAYER/MISS.STUFF-RZ 1/1 ) 0 VARIABLE 0VP 64 VARIABLE 0HP 0 VARIABLE 0VPOLD : SPB HIMEM @ 1+ M_}F800 AND CMOVE ; : SPLAY 0 0 HPOS! 7 GR. SPB Qbase 1+ C@ PMBASE C! 2A 0 COLPM! 0 0 SIZM`}E! 3E D400 C! 3E DMACTL C! 3 GRACTL C! 1C 20 8 64 GETPS ; : CLRPM Qbase @ 800 ERASE ;: MOVEH 0 SMa}TICK F XOR C AND DUP IF 2 / 3 - ENDIF 0HP @ + DUP 0HP ! 0 HPOS! ; : VPOS! 0VPOLD @ 9C00 + DUP 9800 8 CMOVE Mb} 8 ERASE 9C00 + 9800 SWAP 8 CMOVE ;: MOVEV 0 STICK F XOR 3 AND DUP IF 2 * 3 - ENDIF -DUP IF 0VP @ DUP 0VPMc}OLD ! + DUP 0VP ! VPOS! ENDIF ;: RUNIT BEGIN MOVEH MOVEV 2FC C@ FF = NOT END ;: B/H DUP HEX ." Md} HEX =" . DX ." DEC.=" . BX QUIT ; 6 GPRIOR C! ;S;S ( P/M COMMENT & INSTRUCTIONS by Dave Flory/ Bay Area ɛUseMe}r Group. 0VP = P/0 vert. positionSPLAY = show player. The 2A in front of the COLPM! is the colorof plaMf}yer in HEX. The firstno. in front of SIZE! is the P/Mwidth no., 2nd is no. of P/M.The noMg}.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. tMq}=B%DOS SYSB*)DUP SYSB SAUTORUN SYSB_HELP DOCB/oHELP4TH DOCBFORTHDOS BFORTH1 BFORTH5 BFORTH6 BFORTH2A BSALFORTHBASBFORTHASM4THBDOSSECT 4THBDISASM 4THB ROBOT1 4THBROBOT 4THBFORTHDOSNEWB2FORTHA TXTB7FORTHB TXTBQFORTHC TXTBFORTHTUTTXTB/dHELP4TH TXThe # of bytes of player data4. the hor. pos. to show player You must be careful to place theMr}data correctly on the data scrn.Count in carefully and enter thedata in characters. This is doneby using BDUMP to enter the Ms}HEXnumbers into RAM buffer positioncorresponding to the screen. SeeBDUMP comments & comments on thenext screen which holds Mt}sampleplayer data. ) (TYPE N TO CONT.)( PLAYER/MISSILE SHAPE TABLE ) $$Zscreen were enMu}tered into the scrbuffer usinG BDUMP after gettingthe correct HEX numbers using the B/H word. To make this wordavailable Mv}type in 1A LOAD. (Whenworking with the source diskLoad the P/M screen.) (Type LL to cont.)This will giveMw} the numbers for asmall flat box shape: BX11111111 B/H HEX =FF DEC.=FF 10000001 B/H HEX =Mx}81 DEC.=8110000001 B/H HEX =81 DEC.=81 11111111 B/H HEX =FF DEC.=FF To use B/H you must bMy}e in BN orbinary base, then you enter the binary shape line and type B/Hand press , FORTH will type the HEX and DEMz}C. no.s foryou. (Type N to cont.)( BDUMP/ EXAMPLE ) To put these numbers ontoM{} thedisk without having to look up Atari control keys in the table,character positions of screen 1C displayed on the monM|}itor.You then count in the number of spaces where you want the datato start and enter it on the screen using the cursor M}}andpressing on the same line as the data. (LL to cont.)It looks like this:1C BLOCK DUP 2A + BDUMP 0500 M~}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 \ 0520M} 18 FF 24 DB 24 5A 99 81 \0528 FF 81 81 81 81 81 81 FF \ oKThe place that the player is on now is displayed on line 520.M}By putting the cursor on that line and typing in the no.s yousee how I entered the player shape. (type N to cont.)( M}SPLAY/RUNIT/GRAPHICS WORDS ) To see the shape and run theplayer/missile demo type SPLAY and RUNIT. This will display thedM}isplay (if the latter is on). Later you can draw some play-field stuff and experiment with making him go in front of someaM}nd behind others by putting a different # in GPRIOR. Firstlet's talk about some Graphics commands. ( LL )The graphicsM} commands in this FORTH for the Atari are verylike those you use in BASIc except that, as you have noted,here the numM}bers come first after the commands. n C. = COLOR nn GR. = GRAPHICS n x y PLM}. = PLOT x yx y DR. = DRAWTO x y similarly POS. is POSITION, SE =SETCOLOR, etc. The fill command is XIO18 and itM} requires you toput the fill color on the stack first. (N)( DEMO OF P/M PRIORITY )( For a demo load thisM} screen.It will draw a couple of bars of vertical colors for the bug10 DR. 80 90 POS. 1 XIO18 ( FIRST BAR ) 2 C. 70 90 PM}L. 70 15DR. 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 M}runsover to the right this time (LL)as the POS. statement is lower than the initial PL. statementfor this M}bar.After looking at this one play around a little. It will takesome work to make this display four players at the same tM}ime,but its fun to try. You may wantto go back and redefine some ofthe words to expect the player number on the stack to tM}ell themwhich player to work on, or you can just define a word for eachplayer and call them by name. Hope you have fun. M}(N)( STACK DISPLAY )One of the nice features of thissystem is the stack display. To use it just type STACKONM}. Thenit off when unwanted STACKOFF. You will find the STACK displayvery useful to you as you start defining your own wordM}s as youcan go through each step in the word singly and watch what itdoes to the stack. The stack is the single most difficM}ult (LL)thing for most begiinning FORTH nuts to understand, and thisdisplay is used by even the experienced programmerM}s I know. Put some numbers on the stackand try some of the Math words like + and /, and *. M}Use SWAP,and ROT, and . and DROP, etc. and observe their stack effects.(N)( DECOMPILER/DCP )Now we come toM} one of the mostuseful and powerful words in thevocabulary of this FORTH versioneven the primitive words in the fig-FORTH kM}ernel. Try a few ofthe simple words first, like GS, or NS. When you do you willfind that the numbers above 0,1,and 2 allM} have LIT after them.The first three are used so muchthat they are FORTH words. (LL) The LITM} tells FORTH that theThey are to be taken as literal values. To give you an idea howthis works try typing in this definitM}ion and then DCP AS. DX : AS 26 709 C! 18 710 C!16 712 C! ;You now have another word avail.M}to you AS or amber screen. Tomake this a permanent part of your disk you can use MAKEBOOTto write out all the compiled M}words you have in RAM. (N)( SYS/MAKEBOOT/PHYSOFF/ETC. ) Now you're ready to learn how tomake your working disks. This uM}ses the SYS word. When you typeword to understand is PHYSOFF. This stands for physical offset.It is the offset of screen 0M}. When you compile more words anduse MAKEBOOT, you add to the size of the boot section on thedisk. This will eventuallM}y grow 'til it overwrites the (LL)error message screens and causesyou trouble. To avoid this youuse SETPHYS to set the M}physical offset large enough so that theboot sections will not write out into the normal use sectionsof the disk. To seeM} what I am speaking of, type 0 PHYSOFF C!and then look at screens 0 thru 20 or so. Now you will see thatscreens 0 thru abM}out 13 hold the compiled code to boot upFORTH. By typing 15 PHYSOFF C! you can go back to where westarted, with screen M}0 being thetable of contents. (N)( Makeboot/etc. ) In order to setup a working diskyou should take aM} copy of the source disk and decide whichmake & the less room on the diskleft for you to work with. Youjust LOAD the screM}ens with the stuff you want and then typeSYS to load the MAKEBOOT words. Then type MAKEBOOT and followthe prompts. M} (LL)After you have put the boot sectors on the disk, useSCREENINIT to clear the format characters from all the scM}reenson the disk and number them. Then copy screens 0 thru 7 fromanother disk to this one (if you want the error messM}ages towork) If you have a one disk system you will have to copyan existing disk and then move the error screens (if thM}e off-set is different) and then use the MAKEBOOT to put on the newboot sectors. Use COPIES to movethe sectors. M} (N)( COPIES/PHYSOFF/ETC. ) You use COPIES by typing in theno. of the first screen you wantmoved, then the lastM} screen youdrive system use screens from 800 up for the second drive. Ifyou have a larger PHYSOFF on theno. 1 drive you mM}ay have troubleaccessing the low numbers on thesecond drive. To solve this youmay want to type 0 PHYSOFF C! and then findM} the right (LL)screen numbers. Then copy them to the right location and thenreset the PHYSOFF to what it wasbefore. You M}should keep in mindthat PHYSOFF is a user variable and can be anything you want. Ifyou change it while working, it is not cM}hanged in the boot partof the disk. This can be done byusing SETPHYS and MAKEBOOT toredo the boot section of your disk.M}( NOW SOME ADDITIONAL STUFF ) Now some stuff that might havebeen confusing earlier. You haveused P, N, T, etc. You also caM}nscreens. If you are on the top half of a screen and want tosee the bottom half of the prior screen type or forM}the bottom half of the next screen use . togglesbottom screen halves. (LL)If yoM}u don't like the "beeps" when you move around you caneither turn down the TV or you can type SOUNDOFF. SOUNDON toget theM}m back.If you want to use the formattedLIST program you must LOAD itseparately. Since it is fairly large and duplicates muM}ch of theprinter words, you might want torecompile the large kernel withthe formatted LIST instead of the regular printerM} words. (N to cont.)( P0N/P0FF ) PON lets you send to the printeM}reverything that goes to the screen, while you are in FORTH.editor works when the printer ison.) Everything will be priM}ntedon the screen and the printer. POFF turns off the printeroption. (LL to cont.)M}This brings up Vocabularies. When you are in the Editor youhave different words available than when you are in FORTH. ToM}see this Type FORTH and then VLIST. Then type EDITOR andVLIST and compare them. As you progress in FORTH you will seetM}hat you can place words in different vocabularies and thushave the same word mean many things. (Almost like most spokM}enlanguages, meaning depends on context [vocabulary] in FORTH). (N to cont.)(M} TEXTS ON FORTH )This should give you enough tothink about for quite a while ifyou are new to FORTH.M}M}M}M}M}M}M}M}M}M}M}M}M}M}M}M}M}M}M}M}M}M}M}M}M}M}M}M}M}M}M}M}M}M}M}M}M}M}M}L10 GREETINGS FROM ͠ 11 P/N/T/INDEX/LL/UL12 ."/LPINDEX/SHOWLP/LPOPEN 13 BACKUP/CSECTS/WARN/GS/WN/+14 GENERALQ} FORTH INFO 15 LIST/L./DOIT/WIPE16 EMPTY EDIT PRACTICE BLOCK 17 EDITOR COMMANDS/FUNCTIONS18 LINE EDIT COMMANDSQ} 19 PLAYER/MISSILE STUFF1A PLAYER MISSILE STUFF 1B PLAYER MISSILE INSTRUCTIONS1C PLAYER/MISSILE SHAPE TABQ}LE 1D BDUMP/ EXAMPLE1E SPLAY/RUNIT/GRAPHICS WORDS 1F DEMO OF P/M PRIORITIES20 STACKON/STACKOFF 21 DECOMPILEQ}R/DC22 SYS/MAKEBOOT/ETC. 23 PHYSOFF24 SYS/MAKEBOOT/PHYSOFF cont. 25 TEXTS ON FORTH26 THE END. Q} >> DECOMP DISASSEMBLER STUFF << DO NOT MOVE FROM THIS SCREEN !may have on this version of fig-FORTH, anQ}d the included documentation. Please send any commentsto Team Atari, 4029 Payne Ave., San Jose, Ca., 95117 or leave E-mail Q}on Compuserve for [70525,434]. We'll try to answer all correspondence. Special features of this versionTo progress beyondQ} his tutorial try one of the books I mention later on in the disk. This is especially handy Q}to compare screens from differentareas of a disk, or from two different disks.The next handy-dandy command tolearnQ} is the INDEX word. )INDEX is the word you use to see what is on one of your FORTH source disks. It shows you tQ}he first line of each screen on the disk. ( perhaps I should mention that FORTH organizes the disk in screens, the units youQ} have been looking at, not files like you the screen. Then when you use INDEX you get a quick list of the contents. By prinQ}ting this you have a nice print out. To print any single screen you type nn LISTLP (nn being the screen number). Two screensQ} may be shown side by side on a page from the printer by typing - nn SHOWLP. This will print scrn. nn and the next screen Q}after nn. to copy it on a one disk system. If you should experience an error during copying, using BACKUP, note the last secQ}tor copied. Then type in nn 2D0 CSECTS to copy from sector nn to the end of the disk. Q} The options available now for screen color are GS=green scrn, WS=white screen, NS=normal scrn, DECIMAL, OCTAL, BINARY. ThQ}e screen border will change color to remind you which number base you are using. The compiled form, i.e. they areLOADQ}ed and ready to use. You got the list of words available to you if you printed out the VLIST. The second disk in this packaQ}ge contains a very small # of words in compiled form and saving as much memory space in RAM as possible. The more words comQ}piled in RAM the less room for you to work with in your own applications. In order to add a section of words to the kernel Q}just LOAD the screen they are onby typing nn LOAD. (nn is thescreen number) ( LQ}IST/L./DOIT/WIPE )The format you have been usingso far is the EDITOR format. You can look at screens in twowaQ}nt to get rid of them later just type L#OFF and they will goaway.The other major format for look-ing at screens is the LIQ}ST or L.format. Type nn L. to see this one. (LL to cont.)In the LIST format you have to use the <1> kQ}ey to stopand start the scrolling of the screen. 15 LE ӠŮThe next screen is blank so you can try some screen edQ}iting. Type N to go there and then type on the screen. When done use the cursor arrow keys to move down to the line with "Q}DOIT" on it & press the key. Then type F. and your stuff will be on disk. To erase it type 16 WIPE. R} ŠŠϠРԩ( EMPTY BLOCK 16 ;SHELLO THERE IT IS NICE TO SEE YOU. ҠR}ӠĠ EDITOR - VOCABULARY namen EDIT - Enter editor on screen nUL - List upR}per 1/2 of current edit screenDOIT - Take top 16 lines of screen and place thR}em into the top or bottom 1/2 ( LL or UL ) of the edit screen.x y COPY - Copy blockR} x to block y. No change to block x n LIST - Set SCR to n and list the R}block x y SHOW - List blocks x to y inclusive x y INDEX - List first line of blocksR} x thru y FLUSH - Return to FORTH voc and write out all updated blocks UPDATE - Mark bR}lock (SCR) as updated Line editing commands next block ҠŠǠR}ӛ n TL - Type line n >(PAD) n HL - line n >(PAD)n BL - Blank line n n $_ - Text followin $_ will R } replace line n and go to PAD n %_ - Text following %_ will be inserted after linR }e n and go to PADs n CL - Move line n of block s to PAD*** NOTE *** >(PAD) : Means that line n is R } also moved to PAD( PLAYER/MISSILE DEMO )Now let's take a look at theplayer/missile demo. To do this pleaseR } type 1A 1B SHOWLP. If youas you read the rest of this.The B/H word is used to convert a binary shape table to hex anddeciR }mal for use in Players and missiles. See screen 1C for moreinfo. ( type 1C UE to cont.)R}( PLAYER/MISS.STUFF-RZ 1/1 ) 0 VARIABLE 0VP 64 VARIABLE 0HP 0 VARIABLE 0VPOLD : SPB HIMEM @ 1+ F800 AND R} CMOVE ; : SPLAY 0 0 HPOS! 7 GR. SPB Qbase 1+ C@ PMBASE C! 2A 0 COLPM! 0 0 SIZE! 3E D4R}00 C! 3E DMACTL C! 3 GRACTL C! 1C 20 8 64 GETPS ; : CLRPM Qbase @ 800 ERASE ;: MOVEH 0 STICK F XORR} C AND DUP IF 2 / 3 - ENDIF 0HP @ + DUP 0HP ! 0 HPOS! ; : VPOS! 0VPOLD @ 9C00 + DUP 9800 8 CMOVE 8 ERASE R}9C00 + 9800 SWAP 8 CMOVE ;: MOVEV 0 STICK F XOR 3 AND DUP IF 2 * 3 - ENDIF -DUP IF 0VP @ DUP 0VPOLD ! + R} DUP 0VP ! VPOS! ENDIF ;: RUNIT BEGIN MOVEH MOVEV 2FC C@ FF = NOT END ;: B/H DUP HEX ."  HEX =" . R}DX ." DEC.=" . BX QUIT ; 6 GPRIOR C! ;S;S ( P/M COMMENT & INSTRUCTIONS by Dave Flory/ Bay Area ɛUser Group. R} 0VP = P/0 vert. positionSPLAY = show player. The 2A in front of the COLPM! is the colorof player in HEXR}. The firstno. in front of SIZE! is the P/Mwidth no., 2nd is no. of P/M.The no.s for GETR}PS 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 byR}tes of player data4. the hor. pos. to show player You must be careful to place thedata correR}ctly on the data scrn.Count in carefully and enter thedata in characters. This is doneby using BDUMP to enter the HEXnumberR}s into RAM buffer positioncorresponding to the screen. SeeBDUMP comments & comments on thenext screen which holds sampleplaR}yer data. ) (TYPE N TO CONT.)( PLAYER/MISSILE SHAPE TABLE ) screen were entered into the scrbR}uffer usinG BDUMP after gettingthe correct HEX numbers using the B/H word. To make this wordavailable type in 1A LOAD. (WR}henworking with the source diskLoad the P/M screen.) (Type LL to cont.)This will give the numbers for asR}mall flat box shape: BX11111111 B/H HEX =FF DEC.=FF 10000001 B/H HEX =81 DEC.=8110000001R} B/H HEX =81 DEC.=81 11111111 B/H HEX =FF DEC.=FF To use B/H you must be in BN orbinary bR }ase, then you enter the binary shape line and type B/Hand press , FORTH will type the HEX and DEC. no.s foryou. R!} (Type N to cont.)( BDUMP/ EXAMPLE ) To put these numbers onto thedisk without hR"}aving to look up Atari control keys in the table,character positions of screen 1C displayed on the monitor.You then counR#}t in the number of spaces where you want the datato start and enter it on the screen using the cursor andpressing on the same line as the data. (LL to cont.)It looks like this:1C BLOCK DUP 2A + BDUMP 0500 28 20 50 4C 41 59 4R%}5 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 R&}99 81 \0528 FF 81 81 81 81 81 81 FF \ oKThe place that the player is on now is displayed on line 520.By putting the cursR'}or on that line and typing in the no.s yousee how I entered the player shape. (type N to cont.)( SPLAY/RUNIT/GRAPHICR(}S WORDS ) To see the shape and run theplayer/missile demo type SPLAY and RUNIT. This will display thedisplay (if the lattR)}er is on). Later you can draw some play-field stuff and experiment with making him go in front of someand behind others byR*} putting a different # in GPRIOR. Firstlet's talk about some Graphics commands. ( LL )The graphics commands in this R+} FORTH for the Atari are verylike those you use in BASIc except that, as you have noted,here the numbers come first R,} after the commands. n C. = COLOR nn GR. = GRAPHICS n x y PL. = PLOT x yx y DRR-}. = DRAWTO x y similarly POS. is POSITION, SE =SETCOLOR, etc. The fill command is XIO18 and it requires you topuR.}t the fill color on the stack first. (N)( DEMO OF P/M PRIORITY )( For a demo load this screen.It will drR/}aw a couple of bars of vertical colors for the bug10 DR. 80 90 POS. 1 XIO18 ( FIRST BAR ) 2 C. 70 90 PL. 70 15DR. 50 15 R0}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 runsover to the riR1}ght this time (LL)as the POS. statement is lower than the initial PL. statementfor this bar.After looking R2}at this one play around a little. It will takesome work to make this display four players at the same time,but its fun toR3} try. You may wantto go back and redefine some ofthe words to expect the player number on the stack to tell themwhich playR4}er to work on, or you can just define a word for eachplayer and call them by name. Hope you have fun. (N)( STACK DISPLAYR5} )One of the nice features of thissystem is the stack display. To use it just type STACKON. Thenit off when R6}unwanted STACKOFF. You will find the STACK displayvery useful to you as you start defining your own words as youcan go thrR7}ough each step in the word singly and watch what itdoes to the stack. The stack is the single most difficult (LL)thing forR8} most begiinning FORTH nuts to understand, and thisdisplay is used by even the experienced programmers I know. R9} Put some numbers on the stackand try some of the Math words like + and /, and *. Use SWAP,and ROT, R:}and . and DROP, etc. and observe their stack effects.(N)( DECOMPILER/DCP )Now we come to one of the mostusR;}eful and powerful words in thevocabulary of this FORTH versioneven the primitive words in the fig-FORTH kernel. Try a few ofR<}the simple words first, like GS, or NS. When you do you willfind that the numbers above 0,1,and 2 all have LIT after theR=}m.The first three are used so muchthat they are FORTH words. (LL) The LIT tells FORTH that tR>}heThey are to be taken as literal values. To give you an idea howthis works try typing in this definition and then DCP ASR?}. DX : AS 26 709 C! 18 710 C!16 712 C! ;You now have another word avail.to you AS or amber R@}screen. Tomake this a permanent part of your disk you can use MAKEBOOTto write out all the compiled words you have in RRA}AM. (N)( SYS/MAKEBOOT/PHYSOFF/ETC. ) Now you're ready to learn how tomake your working disks. This uses the SYS word. WRB}hen you typeword to understand is PHYSOFF. This stands for physical offset.It is the offset of screen 0. When you compilRC}e more words anduse MAKEBOOT, you add to the size of the boot section on thedisk. This will eventually grow 'til it overRD}writes the (LL)error message screens and causesyou trouble. To avoid this youuse SETPHYS to set the physical offset larRE}ge enough so that theboot sections will not write out into the normal use sectionsof the disk. To see what I am speakiRF}ng of, type 0 PHYSOFF C!and then look at screens 0 thru 20 or so. Now you will see thatscreens 0 thru about 13 hold the RG}compiled code to boot upFORTH. By typing 15 PHYSOFF C! you can go back to where westarted, with screen 0 being thetable ofRH} contents. (N)( Makeboot/etc. ) In order to setup a working diskyou should take a copy of the sourRI}ce disk and decide whichmake & the less room on the diskleft for you to work with. Youjust LOAD the screens with the stuffRJ} you want and then typeSYS to load the MAKEBOOT words. Then type MAKEBOOT and followthe prompts. (LL)After youRK} have put the boot sectors on the disk, useSCREENINIT to clear the format characters from all the screenson the disk aRL}nd number them. Then copy screens 0 thru 7 fromanother disk to this one (if you want the error messages towork) If yoRM}u have a one disk system you will have to copyan existing disk and then move the error screens (if the off-set is diffeRN}rent) and then use the MAKEBOOT to put on the newboot sectors. Use COPIES to movethe sectors. (N)( COPIES/PRO}HYSOFF/ETC. ) You use COPIES by typing in theno. of the first screen you wantmoved, then the last screen youdrive sRP}ystem use screens from 800 up for the second drive. Ifyou have a larger PHYSOFF on theno. 1 drive you may have troubleaccRQ}essing the low numbers on thesecond drive. To solve this youmay want to type 0 PHYSOFF C! and then find the right (LL)sRR}creen numbers. Then copy them to the right location and thenreset the PHYSOFF to what it wasbefore. You should keep in mindRS}that PHYSOFF is a user variable and can be anything you want. Ifyou change it while working, it is not changed in the boot RT}partof the disk. This can be done byusing SETPHYS and MAKEBOOT toredo the boot section of your disk.( NOW SOME ADDITIONRU}AL STUFF ) Now some stuff that might havebeen confusing earlier. You haveused P, N, T, etc. You also canscreens. If you aRV}re on the top half of a screen and want tosee the bottom half of the prior screen type or forthe bottom half of RW}the next screen use . togglesbottom screen halves. (LL)If you don't like the "bRX}eeps" when you move around you caneither turn down the TV or you can type SOUNDOFF. SOUNDON toget them back.If you wantRY} to use the formattedLIST program you must LOAD itseparately. Since it is fairly large and duplicates much of theprinter wRZ}ords, you might want torecompile the large kernel withthe formatted LIST instead of the regular printer words. R[} (N to cont.)( P0N/P0FF ) PON lets you send to the printereverything that gR\}oes to the screen, while you are in FORTH.editor works when the printer ison.) Everything will be printedon the screen R]}and the printer. POFF turns off the printeroption. (LL to cont.)This brings up VocaR^}bularies. When you are in the Editor youhave different words available than when you are in FORTH. Tosee this Type FORTR_}H and then VLIST. Then type EDITOR andVLIST and compare them. As you progress in FORTH you will seethat you can place wR`}ords in different vocabularies and thushave the same word mean many things. (Almost like most spokenlanguages, meaniRa}ng depends on context [vocabulary] in FORTH). (N to cont.)( TEXTS ON FORTH Rb} )This should give you enough tothink about for quite a while ifyou are new to FORTH.Brodie, Leo; STARTING FORTHRc} THINKING FORTHyou enough tothink about for quite a while ifyou are new to FORTH.Brodie, Leo; STARTING FORTHP ---------------------- HELP4th, by Sally Nagy ----------------------This file contains information onprVe}ograms and other articles foundon Forth.Before you get to far in your studyof FORTH, you should purchase abook on the suVf}bject. The booksrecommended to me were, LeoBrodie's "Starting Forth" and"Thinking Forth".To read the TUTORIAL to thefiVg}gFORTH disk, first load withoutBASIC and using a TRANSLATOR, thenenter... 10 UE...from there just follow tVh}heprompts in the tutorial. Programs --------DEITY- See Analog Issue 9, pgs.74-76.FORTH aVi}nd BOOT-DISKS don't use theATARI file structure at all. Transferring FORTH screens, or BOOTdisks on the phone seemed animVj}possibility. Data for thesefiles is simply physical sectors. There are no "real" files.After William Volk finished CREATVk}ORthis problem seemed to have asolution. Since he wrote a programthat wrote out physical sectors,then a program generatoVl}r that readthose sectors and generated such aprogram.Diety prompts you for a startsector, the number of sectors (upto 8Vm}0), and generates a BASICprogram that will re-generate thosesectors. Finally a program thatcan be used to send out those Vn}FORTHscreens to BBSs.When CREATOR is run, it prompts theuser for an object file name, and a7 character name for the seriVo}es ofBASIC programs it creates. Whenthese programs are run in sequencethey re-create the object file. Upto nine BASIC pVp}rograms in LISTedformat are created.FORTH-DOS- see Analog Issue 9, pgs. 55-56.FORTH'S files are arranged inVq}"screens", which are physicalsectors that are read in sequence. You edit 1 screen at a time, 1 or1/2 K of memory.FORTH dVr}oesn't use the ATARI filestructure for some valid reasons. DOS takes up memory and manyapplications don't require itspresVs}ence, games for example. Somepeople have written DOS links inFORTH, but this negates FORTH'scompact nature. If you're noVt}tgoing to be using the DOS in yourapplication, why include DOS in it?FORTH-DOS is a program that willload a text file inVu}to memory,format the file for FORTH, and saveit on specified screens. It alsoaccomplishes the reverse process.FORTH ScrVv}een Syntax--FORTH code hasseveral features that impose somekind of formatting requirements onFORTH-DOS. FORTH definitionsVw} musthave spaces between functions(words). Also, you don't want aword split between two lines. FORTH-DOS cleans up the tVx}ext file,formatting if for the FORTH screen.The reverse process is simiplier.There are two formats for FORTHscreens, APXVy} FORTH uses 1K screens(16 lines of 32 characters). FORTH-DOS takes this into accountwhen processing the text files. InthVz}e FORTH screen to text fileprocess, FORTH-DOS starts with theappropriate line length (32 or 64characters), and attempts toV{}elimate trailing blanks.THE FILES... FORTHA.TXT, FORTHB.TXT, FORTHC.TXT, and V|} FORTHTUT.TXT...are files that were createdusing FORTH-DOS. They are takenfrom the Tutorial Side ofFIG-FORTH. NOTE:V}} THESE ARE LEFTTHE WAY THEY WERE MADE, SO THEY AREOFTEN ONTO IN COMPLETE SENTENCESTRUCTURE and etc. They were lefton theV~} disk to show you what can bedone and give you some of thecommands of Forth. If you haven'tseen MESA FORTH, I would suggeV}sttrying that out also. In AppendixA of MESA FORTH DOC there is a listfig FORTH words and definitions.ASK SALLY FORTH:V} -Analog Issue 13, pg.91-94.In Sally Forth's column, shecompares ATARI BASIC, FORTH andmachine language for speed.FOV}RTH1--is the Basic program thatuses nexted FOR/NEXT loops anddirect POKEs to fill a GRAPHICS 24hi-res screen with color. V}It isdone in 4270 jiffies. (256 jiffiesequal 4.23 seconds.)FORTH2A--is a BASIC program thatuses a machine language subroV}utineto fill a GRAPHICS 24 screen.FORTH2B--is the source code for theDATA statements, created with theMAC/65 Macro AssemV}bler. It isstructured to work in a mannersimiliar to the pure BASIC version.FORTH Listing 3 shows one way toimplement tV}he screenfill routine inFORTH. SCR#1 0 (BASIC/ML/FORTH BENCHMARK) 1 (FORTH VERSION BY SALLY FORTH) 2 3 0 VARIV}ABLE READING 4 5 88 CONSTANT SCREEN 6 7 : SCREENFILL (THE FILL LOOP) 8 32 0 DO 9 240 0 DO 10 255 I SCREENV} @ + C! 11 LOOP 12 240 SCREEN @ + SCREEN ! 13 LOOP ; 14 15 FORTH Listing 4. Speed testresults.Listing 1 is aV} very inefficient wayto fill a GRAPHICs 24 screen. RunFORTH5.Now run FORTH6.Now compile Listing 7 into yourFORTH systV}em. SCR#3 0 (FAST VERSION OF BENCHMARKK ) 1 (SALLY FORTH) 2 3 0 VARIABLE READING 4 5 88 CONSTANT SCREEV}N 6 7 : BENCHMARK-2 8 24 GR. 9 0 19 ! 10 SCREEN @ 7680 255 FILL 11 256 19 C@ * 20 C@ + 12 READING ! 13 0V} GR. 14 READING @. 15 ." JIFFIES" CR; SCR#2 0 (BENCHMARK CONTINUED) 1 2 :BENCHMARK 3 24 GR. 4 0 19 ! (V}ZERO TIMERS) 5 SCREENFILL 6 256 19 C@ * 20 C@ + 7 READING ! (SAVE READING) 8 0 GR. 9 READING @. (SHOWING READV}ING) 10 ." JIFFIES" CR; 11 12 13 14 15 FOR MORE INFO ON FORTH, REFER TO: ---------------------------------V}ASK SALLY FORTH: -ANALOG ISSUE 14, P.59-61.ASK MR.FORTH: -ANALOG ISSUE 23, P.18-20. 24, P.20-26.V} 25, P.24-28. 26, P.18-22. 27, P.26-30. 29, P.13-18. V} MAY 1985, P.19-16. JUNE 1985, P.19-26.FORTH FACTORY / ANTIC,DEC.82/JAN.83, P.49-51.WHY GO FORTH? BY THOMV}AS MCNAMEE,P.96-100.DOS SECTORS TO FORTH:SALVAGE THATDATA BY BILL VAN HASSEL, P.32-33,OCT.1983.DISASM.4TH, ANTIC, MARCV}H 1984 ROBOT.4TH, ANTIC, JUNE AND JULY1984-----------------------------------P.32-33,OCT.1983.DISASM.4TH, ANTIC, MARCTR