@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}}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- 144ɛ+,' 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 D8uDaUةD%FFExpXE@ABCDAD D/0˭1̠ Șe˅ͩe̅T} !E2E D@"/ BE E E I gF ?K}F}F}F}#GɯLL &FLL??? 00 `U}` gFBDEEDK)I J V0LDS:ȩFͩ`H ԍЩʍh@X˥Y̠({;e˅˥i̢{ȑ0V}i˥iLcEȑ%FRR>ɛ KUT` F` gFBޝDEEJK V0 EQ Q gF`D1:TITLE.SYSW}FHHD gFBhDhEDJK VLR`D1:*.*1FH6HDLEK: BdDFE VLR` FHdHDLEP: BX}LVBD>E*HI V` BD>E*HI V`).$%83/,54)/.|&),%3/.$)3+by#hris4homson|Y}# |0ressfor(%,0#/-054%23/,54)/.3|<=,/!$25.).$%83/,54)/.Z}).3%24$)3+ 02%334/#/.4).5%!.9/4(%2+%94/2%452.4/[}).$%8).$%83/,54)/.02%33!.9+%94/2%452.4/).$%8\}).$%83/,54)/.]}%.4%2.%7.!-%).$%83/,54)/.^}02%334/%2!3%&),%!.9/4(%2+%94/2%452.4/).$%8JJ _}oFɈ/LR>0&J IJ J iJ0JJJLI`GJHJF FLRGJHJLJ $K>`}Ƚ>ɛ LVJ` J0>LnJJJLiJ`J  LJъ Fȥ FJJJJJJJJ)J`J $KJa}ψ` NO FILES BAS BXLXL DEMLSTSRCM65MACDOCOBJEXECOMCMDЭJ &iaϩUeЅ`JJ $K Kb} K KJJJ)J J $K K K`) KLbK>ʩ > KJJ)`ϝ>ɛ >LK.>LK>c}`>ɛ >LK>ɛ@i@8 >`UJ)T` FLR`sHHL!E FMLlMLRLLd}JJ ?K LLLLLLOx)LM)LL)LL) LRL$LJJJJ J GK LLLJe`e}JJЭJJLL L $K K K KJJJ) $K K KLLJ JLL L $K K K KJ)JLLJ JJLLJʎf}JLL@BkDMEHI V`kMC!LLDʩD D` gF`Dl ELNFL:NHLOLL?PPLXPg}RL}PSLQTLLQULQ*LR15F EF%FLDLL FMkMY`+ȩI M!D $K ;R (P LR !ELLLDh}KȩG MDF>ɛ (PLR/04)/.nextpage3%,%#4choosefile34!2i}4runOloadfile(%,0thisdisplay defaultdrive#gotocartridge$gotodos%erasefile&formatj}disk(thisdisplay,loadnewdisk0printdirectory2renamefile3switchrunOload4titlediskk}5unlockfile lockfile0˭1̠dȩNˠȩG MXȥY !ELLPDBl}D>E V`KȩG M !ELLLD 9F TF E oF0 FLR gF &FLL͍ȩH͍ $K ;R>ɛ>Lm}P,>Ѣ oFLR>ɛ5Ѡ>>ɛLP>>H( D (P LR !ELLLDQI)Q8QF LLn}BQF LL,/!$25.,/!$/.,9ȩH͈ј'XX FMkMɛ0~( [iXȄ(LcQ(XƈLcQ(o}XD Q Q QE &F !ELLLDEHHLEXDYE(HIQB V`$D $K ;R (PLR K KLL#D $K ;p}R (PLR* K KLLD>%F>:> > .> >LiR>`ԩ آR>0q}>LR)>詛>UT` F0 L DLDERROR #DRIVE #1JL2SD/@ D` gF"/ $K ;R#ѮJ LU r}LS2 TLdS TLdS $K K K K K K KLLʭQ T>ɛ BDEHI VLs}/0˭1̠˙AUȱ˙AUT>ɛ 8 T>0U1"/ TLD KM0P OMLD-GLRxt})7);)@ T LLSLD΂T֩TL1Tx) LL1T gFBD>u}EJK V` +U ѝD`5ULTw :Uѝv}` TLDѩw LDNEWENTER LOAD RUN ppBTBA>U!"`33U!"`33U!"`33 800000 0 ~~`0 0`0xff|ff||ffffff`x`ff`x}``||~ZZ~ xs6<8<6sx00006~||fff|`|vff|xl|||<x}x0f<}8pp8?ww<~~~<}x`x`~<~~<0~0 ~ <~~<<>f>p`|ff|<```<>ff>}<>ff>|p`|ffw8<  xp`lxlf8<fkc|ffffff>|f```>`<|~}ffff>fff<ck>6f< x~ 0~<~~<~x|nf8x8- 0 2L1 !'11 }&Be 1e 1 1 11 1i 1i 1ȑ1 1i 1i 1ȑ 11 V`55 EL1 !'1}11111 1`, 128 192 224 240 24 FREE SECTORS1L1,,Ȍ1W *L2READING THE DIRECTORY...2} 'W 'L62D1:*.*2/ ',, &,e,,e,,,1,e,,i,,, '},L2,,1 S,111 ,L2,,1I L21L21LG28,,,,,,,,},, &,e,,e,,,Xi0Yi( +` Ln3Xi܅Yi +҈h3'g3}g3h3L3h3g3 & $+8g3g3h3h3j3Ȍi3i3j3L3i3j3L3L3 $+ f3,IL<}4 *L04DISK IS BLANK!4! 'L4,, &,e,,e,f3 *,, t(,e,,i},f3 *,, 'f3,,,I "8,,E,,L<4`L4 ',ĩ ',}, 1 '` 0 L%5 !'5m5 5m5!555 v(5i 55i5Lm5 REM ԠŠ5[ '55 v(5i 5}5i5L5" POKE 756,224:MEMTOP=PEEK(106)*2565 '55 v(5i 55i5L5 CHBASE=MEMTOP-2048:ROMSET=5 '!5} 5 (55 v(5i 55i555L6LM6 FOR I=CHBASE+6> '55 v(Lt6 TO CHBASE+10236d 'L6+:POK}E I,PEEK(ROMSET):ROMSET=ROMSET+1:NEXT I6 '55 v(5i 55i5L6 FOR I=CHBASE TO CHBASE+6ԩ '55 v(L}07+:READ A:POKE I,A:NEXT I:POKE 756,CHBASE/2567 '`EL?7;7:7 1( 1(L^7 PROC INIT()7R ' 1(L~7BYTE CHBAS=756}7o ' 1(L7MOVEBLOCK(32768,57344,1024)7 'L7MOVEBLOCK(32768,CSET,7 ':7i;7i v(L7)7 '}L 8 CHBAS=1287 ' 1(L!8RETURN8 '` 24 126L?8 !'+8 58 ',8+8 '-8IL8L8BYTE ARRA}Y CSET=8o 'L8[8 '-8IL8.8I+L8483808/8 "5;8:8/880888:88;8L: 0-8ILU9,m:8},m;8 L978LR9,m:8,m;8 ѮLM9,m:8,m;8dLM978LR978L958IL92818 v(18i 18}28i28  ((L9DATA9 '  ((,m:8,m;8 t(-8IL968789968L96  ((68L9L958}L9, ((58IL:58 1(L:58:8;8L8-8IL7:L.:]:, '-8ILT:.8I+LT:08/8 <7 '`L_:Z:[:,},, S,,Ģ, |,[:IL:Z:Z:,I L:[:L:Z:I L:[:L:,I L;;,8Z:آ, S,}, آ, S,L;.;Z:Z:, |,,Z:iZ:iܢ, |,LH;,آ, <,`,CHLU; !'I;L;L;Le}=Q;ȌP;(P;#Q;L;P;Q;Lq;IJ;L;J;, 1 k3 *,, 'Lb<IL;,L;8,,E,},L;, k3Lb<ILb Write data for? 1)BASIC 2)ACTION= 'IL*>IL*>L>k= *Li>'CHARSET SIZE? 1)Ful}l 2)Half 3)Own value>A 'IL>IL>IL>Lr>IL>n=@m=LE?ILE?XiYiP }+  *L?%NUMBER OF CHARACTERS TO SAVE TO DISK?>ߩ '  *> (( )n=m=m=Ɂn=LB?m= n=L>Xi}YiP + *Lv?SIZE=?p 'n=m= (n=m= &8m=n= n=m= &s=t=}k=IL@8s=t=o=p=L@XiYiP +  *LC@&Starting line number for writing DATA?@} ' *> (( )p=o= *L@ DATA line=@u 'p=o= (L?XiYiP +  *L@WRI}TE THE INIT ROUTINE? Y/N@© 'I+L@I#L@L@l=k=ILBl=I+LBq=r=>8o=p=q=r=}LAo=ms=p=mt=q=r=LAXiYiP +  *LA&Starting line number for INIT ROUTINE?A '} *> (( )r=q=LA  *LA INIT line=A 'r=q= (XiYiP +  *LWB#Please ty}pe in the desired FILENAMEB3 ' *LtB==> D1:Bl '= 'LBD1:B=u <,==u |,XiYi}P +  *LB FILENAME: Bө '=u ' *LCWriting data to the disk...B 'l=n=m=p=o}=r=q=k==u <8`LUC |* *11 +1 &0eeiPCi}QCPCiPCQCiQCPCQCPCQCPCQCPCiPCQCiQCPCQCȌOC OCL8DPCQCPCQC}OCLDPCQCPCQCPCQCPCQCPCQCPCQCPCQCPCQCPCQCPCQCAPC}QCPCQC0PCQCPCQC1LD D 'W *LEFONT DATA WRITERD 'W *LCE&By Edward Skre}cky Nov 1986 to Feb 1987E ' *LyE"Written in Action! Victoria, B.C.EV 'W  *LEE '}`LE RCW *LE(START: Dir SELECT: Page OPTION: ToggleE 'WEEEEE R; \: 4W *LO}F(ABORT: Hit ESC WRITE DATA: Hit SpacebarF& 'WEEEEEE R;WI!LF =XiYix + } *LFMission Accomplished!F 'L GXiYiP + *LGMission aborted!F 'EȌEͬEE}L-GEELGXiYiP +WLE``E + *LGMission aborted!F 'EȌEͬEE<;----------------------------+; FONT DATA WRITER :; VERSION 4.0 :;Final modifications: 5/04/87:;} By: Edward SKRECKY :;----------------------------+MODULETYPE SIOCB=[BYTE IOCOMMAND,IOSTATUS CARD IOB}UFADR,IOPUTADR, IOBUFLEN] TYPE NAMENUM=[BYTE NUMS]BYTE LOOP=[0],LOOP1=[0] , OFFSET=1, NAMESIZE=[25] ,} CHBAS=756 , CH=764, DINDEX=$57 , DISK_BLANK=[0]CARD SC=88CARD POINTER NAMEPTR , SECNUMNAMENUM POINTER NEWRECORDBYTE} ARRAY CHARNAME1(20) , CHARNAME2(20)="D1:", CHARNAME3(20) , NUMMATCH(1), CHARSET(1024) , FILES(9000), KEYNUM= }[31 30 26 24 29 27 51 53 48], CSET=[0 0 0 0 0 0 0 0 48 48 48 48 0 0 48 0 108 108 108 0 }0 0 0 0 108 108 254 108 254 108 108 0 24 126 96 126 6 126 24 0 0 102 108 24 48 102 70 0 28 54 2}8 56 111 102 59 0 24 24 48 0 0 0 0 0 24 48 48 48 48 48 24 0 48 24 24 24 24 24 48 0 0 } 102 60 255 60 102 0 0 0 24 24 126 24 24 0 0 0 0 0 0 0 24 24 48 0 0 0 126 0 0 0 }0 0 0 0 0 0 24 24 0 0 6 12 24 48 96 192 0 124 198 206 214 230 198 124 0 24 56 24 24 24 2}4 126 0 60 102 6 12 24 48 126 0 126 12 24 12 6 102 60 0 12 28 60 108 126 12 30 0 126 102 96 12}4 6 102 60 0 60 102 96 124 102 102 60 0 126 102 12 24 48 48 48 0 60 102 102 60 102 102 60 0 60 102} 102 62 6 12 56 0 0 48 48 0 48 48 0 0 0 24 24 0 24 24 48 0 6 12 24 48 24 12 6 0 }0 0 126 0 0 126 0 0 96 48 24 12 24 48 96 0 60 102 6 12 24 0 24 0 60 102 102 110 110 96 62} 0 48 120 204 252 204 204 238 0 252 102 102 124 102 102 252 0 124 198 192 192 192 198 124 0 252 102 102 102 102} 102 252 0 254 102 96 120 96 102 254 0 254 102 96 120 96 96 240 0 124 198 192 192 206 198 124 0 238 204 204 }252 204 204 238 0 126 90 24 24 24 90 126 0 30 12 12 12 12 204 120 0 115 54 60 56 60 54 115 0 120 4}8 48 48 48 54 126 0 198 238 254 214 198 198 231 0 204 236 252 220 204 204 238 0 124 198 198 198 198 198 124 0 } 252 102 102 102 124 96 224 0 124 198 198 198 198 204 118 0 252 102 102 124 120 108 230 0 124 198 192 124 6 198 }124 0 255 153 24 24 24 24 60 0 238 204 204 204 204 204 120 0 238 204 204 204 204 120 48 0 231 198 198 214 2}54 238 198 0 195 102 60 24 60 102 195 0 238 204 204 120 48 48 120 0 254 198 12 24 48 102 254 0 30 24 24} 24 24 24 30 0 0 192 96 48 24 12 6 0 120 24 24 24 24 24 120 0 0 8 28 54 99 0 0 0 0 } 0 0 0 0 0 255 0 0 54 127 127 62 28 8 0 24 24 24 31 31 24 24 24 3 3 3 3 3 3 3 3} 24 24 24 248 248 0 0 0 24 24 24 248 248 24 24 24 0 0 0 248 248 24 24 24 3 7 14 28 56 11}2 224 192 192 224 112 56 28 14 7 3 1 3 7 15 31 63 127 255 0 0 0 0 15 15 15 15 128 192 224 240} 248 252 254 255 15 15 15 15 0 0 0 0 240 240 240 240 0 0 0 0 255 255 0 0 0 0 0 0 0 0 }0 0 0 0 255 255 0 0 0 0 240 240 240 240 0 28 28 119 119 8 28 0 0 0 0 31 31 24 24 24 0} 0 0 255 255 0 0 0 24 24 24 255 255 24 24 24 0 0 60 126 126 126 60 0 0 0 0 0 255 255 255} 255 192 192 192 192 192 192 192 192 0 0 0 255 255 24 24 24 24 24 24 255 255 0 0 0 240 240 240 240 240 }240 240 240 24 24 24 31 31 0 0 0 120 96 120 96 126 24 30 0 0 24 60 126 24 24 24 0 0 24 24 2}4 126 60 24 0 0 24 48 126 48 24 0 0 0 24 12 126 12 24 0 0 0 24 60 126 126 60 24 0 0 0 } 60 6 62 102 62 0 0 112 96 124 102 102 124 0 0 0 60 96 96 96 60 0 0 14 6 62 102 102 62 0 }0 0 60 102 126 96 60 0 0 14 24 62 24 24 60 0 0 0 62 102 102 62 6 124 0 112 96 124 102 102 1}19 0 0 24 0 56 24 24 60 0 0 12 0 28 12 12 12 120 0 112 96 108 120 108 102 0 0 56 24 24 24} 24 60 0 0 0 102 127 127 107 99 0 0 0 124 102 102 102 102 0 0 0 60 102 102 102 60 0 0 0 124} 102 102 124 96 112 0 0 62 102 102 62 6 14 0 0 124 102 96 96 96 0 0 0 62 96 60 6 124 0 0 }24 126 24 24 24 14 0 0 0 102 102 102 102 62 0 0 0 102 102 102 60 24 0 0 0 99 107 127 62 54 0 } 0 0 102 60 24 60 102 0 0 0 102 102 102 62 12 120 0 0 126 12 24 48 126 0 0 24 60 126 126 24 } 60 0 24 24 24 24 24 24 24 24 0 126 120 124 110 102 6 0 8 24 56 120 56 24 8 0 16 24 28 30 }28 24 16 0 ]PROC CIO=$E456(BYTE AREG,XREG)[]PROC BLOCKIO(BYTE CHANNEL,IOCMD, BYTE ARRAY BUFFER } CARD LENGTH) SIOCB POINTER A A=$342+CHANNEL*16 A.IOCOMMAND=IOCMD A.IOBUFADR=BUFFER A.IOBUFLEN=LENGTH CIO}(0,CHANNEL LSH 4)RETURNPROC GETBIN(BYTE CHANNEL, BYTE ARRAY BUFFER CARD LENGTH) BLOCKIO(CHANN}EL,7,BUFFER,LENGTH)RETURNPROC DISKDIR() BYTE FILE_NUM=[1] BYTE ARRAY CHECK1(25) , CHECK2="FREE SECTORS" DISK_BLA}NK=0 LOOP=0 FILE_NUM=1 DINDEX=$0 POSITION(8,14) PRINTE("READING THE DIRECTORY...") DINDEX=$1 CLOSE(1) OPEN(1,"D}1:*.*",6,0) DO NEWRECORD=FILES+(LOOP*NAMESIZE) NEWRECORD.NUMS=FILE_NUM NAMEPTR=NEWRECORD+OFFSET INPUTSD(1,N}AMEPTR) IF LOOP=0 THEN SCOPYS(CHECK1,NAMEPTR,5,17) IF SCOMPARE(CHECK1,CHECK2)=0 THEN DISK_BLANK=}1 FI FI LOOP==+1 IF FILE_NUM=9 THEN FILE_NUM=1 ELSE FILE_NUM==+1 FI UNTIL EOF(1) OD NAMEPTR}=NEWRECORD-24 SECNUM=NAMEPTR NEWRECORD=FILES+(LOOP*NAMESIZE) NEWRECORD.NUMS=0 ZERO(SC+560,40)RETURNPROC DISK_LIS}T() BYTE INC=[11] , AUDCTL=$D208 CARD COUNTER1=[0] , COUNTER2=[0] ZERO(SC+220,180) AUDCTL=$1 COUNTER1=39 W}HILE COUNTER1>1 DO SOUND(0,10,12,COUNTER1/3) COUNTER1==-1 FOR COUNTER2=1 TO 1000 DO OD OD SOUND(0,0,0,0) }INC=11 IF DISK_BLANK=1 THEN POSITION(3,15) PRINTDE(6,"DISK IS BLANK!") ELSE DO NEWRE}CORD=FILES+(LOOP1*NAMESIZE) POSITION(0,INC) PRINTBD(6,NEWRECORD.NUMS) NAMEPTR=NEWRECORD+OFFSET } POSITION(3,INC) PRINTDE(6,NAMEPTR) INC==+1 LOOP1==+1 UNTIL NEWRECORD.NUMS=9 OR LOOP1=LOOP-2 } OR NEWRECORD.NUMS=0 OD FI CH=255RETURN PROC LOAD_FONT() CLOSE(1) OPEN(1,CHARNAME1,4,0) GETB}IN(1,CHARSET,1024) CLOSE(1)RETURNPROC BASIC_INIT(CARD SIZE,INITNUM) CARD ROMSET=[0] ROMSET=57344+SIZE PRINTCD(}1,INITNUM) INITNUM==+10 PRINTDE(1," REM Ԡ") PRINTCD(1,INITNUM) INITNUM==+10 PRINTDE(1," POKE 756,224:MEM}TOP=PEEK(106)*256") PRINTCD(1,INITNUM) INITNUM==+10 PRINTD(1," CHBASE=MEMTOP-2048:ROMSET=") PRINTCDE(1,ROMSET) PRIN}TCD(1,INITNUM) INITNUM==+10 IF SIZE<1023 THEN PRINTD(1," FOR I=CHBASE+") PRINTCD(1,SIZE) PRINTD(1," TO CHB}ASE+1023") PRINTDE(1,":POKE I,PEEK(ROMSET):ROMSET=ROMSET+1:NEXT I") PRINTCD(1,INITNUM) INITNUM==+10 FI PRI}NTD(1," FOR I=CHBASE TO CHBASE+") PRINTCD(1,SIZE) PRINTDE(1,":READ A:POKE I,A:NEXT I:POKE 756,CHBASE/256")RETURN PRO}C ACTION_INIT(CARD SIZE) PUTDE(1) PUTDE(1) PRINTDE(1,"PROC INIT()") PUTDE(1) PRINTDE(1,"BYTE CHBAS=756") PUTDE(1)} PRINTDE(1,"MOVEBLOCK(32768,57344,1024)") PRINTD(1,"MOVEBLOCK(32768,CSET,") PRINTCD(1,SIZE+1) PRINTDE(1,")") PRINTDE}(1,"CHBAS=128") PUTDE(1) PRINTDE(1,"RETURN")RETURNPROC WRITE_FONT(BYTE ARRAY NAME BYTE WHICH, INIT_R}OUTINE CARD SIZE, LINENUM,INITNUM) BYTE COUNTER2=[1] , COUNTER3=[0], BLANKS=[0] CARD INDEX=[0] , }COUNTER1=[0] COUNTER2=1 CLOSE(1) OPEN(1,NAME,8,0) IF WHICH=30 THEN PRINTDE(1,"BYTE ARRAY CSET=") PRINTDE(1},"[") FI IF WHICH=31 AND INIT_ROUTINE=43 THEN BASIC_INIT(SIZE,INITNUM) FI FOR COUNTER1=0 TO SIZE DO IF WHICH=30 T}HEN IF CHARSET(COUNTER1)<10 THEN BLANKS=3 ELSEIF CHARSET(COUNTER1)>9 AND CHARSET(COUNTER1)<100 THEN BLANKS=2 } ELSE BLANKS=1 FI ELSEIF COUNTER2=1 THEN PRINTCD(1,LINENUM) LINENUM==+10 PUTD(1,32) PRINT}D(1,"DATA") PUTD(1,32) FI PRINTBD(1,CHARSET(COUNTER1)) IF WHICH=30 THEN FOR COUNTER3=1 TO BLANKS DO} PUTD(1,32) OD ELSEIF COUNTER2<8 THEN PUTD(1,',) FI IF COUNTER2=8 THEN COUNTER2=1 PUTDE(1) ELSE COUNTE}R2==+1 FI OD IF WHICH=30 THEN PRINTDE(1,"]") FI IF WHICH=30 AND INIT_ROUTINE=43 THEN ACTION_INIT(SIZE)} FI CLOSE(1)RETURNPROC READY_FILENAME() BYTE N=[0] , CHECK=[0] N=0 CHECK=0 SCOPYS(CHARNAME1,NAMEPTR,3,14) }SASSIGN(CHARNAME2,CHARNAME1,4,14) WHILE CHECK<>1 DO N==+1 IF CHARNAME2(N)=32 THEN CHECK=1 ELSEIF N=12 THEN CH}ECK=1 FI OD IF CHARNAME2(12)<>32 THEN SCOPYS(CHARNAME1,CHARNAME2,1,N-1) SCOPYS(CHARNAME3,CHARNAME2,12,14)  } SASSIGN(CHARNAME1,".",N,N) SASSIGN(CHARNAME1,CHARNAME3,N+1,N+3) ELSE SCOPY(CHARNAME1,CHARNAME2) FI RETU }RNPROC CHECK_INPUT(BYTE LOSAV,NEW,TOG) BYTE LEAVE=[0] , CHNUM=[0] , CONSOL=53279, TEST=[0] , TOGGLE=[0] CARD C }OUNTER=[0] LEAVE=0 WHILE LEAVE=0 DO FOR COUNTER=1 TO 9000 DO OD IF CONSOL=6 OR NEW=0 THEN NEW=1  }LOOP1=0 DISKDIR() DISK_LIST() POSITION(2,21) PRINTDE(6,SECNUM) ELSEIF CONSOL=5 AND DISK_BLANK }=0 THEN IF LOOP1=LOOP-2 OR NEWRECORD.NUMS=0 THEN LOOP1=0 FI DISK_LIST() ELSEIF CONSOL=3 AND TOG=1} THEN IF TOGGLE=1 THEN MOVEBLOCK(32768,CSET,1024) TOGGLE=0 CHBAS=128 ELSE TOGGLE=1 MOVEBL}OCK(32768,CHARSET,1024) CHBAS=128 FI FI CHNUM=CH IF CHNUM<>255 AND LOSAV=0 AND DISK_BL}ANK=0 THEN FOR COUNTER=0 TO 8 DO IF KEYNUM(COUNTER)=CHNUM AND (COUNTER+1)<=NEWRECORD.NUMS }THEN TEST=NEWRECORD.NUMS-(COUNTER+1) NAMEPTR=(NEWRECORD+OFFSET)-25*TEST LEAVE=1 } FI OD FI IF (CHNUM=28 OR CHNUM=33) AND LOSAV=1 THEN LEAVE=1 FI OD LEAVE=0RETURNPROC WRITE_INFO()} BYTE WHICH=[0] , INIT_ROUTINE=[0] CARD SIZE=[0] , LINENUM=[0] , INITNUM=[0] , SIZENUM=[0] BYTE ARRAY FILENAME1(20) , FI}LENAME2(20) LINENUM=40000 INITNUM=40000 SIZE=128 CH=255 ZERO(SC+480,80) POSITION(4,12) PRINTDE(6,"Write data for? }1)BASIC 2)ACTION") WHILE CH<>31 AND CH<>30 DO OD WHICH=CH CH=255 POSITION(0,12) PRINTDE(6,"CHARSET SIZE? 1)Full 2)H}alf 3)Own value") WHILE CH<>31 AND CH<>30 AND CH<>26 DO OD IF CH=30 THEN SIZE=64 ELSEIF CH=26 THEN DO } CH=255 ZERO(SC+480,80) POSITION(1,12) PRINTDE(6,"NUMBER OF CHARACTERS TO SAVE TO DISK?") } POSITION(1,13) PUTD(6,'>) SIZE=INPUTC() UNTIL SIZE<129 AND SIZE<>0 OD FI CH=255} ZERO(SC+480,80) POSITION(0,12) PRINTD(6,"SIZE=") PRINTCDE(6,SIZE) SIZE=(SIZE*8)-1 SIZENUM=SIZE*10 CH=255 IF W}HICH=31 THEN WHILE LINENUM>32767-SIZENUM DO ZERO(SC+520,80) POSITION(1,13) PRINTDE(6,"Starting} line number for writing DATA?") POSITION(1,14) PUTD(6,'>) LINENUM=INPUTC() POSITION(9,12) } PRINTD(6,"DATA line=") PRINTCDE(6,LINENUM) OD FI CH=255 ZERO(SC+520,80) POSITION(6,13) PRINTDE(6,"WRIT}E THE INIT ROUTINE? Y/N") WHILE CH<>43 AND CH<>35 DO OD INIT_ROUTINE=CH CH=255 IF WHICH=31 AND INIT_ROUTINE=43 THEN } WHILE INITNUM>32737 OR (INITNUM>(LINENUM-5) AND INITNUM<=(LINENUM+SIZENUM)) DO ZERO(SC+520,80) POSITIO}N(1,13) PRINTDE(6,"Starting line number for INIT ROUTINE?") POSITION(1,14) PUTD(6,'>) INITNUM=INP }UTC() OD POSITION(25,12) PRINTD(6,"INIT line=") PRINTCDE(6,INITNUM) FI CH=255 ZERO(SC+520,80) P!}OSITION(2,13) PRINTDE(6,"Please type in the desired FILENAME") POSITION(0,14) PRINTD(6,"==> D1:") INPUTS(FILENAME2) "} SCOPY(FILENAME1,"D1:") SASSIGN(FILENAME1,FILENAME2,4,16) ZERO(SC+520,80) POSITION(8,13) PRINTD(6,"FILENAME: ") PRI#}NTDE(6,FILENAME1) POSITION(6,14) PRINTDE(6,"Writing data to the disk...") WRITE_FONT(FILENAME1,WHICH,INIT_ROUTINE,SIZE,$}LINENUM,INITNUM)RETURNPROC SET_UP() BYTE CRSINH=752 , SDLSTL1=560, SDLSTL2=561 , COUNTER=[0] BYTE POINTER PT%}R GRAPHICS(0) SETCOLOR(2,0,0) MOVEBLOCK(32768,CSET,1024) CHBAS=128 CRSINH=1 PTR=SDLSTL1+SDLSTL2*256+4 PTR==&}+2 PTR^=7 PTR==+1 PTR^=6 PTR==+3 PTR^=6 FOR COUNTER=1 TO 13 DO PTR==+1 PTR^=6 OD PTR==+1 PTR^=2 PTR==+1 PTR^=2 PT'}R==+1 PTR^=2 PTR==+1 PTR^=2 PTR==+1 PTR^=65 PTR==+1 PTR^=SDLSTL1 PTR==+1 PTR^=SDLSTL2 PRINTE(" ") DINDEX=$2 POS(}ITION(2,2) PRINTDE(6,"FONT DATA WRITER") DINDEX=$0 POSITION(1,2) PRINTE("By Edward Skrecky Nov 1986 to Feb 1987") P)}OSITION(3,3) PRINTE("Written in Action! Victoria, B.C.") DINDEX=$1 POSITION(3,9) PRINTDE(6,"")RETURN*}PROC MAIN() BYTE LOSAV=[0] , NEW=[0] , TOG=[0] CARD COUNTER=[0] SET_UP() DO DINDEX=$0 POSITI+}ON(0,12) PRINTE("START: Dir SELECT: Page OPTION: Toggle") DINDEX=$1 LOSAV=0 NEW=0 CHECK_INPUT(LOSAV,NEW,TOG,}) CH=255 READY_FILENAME() LOAD_FONT() DINDEX=$0 POSITION(0,13) PRINTDE(6,"ABORT: Hit ESC WRITE DATA:-} Hit Spacebar") DINDEX=$1 LOSAV=1 TOG=1 NEW=1 CHECK_INPUT(LOSAV,NEW,TOG) DINDEX=$0 IF CH=33 THEN WRITE_IN.}FO() ZERO(SC+480,120) POSITION(9,14) PRINTDE(6,"Mission Accomplished!") ELSE ZERO(SC+520,80) /} POSITION(12,14) PRINTDE(6,"Mission aborted!") FI FOR COUNTER=1 TO 46000 DO OD ZERO(SC+520,80) DIND0}EX=$1 CH=255 ODRETURNTDE(6,"Mission aborted!") FI FOR COUNTER=1 TO 46000 DO OD ZERO(SC+520,80) DIND FONT DATA WRITER By Edward Skrecky ================= << 100 % Public Domain Software >>One t2}hing I have noticed about mostpublic domain character set editorsis that they lack the ability towrite the data statements3} directlyto the disk. No doubt, there is aprogram out there with this usefuloption, but I unfortunately havenot yet been 4}able to find it.Until recently, I have beenincorporating redefined charactersinto programs by using thefollowing cumbers5}ome process:1) While using a character setutility such as CREATE-A-FONT fromAnalog magazine, list on the screenthe data 6}that makes up onecharacter.2)Write the numbers down on a pieceof paper.3)Repeat steps 1 and 2 until thedata for all th7}e characters thatare to be redefined are writtendown on paper.4)Enter the data into a program.As you can probably guess8}, this isa slow process. The good news isthat this time-consuming job caneasily be avoided.Every character set editor pr9}ogramwill save a character set, betterknown as a font, to the disk as a 9sector file (single density). No,you can't just :}put the informationstored in this file directly intothe program which requires thoseredefined characters. That would beju;}st too easy to do! However, it isfairly simple to read the datacontained in this 9 sector fileinto an array and then use t<}hePRINT command to write the infoback to the disk. Now it ispossible for you to incorporate thecharacter set data in this=} new fileinto the program code for a videogame, text adventure, graphicsdemo, or whatever.What I have just said is exact>}lywhat this utility called Font DataWriter does! This program can writethe font info as a BYTE ARRAY inAction! or as data?} statements in aLISTED Basic format to the disk. Ifyou do not want to write your owncharacter set initializationroutine, @}or use one found inanother program, then, besideswriting the data for characters,this utility will allow you towrite an iA}nit routine.Instructions:A) Console keys 1) To directory a disk, hit theSTART key. 2) If there are more than 9 filB}eson the disk, hit the SELECT key inorder to page. 3) To see a font that you haveloaded, hit the OPTION key. Note:If yC}ou have not loaded a font in,nothing will happen when you hitOPTION.B) Loading a Font 1) To load a font, just hit theD}key which corresponds to the numberseen to the left of the name of thefile which you want to load. 2) After viewing a foE}nt, youmight change your mind aboutwriting the data statements so hitthe "ESC" key to abort. 3) If you want to write thF}e fontto the disk, hit the SPACEBAR.Note: You can no longer use theconsole keys after you do this somake sure the disk inG} drive #1 hasenough free sectors left to allowfor the creation of the new file.C) Writing the Data 1)The program will H}give you achoice between writing the data forBasic or Action! Hit either the "1"or "2" key, depending on whichlanguage yoI}u use. 2) You can write a completecharacter set (128 characters) orjust half of it. If necessary, youcan tell the progrJ}am the number ofcharacters you want written to thedisk. If you do not write theentire font to the disk, make surethat theK} characters you designedwith an editor are at the start ofthe 9 sector file. Hint: Mosteditor programs will start off withL}writing the blank (null) characterfollowed by !, ", #, etc. 3) You can tell the program thestarting line number for theM}writing of the data lines. Thisoption only applies to Basic. 4) If you want to write theinitialization routine, hit theN} "Y"key when the program asks you thisquestion. If you are using theBasic option, you are then asked totype in the startiO}ng line numberfor this routine. Note: Trying toget the init routine to write oversome of the data statements is notconsidP}ered to be a very good idea!Fortunately, this program does dosome checking of user-enteredvalues so at least there should Q}beno line number conflicts. 5) It is now finally time to typein the filename and then hit theRETURN key.WARNING: One R}thing I have noticedabout Action! is that it does nothave an easy to use error trappingcommand such as TRAP in Basic. TheS}Action! manual does mention thatyou can write some sort ofPROCedure which will accomplishthis task, but I must admit that T}asyet I don't fully understand how todo it. This means that you willhave to be careful when using thisprogram. Trying to U}do somethingsuch as directorying an unformatteddisk is not recommended!That's all folks!......g thisprogram. Trying to ct%M (c)1983 Action Computer Services  B JKIHiDiELV`L%W} % BLV`L &&l L& &` Fj`8冨凪` ?&EӅӥX} ?&`ʆǪƩ Ɛee` P&ƦʆǢ &Ɛeǐ t& t&L;& P&'&&&8儨児Y}祂*L;&&&*ń8&&L;& &`hihiHHȱȱL&c !#3`Z}L&JJJJ`H &h`Hȩh %La' %La' %La' %La' %H8[}`HhHh 'La' BHI V䅠La' L( %La'Ԇ ؠPIPP`\} ;(P %La' ](L#( ;(Lb( v(L1(H- ,(8塪墨hLv( (L#( (L1( ;(ȹP`]}텠8堨塪 ;(芨Oȩ-`PP 'P棩 Ѥģ0-ģ6000:,80H ^}& &ehe&eģ0ʥ 8堅塅`$ %(&*i0:0i %(Ʀ`¢ 护q}pPPPPpPp|TT||ււ|8n®$Hpبު~8((8$HPPH$pH$$Hpƒƪ8((88(X`pPp (P!`}|Ʋ|8hHh(lD|$^$: $T|$\|(((8|ƺD||ƺtpPppPppPppP(PP(`P((P`|!a}|ƺ~|ƺ|ƺ||ƺ||ƺ|ƾ|(( |檴ࠠ!b}|ƺ||ƺ|~¾z((((8|T(ƪT((TT(((8(^|D\PP\D|P( |DttD|(T!c}6>8pp8?!d}ww<~~~<x`x`~bނPPp~ý}C𰾃8(xHhlD|࠼xHh((lD|!f}~ý~}8nBn(.2祥祥f<|lֺ祥{Ffρ<~~<!g}8x8}8nBn(.2祥祥f<|lֺ祥{Ffρ<~~< b%DOS SYSb*)DUP SYSb%SAUTORUN SYSbxTITLE SYSbFyFONTWRTROBJbrFONTWRTRACTB%1FONTWRTRDOCbRVDEMO4 OBJb _OUTLINE FNT qGOTHIC FNT zROMAN FNTb SCRIPT FNTb STRANGE FNTb COMPUTERFNTb SPACE FNTb&TESTFNT LSTb#TESTFNT ACTbDEMO1 OBJb DEMO1 ACTbDEMO2 OBJb !DEMO2 ACTb+DEMO3 OBJb/JDEMO3 ACTByDEMOS DOC°ڱ%ȱ%E %(L)担CS 'L)I (L)H )L) ](L) &B V a'NLMȑr}` MLN%B VLa'S:r*E:w*H ' z*{* ' 'h)0Iu*v*L'[\ZUVT` *u*v*s}` *L5( *L( *L(() ` *L5( &` 0d &ҥ `2)2t}ҩ`p`0)9q+`@0)ӈJJJJ)`Ѕ`ȱ`` +ȥ`Hhu}ƣĢ`ƥĤ`Ѣ 0,`ȱѢĦ`膡`v}`ťƤe8夰LF, Ƥ8`ŦeѠe桊LJ,w}UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUW؋ȸȸx}ȸȸȸȸȸȇ#"2.#"2.#"2.#"2.#"2.#"2.#"2.#"'؋ȸȸȸȸȸȸȸȇ#"2.#"2.#"2.#y}"2.#"2.#"2.#"2.#"'؋ȸȸȸȸȸȸȸȇ#"1UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUn#"'؋ȹz}Lȇ#"1奥n#"'؋ȹZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[Lȇ#"1奥{}n#"'ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[#"1UUUUUUUUUUUUUUUUUUUUUUUUUUUUgn#"'؋ȹUUUUUUUUUUUUUUUUUUUUUUUUUU|}UU[Lȇ#"1UUUUUUUUUUUUUUUUUUUUUUUUUUUUgn#"'؋ȹUUUUUUUUUUUUUUUUUUUUUUUUUUUU[Lȇ#"1UUUUUUUUUUUUUUUUUUUUUUUUUUUUgn#}}"'؋ȹU  U[Lȇ#"1U Ugn#"'؋ȹU   U[Lȇ#~}"1UUgn#"'؋ȹU   U[LȇUUUUUUUUUUUUUUUUUUUUUUUUUUUUg؋ȹU}UUUUUUUUUUUUUUUUUUUUUUUUUUU[Lȇ#"1UUUUUUUUUUUUUUUUUUUUUUUUUUUUgn#"'؋ȹUUUUUUUUUUUUUUUUUUUUUUUUUUUU[Lȇ#"1UUUUUU}UUUUUUUUUUUUUUUUUUUUUUgn#"'؋ȹUU[Lȇ#"1UUUUUUUUUUUUUUUUUUUUUUUUUUUUgn#"'؋ȹUUUUUUUUUUU}UUUUUUUUUUUUUUUUU[Lȇ#"1UUUUUUUUUUUUUUUUUUUUUUUUUUUUgn#"'؋ȹUUUUUUUUUUUUUUUUUUUUUUUUUUUU[Lȇ#"1UUUUUUUUUUUUUUUU}UUUUUUUUUUUUgn#"'UU[#"1U Ugn#"'؋ȹU}fffffff>`<|fl0fF68of;p88pf< 80 0 ~~`0 0`<-}f `<0`>?Xx>``od<f~v@~X~@ lxlx|| ?mxv~~ng-}pPP`ng v8pp8pPP|d0000|pPP|l8llll8-}f~:x`x`~<~~<-}0~0 ~  6dpPP`ng6` v(d~&ffd8|l<fff ~̙<~~<-}~x|nf8x88L `|lm>d~&ffd8|l<fff ~̙<~~<,fffffff>`<|fl0fF68of;p88pf< 80 0 ~~`0 0`<1}f 6ff~c~f3p`|fff?p~`?0~`?``n3w~f? 0nxflxx0pp`cwkcw~~1}?wff>sf|`?wff>sf|0? 80p3wff3wff|0cgf<8pp8?1}ww<~~~<x`x`~<~~<1}0~0 ~ <~~<<>f>``|ff|<```<>ff>>ff>|``|fff8<<``lxlf8<f1}kc|ffffff>|f```>`<|~ffff>fff<ck>6f< x~ 0~<~~<1}8x8ff|``>ff>|f```>`<|~ffff>fff<ck>6f< x~ 0~<~~<088DDffff>`<|fl0fF68of;888>x|f<>>``~ppppw``|l`cc>66wwcc<<<<<<<<<<<0 0 ~~`0 0`c5}cooo`?33sss~ffgggg`cc~ffwww``pp``pppc`oggssssss n~fflggg000ppp~gwggggwoggg5}ccgggccpppccggg~ffwww`ssggggggggggo>gggogsss>ggggggfl7g@`0 xx65}c6>8pp8?5}ww<~~~<x`x`~<~~<5}0~0 ~ <~~<>~v~```~fn~>20:>~fv~~f~p~>~fv~~```~fvv ~006|vwf5}kc|fvvv~fvv~~fv~``~fn~>0888> >~~ffnn~fnn>ck>6f>>nfff~~~6~<~~<5}~x|nf8x8fv~``~fn~>0888> >~~ffnn~fnn>ck>6f>>nfff~~~6~<~~<48888fffffff>`<|fl0fF68of;888>x|f<>>``~pppww``|l`cc>66wwcc0 0 ~~`0 0`c9}cooo`?33sss~ffgggg`cc~ffwww``pp``pppc`oggssssss <<< n~fflggg000ppp~gwggggwoggg9}ccgggccpppccggg~ffwww`ssggggggggggo>gggogsss>ggggggfl7g@`0 xx69}c6>8pp8?9}ww<~~~<x`x`~<~~<9}0~0 ~ <~~<?g``ss```ggcp~88cc``sss  ~00v|vs888f9}kc?3sss?3ss?3sppcc?3ppp`  33ssccc6ck>6f<6f<2E}<$$<~BZZB~2L222L 322 ԭ22 )L22L22`L3 p0 0  0F}IL33Ȍ333L33YX 13Ȍ333L3 233Lq33д3LG3L43`L3F} 12 2 1 3YX 1``33L3 233Lq33д3LG3L43`L3DD;------------------; --PULSAR-- ;August 30th, 1986 ;By Edward SKRECKY ;------------------BYTE Chbas=756, ;CharacJ}ter Base ;Register Ch=764CARD Sc=88 ;Start of screen memoryBYTE ARRAY Cset= ;Character set[0 0 J}0 24 24 0 0 00 0 60 36 36 60 0 00 126 66 90 90 66 126 0255 129 189 165 165 189 129 255]PROC ScJ}roll();This PROCedure will scroll the;border colour register. BYTE Wsync=54282, Vcount=54283, Clr=53274, J} Ctr , Chgclr=[0], Incclr FOR Ctr=1 TO 4 DO Incclr=Chgclr DO Wsync=0 Clr=Incclr Incclr==+1 J}UNTIL Vcount&128 OD OD Chgclr==+1RETURNPROC Action();This PROCedure will consecutively;display four different redJ}efined;characters. It also calls PROCedure;Scroll(). When a key is hit, the;program will return to PROCedure;Main() whichJ } then returns control;back to the Action! monitor. CARD Counter=[0] , Loop=[0] Graphics(0) SetColor(2,0,0) SetColor(1,J }0,11) Chbas=128 ;Tell computer where new ;character set is. WHILE Ch=255 DO FOR Counter=1 TO 4 DO J } SetBlock(Sc,960,Counter) FOR Loop=1 TO 18 DO Scroll() OD OD OD Ch=255RETURNPROC Main();This PROCedure will rJ }elocate the ROM;character set, insert the new set,;and call PROCedure Action(). Ch=255 MoveBlock(32768,57344,1024) MoveJ }Block(32768+8,Cset,32) Action() Zero(Sc,960) ;clear the screen Chbas=224 ;use regular ROM set RETURN8,57344,1024) MoveHj)2 (c)1983 Action Computer Services  B JKIHiDiELV`L"*N} "* BLV`jL~*z*l L{* &` Fj`8冨凪` *EӅӥN} *`ʆǪƩ Ɛee` *ƦʆǢ &Ɛeǐ * *L* *'&&&8儨児N}祂*L*&&*ń8&&L* @+`hihiHHȱȱL*c !#3`N}L{*JJJJ`H *h`Hȩh W*L+ `*L+ *L+ *L+ *H8N}`HhHh D,L+ BHI V䅠L+ L{, "*L+Ԇ ؠPIPP`N} ,P *L+ ,L, ,L, ,L,H- ,8塪墨hL, -L, -L, ,ȹP`N}텠8堨塪 ,芨Oȩ-`PP s,P棩 Ѥģ0-ģ6000:,80H N}& &ehe&eģ0ʥ 8堅塅`$ ,&*i0:0i ,Ʀ`¢ 护N}°ڱ%ȱ%E ,LE.担CS 7,LE.I -LE.H -LE. ,LE. &B V +NLMȑN}` MLN%B VL+S:.E:.H 1, .. + 1,h)0I..L+[\ZUVT` %/..N}` ,/L, /Ly, %/L,) ` ,/L, +` 0d {*ҥ `2)2N}ҩ`p`0)9/`@0)ӈJJJJ)`Ѕ`ȱ`` 0ȥ`HhN}ƣĢ`ƥĤ`Ѣ 0`ȱѢĦ`膡`N}`ťƤe8夰L0 Ƥ8`ŦeѠe桊L0N}U||JJ||UU====UU||AA||UU====UU||@@||UU====UU|~B@||UU===UU||@B~|UU===U/1L1 V01X1N} V0` 1L1 . c/ c/ c/  c/ 11m11i11i1eN}1i1111Ȍ111L21111|2|211L2Xm11Ym11111111N }1Ll21Е1LL21Ȍ11'1L211L2 1L21L21i1L 2``111111111LY;; 14/03/87 ; By Edward SKRECKY ;BYTE ARRAY CSET=[0 0 0 0R"} 0 0 0 0 85 124 124 74 74 124 124 85;185 61 61 5 5 61 61 85;285 124 124 65 65 124 124 85;385 61R#} 61 133 133 61 61 85;485 124 124 64 64 124 124 85;585 61 61 165 165 61 61 85;685 124 126 66 64 124 124 85 R$}85 61 189 133 5 61 61 85 85 124 124 64 66 126 124 85 85 61 61 5 133 189 61 85 ]PROC INIT()BYTE CHBR%}AS=756MOVEBLOCK(32768,57344,1024)MOVEBLOCK(32768,CSET,88)CHBAS=128RETURNPROC MAIN() BYTE NUM1=[1], NUM2=[2] , COUR&}NT=[0] CARD SC=88 , LOOP1=[0] , LOOP2=[0] , COUNTER=[0], LOOP3=[0] BYTE POINTER PT BYTE ARRAY CHAR_SEQUENCE= R'} [3 4 1 2 3 4 7 8 3 4 5 6 3 4 9 10] GRAPHICS(12+16) SETCOLOR(0,4,5) SETCOLOR(1,0,15) SETCOLOR(2,15,8) SETCOLORR(}(4,11,1) INIT() DO NUM1=CHAR_SEQUENCE(COUNT) NUM2=CHAR_SEQUENCE(COUNT+1) COUNTER=0 FOR LOOP1=1 TO 480 R)} DO FOR LOOP2=NUM1 TO NUM2 DO PT=SC+COUNTER PT^=LOOP2 COUNTER==+1 OD OD FORR*} LOOP3=1 TO 10000 DO OD IF COUNT>12 THEN COUNT=0 ELSE COUNT==+2 FI ODRETURNNTER==+1 OD OD FORP]?N (c)1983 Action Computer Services  B JKIHiDiELV`L@V,} @ BLV`Lq@m@l Ln@ &` Fj`8冨凪` @EӅӥV-} @`ʆǪƩ Ɛee` @ƦʆǢ &Ɛeǐ @ @L@ @'&&&8儨児V.}祂*L@&&*ń8&&L@ 3A`hihiHHȱȱL{@c !#3`V/}Ln@JJJJ`H {@h`Hȩh J@LA S@LA ?LA @LA @H8V0}`HhHh 7BLA BHI V䅠LA LnB @LAԆ ؠPIPP`V1} BP @LA BLB BLB BLBH- B8塪墨hLB BLB BLB BȹP`V2}텠8堨塪 B芨Oȩ-`PP fBP棩 Ѥģ0-ģ6000:,80H V3}& &ehe&eģ0ʥ 8堅塅`$ B&*i0:0i BƦ`¢ 护V4}°ڱ%ȱ%E BL8D担CS *BL8DI BL8DH CL8D BL8D &B V ANLMȑV5}` MLN%B VLAS:DE:DH $B DD A $Bh)0IDDLA[\ZUVT` EDDV6}` ELB ELlB ELB) ` ELB @` 0d n@ҥ `2)2V7}ҩ`p`0)9E`@0)ӈJJJJ)`Ѕ`ȱ`` Fȥ`HhV8}ƣĢ`ƥĤ`Ѣ F`ȱѢĦ`膡`V9}`ťƤe8夰LF Ƥ8`ŦeѠe桊LFV:}>n`n|nn|~|||x88888~n|||ƶV;}|||ƶ|~p|||8l88l|888 0`0ccccc`` 0 ~~`V<}0 0`?33sss~ffgggg`cc~ffwww``pp``pppc`oggssssss <<< n~fflggg000ppp~gwggggwogggccgggV=}ccpppccggg~ffwww`ssggggggggggo>gggogsss>ggggggfl7gDD88~<<}<<<0`<0`>?Xx>``od<f~v@~X~@ lxlx|| ?mxv~~ngV?}K M``XN E E ELM`L[N D VET1;; By Edward Skrecky ; 4/5/87 ;BYTE ARRAY CSET=ZK}[0 0 0 0 0 0 0 0 0 14 30 62 110 254 206 96 0 252 110 124 110 110 124 0 0 126 230 224 224 230ZL} 124 0 0 248 236 236 236 236 248 0 0 252 230 248 224 230 252 0 0 252 230 224 248 224 224 0 0 124 230 224 ZM}238 230 124 0 0 230 230 254 230 230 230 0 0 120 56 56 56 56 56 0 0 126 110 14 14 206 124 0 0 230 2ZN}36 248 236 230 230 6 0 240 224 224 224 230 254 0 0 230 238 254 214 214 198 0 0 252 230 230 230 230 236 24 0 ZO} 124 230 230 230 230 124 0 0 252 198 182 124 224 224 0 0 124 230 230 230 230 124 14 0 252 198 182 124 236 230 ZP}6 0 126 230 112 28 206 124 0 0 254 216 24 24 24 24 0 0 230 230 230 230 230 124 0 0 230 230 230 230 1ZQ}24 56 0 0 230 230 230 234 220 246 0 0 230 108 56 56 108 230 6 0 230 230 124 56 56 56 0 0 254 12 24ZR} 48 96 254 0 0 0 24 24 0 24 24 48 127 99 99 99 99 99 127 0 127 3 3 127 96 96 127 0 6 12 ZS} 24 48 24 12 6 0 0 0 126 0 0 126 0 0 96 48 24 12 24 48 96 0 63 51 51 127 115 115 115 0 ZT}126 102 102 127 103 103 127 0 127 103 103 96 99 99 127 0 126 102 102 119 119 119 127 0 127 96 96 127 112 112 12ZU}7 0 127 96 96 127 112 112 112 0 127 99 96 111 103 103 127 0 115 115 115 127 115 115 115 0 12 12 12 12 60 ZV} 60 60 0 12 12 12 14 14 110 126 0 102 102 108 127 103 103 103 0 48 48 48 112 112 112 126 0 103 127 127 ZW}119 103 103 103 0 103 119 127 111 103 103 103 0 127 99 99 103 103 103 127 0 127 99 99 127 112 112 112 0 127 9ZX}9 99 103 103 103 127 7 126 102 102 127 119 119 119 0 127 96 127 3 115 115 127 0 127 28 28 28 28 28 28 0 ZY} 103 103 103 103 103 103 127 0 103 103 103 103 111 62 28 0 103 103 103 111 127 127 103 0 115 115 115 62 103 103 ZZ}103 0 103 103 103 127 28 28 28 0 127 102 108 24 55 103 127 0 238 238 68 68 0 0 0 0 56 56 24 24 0Z[} 24 24 0 0 0 0 126 0 0 0 0 0 0 0 0 0 24 24 0 60 60 60 0 60 60 60 0 0 0 0 Z\} 0 0 24 24 48 0 28 60 108 204 221 119 0 0 252 102 124 102 103 125 0 0 60 102 96 96 103 61 0 0 Z]} 248 108 102 102 102 124 0 0 62 96 60 48 96 62 0 0 255 24 63 24 88 120 0 0 62 96 96 111 100 60 0Z^} 0 230 102 126 118 127 230 0 64 126 26 24 24 88 126 2 64 127 12 12 12 108 120 0 0 230 108 120 124 23Z_}0 231 0 7 15 124 12 63 109 120 0 0 199 239 254 214 198 199 0 0 230 118 126 126 110 103 0 0 60 103 102Z`} 102 102 60 0 0 252 230 102 124 224 224 0 0 248 204 12 252 223 123 0 0 252 230 102 124 236 231 0 0 31 Za}48 60 6 14 252 0 0 127 25 24 252 216 120 0 0 246 118 102 102 119 63 0 0 239 239 102 108 56 48 0 0Zb} 231 199 214 254 238 204 0 0 231 102 60 60 103 103 0 0 102 118 60 24 24 15 0 64 126 12 24 48 96 63 Zc} 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Zd}0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 126 126 102 102 126 102 0 0 126 126 1Ze}02 124 102 126 0 0 126 126 102 96 102 126 0 0 124 126 102 102 108 120 0 0 126 126 96 126 96 126 0 0 12Zf}6 126 96 120 96 96 0 0 126 126 96 110 102 126 0 0 102 102 102 126 126 102 0 0 126 126 24 24 24 126 0 Zg}0 30 30 6 102 102 126 0 0 102 102 108 120 124 102 0 0 96 96 96 102 126 126 0 0 99 119 119 127 107 9Zh}9 0 0 118 118 126 110 102 102 0 0 126 126 102 102 102 126 0 0 126 126 102 102 126 96 0 0 126 126 102 10Zi}2 108 118 0 0 126 126 102 100 124 102 0 0 126 126 96 126 6 126 0 0 126 126 24 24 24 24 0 0 102 102Zj} 102 102 126 126 0 0 102 102 102 102 60 60 0 0 99 99 107 127 127 119 0 0 102 102 60 60 126 102 0 0 Zk}102 102 126 126 24 24 0 0 126 126 12 56 96 126 0 ]PROC SCROLL() BYTE WSYNC=54282, VCOUNT=54283, Zl} CLR=53274, CTR,CHGCLR=[0], INCCLR FOR CTR=1 TO 5 DO INCCLR=CHGCLR DO WSYNC=0 CLR=IZm}NCCLR INCCLR==+1 UNTIL VCOUNT&128 OD OD CHGCLR==+1RETURNPROC PRINT_SCREEN() PUTE() PRINTE(" ATTAZn}CK OF THE KILLER CYBERMONKS") PRINTE(" FROM GALAXY FIVE") PUTE() PRINTE(" published by  inc") PRIZo}NTE(" #/092)'(4 =<==") PUTE() PRINTE(" ]]]]]]]] REVIEWS ]]]]]]]]") PUTE() PRINTE("!.!,/' #/-054).'_") Zp}PUTE() PRINTE(" [      ]  ") PRINTE("        \[") PUTE() PRINTE("!.4)# Zq}-!'!:).%_") PUTE() PRINTE(" [  \       ") PRINTE("       ^[") PUTE() PRIZr}NTE(" multi]font screen title demo") PRINTE(" by     victoria b^c^") PUTE() PRINTE(" SORRY not a '!Zs}-%]this time\")RETURNPROC SOUNDS() BYTE I=[0], LOOP1=[0] , LOOP2=[0], ATTRACT=77 DO ATTRACT=0 FOR Zt}LOOP1=1 TO 35 DO SOUND(0,LOOP1,8,10) OD SNDRST() FOR LOOP1=0 TO 220 STEP 6 DO FOR LOOP2=1 Zu}TO 10 DO SCROLL() SOUND(I,LOOP1+I+1,10,6) I==+1 IF I>3 THEN I=0 FI SCROLL() ODZv} OD SOUND(1,0,0,0) SOUND(2,0,0,0) SOUND(3,0,0,0) ODRETURNPROC INIT() BYTE CHBAS=756 , CRSINH=752,Zw} SDMCTL=559 , SDMCTL_NUM=[0] GRAPHICS(0) SDMCTL_NUM=SDMCTL SDMCTL=0 CRSINH=1 SETCOLOR(2,0,0) MOVEBLOCK(32Zx}768,57344,1024) MOVEBLOCK(32768,CSET,984) CHBAS=128 PRINT_SCREEN() SDMCTL=SDMCTL_NUM SOUNDS()RETURN X} DOCS FOR THE CHARACTER SET DEMOS --------------------------------DEMO1.OBJ:This program is a simple graphicsmode ze^z}ro character set animationdemo. Since only a few redefinedcharacters are needed, this programis a good example of when you^{} donot need to write the datastatements for an entire font tothe disk when using Font DataWriter.DEMO1 starts off by wr^|}iting onevalue to all of the screen memory.What you will see is a screenfilled with one character. Byaltering the value w^}}ritten to thememory locations, differentcharacters will start to appear onyour TV screen. By repeatedlyplacing these valu^~}es in screenmemory, you will end up seeing asort of pulsing animation effect.Neat stuff.... eh?DEMO2.OBJ:This demo use^}s the same sort ofanimation technique as the firstprogram. The only difference isthat this demo is done in graphicstwelve^} which is one of thefour-colour character text modes.DEMO3.OBJ:Surprise, this is notan animation demo! This littleprog^}ram is an example of howseveral fonts can be displayed allat once in graphics zero. You allprobably know that our Atari 8-^}bitcomputers have a built-in fontcomprised of 128 characters.Unfortunately, there is no way toexpand this character set s^}osomething has to go if you wantdifferent kinds of fonts on thescreen.For this demo, I decided to use theupper-case let^}ters of fourdifferent character sets. I didthis by writing the first 59characters of the BLOCK, SCRIPT,ROGUE, and COMPUTE^}R font to thedisk and then proceeded to extractthe data for the upper-caseletters. The next step was to tryand combine th^}ese partial fontsinto one character set. This wasdone by placing one set ofupper-case letters in each of thefollowing zon^}es of the oldcharacter set: upper-case,lower-case, graphics character area(eg hit CONTROL-A), and one endedup being place^}d in the remainingvacant spots. The last font reallygot spread all over the keyboard(eg hit SHIFT-1 would give you thelet^}ter "A" & hitting the "." keywould give you the letter "I").Anyways, my demo ended up beingsort of a title-screen demo fo^}r asupposedly yet-to-be-written gamecalled "Attack of the KillerCyberMonks from Galaxy Five."Having more than one kind of^} fontin a program that utilizes graphicszero does tend to spice things up abit. Commercial programs such asText Adventure^}s that use two orthree different fonts in the normaltext mode always tend to look moreimpressive than ones that just uset^}he normal Read Only Memory (ROM)font.FINAL WORDS:I have included the source code forFont Data Writer along with each of^}the demos on this disk in caseanybody wants to see how thingswere done. Hope you have lots offun trying to figure out the^} logicbehind some of the code. I wrotesome of the procedures at 3 o'clockin the morning so even I have somedifficulty try^}ing to figure outwhat I have done! I guess theimportant thing is that theprograms do work. Enjoy!have somedifficulty try\e U[Lȇ#"1U**  * Ugn#"'؋ȹUPPQA@PPPEPP U[Lȇ#"1U(((( "((} Ugn#"'؋ȹUPQ@PU@UE U[Lȇ#"1U((( (( Ugn#"'؋ȹU@@UPPPPEP U[L}ȇ#"1U Ugn#"'؋ȹUU[LȇUUUUUUUUUUUUUUUUUUUUUUUUUUUUg؋}ȹUUUUUUUUUUUUUUUUUUUUUUUUUUUU[Lȇ#"1UUUUUUUUUUUUUUUUUUUUUUUUUUUUgn#"'؋ȹUUUUUUUUUUUUUUUUUUUUUUUUUUUU[Lȇ#"1U}UUUUUUUUUUUUUUUUUUUUUUUUUUUgn#"'UUUUUU[UUUUWUUUUUUUUUUUUUUUUUUUUUUUUUUUUgZZZZYUUUUUU}UUUUUUUUUUUUUUUUUUUUUUZZZZZ[奥UUUUUUUUUUUUUUUUUUUUUUUUUUUUeZZZZYUUUUUUUUUUUUUUUUUUUUUUUUUUUUZZZZZ[奥}UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU[UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUgUUUUUUUUUUUUUUUUUUUUU}UUUUUUUUUUUUUUUUU[UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUgUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU[UVffffffffff@ }ffffffffffUUgUU U[UVffffffffff@ ffffffffffUUgUU }U[UVffffffffff@ ffffffffffUUgUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU[UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU}UUgUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU[UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUgUU_UU[U}U^UUgUU^UU[UU^UUgUU^}UU[۪}ۀۀ}ۀ}ۀ?????<?<<ۃ<<<<}<><<<ۏ<?<}ۼ<<<??ۀ}ۀۀ}TUUPE@PUTTP@TPPPPۀPPP@PPPUPP}PU@@UPUPPA@UPUPUA@ۀP@PPUPAAEPPP@@窪PP@E@EAA@PUP}UAAA@EAA@PUPUU^UU^UU[UU^}UUgUU^UU[UU_UUgUUUUUUUUUUUUUUUUUUUUU}UUUUUUUUUUUUUUUUU[UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUgUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU[UUUUUUUUUUUUUUUUUUUUUUUUUU}UUUUUUUUUUUUgUU U[UVffffffffff@ ffffffffffUUgUU }U[UVffffffffff@ ffffffffffUUgUU U[UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU}UUgUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU[UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUgUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU[U}UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUgZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[奥UUUUUUUUUUUUUUUUUUUUUUUUUUUUeZZZZYU}UUUUUUUUUUUUUUUUUUUUUUUUUUUZZZZZ[奥UUUUUUUUUUUUUUUUUUUUUUUUUUUUeUUUUUUUUUUUUUUUUUUUUUUUUUUUU[UUUUU} UgUUUUW#"1U  U[n#"'؋ȹU  UgLȇ#"1U } U[n#"'؋ȹU UgLȇ#"1UUUUUUUUUUUUUUUUUUUUUUUUUUUU[n#"'UUUUUUUUUUUUUUUU}UUUUUUUUUUUUg#"1UUUUUUUUUUUUUUUUUUUUUUUUUUUU[n#"'؋ȹUUUUUUUUUUUUUUUUUUUUUUUUUUUUgLȇ#"1UUUUUUUUUUUUUUUUUUUUU}UUUUUUU[n#"'؋ȹ奥Lȇ#"1ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[n#"'؋ȹ奥}Lȇ#"1ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[n#"'؋ȹLȇ#"1UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUn#}"'؋ȸȸȸȸȸȸȸȇ؋ȸȸȸȸȸȸȸȇ#}"1UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUn#"'؋ȹLȇ#"1ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[n#"'؋ȹ}Lȇ#"1ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[n#"'؋ȹ奥Lȇ#"1UUUUUU}UUUUUUUUUUUUUUUUUUUUUU[n#"'؋ȹUUUUUUUUUUUUUUUUUUUUUUUUUUUUgLȇ#"1UUUUUUUUUUUUUUUUUUUUUUUUUUUU[n#"'Z}g#"1Z[n#"'؋ȹZE@@EED@EEEED@DE@gLȇ#"1Z@@}D@DD@[n#"'؋ȹZ@E@@@DEEE@EDD@gLȇ#"1Z@E@D@DD@[n#"'؋ȹZ@DDE@AE@EDEED}@DE@gLȇ#"1Z[n#"'؋ȹZgLȇ#"1UUUUUUUUUUUUUUUUUUUUUUUUUU}UU[n#"'؋ȹZgLȇZ[؋ȹZgL}ȇ#"1Z[n#"'؋ȹZgLȇ#"1Z[n#"'؋}ȹZgLȇ#"1Z[n#"'؋ȹZgLȇ#"1U}UUUUUUUUUUUUUUUUUUUUUUUUUUU[n#"'؋ȹUUUUUUUUUUUUUUUUUUUUUUUUUUUUgLȇ#"1UUUUUUUUUUUUUUUUUUUUUUUUUUUU[n#"'奥}#"1ZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[n#"'؋ȹ奥Lȇ#"1ZZZZZZZZZZZ}ZZZZZZZZZZZZZZZZZ[n#"'؋ȹLȇ#"1UUUUUUUUUUUUUUUUUUUUUUUUUUUUUVn#"'؋ȸȸȸȸ}ȸȸȸȇ#"2.#"2.#"2.#"2.#"2.#"2.#"2.#"'؋ȸȸȸȸȸȸȸȇ#"2.#"2.#"2.#"2.#"2.#}"2.#"2.#"'؋ȸȸȸȸȸȸȸȇUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU}UUUUUUUWU}}},LtLnLnL}LLoLpL ԭpLpL )LLnLLyLoL`LL |* * *kLjLYX +ҩ $+ } $+  $+ qLML M``LLLnLLyLoL`LL |* * *kLjLYX +ҩ $+ #