@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`  `1  ɐ     `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.D1:MEM.SAV J y08 B|DEHI$} V0 0`B;DEL`?<0LV`@ʆ v s? F0Ξ05: [ BDEHI%} VY8 B V  @  /DE `E:D1: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 ALLOWED736 FREE SECTORS COPYING---D1:DIRECK.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- 138ɛ+,' 20*.. өr2 1``2TOO MANY DIGITSINVALID HEXAQ}DECIMAL PARAMETER800 0 8 00`,0'D800 H,ɛh`2L1NEED D1 THRU D8uR} 00000<0 0 000<0<0000<0000 0 <000000000 00T}000000 00 0 < 00000< 000000000 00 0 00U} <0000<0000 0V}000 0000000000000 00<0000<00 00000W}0    <<00 ?X}000 0<00000000Y}0000<<000 <<0<000< 0000 0000Z}< 0000 00000< 000 [} <<<< 000000 0000000 0000<< 0000000\}0000 00000000 0 < 0 00 0000 000000000 ]}00 0 0 00<00000000 0^}0< 00000000000000<00_}00<00 000000    00<< ???`}000 00 a}0<000000000000000< <<<< <0< 0000< 000 b} <00000< <0 0000<<00 c} 000 <<<< 0; SIEX.ACT; Super-IRG example, using; SILIB.ACT; By Bill Kendrick; kendrick@zippy.sonoma.edu; http://zippy.sonoma.edu/ e}kendrick/nbs/; 11/27/1997INCLUDE "SILIB.ACT"Byte Array Buf(3072)Card CHSetCard DL=560Byte IByte KEY=764Proc CIO f}=$E456(Byte areg,xreg)Card Func Burst(Byte chan,mode, Card addr,buflen) Type IOCB=[Byte id,num,cmd,stat g} Card badr,padr,blen Byte a1,a2,a3,a4,a5,a6] IOCB Pointer iptr chan==&$07 iptr=$340+(chan LS h}H 4) iptr.cmd=mode iptr.blen=buflen iptr.badr=addr CIO(0,chan LSH 4)Return(iptr.blen)Card Func BGet(Byte chan Car i}d addr,len) Card temp temp=Burst(chan,7,addr,len)Return(temp)Proc Main() Graphics(0) For I=6 To 28 Do Poke(D j}L+I,4) Od CHSet=((Buf/1024)+1)*1024 Close(1) Open(1,"D:ATARI.SIF",4,0) BGet(1,CHSet,2048) Close(1) PrintE("T k}esting 1357") PrintE("Testing 1357") PrintE(" |  ") PrintE(" |   IS CL!") Pr l}intE(" | | ") SIOn(CHSet) KEY=255 Do Until KEY<255 Od KEY=255 SIOff() Graphics(0)Return q; SIFE.ACT; Super-IRG Font Editor; By Bill Kendrick; kendrick@zippy.sonoma.edu; New Breed Software; http://zippy.sonomn}a.edu/kendrick/nbs/; November 21, 1997 - November 26, 1997Byte Array Buffer(6144),ColorChar(30), Blue(4),Red(4),Greo}en(4), RedChar(20),GreenChar(20), BlueChar(20)Byte VCOUNT=$D40B,WSYNC=$D40A, NMIEN=$D40E,KEY=764,CHBAS=756, p} RTCLOCK=20,CHBASE=$D409, STICK0=632,STRIG0=644, PMCOL0=704,PMCOL1=705Byte FLIP,ChPage,Colr,X,Y,Chr,OChr, q}Editing,Size,FLASHCard OLDVBI,OLDDLI,Ch,DL,PMG,OldErrorCard VDSLST=$200,SDLST=$230,SC=88, VVBLKD=$224Char Array File(r}128)Byte Array Colors(5)INCLUDE "RUNTIME.ACT"INCLUDE "SIFEINC.ACT"Proc CIO=$E456(Byte areg,xreg)Card Func Burst(Bys}te chan,mode, Card addr,buflen) Type IOCB=[Byte id,num,cmd,stat Card badr,padr,blen t} Byte a1,a2,a3,a4,a5,a6] IOCB Pointer iptr chan==&$07 iptr=$340+(chan LSH 4) iptr.cmd=mode iptr.blen=buflen iu}ptr.badr=addr CIO(0,chan LSH 4)Return(iptr.blen)Card Func BGet(Byte chan Card addr,len) Card temp temp=Burst(chan,v}7,addr,len)Return(temp)Proc BPut(Byte chan Card addr,len) Burst(chan,11,addr,len)ReturnByte Func GetFileName() Chw}ar C Byte Len Close(1) Open(1,"K:",4,0) Len=0 Do C=GetD(1) If ((C>='0 And C<='9) Or C=': Or C='/ x}Or C='\ Or C='> Or C='. Or (C>='A And C<='Z) Or (C>='a And C<='z)) And Len<31 Then If C>='a And C<y}='z Then Poke(SC+22*32+Len,C) ELSE Poke(SC+22*32+Len,C-32) Fi Len=Len+1 File(Len)=C z} ElseIf C='~ And Len>0 Then Len=Len-1 Poke(SC+22*32+Len,0) Fi Until C=155 Or C=27 Od Zero(SC+22*32,32){} File(0)=Len Close(1) If Len=0 Then C=27 FiReturn(C)Proc Off() MoveBlock(Colors,708,5) SETVBV(7,OLDVBI|}) StopDLI() Poke(SDLST+27,2) CHBAS=224 Poke(709,15) Poke(710,0)ReturnProc On() MoveBlock(708,Colors,5) Poke}}(SDLST+27,4) OLDVBI=VVBLKD SETVBV(7,VBLANKD) StartDLI(DLI) CHBAS=CHPageReturnProc Load() Card Len Byte C O~}ff() C=GetFileName() If C=155 Then Close(1) Open(1,File,4,0) Len=BGet(1,CH+2048,1025) If Len<1025 Then} MoveBlock(CH+2048,CH+3072,1024) Else BGet(1,CH+3073,1023) Fi Close(1) Fi On()ReturnProc Save}() Byte C Off() C=GetFileName() If C=155 Then Close(1) Open(1,File,8,0) BPut(1,CH+2048,2048) Close}(1) Fi On()ReturnProc Title() Graphics(0) PokeC(82,9984) Poke(752,1) Put('}) Put('}) PrintE(" 0.0")} PrintE("Super-IRG Font Editor") PrintE("by Bill Kendrick") PrintE("New Breed Software, 1997") PutE() PrintE("Press }a key to begin") KEY=255 Do Until KEY<255 Od KEY=255ReturnProc Main() Byte K,S,OS,OY,F,Z Title() SetUp()} RTCLOCK=0 OY=Y+1 Do K=KEY S=STICK0 F=STRIG0 If S=OS And RTCLOCK<10 Then S=15 Else O}S=S RTCLOCK=0 Fi OChr=Chr If K<255 Then KEY=255 If K=44 Then Colr=Colr+1 If }Colr>9 Then Colr=0 Fi DrawColorArrow() ElseIf K=108 Then If Colr>0 Then Col}r=Colr-1 Else Colr=9 Fi DrawColorArrow() ElseIf K=7 Then S=7 ElseIf K=6} Then S=11 ElseIf K=15 Then S=13 ElseIf K=14 Then S=14 ElseIf K=33 Then F=0} ElseIf K=7+128 Then If Size=4 Then Chr=Chr+1 Else Chr=Chr+4 Fi If }Chr>127 Then Chr=Chr-128 Fi ElseIf K=6+128 Then If Size=4 Then If Chr>0 Then } Chr=Chr-1 Else Chr=127 Fi Else If Chr>4 Then Chr=Chr-4 } Else Chr=Chr+124 Fi Fi ElseIf K=15+128 Then Chr=Chr+32 If Chr>127} Then Chr=Chr-128 Fi ElseIf K=14+128 Then If Chr>31 Then Chr=Chr-32 Else } Chr=Chr+96 Fi Fi Fi If Chr<>OChr Then If Editing=1 Then SaveChar() DrawC}har() Fi Fi If K=12 Or K=28 Then If Editing=1 Then If K<>28 Then SaveChar() Fi} Editing=0 ClearChar() Else DrawChar() Editing=1 Fi Fi If K=140 Then } If Editing=1 Then SaveChar() Fi If Size=4 Then Size=8 Else Size=4 Fi } If Editing=0 Then ClearChar() Else DrawChar() FI Fi If K=10 Then Z=8 If }Size=8 Then Z=32 Fi MoveBlock(CH+2048+Chr*8,CH+18*8,Z) MoveBlock(CH+3072+Chr*8,CH+1024+18*8,Z) } Fi If K=18 Then Zero(CH+18*8,32) Zero(CH+1024+18*8,32) Z=8 If Size=8 Then Z=32 F}i MoveBlock(CH+18*8,CH+2048+Chr*8,Z) MoveBlock(CH+1024+18*8,CH+3072+Chr*8,Z) Fi If K=54+128+64 Then } ClearChar() Fi If K=0 Then Load() Fi If K=62 Then Save() Fi If F=0 And Editing=1 }Then If Colr=0 Then PokeC(SC+Y*32+8+X*2+64,10+11*256) Else PokeC(SC+Y*32+8+X*2+64,Colr*257) } Fi Fi OY=Y If Editing=1 Then If S>4 And S<8 Then X=X+1 If X>=Size Then X=0 } Fi ElseIf S>8 And S<12 Then If X>0 Then X=X-1 Else X=Size-1 Fi }Fi If S=13 Or S=9 Or S=5 Then Y=Y+1 If Y>Size*2-1 Then Y=0 Fi ElseIf S=14 Or S}=10 Or S=6 Then If Y>0 Then Y=Y-1 Else Y=Size*2-1 Fi Fi Poke(53248,X}*8+96) If OY<>Y Then MoveBlock(PMG+536+OY*4,""+1,4) Fi MoveBlock(PMG+536+Y*4,""+1,4) El}se Poke(53248,0) Fi Poke(53249,62+(Chr MOD 32)*4) If OChr<>Chr Then MoveBlock(PMG+728+(OChr/32)*4-1,}""+1,6) Fi MoveBlock(PMG+728+(Chr/32)*4-1,"~BBBB~"+1,6) Until K=28+128+64 Od KEY=255 ShutDown()Return}%D_E_%EINC.ACT%&; Super-IRG%%%%.& ; INCLUDE&%&N&; By Bill %rick5&"p&; kendrick@zippy.s}onoma.edu%w&p&&; New Breed Softwarew&.&'; http://zippy.sonoma.edu/kendrick/nbs/&&&.&'; November 21, 1997 - }November 26,%7hihiHHȱȱ`8Hh` "'E…¦ "'`L"'` }3'"Ff ee&8LT' 3'_Wń児0 &&86.}ń児8儅充FfFf8LT' '` Fj` &`p B V8l 5( VhhlI(}HHJJJJhh`hhlI( `iDiE`HhK(`Hh`Hh`Hh` l(IHiDiE B L(}HI B L(`ԆՄ ؠ0ȑ8)ȑ`HhL(0L(II襢 (iȑȩ-`H ( }(hL(H ( )hL( (LP) (Ln) (LP) (Lz)Ln) (L)Lz) (L) (L_) (L) (L_) (L) (L( (L) (L( (L)}ȩ$&*i0:iȑ`K( LFĆ>%>Ć5%/E)ԵH膇}hCI4H6>6I L/7>68@6@6 @6 `'>6e>6>6&Lm7=6<6&=6>6F&L7=6<6}&=6>62&L7=6<6&=6h&ii&i?6 `'ee86 `'eem;6i}=6 ?.<6L|68@6@6;6Lj6?6LR6`L%8`& A6b&ILl8`&i A6`&i A6`&i A6`8Lr8 R}.m8n8n8L8n8 '8宅n8 ,n8 ?.n8L8m8 ?. ,`)8+L8 s,J(o&I(n&q8}J(p8I(-/ ?.%% 'ii `'h&i&i&h& '[&h&il&i&im&m&}l& 'ԩ ?.i&h& .h&ii&i .h&ii&i  .m&l& .Щ} ?.Щ ?.Щ ?.Щ ?.Щ ?.h&ii&i `'eeLS:DDDD:K .h&}ii&i `'eeL:UUUUUUUU: .h&ii&i `'ee}L:: .88Lz;h&ii&i `'ee8 `'e}e" ?.8L;h&ii&i `'eeL;; .h&ii&i} `'eeL<3333̩; .h&ii&i `'eeLX<<}P .h&ii&i `'eeL<ffff< .h&ii&i `'}eeL<<򦡥 .h&ii&i `'eeLK=wwwwݩ=C} .h&ii&i `'eeL=̀3= .h&ii&i `'}eeL=3=妡 .h&ii&i `'eeL>> 0>6 .}h&ii&i `'eeL>0 > .h&ii&i `'ee}L>DDDD>ئ .h&ii&i `'eeL1?UUUUUUUU?) .h&i}i&i `'eeL??z .88L@h&ii&i `'}ee8 `'eeii" ?.8L?h&ii&i `'eeLP@}@H .h&ii&i `'eeL@3333@ .h&ii&i} `'eeL@@ꦡ .h&ii&i `'eeLCAfff}fA; .h&ii&i `'eeLAA .h&ii&i} `'eeLAwwwwAݦ .h&ii&i `'eeL6B3̩B}. .h&ii&i `'eeLB3̩B .h&ii&i `}'eeLB 0BЦ .h&ii&i `'eeL)C0 C}! .0 R.ij&ik&88LCj&m8k&i ?.8LYC8j&k&D ?.L ?.̢ ?. }?. ?.8 8LRDXiYi8 `'ee8 ?.XiYi8 `'e}eii8 ?.8LC  `'XeYeii ?.  `'XeYe}ii ?.  `'XeYeii ?.  `'XeYeii} ?.  `'XeYeii ?.  `'XeYeii ?. } `'XeYeii ?.  `'XeYeii ?. `'h&e}i&e .h&ii&i `'ee .88LF  `'Xe}Yem8i8 ?.8L|F\&]&^&Ȍ_&a&b&@&&&&& &&&&0& &&} `'ee `'ee% `'ee `'}ee% `'ee `'ee% `'ee} `'ee% `'ee `'ee% `}'ee `'ee% `'ee `'ee}% `'ee `'ee% `'ee } `'ee% `'ee `'ee% `'e}e `'ee % `'ee `'ee %} `'ee `'ee% `'ee `'}ee % `'ee `'ee % `'ee} `'ee% `'ee `'ee % }`'ee `'ee % `'ee `'ee}% `'ee `'ee % `'ee } `'ee % `'ee `'ee% `'}ee `'ee % `'ee `'ee %} `'ee `'ee% `'ee `'}ee % `'ee `'ee %&& &!&"&#&}$&%&&&'&(&)&*&+&,&-&.&/&0&1&2&3&4&5&6&7&8&9&:&;&<&}=&>&?&@&A&B&C&D&E&F&G&H&I&J&K&L&M&N&O&P&Q&R&S&T&U&}V&W&X&Y& / |0[&i%e&$d&.. /.. T/`L,}~QI.%~QALQZ~Q~QaLRz~QLRQLR~QaLaRz~QLaR  `'XeYemQi~Q} ?.LR  `'XeYemQi8~Q ?.Q~QQp&LS~QI~LSQLS8QQ } `'XeYemQi ?.~QI ~QILQ  `'XeYe .Qp& ,Q}L\S~Q~Q`LeSĢ& .e&d& / /0i1i ?. ?. ?.`LS& .}0i1i ?.%e&$d&.. /.. T/[&`L%T bS Q!T!TILT ,&p} +h&ii&i Q TTT TLTh&ii&ih&ii&i  .LTh&ii&i } Q , S`LT bS QTTIL8U ,&p +h&ii&i ZQ , S`L?U s,'}R I. ?.} *} *LpU 0.0Ug )LUSuper-IRG Font EditorUz )LUby Bill KendrickU )LUNew Breed Soft}ware, 1997U ) *LUPress a key to beginU )LU`L LV X "8a& |0LQX 5a& VILXa&ILhX "8b&ILzXb&LXb&a&LX |0LX 5 VI LYVb&ILX Vh&}ii&i_& `'ee `'h&ei&eV .h&ii&i _&} `'eeh&ii&i `'eeV . VILZ `'h&e }i&e .h&ii&i `'ee .Vb&ILZ V `'h }&ei&eh&ii&i_& `'eeV .h&ii&i `'ee }h&ii&i _& `'eeV . VILZ |0 VL[ "T VI>L[ TVL1\a&IL1\ }\&L[ ^& `'XeYeii]& `'eei@i `' e }e I.L1\ ^& `'XeYeii]& `'eei@i\}& `' I.^&Va&IL ^ VLk\ VLk\]&]&b&Lh\]&L\ VL\ V L\]&L\8]&]&L\8b&}]& VI  VI VIL\^&b& `'8^&0L\^&L<] VI VI VIL<]^&L]8^&}^&L<]b& `'8^&]& `'i`Щ ?.VM^&L]l&im&iV `'e}eL]] .l&im&i^& `'eeL]]說 .L^Щ} ?. _& ( `'>eЩ ?.`&M_&L^l&i؅m&i `& ' `'e}e8L^^ .l&i؅m&i _& ' `'ee8}L_~BBBB~_ . VIL(V 9P``V@SIFE.TXTAbout Super-IRG Font Editorby Bill Kendrickkendrick@zippy.sonoma.eduNew Breed Softwarehttp://zippy.sonoma.edu}/kendrick/nbs/November 1997-------------------------------------WHAT IS SUPER-IRG?Super-IRG is a software-basedgraphi}cs mode, similar in conceptto APAC and ColorView modes, whichprovides addition output capabilitiesto a standard hardware g}raphics mode,in this case, IRG, or multicoloredcharacter mode. The SIFE mode wasfirst seen in my recently-releasedgame "}Gem Drop." At the time, I wasusing a simple monochrome font editorI had written years earlier in BASIC.Needless to say, i} t wasn't easy, butin doing I found that the graphicsmode met my expectations in quality.As you probably know, plain IRG }modeallows you to represent a grid of4 pixels wide by 8 pixels high usingone character. Each pixel can beany one of four} colors.Super-IRG mode, by flickering betweentwo character sets (which is doneby simply toggling a flag byte andsetting }the CHBAS variable in theOS), allows you to createcombinations of colors by havingpixels set to different values ineach o}f the two character sets.If your color palette contained thecolors black, red, green and blue,plain IRG would let you dis}play those four colors. Super-IRG modewould let you display those fourcolors as well (with no flickerdistortion), but w }ould go beyond thisby providing the colors dark red,dark green, dark blue, yellow,cyan and purple. That's 10 colorstotal!}. (This is not even takinginto consideration the "5th" coloravailable in IRG text modes whenyou set a character's high bi"}t(turn it inverse)!)-------------------------------------ABOUT SIFESIFE was written using ID's Action!,a high-level p#}rogramming language.SIFE allows you to edit a Super-IRGcharacter set (two standard 1Kcharacter sets) using all 10 colors$}available to it.You can edit one character at a timelike in most font editors, or fourcharacters at a time (2x2) to easil%}ycreate tile graphics!SIFE automatically dithers the sixmixed colors when it records the10-color images you draw. This &}keepsflickering to a minimum. (Comparea solid color flashing on and offcompared to a checkerboard patternchanging slight'}ly between frames.The dithering makes Super-IRGgraphics CONSIDERABLY more tolerablethan some graphics modes, likeColorVie(}w, which are constrained bythe hardware from being able todither.)-------------------------------------USING SIFESimpl)}y [L]oad SIFE from DOS.You can use a joystick with SIFE,but it is not required.The screen contains the followinginformat*}ion:* A color palette at the top. The arrow symbol shows which color is selected for drawing.* The editing grid in t+}he middle. This will be either 4x8 (one character) to 8x16 (four), depending on what mode you're in.)* The current ch,}aracter(s) being edited on the right. (One or four (2x2) characters will appear, depending on what mode you're in.)*-} The character set at the bottom.To select a character to edit,press [CONTROL]+[Arrow]. The flashing cursor will move ar.}oundon the character set at the bottom.(If you're in four character (2x2)mode, left and right will move thecursor four ch/}aracters at a time.)To edit a character, press [RETURN].(You can still use [CONTROL]+[Arrow]to select a new character.)A0} flashing cursor will appearon the editing grid in the middleof the screen.To stop editing characters, press[RETURN] aga1}in. (The flashing cursorwill disappear from the editinggrid.) You can also press [ESC].This will keep from copying thee2}dited image back into the characterset, thus aborting any changes youhave made.To move the drawing cursor (in theediting3} grid), use the joystickor press [Arrow] (without [CONTROL]).To draw in the selected color,press FIRE on the stick or [SP4}ACE].To select a different color,press [TAB] to select the next coloron the right, or [SHIFT]+[TAB] toselect the previou5}s color on theleft.To switch from one character editingto four character (2x2) editing,press [CONTROL]+[RETURN].To cop6}y one character into another,use the "clipboard." Press [C] tocopy the currently-selected characterinto the clipboard. S7}elect thecharacter you wish to copy thisimage into and press [P] to paste.(If you're in four-character mode,four characte8}rs will be copied toand from the clipboard.)You can load and save character setsusing the [L] key to load and [S]key to 9}save. If you try to loada standard 1024-byte IRG font, thefirst 1024 bytes will be duplicatedin the second 1024 bytes, th:}usproducing a solid-colored font.SIFE comes with one example font,"ATARI.SIF", which is an attemptat reproducing the sta;}ndard AtariROM font in Super-IRG mode.The font is drawn in "color 2,"(OS "blue") so that you can showit in "color 3" (OS <}"red") bystoring the characters inscreenmemory with their high-bit set(ie, in "inverse").To quit SIFE and exit back to D=}OS,press [SHIFT]+[CONTROL]+[ESC].-------------------------------------PROGRAMMING FOR SUPER-IRGUnfortunately, I don't k>}now6502 Assembly (can you believe it!?),so the only Super-IRG programmingexample I have is in Action!.Use Action!'s "INC?}LUDE" directiveto include the file "SILIB.ACT".This contains two user functions,"SIOn()" and "SIOff()" which turnthe Sup@}er-IRG mode Vertical BlankInterrupt (VBI) on and off,respectively.Call "SIOn()", sending it thebyte address of the charaA}cter setyou're using, to turn the mode on.Call "SIOff()" (ONLY after "SIOn()"has been called!) to turn the modeoff.A sB}mall example program is included.See the file "SIEX.ACT".-------------------------------------KEYBOARD SUMMARY[CONTROL]C}+[Arrow] Select a character to edit. (In four character mode, left/right will move 4 characters at a time.)[RETURN] D} Toggle edit / don't edit mode. (Don't edit mode is faster.)[ESC] Toggle edit / don't edit mode. Does not save the edE}ited character back when exiting edit mode (abort changes).[Arrow] / Joystick Move drawing cursor in editing grid[SF}PACE] / Fire Draw in the selected color.[TAB] / [SHIFT]+[TAB] Select next/previous color.[CONTROL]+[RETURN] Toggle G}one character and four character (2x2) editing mode.[C] / [P] Copy/paste a character to/from the clipboard buffer.[H}SHIFT]+[CONTROL]+[CLEAR] Blank the edit grid (erase char.)[L] / [S] Load/Save the character set. Files are in .SIF foI}rmat, 2048 bytes of character data plus four bytes of color data. Standard 1024 byte .FNT fonts can also be loaded. J}The colors will translate fine.[SHIFT]+[CONTROL]+[ESC] Quit SIFE.-------------------------------------WHAT'S PLANNEDK}This release of SIFE isn't a finishedproduct. I plan to add the followingfeatures:* More editing controls (flip, sliL}de, invert)* Intelligent load/save of other formats (save a SIFE 10-color font as a standard 4-color IRG font)* AssemM}bly and BASIC examples of using Super-IRG mode.* Anything you folks suggest!-------------------------------------CREDITN}SSIFE was written by Bill Kendrick,(c) New Breed Software 1997.Contact me to send suggestions,comments, donations, or iO}f you havequestions:Bill Kendrick7673 Melody DriveRohnert Park, CA 94928 USAkendrick@zippy.sonoma.eduhttp://zippy.sonP}oma.edu/kendrick/nbs/1-707-795-1234 ext.21-707-795-5678 FAX@; SIFEINC.ACT; Super-IRG Font Editor; INCLUDE; By Bill Kendrick; kendrick@zippy.sonoma.edu; New Breed Software; http:R}//zippy.sonoma.edu/kendrick/nbs/; November 21, 1997 - November 26, 1997Proc VBLANKD() FLIP=4-FLIP CHBAS=CHPage+FLIPS} PMCOL0=FLASH PMCOL1=FLASH FLASH=FLASH+1[$6C OLDVBI]Proc DLI()[$48 $98 $48 $8A $48] WSYNC=VCOUNT CHBASE=CHBAS+T}8[$68 $AA $68 $A8 $68 $40]Proc SETVBV(Byte Which,Card Addr) Card Pointer Temp Byte V Temp=$216+(Which LSH 1) V=RTCLOU}CK+1 While V<>RTCLOCK Do oD Temp^=Addr FLIP=0ReturnProc StartDLI(Card Addr) NMIEN=$40 OLDDLI=VDSLST VDSLST=AddV}r Poke(SDLST+22,$84) NMIEN=$C0ReturnProc StopDLI() NMIEN=$40 Poke(SDLST+22,$04) VDSLST=OLDDLIReturnProW}c DrawColorArrow() Zero(SC+32,32) Poke(SC+32+6+Colr*2,12) Poke(SC+32+6+Colr*2+1,13)ReturnProc ClearChar() Byte A,X}B For A=2 To 17 Do Zero(SC+A*32+8,16) Od For A=2 To 1+Size*2 Do For B=0 To Size-1 Do Poke(SC+A*32+8+B*2Y},10) Poke(SC+A*32+8+B*2+1,11) Od Od Zero(CH+8*14,32) Zero(CH+1024+8*14,32)ReturnProc DoDrawChar(Char TheZ}Chr, Byte X, Y) Byte A,B,C,C1,C2,C3,Z,CSet For A=0 To 7 Do For B=0 To 3 Do C1=0 C2=0 C3=0 F[}or CSet=0 To 1 Do C=Peek(CH+2048+CSet*1024+TheChr*8+A) If (C&Blue(B))=Blue(B) Then C3=C3+1 \} ElseIf (C&Red(B))=Red(B) Then C1=C1+1 ElseIf (C&Green(B))=Green(B) Then C2=C2+1 Fi ]} Od Z=ColorChar(C1+C2*3+C3*9) If Z<>0 Then Poke(SC+64+A*32+8+B*2+X+Y*32,Z) Poke(SC+64+A*32+8+B*^}2+X+Y*32+1,Z) Fi Od OdReturnProc DrawChar() Byte Z ClearChar() Z=8 DoDrawChar(Chr,0,0) If Size=8_} Then DoDrawChar(Chr+1,8,0) DoDrawChar(Chr+2,0,8) DoDrawChar(Chr+3,8,8) Z=32 Fi MoveBlock(CH+8*14,CH+204`}8+Chr*8,Z) MoveBlock(CH+1024+8*14,CH+3072+Chr*8,Z)ReturnProc DoSaveChar(Char TheChr, Byte X, Y) Byte A,B,C,Z,CSet,Toga}l Togl=0 For CSet=0 To 1 Do Togl=1-Togl For A=0 To 7 Do C=0 For B=0 To 3 Do Z=Peek(SC+64+b}A*32+8+B*2+Y*32+X) If Z=10 Then Z=0 Fi Togl=1-Togl Z=Z+Togl*10 If RedChc}ar(Z)<>0 Then C=C%Red(B) Fi If BlueChar(Z)<>0 Then C=C%Blue(B) Fi If Greed}nChar(Z)<>0 Then C=C%Green(B) Fi Poke(CH+2048+CSet*1024+TheChr*8+A,C) Od Togl=1-Togl e} Od OdReturnProc SaveChar() DoSaveChar(OChr,0,0) If Size=8 Then DoSaveChar(OChr+1,8,0) DoSaveChar(OChr+2f},0,8) DoSaveChar(OChr+3,8,8) FiReturnProc MyError() Byte Z,B Z=Peek(712) For B=0 To 150 Do Sound(0,B,0,1q}5B%DOS SYSB*)DUP SYSBSATARI SIFB dSIEX ACTB2mSIFE ACTBvSIFE COMB<SIFE TXTB:QSIFEINC ACTBSILIB ACT5-B/15) Poke(712,B) Od Poke(712,Z) Sound(0,0,0,0)ReturnProc SetUp() Byte A,B,C Card I Card VVBLKD=$224 r} Graphics(0) OldError=Error Error=MyError Poke(559,45) Ch=((Buffer/1024)+1)*1024 ChPage=Ch/256 PMG=Ch+4096 s}Poke(54279,PMG/256) Zero(Ch,2048) MoveBlock(Ch+2048,57344,1024) MoveBlock(Ch+3072,57344,1024) Zero(PMG,1024) Poket}(53277,3) Poke(53256,0) Poke(53257,0) Poke(53248,0) Poke(53249,0) MoveBlock(Ch+0+1*8,"DDDD"+1,8) MoveBlock(Cu}h+0+2*8,"UUUUUUUU"+1,8) MoveBlock(Ch+0+3*8,""+1,8) For A=0 To 3 Do Poke(Ch+0+3*8+(A*2),34) Od MoveBlock(Cv}h+0+4*8,""+1,8) MoveBlock(Ch+0+5*8,"3333"+1,8) MoveBlock(Ch+0+6*8,""+1,8) MoveBlock(Ch+0+7*8,"fffw}f"+1,8) MoveBlock(Ch+0+8*8,""+1,8) MoveBlock(Ch+0+9*8,"wwww"+1,8) MoveBlock(Ch+0+10*8,"̀3"+1,8) Mx}oveBlock(Ch+0+11*8,"3"+1,8) MoveBlock(Ch+0+12*8," 0"+1,8) MoveBlock(Ch+0+13*8,"0 "+1,8) MoveBlock(Cy}h+1024+1*8,"DDDD"+1,8) MoveBlock(Ch+1024+2*8,"UUUUUUUU"+1,8) MoveBlock(Ch+1024+3*8,""+1,8) For A=0 To 3 Doz} Poke(Ch+1024+3*8+(A*2)+1,34) Od MoveBlock(Ch+1024+4*8,""+1,8) MoveBlock(Ch+1024+5*8,"3333"+1,8) MoveB{}lock(Ch+1024+6*8,""+1,8) MoveBlock(Ch+1024+7*8,"ffff"+1,8) MoveBlock(Ch+1024+8*8,""+1,8) MoveBlock|}(Ch+1024+9*8,"wwww"+1,8) MoveBlock(Ch+1024+10*8,"3"+1,8) MoveBlock(Ch+1024+11*8,"3"+1,8) MoveBlock(Ch}}+1024+12*8," 0"+1,8) MoveBlock(Ch+1024+13*8,"0 "+1,8) DL=PeekC(560)+4 For A=2 To 24 Do Poke(DL+A,4) ~}Od Poke(DL-1,68) Poke(708,76) Poke(709,204) Poke(710,140) Poke(711,28) For A=0 To 9 Do Poke(SC+6+A*2,A) } Poke(SC+6+A*2+1,A) Od Poke(SC+3*32+30,14) Poke(SC+3*32+31,15) Poke(SC+4*32+30,16) Poke(SC+4*32+31,17) Poke(SC+}6*32+30,18) Poke(SC+6*32+31,19) Poke(SC+7*32+30,20) Poke(SC+7*32+31,21) Zero(CH+18*8,32) Zero(CH+1024+18*8,32) }For A=0 To 127 Do Poke(SC+18*32+A,A) Od Colr=1 X=0 Y=0 Chr=1 Editing=0 Size=4 Red(0)=64 Red(1)=16 R}ed(2)=4 Red(3)=1 Green(0)=128 Green(1)=32 Green(2)=8 Green(3)=2 Blue(0)=192 Blue(1)=48 Blue(2)=12 Blue(}3)=3 ;0123456789 ;BrRgGbBYCP ColorChar(0+3*0+9*0)=0;BLACK ColorChar(0+3*0+9*1)=5;DARKBLUE ColorChar(0+3*0+9*2)=6;}LIGHTBLUE ColorChar(0+3*1+9*0)=3;DARKGREEN ColorChar(0+3*1+9*1)=8;CYAN ColorChar(0+3*1+9*2)=8;CYAN ColorChar(0+3*2+9*}0)=4;LIGHTGREEN ColorChar(0+3*2+9*1)=8;CYAN ColorChar(0+3*2+9*2)=8;CYAN ColorChar(1+3*0+9*0)=1;DARKRED ColorChar(1+3*}0+9*1)=9;PURPLE ColorChar(1+3*0+9*2)=9;PURPLE ColorChar(1+3*1+9*0)=7;YELLOW ColorChar(1+3*1+9*1)=10 ColorChar(1+3*1+9}*2)=10 ColorChar(1+3*2+9*0)=7;YELLOW ColorChar(1+3*2+9*1)=10 ColorChar(1+3*2+9*2)=10 ColorChar(2+3*0+9*0)=2;LIGHTRED} ColorChar(2+3*0+9*1)=9;PURPLE ColorChar(2+3*0+9*2)=9;PURPLE ColorChar(2+3*1+9*0)=7;YELLOW ColorChar(2+3*1+9*1)=10 C}olorChar(2+3*1+9*2)=10 ColorChar(2+3*2+9*0)=7;YELLOW ColorChar(2+3*2+9*1)=10 ColorChar(2+3*2+9*2)=10 ;0123456789 ;}BrRgGbBYCP RedChar(00)=0 RedChar(01)=1 RedChar(02)=1 RedChar(03)=0 RedChar(04)=0 RedChar(05)=0 RedChar(06)=0 } RedChar(07)=1 RedChar(08)=0 RedChar(09)=1 RedChar(10)=0 RedChar(11)=0 RedChar(12)=1 RedChar(13)=0 RedChar(14)}=0 RedChar(15)=0 RedChar(16)=0 RedChar(17)=0 RedChar(18)=0 RedChar(19)=0 GreenChar(00)=0 GreenChar(01)=0 Gre}enChar(02)=0 GreenChar(03)=1 GreenChar(04)=1 GreenChar(05)=0 GreenChar(06)=0 GreenChar(07)=0 GreenChar(08)=1 Gr}eenChar(09)=0 GreenChar(10)=0 GreenChar(11)=0 GreenChar(12)=0 GreenChar(13)=0 GreenChar(14)=1 GreenChar(15)=0 }GreenChar(16)=0 GreenChar(17)=1 GreenChar(18)=0 GreenChar(19)=0 BlueChar(00)=0 BlueChar(01)=0 BlueChar(02)=0 B}lueChar(03)=0 BlueChar(04)=0 BlueChar(05)=1 BlueChar(06)=1 BlueChar(07)=0 BlueChar(08)=0 BlueChar(09)=0 BlueCh}ar(10)=0 BlueChar(11)=0 BlueChar(12)=0 BlueChar(13)=0 BlueChar(14)=0 BlueChar(15)=0 BlueChar(16)=1 BlueChar(17)}=0 BlueChar(18)=1 BlueChar(19)=1 DrawColorArrow() ClearChar() CHBAS=CHPAGE+8 OLDVBI=VVBLKD SETVBV(7,VBLANKD)} StartDLI(DLI)ReturnProc ShutDown() SETVBV(7,OLDVBI) StopDLI() Poke(53248,0) Poke(53249,0) Graphics(0) Erro}r=OldErrorReturn; SILIB.ACT; Super-IRG Library for Action!; by Bill Kendrick; kendrick@zippy.sonoma.edu; http://zippy.sonoma.edu/kendri!}ck/; November 27, 1997 - November 27, 1997MODULECard OLDVBIByte CHBAS=756,RTCLOCK=20Byte FLIP,CHPageProc SIVBI() !}FLIP=4-FLIP CHBAS=CHPage+FLIP[$6C OLDVBI]Proc SIOn(Card CHAddr) Card Pointer Temp Card VVBLKD=$224 Byte V OLDVB!}I=VVBLKD CHPage=CHAddr/256 FLIP=0 Temp=548 V=RTCLOCK+1 While V<>RTCLOCK Do oD Temp^=SIVBIReturnProc SIOff() !} Card Pointer Temp Byte V Temp=548 V=RTCLOCK+1 While V<>RTCLOCK Do oD Temp^=OLDVBIReturnProc SIMain() PrintE(!}"I'm an included library!")ReturnMODULE ,