0L0vREZIDENT( 9 00 00-0`/}0|0 x0   Y  Ӣ8`ll1R@.n00)0.0-0 *I0  C0 10 u0 100 0q0 080H 0(0DhC 000CDDCL0CD-003.-0`00 G00m000m00C80CD0D.0̀0(0 )0  C0/(0/)0/ / Ȍ.0DЛ0C0. E0L1 MAIN )DOS _) REZIDENT _0 `;START BAT_: bSTARTUP BAT_  dx#ATMAS2 (sDOS _ XBW100 DOS_ K&MENU COM_ AUTOCWD COM^ ' ;XBAT COM^ (REZIDENT _0 COLOR COM_(& NDEVICE COM_ 7 _SHOWSIO COM_  COLOR SRC_'0 NDEVICE SRC_ 5 ,SHOWSIO SRC_  COM_ ' REZIDENTTXT_-)LOGOS ^(LOGOS ^ _EXAMPLE ASM_ EINT ASM_ LOGOSMAKCOM_ (LOGOS DOC_ 6SPACE FWA_!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJ6?آ 766L*S2BWaL lR & MR9 80   .R .S RENAMEERASEErrorPROTECTUNPROTECTCREDIRDELDIRCWDLOADCARRUNPRINTTYPEDIRDIRSBASICY>@  ^ & "ǿ & ǿ"`إG G,5  AL & M3BG@ M  ik,li߽; Dl D;ԝ<=`    . . *   0 0ɭ   Ω 뎺`,8j  i` ,H) h****)  ߢʽ0O  )(0H G H O U hکH(`S r   S `  T  ɛU ɛ :V :A   ` 7 6 17 6 ,T ɛ 驛6 ` ,,&  ~KJJ C BȥC VHH) 6 hh` Jh T   J ) آ5 .  6   @T @ L\ ~y 5 ʎ l H 6 hM)MӍӠCȌϊ8DCICCj K S hP `9 IO : NF𖩜HL= W6 ͕ O, \ 06 \  H) ` x E , } 0` \ 0 + 6 0& @ @ & ǶCF`@PT -; x  & 6M`CDC>69 DɛD0 z C &i  6 `HH` J j8 (6 `8$ jH5 8 )8O h,b 6  DT @0 @ T @Lh ) >,  ` 0#H h, 0  & `LL E CD ECHCH` LYPL\ Lx } + ^^D1:STARTUP.BAT  G } 0 D  L\ ` D1:.BAT.COM*.*Volume: Directory:FREE SECTORS DOS !E G C8S L DT C & GLGLNα@   ] LT  !"#$%&'67*I[ J@C1Dvf;6&6)*; !?b f`qb{fl ~\D^{_IR\MZ+hcdefgh/. m(=54r';u58( z/44-AbW?G\] ^`c)?HQHF`ٞW*"_ܕS"/!- )" `",-,0,1,)؍F( d,Lc)F - ,֩5 -ɥF!l hlX8 -ДL潆 Hl hl,K CɀC dC&\C( =ȱCX  & "ޑ X E d,P Wl  H  hF`X ^   =0   MX `  T8`UG&C\C( CdC` & (Q    &  ,Cȝ`  ,9 0 ` D & MmOa & NqM\ D & M͹OD D & @J* ) & GCDE Ȏ  & \ma & +Г, D$ & (#J @) & NCmaŠHV T h - : Β W cL#g,H) I";5)(+ & @$TM@(Nv & TM@$@((0 $($` & RTMa v   WȌ^EC WCC& hZC WC & [C]\ W^CYȱCZ Y`8g b  & `g$HJ)ELgN ) & #"¼,H & "h!zjdh,,H & QTMaE8[7 $H08g b   Y Z'g) ` h W CȭC & [YZ & MT[$H0]C]L 0 & !}"#h`g) [  [ C   M _a `[mE [Lͯ$E H**hJ`, gH & #zhdh & !` & +#z"Q,.  & (QIg) @`  J `, 0kI & + D* & ((+<'38n `( *) ,*)?,) )I)JJE,,,L *?lF & ++n"Ǽ4 & +"%L hjjnI)m  gI)   V,k0 & h"[!"]"z#"]ēI)  & "]"!"]"L & Ǽ"  b c  0N  0 & ` ) ` H h8   R@   *I 1 & @CC Lgv 1C op QCC  s q8MR   6 M- R%;? `(EC 8~ `Ž,;  ,; ; `X (ML" iDC` v+ & "[CC 0vw s qX8~ ` 5?F`8$N@(.@`=)H   h & ++ <   ` -@`$  ?*   @J ,,L@  & ""}  E^ & "WCC & "¼LHJhj mtmu )8j`,I,  & l & ],`0> 09@4) ,k ݩ0M@) Ң )?EH & ]h`,k0`+" 08 @ 0! 0 & NB0 0 ,@H- h# & BM//MRI & ^TM0 -` & ^B^TM08   & NTM0ͩ ؠ` & }a.HL0l6LMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~@fL[HLML@Lh@L{BL*CL,CL[CLDLCLoEL2FLJGLCLMLMLMLMLFNLNLMLNLNLw"!ONSWRP@@@@@ 1H@`P@`@X@    l h@0`L%C ƅȱ`  Rf h@ Sf @f) I *I`g` -AhR A'g   Rh @Խg%gƆ`  g @dgh  gL@) JJJʼnR `L%C0ii  hL@戥@ Ah0 A`ɀ إLA)BǠi?ݚhй ` >B01-i i* ?_0:A[ 0`,L%C @ @ ?i A0^h) *ȩȑȅhhFff B B Bh C A`8hhƐ`e择e``8$ @ 7B @ AL%Ch( )ߝh A` @ 7B @ A0Ӣ ii 7Bih A` @ @ 7AȭgȭgȮgg$ mhHm hhȊȽC`AtariDOS  fR @ʽfJJň`L%C 7AhhLrAFЊ 8fHH ChhHFfiigh)8jюggʽfʽf)LD @ 7B @ A,L%Ch) Dh A`FgZ` Ȑj=ggȄ &hggޖgޕghh`f`ʽf)f ff  fL@HH @ 7B @ AL%Chh C&,hh8厅叅`ʽf8ff) C𰦍ŌfĎ FLEe拥8厅ƍ` @ 7B @ A",,,L%CMh) DBhhih 7A Dhh ;EL%C CʥݕfЕ 7Aʽf EEH A rAh`ʊ8f# DHHʝff EEhh(ЎŌʽffĎʝf FLFL%C @EHHHKH  fN h@00(fffNHfQHfHHfEHffO @   !if @ -AgggÍggZgJggg!%gJg h/hgg rA -Ai A接qSHg ҍg A`  8`SL[ BDHE HI Vl Incorrect DOS version !!! BW-DOS MENU 1.2 By BEWESOFT Error ! %ENSD0Sorting: Ext+N. Name+E. Size Date+T. NoNew disk: Drive: 12348 1 2 3 4 8 Press a key...SDeselect group:Volume:Bytes/sector:Total bytes:Bytes free:| Disk info: |Disk changed!Directory name:Rename to: #1234Format Atari disk: Drive: 1 2 3 4 NYAre you sure? No YesSMDSingle Medium DoubleFormatting...Filename: Copy to drive: YNSame disk? Yes NoDest. path:Insert source disk...Insert destination disk... YNBell: Yes NowKKKKKKKKKKKKKKKKKKK| Filename |P| Size | Date |Time || | | | | | |New disk Disk infoSub dir Up dir Make dir Del. dir Copy Erase Rename Protect UnprotectView textMake textAinit Exit Setup Select Deselect  | | | RM^MjMnM  YNQuestion for overwrite: Yes NoJK`BDfELV ,, BLV MBDME JK V0`LtE:K:,HGI [Oh, 3/ҩҩHҊ Ҥȭ M BJKDME V@ BHI V0H Mh`f8NNN f٢ f0ff`B'@d  O.ɛ ʩ Oɛ`L[fĪ+*?_0:A[iֽfH?H Īh`iLSLYQLQLkRLMPL3RLiSL6TL9TL$VLVLHVL'WLVL>VLULXLbYLTYLYL ZLYLWLZL[LfSD O 0 O:,,*f` OLOiiO O. O Of.`PLP O `ijɛ` Oɛf><ө>LOH 0@h` 0@ O *@HkI/ -@!LBPHHk @hh0` PP {k݌k`>ii{k` PPk{kkL @ O P O *@, -@0( O O. O O O *@J -@0LBPf0) f '@IH -@ 0@`kL@ O P O O *@J -@0# OLMN% -@LBPBDEHI V,HHI O& -@0LMN 0@0h`kL!@ O P O O *@JJ -@0: LQHkh! # $ `L@L@L@ O O O *@h -@0`LBPkL@ O O, O O O *@ -@0`XY膚膜X朠)JJJJJ)R`@ `(Px@h0X Hpf(`) ReXReYe朠ɛתE`^S_Sȝh䟐`,̄ȱȱȢg RSh RSh RSȝfɛfɛ)f񦞽hgf f S ?@LS 6@%ɛ$#+)+*!ݕh0ʊ```ʆLS䟐HH fhh` %Tf 膞ʦff f(8堅8ʐ 8#8圐iş8困ʥiifeTfTf Sff)f 6@`ɛZMA}S~Xbo)*&."><?_0: )_A[f枥şƞLST:` %T咽ʆ fᦞff䟐LQUʽff٦f 詛f` f` UDf 0f:fiɛF%f轫iɛ8#轫i>.fffiɛf" fL,V U QKHRKh >Vƪ` UHffhLSLS R V $VL >VL >VM! >V0Hhi:0:奨 e iiLħJ S檥i (` & &e &e &eiik`ffL,V8妐  8L%WL0X W V) I'Kh EhEh J*hg) mXh0Hh 9@fhg g g g g g-g)hXhhƮ-hh:hhh >V步Ť LBW ɢK >V WLW8 i W`"%SUB-DIR Reading directory... V $VuX Sk P`饍酌eke8` JMKM Vii0ѱF武䤐`>ii` TY [ Xi>iɛk{ki U`L[ $VBJ iS0HJ iS0HxJ iS0 $VJ >Vhh TY V [ $@0L[L[ [ P0`L[ $VJ >V @L[ OLO MP0xks @k *I i TY 0@0S O* O O *@J -@09LMN% -@0%HI -@0f f  `LTY fi Zf Z> Z Z0խf f   Z0fRL @j 8`Hiihi`轪iHjihj`k4HHHHk Z @ ZhhhhL[ O P O O *@J -@0)(HI -@0fɛ * H 0@h`L[L]LM\L[L?\`Ȇ˥ i[ i[ t" )$ /Hȱ ȱ S2QB4YN)L[L[YNL[ENSD0\ O #f 3@ |OɅ轪ij Oͥ O OLV\ OH O 6@ɛQ:OgE)+(*=-U=3 -c]0džLS\ŨLS\rDO u]8娰i奨 u]LS\ 8ƥť LM\ yOI楥Ť8ۥ8LM\ ?]@]l]__.``/adUaa^agab2bO]]^-^FZTYNDCERPUVIAQS>~i` #f 3@l H |OH Oh 9@ff [O @LF\ vOI O ^L.\ vOڢH mO0# O vO;K mO0 vOuM mO0LM\%I mO0`LM\ vOWI O vOYI O ^]I [O O*ff.fi  sOLM\ B@ ^)L}^步Ť yOi?Ѫ` h|hhh`H 9@hfh`,k JHjjh 9@کhKL[OL] [ gO0I ^I ^I ^ ^k*jIhkhk ^k ^ ^ ^ qIh謍k ^ ^ ^ ~Ihkk ^ ^ ^ Ihkk ^ ^ I ^ vO <@LM\ ^ yO) LM\i Oiɛ ؐL] `ȹfɛ> ` ` OLF\i``LM\iɛ %` %`i>Hiɛffhi B@ ik O O ki ^ OLM\ vO'J O pOLM\ B@ O* jO0LF\L]津Ť` yO)`aa ^ O vO `0 a c `0 a0LM\ F\ xc t0`L]i`8aL`) + ) ! jO8``DaL`paL`vaL`#$)LNa vO7J O  pOLM\ B@ iaL`) ` ?ii步Ť yOٚiŴ᠗L] yOi dO8`LM\ ^ yO) "a, vOƢJ O  pO0 B@ʽijʆɠ O 3@@ b0 b Oc OcFI Oc 6@ |OLF\8劅勅0 ^OL c cɀ ɈL]`BDEHI VHI`0 #f *f aOLmcL^f cL]H chH Oh yOL"a$8 yO( )`! vOKK O ?@LF\Ĥ Š c gO0=ļck0' c gO0"ļc kـ݈LvOL] ^ vOТJ O ^E vOJ mOILM\ vOJ O fjɛf sO0Ģ轔fj ODž…Åƅ ` cͩ cĭŢ08fLpe `0饴 yO) ӥͥ sc@ĥťąŅ@@8劅勅 ^OI+ǦĝŝeąĥeŅťLdL]膾 LF\Ld cŷ scȑ  %f *f #f澦ŷР aO0 #f cLeL] `( O0 vOdf OH vOh08$`` |OLF\ OSA File exists ! Overwrite Skip Abort`b^`$`IU$` ``!``L^`=`5=c5`5Vc5Su5y5c5`55UVV^V5URtuq5Ψ;6:''06!uu#0'&<:;utU9_U_M` i?` `! gɛ=`g l`ȱ m` t ` `0L ` ` `(BDhEJKLV BLVHIB V0`H `Error h``HH 0 "ahh䩛 "a `l  dhahaaa "aLaaHaH`HI BLV`btL`#`IU#```LX`=5=55V5UVV^VSu~5555!UROuv541uu#0'&<:;utU9_U_M6;6!66;6$65*6T55_Qm;*6UE5OT5 6 656761636=696.66UU`Xct#`IU#` ``L`LX`=5=55V5UVV^VSu~5555!UROuv541uu#0'&<:;utU9_U_M napoveda SYNTAX JSR PRINT EOL ASC "Syntax: COLOR xxx" EOL ASC " COLOR OFF" EOL DFB 0 JMP (10) * Je jiz rezident instalovan? START4 JSR SRCHRUT BCC INSTAL ************ * Specificka cast: * Zmena konfigurace LDY #XCOL1+1-RESID LDA COL1 STA (SRCHADR),Y LDY #XCOL2+1-RESID LDA COL2 STA (SRCHADR),Y JSR INIT * Zakonceni JSR PRINT EOL ASC "COLOR: Configuration " ASC "changed." EOL DFB 0 JMP (10) ************ * Instalace rezidentu: * Vypocet nove adresy MEMLO INSTAL LDA 743 ;MEMLO STA SRCHADR CLC ADC #RESLEN STA 743 STA LMEM+1 LDA 744 STA SRCHADR+1 ADC #0 STA 744 STA HMEM+1 * Relokovani rezidentu RLK0 LDX #0 RLK1 LDA RELOKT,X STA RELZP LDA RELOKT+1,X STA RELZP+1 ORA RELZP BEQ INSTAL2 LDY #1 LDA (RELZP),Y SEC SBC #RESID:L PHP CLC ADC SRCHADR STA (RELZP),Y INY LDA (RELZP),Y ADC SRCHADR+1 PLP SBC #RESID:H STA (RELZP),Y INX INX BNE RLK1 ;Vzdy ************ * Specificka cast: * Priprava rezidentu pred instalaci INSTAL2 LDA COL1 STA XCOL1+1 LDA COL2 STA XCOL2+1 ************ * Kopirovani rezidentu na misto urceni LDY #RESLEN COP1 DEY LDA RESID,Y STA (SRCHADR),Y TYA BNE COP1 * Pripojeni do sekvence LDY #2 INSTAL3 LDA 11,Y STA (SRCHADR),Y LDA SRCHADR-1,Y STA 11,Y DEY BNE INSTAL3 ************ * Specificka cast: * Pripojeni instalovaneho rezidentu * k operacnimu systemu JSR INIT ************ * Zakonceni JSR PRINT EOL ASC "COLOR installed." EOL DFB 0 JMP (10) * Odstraneni rezidentu: * Je rezident pritomen a je posledni? DISABLE JSR SRCHRUT BCS DISABLE2 JSR PRINT EOL ASC "COLOR not Installed !" EOL DFB 0 JMP DISERR2 DISCANT JSR PRINT EOL ASC "COLOR is not the last" EOL ASC "installed handler!" EOL DFB 0 DISERR2 JSR PRINT ASC "Can't remove." EOL DFB 0 JMP (10) DISABLE2 LDA 743 SEC SBC SRCHADR TAY LDA 744 SBC SRCHADR+1 BNE DISCANT CPY #RESLEN BNE DISCANT ************ * Specificka cast: * Odpojeni rezidentu od OS LDA #$CA STA 709 LDA #$94 STA 710 ************ * Odpojeni od a vraceni * puvodni hodnoty MEMLO DISBL1 LDY #2 DISBL2 LDA (SRCHADR),Y STA 11,Y LDA SRCHADR-1,Y STA 743-1,Y DEY BNE DISBL2 * Zakonceni JSR PRINT EOL ASC "COLOR removed." EOL DFB 0 JMP (10) * Podprogram - vyhledani rezidentniho * kodu v pameti pod MEMLO: * Makroinstrukce pro jeden krok * vyhledavani SRCHIT MACRO LABEL1,LABEL2 LDY #LABEL1-RESID SRIT@ LDA (SRCHADR),Y CMP RESID,Y BNE SRCHNXT INY CPY #LABEL2-RESID BNE SRIT@ MEND * Priprava pocatecni adresy SRCHRUT LDA 743 SEC SBC #RESLEN STA SRCHADR LDA 744 SBC #0 STA SRCHADR+1 ************ * Specificka cast: * Porovnani se vzorem rezidentu SRCHR1 SRCHIT T1,XCOL1 SRCHIT T2,XCOL2 SRCHIT T3,T4 ************ SEC RTS * Nesouhlasi -> dalsi adresa SRCHNXT LDA SRCHADR BNE SNXT2 DEC SRCHADR+1 SNXT2 DEC SRCHADR * Adresa<$1000 -> nenasel LDA SRCHADR+1 CMP #$10 BCS SRCHR1 RTS ************ * Specificka cast: * Podprogramy instalacni procedury * Prevzeti jednoho hexadec. znaku TOHEX LDA (10),Y INY CMP #$47 BCS TOHEXERR SBC #$30-1 BCC TOHEXERR CMP #$0A BCC TOHEXOK SBC #7 CMP #$0A BCS TOHEXOK TOHEXERR SEC RTS TOHEXOK CLC RTS * Inicializace rezidentu INIT LDA SRCHADR CLC ADC #3 STA INIT2+1 LDA SRCHADR+1 ADC #0 STA INIT2+2 INIT2 JMP $E474 ;Meni se! ************ * Vlastni rezident: * Inicializacni sekvence RESID JSR $FFFF LMEM LDA #$22 STA 743 HMEM LDA #$22 T1 STA 744 ************ * Specificka cast: * Inicializace rezidentu XCOL1 LDA #$FF T2 STA 709 XCOL2 LDA #$FF T3 STA 710 T4 RTS * Specificka cast: * Hlavni program rezidentu * (V tomto pripade neni) ************ * Konec rezidentu * Pomocna hodnota - delka rezidentu RESLEN EPZ *-RESID ************ * Specificka cast: * Tabulka absolutnich adres v * rezidentu - pro relokaci * (V tomto pripade prazdna - obsahuje * pouze zakoncovaci znacku) RELOKT DFW 0 ************ * Konec vlastniho programu * Nasleduje rutina pro zakodovani * programu po prekladu UTZP EPZ $20 UTAJ LDA #PRINT+O:L STA UTZP LDA #PRINT+O:H STA UTZP+1 UTAJ2 LDY #0 LDA (UTZP),Y EOR #$55 STA (UTZP),Y INC UTZP BNE UTAJ3 INC UTZP+1 UTAJ3 LDA UTZP CMP #UTAJ+O:L BNE UTAJ2 LDA UTZP+1 CMP #UTAJ+O:H BNE UTAJ2 RTS * Opakovani dulezitych hodnot - kvuli * snadnemu precteni behem prekladu * Delka rezidentniho kodu DELKARES EQU RESLEN * Upozorneni na startovaci adresu * pro zakodovani po prekladu SPUSTOD EQU $A800 * Adresy pro ulozeni vysledneho prog. SAVEFROM EQU ODT0+O SAVETO EQU UTAJ+O SAVEINTO EQU TARGET * Konec       !"#$%&'()*+************************************* * " NDEVICE " (UKAZKA REZIDENTU) * ************************************* * Po prekladu spustit od $A800, az * potom ulozit (adresy viz. konec) TARGET EQU $6000 OUT N ORG TARGET-3,$A800 O EQU $A800-TARGET+3 JMP UTAJ+O *Promenne - univerzalni cast SRCHADR EPZ 128 RELZP EPZ 130 *Promenne - specificka cast CLOSIX EPZ 132 CLOSTMP EPZ 133 CLOSAD EPZ 134 *Makroinstrukce pro znak EOL EOL MACRO DFB $9B MEND *Vstupni dekodovaci rutina ODT0 LDA $E474 ;Meni se! LDX #0 LDY #$10 ODTAJ LDA PRINT,X EOR #$55 ODT2 STA PRINT,X INX BNE ODTAJ INC ODTAJ+2 INC ODT2+2 DEY BNE ODTAJ LDA #$4C STA ODT0 JMP START *Podprogram pro vystup na obrazovku PRINT PLA STA PR4+1 PLA STA PR4+2 PR2 INC PR4+1 BNE PR3 INC PR4+2 PR3 LDA #0 TAX STA $348,X ;ICBLL/H STA $349,X LDA #11 STA $342,X ;ICCMD PR4 LDA $FFFF ;Meni se! BEQ PR5 JSR $E456 ;CIO JMP PR2 PR5 LDA PR4+2 PHA LDA PR4+1 PHA RTS *Pomocny skok pro prevzeti *parametru z CP GETNAME JMP $E474 ;Meni se! *Zacatek programu - test DOSu START LDA $700 CMP #'S' BEQ START2 JSR PRINT EOL ASC "Bad DOS version !" EOL DFB 0 JMP (10) *Prevzeti parametru START2 LDA 10 CLC ADC #3 STA GETNAME+1 LDA 11 ADC #0 STA GETNAME+2 JSR GETNAME *Je parametr 'OFF' ? LDY #36 LDA (10),Y CMP #'O' BNE START3 INY LDA (10),Y CMP #'F' BNE SYNTAX INY CMP (10),Y BNE SYNTAX INY LDA (10),Y CMP #$9B BNE SYNTAX JMP DISABLE *Specificka cast: *Zpracovani parametru START3 CMP #$9B BEQ START4 *Chyba syntaxe -> napoveda SYNTAX JSR PRINT EOL ASC "Syntax: NDEVICE" EOL ASC " NDEVICE OFF" EOL DFB 0 JMP (10) *Je jiz rezident instalovan? START4 JSR SRCHRUT BCC INSTAL *Specificka cast: *Zmena konfigurace *V tomto pripade neprichazi zmena *konfigurace v uvahu, proto chybove *hlaseni JSR PRINT EOL ASC "NDEVICE already " ASC "installed !" EOL DFB 0 JMP (10) *Instalace rezidentu: *Vypocet nove adresy MEMLO INSTAL LDA 743 ;MEMLO STA SRCHADR CLC ADC #RESLEN STA 743 STA LMEM+1 LDA 744 STA SRCHADR+1 ADC #0 STA 744 STA HMEM+1 *Relokovani rezidentu RLK0 LDX #0 RLK1 LDA RELOKT,X STA RELZP LDA RELOKT+1,X STA RELZP+1 ORA RELZP BEQ INSTAL2 LDY #1 LDA (RELZP),Y SEC SBC #RESID:L PHP CLC ADC SRCHADR STA (RELZP),Y INY LDA (RELZP),Y ADC SRCHADR+1 PLP SBC #RESID:H STA (RELZP),Y INX INX BNE RLK1 *Specificka cast: *Priprava rezidentu pred instalaci INSTAL2 JSR CLOSDEV JSR SRCHHATB BCC INSTAL2B LDA $31B,X STA OLDADR LDA $31C,X STA OLDADR+1 *Doplneni "pulene" adresy do rezidentu INSTAL2B LDA TABADR STA TA1+1 LDA TABADR+1 STA TA2+1 *Kopirovani rezidentu na misto urceni LDY #RESLEN COP1 DEY LDA RESID,Y STA (SRCHADR),Y TYA BNE COP1 *Pripojeni do sekvence LDY #2 INSTAL3 LDA 11,Y STA (SRCHADR),Y LDA SRCHADR-1,Y STA 11,Y DEY BNE INSTAL3 *Pripojeni instalovaneho rezidentu *k operacnimu systemu JSR INIT *Zakonceni JSR PRINT EOL ASC "NDEVICE installed." EOL DFB 0 JMP (10) *Odstraneni rezidentu: *Je rezident pritomen a je posledni? DISABLE JSR SRCHRUT BCS DISABLE2 JSR PRINT EOL ASC "NDEVICE not Installed !" EOL DFB 0 JMP DISERR2 DISCANT JSR PRINT EOL ASC "NDEVICE is not the last" EOL ASC "installed handler!" EOL DFB 0 DISERR2 JSR PRINT ASC "Can't remove." EOL DFB 0 JMP (10) DISABLE2 LDA 743 SEC SBC SRCHADR TAY LDA 744 SBC SRCHADR+1 BNE DISCANT CPY #RESLEN BNE DISCANT *Specificka cast: *Odpojeni rezidentu od OS JSR CLOSDEV JSR SRCHHATB BCC DISBL1 LDY #OLDADR-RESID LDA (SRCHADR),Y STA CLOSAD INY LDA (SRCHADR),Y STA CLOSAD+1 ORA CLOSAD BNE DIS2A STA $31A,X DIS2A LDA CLOSAD STA $31B,X LDA CLOSAD+1 STA $31C,X *Odpojeni od a vraceni *puvodni hodnoty MEMLO DISBL1 LDY #2 DISBL2 LDA (SRCHADR),Y STA 11,Y LDA SRCHADR-1,Y STA 743-1,Y DEY BNE DISBL2 *Zakonceni JSR PRINT EOL ASC "NDEVICE removed." EOL DFB 0 JMP (10) *Podprogram - vyhledani rezidentniho *kodu v pameti pod MEMLO: *Makroinstrukce pro jeden krok *vyhledavani SRCHIT MACRO LABEL1,LABEL2 LDY #LABEL1-RESID SRIT@ LDA (SRCHADR),Y CMP RESID,Y BNE SRCHNXT INY CPY #LABEL2-RESID BNE SRIT@ MEND *Priprava pocatecni adresy SRCHRUT LDA 743 SEC SBC #RESLEN STA SRCHADR LDA 744 SBC #0 STA SRCHADR+1 *Specificka cast: *Porovnani se vzorem rezidentu SRCHR1 SRCHIT T1,TA1 SRCHIT OK,R6 SRCHIT T2,T3 SEC RTS *Nesouhlasi -> dalsi adresa SRCHNXT LDA SRCHADR BNE SNXT2 DEC SRCHADR+1 SNXT2 DEC SRCHADR *Adresa<$1000 -> nenasel LDA SRCHADR+1 CMP #$10 BCS SRCHR1 CLOSX RTS *Specificka cast: *Podprogramy instalacni procedury *Uzavreni vsech IOCB, ktere jsou *otevreny na zarizeni "N:", vcetne *davkoveho souboru a HardCopy. CLOSDEV JSR SRCHHATB ;Hledej BCC CLOSX ;v HATABS STX CLOSIX LDA #$70 CLO4 STA CLOSTMP ;Je IOCB TAX ;otevren LDA $340,X ;pro "N:"? CMP CLOSIX BNE CLO5 LDA #12 ;CLOSE STA $342,X JSR $E456 CLO5 LDA CLOSTMP ;Dalsi IOCB SEC SBC #$10 BCS CLO4 LDA 10 ;Priprava SEC ;adresy SBC #8 ;ECHOFLG STA CLOSAD LDA 11 SBC #0 STA CLOSAD+1 LDA 10 ;Priprava CLC ;adresy ADC #8 ;XDIVIO STA XDIVJ+1 LDA 11 ADC #0 STA XDIVJ+2 LDY #0 ;HardCopy JSR CLO6 LDY #1 ;Batch file CLO6 LDA (CLOSAD),Y CMP CLOSIX ;Je to N:? BNE CLO7 XDIVJ JMP ($FFFF) ;Meni se! CLO7 RTS *Vyhledani zarizeni "N:" v HATABS *(neni-li, nastavi C=0) SRCHHATB LDX #0 SRCHH2 LDA $31A,X CMP #'N' BEQ SRCHH3 INX INX INX CPX #33 BCC SRCHH2 CLC SRCHH3 RTS *Inicializace rezidentu INIT LDA SRCHADR CLC ADC #3 STA INIT2+1 LDA SRCHADR+1 ADC #0 STA INIT2+2 INIT2 JMP $E474 ;Meni se! *Vlastni rezident: *Inicializacni sekvence RESID JSR $FFFF LMEM LDA #$22 STA 743 HMEM LDA #$22 T1 STA 744 *Specificka cast: *Inicializace rezidentu LDY #30 LDX #$FF RESINI1 LDA $31A,Y BNE RESINI2 TYA TAX *(A<=30 - nikdy se neshodne s rozumnym * nazvem zarizeni) RESINI2 CMP #'N' BEQ RESINI4 DEY DEY DEY BPL RESINI1 TXA TAY BMI HNDINI RESINI4 LDA #'N' STA $31A,Y TA1 LDA #TABLE:L STA $31B,Y TA2 LDA #TABLE:H STA $31C,Y BNE HNDINI *Misto pro uschovani puvodni adresy *z HATABS OLDADR DFW 0 *Specificka cast: *Hlavni program rezidentu TABLE DFW OPEN-1 R1 DFW OK-1 ;CLOSE R2 DFW GET-1 R3 DFW PUT-1 R4 DFW OK-1 ;STATUS R5 DFW SPEC-1 HNDINI RTS OPEN LSR EOFFLG+1 OK LDY #1 RTS SPEC LDY #146 ;Not imple- RTS ;mented GET LDA $D20A BNE EOFFLG SEC R6 ROR EOFFLG+1 EOFFLG LDY #0 T2 BPL OK LDY #136 ;EOF RTS PUT STA $D01A LDY #1 T3 RTS *Konec rezidentu *Pomocna hodnota - delka rezidentu RESLEN EPZ *-RESID TABADR DFW TABLE *Tabulka absolutnich adres v *rezidentu - pro relokaci RELOKT DFW TABLE-1,R1-1,R2-1 DFW R3-1,R4-1,R5-1,OPEN DFW R6,TABADR-1,0 ************************************* *Konec vlastniho programu *Nasleduje rutina pro zakodovani *programu po prekladu UTZP EPZ $20 UTAJ LDA #PRINT+O:L STA UTZP LDA #PRINT+O:H STA UTZP+1 UTAJ2 LDY #0 LDA (UTZP),Y EOR #$55 STA (UTZP),Y INC UTZP BNE UTAJ3 INC UTZP+1 UTAJ3 LDA UTZP CMP #UTAJ+O:L BNE UTAJ2 LDA UTZP+1 CMP #UTAJ+O:H BNE UTAJ2 RTS *Opakovani dulezitych hodnot - kvuli *snadnemu precteni behem prekladu *Delka rezidentniho kodu DELKARES EQU RESLEN *Upozorneni na startovaci adresu *pro zakodovani po prekladu SPUSTOD EQU $A800 *Adresy pro ulozeni vysledneho prog. SAVEFROM EQU ODT0+O SAVETO EQU UTAJ+O SAVEINTO EQU TARGET ************** KONEC *************** -./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_************************************* * " SHOWSIO " (UKAZKA REZIDENTU) * ************************************* * Po prekladu spustit od $A800, az * potom ulozit (adresy viz. konec) TARGET EQU $6000 OUT N ORG TARGET-3,$A800 O EQU $A800-TARGET+3 JMP UTAJ+O *Promenne - univerzalni cast SRCHADR EPZ 128 RELZP EPZ 130 *Promenne - specificka cast SIOADR EPZ 132 *Makroinstrukce pro znak EOL EOL MACRO DFB $9B MEND *Vstupni dekodovaci rutina ODT0 LDA $E474 ;Meni se! LDX #0 LDY #$10 ODTAJ LDA PRINT,X EOR #$55 ODT2 STA PRINT,X INX BNE ODTAJ INC ODTAJ+2 INC ODT2+2 DEY BNE ODTAJ LDA #$4C STA ODT0 JMP START *Podprogram pro vystup na obrazovku PRINT PLA STA PR4+1 PLA STA PR4+2 PR2 INC PR4+1 BNE PR3 INC PR4+2 PR3 LDA #0 TAX STA $348,X ;ICBLL/H STA $349,X LDA #11 STA $342,X ;ICCMD PR4 LDA $FFFF ;Meni se! BEQ PR5 JSR $E456 ;CIO JMP PR2 PR5 LDA PR4+2 PHA LDA PR4+1 PHA RTS *Pomocny skok pro prevzeti *parametru z CP GETNAME JMP $E474 ;Meni se! *Zacatek programu - test DOSu START LDA $700 CMP #'S' BEQ START2 JSR PRINT EOL ASC "Bad DOS version !" EOL DFB 0 JMP (10) *Prevzeti parametru START2 LDA 10 CLC ADC #3 STA GETNAME+1 LDA 11 ADC #0 STA GETNAME+2 JSR GETNAME *Je parametr 'OFF' ? LDY #36 LDA (10),Y CMP #'O' BNE START3 INY LDA (10),Y CMP #'F' BNE SYNTAX INY CMP (10),Y BNE SYNTAX INY LDA (10),Y CMP #$9B BNE SYNTAX JMP DISABLE *Specificka cast: *Zpracovani parametru START3 CMP #$9B BNE SYNTAX *Priprava adresy vektoru LSIO LDA 10 SEC SBC #10 STA SIOADR LDA 11 SBC #0 STA SIOADR+1 JMP START4 *Chyba syntaxe -> napoveda SYNTAX JSR PRINT EOL ASC "Syntax: SHOWSIO" EOL ASC " SHOWSIO OFF" EOL DFB 0 JMP (10) *Je jiz rezident instalovan? START4 JSR SRCHRUT BCC INSTAL *Specificka cast: *Zmena konfigurace *V tomto pripade neprichazi zmena *konfigurace v uvahu, proto chybove *hlaseni JSR PRINT EOL ASC "SHOWSIO already " ASC "installed !" EOL DFB 0 JMP (10) *Instalace rezidentu: *Vypocet nove adresy MEMLO INSTAL LDA 743 ;MEMLO STA SRCHADR CLC ADC #RESLEN STA 743 STA LMEM+1 LDA 744 STA SRCHADR+1 ADC #0 STA 744 STA HMEM+1 *Relokovani rezidentu RLK0 LDX #0 RLK1 LDA RELOKT,X STA RELZP LDA RELOKT+1,X STA RELZP+1 ORA RELZP BEQ INSTAL2 LDY #1 LDA (RELZP),Y SEC SBC #RESID:L PHP CLC ADC SRCHADR STA (RELZP),Y INY LDA (RELZP),Y ADC SRCHADR+1 PLP SBC #RESID:H STA (RELZP),Y INX INX BNE RLK1 *Specificka cast: *Priprava rezidentu pred instalaci INSTAL2 LDY #0 LDA (SIOADR),Y STA OLDSIO+1 INY LDA (SIOADR),Y STA OLDSIO+2 *Kopirovani rezidentu na misto urceni LDY #RESLEN COP1 DEY LDA RESID,Y STA (SRCHADR),Y TYA BNE COP1 *Pripojeni do sekvence LDY #2 INSTAL3 LDA 11,Y STA (SRCHADR),Y LDA SRCHADR-1,Y STA 11,Y DEY BNE INSTAL3 *Pripojeni instalovaneho rezidentu *k operacnimu systemu LDY #0 LDA NEWSIO STA (SIOADR),Y INY LDA NEWSIO+1 STA (SIOADR),Y *Zakonceni JSR PRINT EOL ASC "SHOWSIO installed." EOL DFB 0 JMP (10) *Odstraneni rezidentu: *Je rezident pritomen a je posledni? DISABLE JSR SRCHRUT BCS DISABLE2 JSR PRINT EOL ASC "SHOWSIO not Installed !" EOL DFB 0 JMP DISERR2 DISCANT JSR PRINT EOL ASC "SHOWSIO is not the last" EOL ASC "installed handler!" EOL DFB 0 DISERR2 JSR PRINT ASC "Can't remove." EOL DFB 0 JMP (10) DISABLE2 LDA 743 SEC SBC SRCHADR TAY LDA 744 SBC SRCHADR+1 BNE DISCANT CPY #RESLEN BNE DISCANT *Specificka cast: *Odpojeni rezidentu od OS LDY #OLDSIO-RESID+1 LDA (SRCHADR),Y PHA INY LDA (SRCHADR),Y LDY #1 STA (SIOADR),Y DEY PLA STA (SIOADR),Y *Odpojeni od a vraceni *puvodni hodnoty MEMLO LDY #2 DISBL2 LDA (SRCHADR),Y STA 11,Y LDA SRCHADR-1,Y STA 743-1,Y DEY BNE DISBL2 *Zakonceni JSR PRINT EOL ASC "SHOWSIO removed." EOL DFB 0 JMP (10) *Podprogram - vyhledani rezidentniho *kodu v pameti pod MEMLO: *Makroinstrukce pro jeden krok *vyhledavani SRCHIT MACRO LABEL1,LABEL2 LDY #LABEL1-RESID SRIT@ LDA (SRCHADR),Y CMP RESID,Y BNE SRCHNXT INY CPY #LABEL2-RESID BNE SRIT@ MEND *Priprava pocatecni adresy SRCHRUT LDA 743 SEC SBC #RESLEN STA SRCHADR LDA 744 SBC #0 STA SRCHADR+1 *Specificka cast: *Porovnani se vzorem rezidentu SRCHR1 SRCHIT T1,R1 SRCHIT T2,SIO3 SRCHIT T3,R8 SRCHIT T4,T5 SEC RTS *Nesouhlasi -> dalsi adresa SRCHNXT LDA SRCHADR BNE SNXT2 DEC SRCHADR+1 SNXT2 DEC SRCHADR *Adresa<$1000 -> nenasel LDA SRCHADR+1 CMP #$10 BCS SRCHR1 RTS *Specificka cast: *Podprogramy instalacni procedury *(V tomto pripade zadne) *Vlastni rezident: *Inicializacni sekvence RESID JSR $FFFF LMEM LDA #$22 STA 743 HMEM LDA #$22 T1 STA 744 *Specificka cast: *Inicializace rezidentu *(V tomto pripade neni) RTS *Specificka cast: *Hlavni program rezidentu SIO LDY #40 SIO2 DEY LDA (88),Y R1 STA BUFFER-32,Y T2 CPY #32 BNE SIO2 LDA #'D' LDX $300 ;Zarizeni CPX #$31 BEQ SIO3 LDA #'?' SIO3 JSR SIOPUT LDA $301 ;c.jednotky ORA #$30 R2 JSR SIOPUT LDA #':' R3 JSR SIOPUT LDA $302 ;Povel R4 JSR SIOPUT LDA $30B ;c.sektoru R5 JSR SIOHEX LDA $30A R6 JSR SIOHEX OLDSIO JSR $E474 ;Meni se! STY $303 ;Status LDY #40 SIO4 DEY R7 LDA BUFFER-32,Y T3 STA (88),Y CPY #32 BNE SIO4 LDY $303 RTS SIOHEX PHA LSR LSR LSR LSR R8 JSR SIOHEX1 T4 PLA SIOHEX1 AND #$0F ORA #$30 CMP #$3A BCC SIOPUT ADC #6 SIOPUT EOR #$80 ASL PHP CMP #$C0 BCS SIOP2 SBC #63 BCS SIOP2 ADC #$C0 SIOP2 PLP ROR STA (88),Y INY T5 RTS BUFFER ASC "12345678" *Konec rezidentu *Pomocna hodnota - delka rezidentu RESLEN EPZ *-RESID NEWSIO DFW SIO *Tabulka absolutnich adres v *rezidentu - pro relokaci RELOKT DFW R1,SIO3,R2,R3 DFW R4,R5,R6,R7 DFW R8,NEWSIO-1,0 ************************************* *Konec vlastniho programu *Nasleduje rutina pro zakodovani *programu po prekladu UTZP EPZ $20 UTAJ LDA #PRINT+O:L STA UTZP LDA #PRINT+O:H STA UTZP+1 UTAJ2 LDY #0 LDA (UTZP),Y EOR #$55 STA (UTZP),Y INC UTZP BNE UTAJ3 INC UTZP+1 UTAJ3 LDA UTZP CMP #UTAJ+O:L BNE UTAJ2 LDA UTZP+1 CMP #UTAJ+O:H BNE UTAJ2 RTS *Opakovani dulezitych hodnot - kvuli *snadnemu precteni behem prekladu *Delka rezidentniho kodu DELKARES EQU RESLEN *Upozorneni na startovaci adresu *pro zakodovani po prekladu SPUSTOD EQU $A800 *Adresy pro ulozeni vysledneho prog. SAVEFROM EQU ODT0+O SAVETO EQU UTAJ+O SAVEINTO EQU TARGET ************** KONEC *************** aBASIC OFFAUTOCWD >REZIDENTCWD >REZIDENTXBAT >ATMAS2.COMcBASIC OFFTYPE >REZIDENT.TXTefghijklmnopqrstuvwxyz{|}~LLj jL L`͢L LLLPLQL z >L01`pppppppppppBULpBLA>L6!4-!3 ))makroassembler#opyright(#7agner*2#c  L oB = > < ). L+. D L0= > l j )L+ 1~`` `H****)h)p ` `/ 0$ a 0% a L4 0} *` u$SAVE*"+" $ u$INTO: $ ! !C !͍,"eȍ."΍-"eɍ/" '0/ -( ! ( 7(0 ! S(0 -(` -( u$ADR-ERROR`H -( u$ERROR-CODE: h # T'` u$LOAD ' T' -( (0Ʃ 7(0*"Ш+"Т ! ' S(0% !0ЅЁ !0,"-" !0."/"Lh! T' -(`ō,"ƍ-"."Í/"`/"m."8,"Ȋ-"`"ɛ >`" `BHI V0H Vh`D1:*.*D2:ATMASII.COM oBMADE BY JRC-BADOTD ` )ą u$MONITOR n"LU" @* ݈"` "H"H`MBFCDSLGIE"##$% 9!(**/j00182 u$DUMP $ u$ASCII? @*Y )̩ʩ T'$0 @*X`̥ƅ #Ņ #ɩ˩ T'ɠ$0)}  @ T' x#إ¥Ð$!$ʥDžťȅг$$0ũ T'`H$0hH T'hHJJJJ #h)  0i7LT' u$BLOCKTRANSFER $ u$INTO: $ͅǥ΅Ƞőǥ¥ð` u$FILL $ u$WITH: '$ͅĠđť¥ð `ͅΩ @*ɛ?XLU" T':0") GA7  && |* T' T'`hh΢Ρ T'HH` u$FROM: $ͅť΅ u$TO : $ͅ¥΅` u$CHANGEADRESS: $ͅť΅ƥ # # T' # u$ =>  '$͠ u$DISASSEMBLERSTART: $͍΍ ) W% H&$0 T' @*X` i% H&ń ,&ŨJJ) JW&JJJJ)&)ʘ) JJJ ȈH # ?&Ȑh&&&*i) T' =&Ű #Đ&) T'&) T'` K&Ș #L# T'Ʀ %&: T' T'`8ƪeŐ`@E@ 0"E3@ @E3@ @E@ "D3ЌD"D3ЌD"D3@ "D3@ bx!YMJؤ#]#)i#$S#$S[[i$$)|mi)S4i#bZH&bTDThDt(ntJrtttrDh2"&&rr&HDDHANS-CHRISTOPH WAGNER 30.6.1981Єυ$ )Lg' *Ϧ`0өө4өӠ`ɛ  )ӌ u$FILENAME (D:FN.EXT)? BD"EHI V` u$FROM: -" #," # u$ TO 2 /" #." # T'`JKBD"ELV BLVBHI*D"ELVH !hB,"D-"EȝHɝI V````/` u$GOTO ( $lh҆ӄԺhhhX8ץ u$ PC AC XR YR SP NV.BDIZC # # ~# ~# ~# ~# T'0֐  T'LU" u$PRINT ? @*Y &)` u$R1: (1) OR P2 (2) OR VIA PORTS (3) @*1XP481 ))4JJ )(BJ D)E D1E VL~" l'`R1:P:))' BDEHI VL~"`l` B V`L/ ЄϢ@ B VBD*EJ VФ`Єυ@ BDEHI VФ`ЄϢ0BD*EJ VBHI VH B VФh`L*K:E:"" (BHI V0 @ BD"EHI V -(`L++L0Lt/L.L/L .L/ .` (.l} *l} *آL a0 & . 0 .ƆةAĩ8宅P ,8卅厅T ,8喅嗅C , , ,& O,ƈŮƇ  ^,戥ōŎ륑ŝ `,ů ^,成肋 ,L, ,: ,08U,HW,0 hh ,ڥ 0 , ,` d'ĝ ` 9 $01 , 80`  ,8&% ,  a Ƒ% -1$ ,&hhhh( I ɛ !  +.,. .LU+ .LU+ ƕ . -LU+LM+# -膚 -#$8@U k.l. Ɵդ֢LP+ -(`&` 0&x 0COE? PB VLS+ -:0) ee إ`#ж`CROK`ʆ`./../v/(.H-..z0a0....#+/'.// ///.+.-////h/-/-.-/z01//H-J+v2d3---- 2//-x1---)Hŏ ŐIL-h j0`ŮƎƍŭH` . .Œ / ` / H . j0h` - . .CL-H D/ D/L. Z/ G Ai)`L- -0:`T Z/兆` /` /` . ƐƏ` / /( ů j0` /E`jE  `E`ů!ы挤įSL- ы󦕽نe挥ů /ŏŐ``ŬƗƖ`ƙŬƘ .&.` /` `0L+4R"X\\$ U3 *`0өө4ө`ɛ  )ӌ݄ @*(`@ĩŦ(eąĩeŅŦ` -ƕ -g32g30`L1 R1 PBJKgD3E V0SBg3gD3EHI / g3 V0 V0 B V0`<өRWL-.SRC R1PBJKgD3E V0¥BgD3EHI V0g3 .0Ω B V0`} * -dƕL Z/ 2L2LL- +3,34JJ Y3(BJ $D3E (D3E VL2 0`  080ɛ 0 / (HhL `R1:P:13130 BDEHI VL2`l` B V`L/ ?c?L-c#c3cc JD L L;L< CąL?H ?h >ѥ) "ѱ  >$p > ,9$0&,9$0,9$0 < ?$ 4 1蚩L+ ;ʆ$0 ? 8eυϰХϥа + ?8$hh溡 ?(HH` =$%H 6= > <:4h >$0g`4$` ?4 ?$L?)4cB4   ?$0& 84۰ ?bB $0&f` O6ʊ必Ș 'd# 4 O6fݠ lL>(9 4 O6, 4X< 4I)5)/ 4,( 4Y!Ǩ) O6, 4X YH ǪǨ  >L=+ 4 O6 >L<( O6L 4 O6l) HJJJJ >h)  0 i7, , )   <$ 1 0`?v@%@@?A?7@?R@tA??Ax??@@@p?[@A?d@@???QB*;?EP*;@EQ6;@OU;?OR:?DF;.@DF֮:AS։>@JS֔>JM֔> @GOTi;MACRۮ;MEN=@BR=@PH=?CL=0APL(=@SE8=m@RT@=@PHH=@CLX=RT`=PLh=@SEx=RADEو=I@TY=TA٨=CLָ=IN= BCL=IN=SE=@TX=@TXӚ=@TAت=BTSغ=DE=ANO֧=BP֧=@BM0֧=BVP֧=AABVp֧=ABCÐ֧=@BCӰ֧=BN֧=ABE=BI$,=AST=LD=@BCP=CP=OR  =AN)%-5=9!=EOIEMU]YA=ADiemu}ya=/BST=LD=CM=SB=AAS =RO*&.6>=ALSJFNV^=cAROjfnv~=@ST=ALD=DE=IN REZIDENTPodrobny navod k souborum v adresariREZIDENT vychazi v casopisu ALERTv cislech 5 a 6.Navod na obsluhu MacroAssembleruATMAS2 je obsazen v prilozezpravodaje Atari klubu Praha PZAK IV,ktery je mozno zakoupit v prodejnachJRC a u distributoru.START.BAT je ukazkovy davkovy souborpro spravne zavedeni. Nezapomente, zedavkove soubory se zadavaji zaznamenko minus-START[ DLIV;;512DLPTRS0;;560NMIEN;;54286(SETVBLV\;;584602X;<START0;;12288FX;P STARTZQ>@d PNMIENn Q>4DLISTx $>5DLIST PDLPTRS&DLPTRS Q>4DLI $>5DLI PDLIV &DLIVQ> %>4VBL $>5VBL SETVBLVQ> PNMIEN:X;X;Here include DLI.ASM fileX;and your Display List.A CHBAS;;756CHBASE ;;54281WSYNC ;;54282(JSYSVBL_;;584632@FIRST.CHARSET@;;pointer to address of your first charset.<X;FVBLPQ>5FIRST.CHARSETZ PCHBASd !JSYSVBLnDLI5x QCHBAS,;;here we setO>;;CHBASE toPWSYNC;;address of thePCHBASE;;next charset PCHBAS79, ө jB*DELVE:J\ KCWFMHxLQ` m | ʮLj Lά=t͈ Lh)BK ݅hhh`ЖI(tmLͥiʶ2xh3?; S؇ 0 ֛ JLg MPygcCũ;1yibrofy }7 SCREEN.DATA8#23 lx1^9%0S1O2?\3,$04B4;JVB B . >play Li1k5BYTE $410160 .WORD2LISTW$7q#q f!bou$5pU=%tW~WWWWWWWGc D1D2D3D4D8C:}z]ae}嶾I0 qu#is bugup-50])impm趮P-3Ck{/wsk<rJ3zczV/,!.$2ef }f   ڥ3*,/'/3$/Ғxl<%fuG*'ungx.$Q/ჵ/&44i4op3&ujQ!v$e#xI'mkot(iߎch @z53322j!#&4?4x)rdY:52 f%-ijag#R&h~{[mfwfes75)m@>j0   UI XsXrZW UzUi,oaP2p߽$L{mަ4f7a$,1u _0FUlVVVV W U]C{y:0?FbF3%#*K2%%=aOKsF+'D'>"AsS<9 9 ԎizЦh@~KBB',,e))[I Y[bvt'Lᗱ ah 9hL_%DHY\3vc[Wa8m0/n[x;Fa_dԩЃKz)^=x>㑲?x%Z1oI>/f<%QTԘH;E[kXl#/=a"=58KHݮmˤͩ@^{p+( lH/@^IAxB@KCN+ TTs-˄G*vl \:ӫ8{"Qdot1]YH 7;]Ոx@qPanmI2I7frsإHf? ǪX\\R*N:…Ht !!/bpCHH ^NdLHY`?iė޼ I9Ovg g:1Y ֩gO c/٢UU˱饹tЭ~*ׅ؅{i Wِ Z6_ a6JUdD V1L_K*2Rd.?uZ M_!l=8@Jgh^QDmllaȱun(В(&67h 6,0`>_) !kb G&ro6T2n ]7_ᚈ I/g'7]N0ۇFnEdԐfb.^VrRPhmȭNdP66mYiwJ%G F hv'R aC :1X YxCxL… .\h h ۛXV Ρu] `RC 1kcXb{,>R,}Y>~.q ]d'n`|fd]^:i(R͘J$8 1M|X4ʠi4X4Ma<e54(R1ҡM+ ؊3f Ҋ-_8pްps8{araL'm1LWg|aTtJY^+''д.k6m]0X Lb9pmHگ돉\ < LC.8TJffjX$vaL-}Vr1p@W('%֔`<3iPä1nLcL}-҄0"|-HHpI@J!KwyO,@0!XDI/QӦ,wZ) O#G^yb9=r"$^&O h_0L13 d}"&|00qYMЙF4c' "-:RmLeXeYǤcL;d?/Х= -TN|"$` ҥ?30 18ҌdZH dB]y۹i<hM\`Ɗ׻0 ReL qec].SL2e &̐^ ŠSv`S>WVOGp?7…/ '.\<>18iߊΰ9huQRg{|… .\p… .\WWX5 /RH7 )ȥM|/aM̑q(o`T^Tca 'L1hJD(b JgR 9)-w_őr3)vH)h)l)fmheLh8k搤@ h`Rh/I#R `aYJCzЩK"T#$&QIŪIZK 3a`sMuNL` `L)?ޠS LH8/VPh)d0WP a BKDLPEbHIV fL` Ri`ʎiDЗSxTDː*  ˥J̥i iԭз` HhLLi e gL$`,}ȩ0 *&`HhL VuHuب hheeH 8娰H8G娰GĩGHƩϻv®4o%Lp0B @HQB#RA+LHHw6̭EqРd8xyx @  (5  UF U0 Ti' Ui Si  Si  Vi!ꅨ HG U , Si  U Ti Ti٠ Vi  ʠ Vi` V T @XL[ L xIAHhHh`!       World Federation of Mad Hackers is proud to present you T H E ## ##### ##### ##### ##### ## ## ## ## ## ## ## ## ## ## ## ## ## ## ##### ## ## ## ## ## ## ## ## ##### ##### ##### ##### ## ## ##### ##### ##### ##### ##### ## ## ##### ## ## ##### #### ##### ## ## ## ## ## ## ## ##### ##### #### #### #### ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ##### ## ## ## ## ## ## ## ## ##### ## ## version 1.1 by Thorgal/W.F.M.H. Released on 91-06-26. This is the shareware program. If you use it, a contribution of $5 should be paid. If you send $10 (or more) you will receive, when available, the next version of "Logos Maker". Please state the version of the software that you currently have. Send money order to: Milek Smyk Orawska 22/34 70-131 Szczecin POLAND And if you're a miser, greet me in your programs at least. If you've any notes about the "Logos Maker", you've found a bug, you got an idea to improve this program or you just need some help with using it, write at address above. The folowing document is a standard ATASCII text file without any control characters, therefore it can be printed with any text-editor on every printer. Forget and forgive me all the fatal bugs in my english, I know it isn't the best. Hope all is clear now, so... INTRODUCTION. It often happens that you want to show some graphics in your program. Somebody can say the easiest way to do it is to set graphics mode and to use standard picture data created with any painting program. But is it the best way? Antic does its DMA data fetch much faster when a text mode is being used. Also, a picture stored in the text format usually needs less memory than in graphics one. And even if you use very complex image and it takes nearly the same amount of bytes as before converting, you have to know that these bytes are located in the charset data and not in the screen data. Thus, moving such picture around the screen takes much shorter time (either you're using DL's Load Memory Scan instruction or transferring data in memory). The only reason for which text-pictures aren't so popular on ATARI as on Commodore 64 is lack of programs to transform from one format to other...yeah, I know some funny freaks that do converting with using sheet of paper, but...errr... it's really uncomfortable. Since the "Logos Maker" has been introduced it isn't the problem anymore! LOADING. TAPE - I'm not absolutely sure, whether the "LM" works with tape at all. But if so, it needs to be loaded after any disk-file-loader (like that, which displays "!" in the lower-right corner of a screen). Next set the "Drive" selector in menu "Prefs" to position "CAS" and...I hope it will work. DISK - the "LM" should work properly with nearly all DOSes - I personally tested it with ATARI DOS 2.0, 2.5, SuperDos 2.9, 4.3E, DOS XL 2.35 - no troubles at all. Anyway, I know that the "LM" causes a shit with SPARTADOS (I haven't foreseen subdirectories and DOS screen initializer which doesn't open an "E:" handler). Also, the "LM" can be loaded from any microdos but then it cannot communicate with the drive of course. FIRST SIGHT. In the upper part of the screen you can see a single line with names of menus and bright cursor on the left. You can move it with + and * keys (usual cursor keys, but no need to use CONTROL). At the bottom there are two lines. The upper one describes an actual mode the "LM" is in and displays error messages, the lower line informs you about colors. Here's also a cursor which can be moved by pressing START key. An empty space between the upper line and the lower ones is destined to show you a converted picture. GETTING STARTED. Since you can move the main cursor around MENU-line, set it on the "files" and press the RETURN key. A single window opens below. The cursor is in it, and this time you can move it by pressing - and = keys. Press ESC key to quit - window closes and you're back in the MENU-line. There is the general way the "LM" handles a keyboard: - = + * keys move the cursor, RETURN confirms choice, ESC aborts work with actually selected option and/or closes a window. The exception is in using the "color" cursor. It moves when you press START, and changes an amount of selected color register when you press SELECT (hue) or OPTION (luminance). WORKING. One can say that you already got a little experience with using menus and submenus, so let's start with doing something really interesting. First let's check up what's going on the "LM" master disk. Pull down the "Files" menu and then select "Directory" gadget. After few seconds a window filled up with names of files stored on disk appears in the front of you. Below you can see the number of free sectors. As usually, you can move through by pressing - and = keys. Find a "SPACE.FWA" file. Got it? The extension tells you that this picture has been made with using "Fun With Art". Since it's immposible for the "LM" to distinguish all the image formats, I've made a submenu "Prefs/Pic's standard". Pull it down and then select "Fun With Art" gadget. Done? A little ball indicates actually selected format. Then go to "Files/Load pic" and type in the name of the picture to load (SPACE.FWA), press RETURN and wait a minute. If everything is all right, the window with filename disappears and you can leave "Files" by pressing ESC. The screen is empty!?! Don't worry, the screen shows you converted picture and because you haven't made it yet - it's empty. Now select the "Works/Start convert" gadget. See? Converted picture appears on the screen. Set "Prefs/Int. indicator" on to see where the DLI interrupts change CHBASE register. Detailed information about charsets and chars used in each of them can be found in "Data" window. Also, here is the number of the last occured error. Now you can use invers to add another (5th) color to the picture. Select "Works/Set invers". A blinking cursor appears in upper-left corner. As usually, you can move it by + * - = keys. RETURN inverses the character under the cursor. Refer to the "ATARI HARDWARE MANUAL" if you don't know how invers works in text mode (I mean three color text mode). Yeah! I would forgot! The "LM" works also in hi-res mode. Simply, set the "Prefs/Graphics mode" to $08 and everything is sharp, perfect and without colors. Is your image correctly converted? If so,... SAVING. There are three "Save" options in "Files" menu: "Save data" saves the data for the screen memory. They are always $3C0 (960 dec) bytes long. "Save font" saves contens of charset(s) which was (were) used to hold the picture data. If there wasn't any converting at all, or if you have just used the "Works/Clear all" function, nothing will be stored on disk. File length equals to $400*(number of used charsets). "Save DL" saves the Display List needed to display the image. It's an ASCII file, so it can be modified/assembled with any assember. For example you can read it with MAC/65 command "ENTER#D:FILENAME.EXT". The "SCREEN.DATA" label should point to your data saved with "Files/Save data". This file is always $183 (387 dec) bytes long. GOOD BYE. If you want to quit "LM", simply select "Files/Quit" and after few moments you're back in a DOS. OTHER USEFUL COMMANDS. When the directory appears and you move through the list of files you can press the RETURN key. The actually indicated name is transferred to the "filename window" of "Load" and "Save" options. The name stays there till you change it either directly by operating in this window or by the next use of the "Directory" function. "#$%&'()*+,-./012345 "Prefs/Optymizing" gives you ability of controlling the conversion process. When it's set to "Off" the "LM" simply takes the picture data and converts them into the text mode (Hi Frankenstein!). When the "Normal" position is selected, the "LM" checks if just converted character is "empty" and if so, replaces it with "space" code (0). It could be useful sometimes. And if the "Full" option is selected, the "LM" checks if just converted character has appeared before in actually converted charset. If so, the "LM" simply places code of "twin" byte apart of the new one. It really shrinks the picture data and sometimes ables you to have the picture which looks like four kilobytes long, and only has one. "Prefs/Drive" lets you select a storage device to use with "Directory", "Load" and "Save" commands. "Prefs/Directory sort" controls the way which a list of files is sorted in. It provides sorting in the alphabetical order by the names or by the extensions. When it's set to "Off", no sorting is done, and files appear successively as they are in the directory sectors. APPENDIX A - PICTURE FORMATS SUPPORTED. "Raw screen" - raw screen data without header and color info. "Ilustrator" - a program by Zbigniew Trepka. "Fun With Art" - a program by EPYX. "Micropainter" - commonly used picture format - "Blazing Paddles", "XL-Art" and "The Micropainter" of course. APPENDIX B - COMMANDS SUMMARY. Files/ Directory Load pic Save data Save fonts Save DL Quit Works/ Start convert Set invers Clear all Prefs/ Graphics mode Pic's standard Int. indicator Optymizing Directory sort Drive APPENDIX C - FILES ON THE MASTER DISK DOS.SYS DUP.SYS - two DOS 2.5 files. LOGOS.COM - the "Logos Maker" v1.1 INT.ASM - VBL and DL interrupt routines prepared to use with Display List created by "Files/Save DL". EXAMPLE.ASM - shows how to use INT.ASM and Display List. SPACE.FWA - a picture in "Fun With Art" format. COMMY.RAW - a raw picture of font (hi-res). LOGOS.DOC - this nice document. LAST WORD. Author wishes to thank Magnus for his constructive criticism and for packing the "Logos Maker", and "small" ATARI for being. Thorgal/World Federation of Mad Hackersu789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrst4pppNPN`Ahhhh@L_00 0p 0p0 @0s 1 3p0gp 33s0g33@ \ @&00??07ew33 \͙ 7337w735f07p@@ ݜݹ\3?6wW7?5jw7gp U 37w?fgWwsgw0թݩ@?Wwvfgggvw3]٩YZ] 3veVejfww300 ՙZ@3ffUjVW00! ݚ5jjffjfw3p@[37fW3@ [@33?fVW?Y 30?jwws Y 033wfup@0 ݙݿ3jong30 i}yD 303VYes30٦DuDGo 33wfq%Vewws@ ٻqUvUGyY@3wVndv6oojfjws330ٙe3fUvgUQw0ջ5Wo۶ 3gtGչW0  jnUUtUQje3wuR%Vo䡞P30 vGQe 0033SUUeTqR03 yGoTAnAytU^ @D033DViE@30EJTfEdUXU@@33]ݑ7w0@FFdUE@ vgAYQZPVQ77p@DfF3T[s00 d%EfVA3030fP[QpFDa@ffdFoD@@Q[30@ nAUTEAZF PIEvQ3eB]@A@fo_ե@iYFWx DDHeDD@@DEfmYU+nfn@@!feT@D@UnQyѻg@knn@ZfDDA@DeoE@nnEddDAFoF@TPktTFffPDdnZjDWЮ9ٙQYm@dDVUd~@b_F^PQF@%[P[Kdd^DDGviYX)DNGKߗkP@mmiywY_@VnfDFDUFD^g_/TdVA+Wu@fFfnTAFD~U՟뻛AnPQ{WvonDKѽZ@^D~ZgnonUQw.An@F@_jDE[ToTA~fKUAKPF߶fnAVFEgVo檧I[{Q[幾QmY{o`fDnTEnoT@[ifnePEVnfej[QUYI}dDnDnDQyEDmn~^E^DV[hUDnY陛PYg[QAIfEfFfDdAT@Fޭ@EPFdPzfamUVTU[Vo@DDVfeAeiDF$wPiAdDZEU~Qj[@QF)@E@eYjQDfjBnDmD@AetGxWe@dDn`[yEQQQm~EDd@@QDDnFE[@fQfQYYUUE巐nPAmQ@DUWUUTfEnnEDADEU@RE|A@DPFDFFDXPd@DdyfVofD@FFPVy@dd@[QWTyPEF@QDoDDDe&o@A@@mPQD@QZF@FQoTDetUVnt@PAGVTzmUeYkd[ff@VxGFdt@ymym{ FZ[-xo~ATeF@TQDPt_@QffiP @fDowDDDTFDnE@AAPוeQgY@@TD@DFfDn`DRaEPYeIّUTDDnHTPo@@DnTDDmFn-@P.@fVDdDDfVfno JQQddFdDffnkDdF QU EDFFoTEFg@d @FEnffVDDoUa[v@eDoFjTnFn @w@F@EoFnn@ {U@DnfUVtF 0@@0L@dVTDDlV0DdDfT@nf~@IYuw_Ffn]d@nfv6v