Nast❎pna grupa procedur zajmuje si❎ obrbk⇧ wiersza polece, pobieraniem¢ rənorodnych parametrw itp.¢¢ Procedura zwraca pobrany parametr w confnam o dugo③ci w trails.¢ Ustawia teə wska♪nik nazwy pliku na confnam.¢ Wynik operacji w F Z=1 ③wiadczy o braku parametru lub parametrze ze znakiem¢ uko③nika.¢¢ org $B27E User GET PARameters¢¢ bufoff equ $A62¢ trails equ $A72¢ confnam equ $A79¢ lbuff equ $A97¢ cionbuf equ $B17¢ FILE_P equ $C5A¢¢ U_PARAM equ $B31B¢¢ U_GETPAR lda <confnam Na pocz⇧tku procedura ustawia wska♪nik nazwy pliku¢ sta FILE_P na confnam.¢ lda >confnam¢ sta FILE_P+1¢¢ ldx #$00 Nast❎pnie ustawia znak EOL na pocz⇧tku tego buforu.¢ lda #$9B¢ sta confnam,x¢¢ ldy bufoff Teraz procedura pobiera nast❎pny znak (wedug¢ lda lbuff,y wskazania bufoff) z buforu lini¢ cmp #'/'¢ beq eB2AB¢¢ jsr U_PARAM i gdy nie jest to uko③nik pobiera parametr.¢¢ ldx #$00 Teraz procedura kopiuje cionbuf do confnam.¢ eB29E lda cionbuf,x¢ sta confnam,x¢ cmp #$9B¢ beq eB2AB¢ inx¢ bne eB29E¢¢ eB2AB stx trails A po napotkaniu znaku EOL ustawia dugo③⇨ pobranego¢ cpx #$00 parametru w trails.¢ rts¢¢ Procedura pobiera ustalone przez uəytkownika atrybuty pliku.¢ Parametrem niesionym w A s⇧ atrybuty domy③lne dla pliku.¢¢ org $B2B1 User GET ATtRibutes.¢¢ fatr1 equ $779¢ temp1 equ $C38¢ temp2 equ $C40¢ confnam equ $A79¢¢ U_GETPAR equ $B27E¢ TOUPPER equ $B442¢¢ U_GETATR pha Na pocz⇧tku procedura zapami❎tuje domy③lne atrybuty.¢¢ lda #$00 Nast❎pnie kasuje atrybuty pliku¢ sta fatr1¢ sta temp2 i zmienn⇧ tymczasow⇧.¢¢ eB2BA jsr U_GETPAR Teraz procedura pobiera parametr do confnam¢ beq eB303¢¢ lda #$FF i gdy parametr istnieje zmienna tymczasowa uzyskuje¢ sta temp1 warto③⇨ pocz⇧tkow⇧.¢¢ lda confnam Nast❎pnie procedura sprawdza czy chodzi o parametry¢ cmp #'+' istniej⇧ce.¢ beq eB2D2¢ inc temp1 W przeciwnym wypadku zmienna jest zerowana.¢ cmp #'-'¢ bne eB303¢¢ eB2D2 ldy #$00 Gdy pierwszy znak parametru wskazuje atrybuty¢ dec temp2 ustawiana jest zmienna je wskazuj⇧ca.¢¢ eB2D7 iny Teraz pobierane s⇧ nast❎pne znaki parametrw.¢ lda confnam,y¢ cmp #$9B¢ beq eB2BA Gdy jest to EOL p❎tla si❎ zamyka.¢¢ jsr TOUPPER Mae litery ustawiane s⇧ jako duəe.¢¢ ldx #$03¢ eB2E4 cmp atrchar,x I znak porwnywany jest z literami atrybutw.¢ beq eB2EE¢ dex¢ bpl eB2E4¢ bmi eB2D7¢¢ eB2EE lda fatr1 Gdy znak zosta rozpoznany pobierane s⇧ juə usta-¢ eor temp1 wione atrybuty, ustawione wedug ich znaku¢ and atrclr,x i ustawiony zostaje odpowiedni atrybut poprzez¢ ora atrset,x swoj⇧ mask❎ bitow⇧.¢ eor temp1¢ sta fatr1 Poczym zostaje on wstawiony w pole atrybutw,¢ jmp eB2D7 po czym p❎tla si❎ zamyka.¢¢ eB303 pla Na kocu procedura sprawdza czy pobraa atrybuty¢ bit temp2¢ bmi eB30C¢ sta fatr1 I gdy tak nie byo ustawia atrybuty domy③lne.¢¢ eB30C cpx #$00 Teraz porwnuj⇧c z zerem okre③la koniec parametrw.¢ rts¢¢ atrchar dta c'PHSA'¢ atrclr dta b($FE),b($FD),b($F7),b($FB)¢ atrset dta b($10),b($20),b($80),b($40)¢¢ Procedura pobiera nast❎pny parametr i ustala go w cionbuf. Wska♪nik¢ bufoff ustawiony jest na nast❎pny parametr w lbuff.¢¢ org $B31B User next PARAMeter.¢¢ bufoff equ $A62¢ lbuff equ $A97¢ cionbuf equ $B17¢¢ TOUPPER equ $B442¢ snxprm equ $B45C¢¢¢ U_PARAM jsr snxprm Na pocz⇧tku ustalany jest wska♪nik do nast❎pnego¢ parametru.¢ ldx #$00¢¢ eB320 lda lbuff,y Teraz pobierany jest znak z buforu wiersza polece.¢ cmp #$9B¢ beq eB344¢ cmp #','¢ beq eB343¢ cmp #' '¢ beq eB339¢ jsr TOUPPER I gdy nie jest on əadnym znakiem koca parametru¢ sta cionbuf,x wstawia go do cionbuf.¢ inx¢ iny¢ bne eB320¢¢ eB339 sty bufoff Gdy znakiem rozdzielaj⇧cym bya spacja procedura¢ jsr snxprm szuka pierwszego znaku nast❎pnego parametru i¢ cmp #',' sprawdza czy jest to przecinek.¢ bne eB344¢¢ eB343 iny Gdy znakiem rozdzielaj⇧cym by przecinek procedura¢ przesuwa wska♪nik o jeden tak aby wskazywa pierwszy¢ znak nast❎pnego parametru.¢¢ eB344 sty bufoff Gdy nast⇧pi koniec parametru zapami❎tuje wska♪nik¢ lda #$9B wiersza polece po czym wstawia w ostatnie pole¢ sta cionbuf,x parametru znak EOL.¢ rts¢¢ Procedura pobiera parametry opcji dziaania programu zaczynaj⇧ce si❎¢ od uko③nika. Parametry te znajduj⇧ si❎ specjalnej tablicy wskazywanej przez¢ AX. Ilo③⇨ bajtw tablicy niesiona w Y. Tablica ma posta⇨:¢ dta b(0),b('P'),b(0),b('A')¢ Dla odnalezionych parametrw funkcja zwraca warto③⇨ $FF w bajtach¢ poprzedzaj⇧cych znak parametru. W wypadku nie znalezienia parametru procedura¢ sygnalizuje b⇧d poprzez U_FAIL.¢¢ org $B34D User SLASH parameters.¢¢ bufadr equ $15¢ temp1 equ $C38¢ bufoff equ $A62¢ lbuff equ $A97¢ cionbuf equ $B17¢¢ U_FAIL equ $A6BE¢ U_PARAM equ $B31B¢¢ U_SLASH sta bufadr Na pocz⇧tku funkcja ustala wska♪nik do tablicy i¢ stx bufadr+1¢ sty temp1 i ilo③⇨ bajtw tablicy.¢¢ lda #$00 Nast❎pnie funkcja kasuje wszystkie flagi wyst⇧pie¢ eB356 dey danych parametrw.¢ dey¢ sta (bufadr),y¢ bne eB356¢¢ ldx bufoff Teraz pobiera¢ lda lbuff,x znak z wiersza polece wskazywany wska♪nikiem¢ cmp #'/' i porwnuje go z uko③nikiem.¢ bne eB386¢¢ jsr U_PARAM Gdy jest to ten znak pobiera parametr do cionbuf.¢¢ eB369 dex Teraz zmniejsza wska♪nik do ostatniego znaku.¢ beq eB386¢¢ lda cionbuf,x I gdy istnieje znak na niezerowej pozycji¢ ldy temp1¢ eB372 dey¢ cmp (bufadr),y porwnuje go z parametrem w tablicy.¢ beq eB37F¢ dey¢ bne eB372¢¢ lda #$9C Gdy go nie znajdzie wywouje b⇧d. parameter.¢ jmp U_FAIL¢¢ eB37F dey W przeciwnym razie procedura¢ lda #$FF¢ sta (bufadr),y odznacza jego obecno③⇨.¢ bmi eB369 I p❎tla si❎ zamyka.¢¢ eB386 rts Po pobraniu wszystkich liter parametru¢ nast❎puje koniec dziaania procedury.¢¢ Procedura dodaje specyfikacj❎ *.* na kocu buforu confnam.¢ Procedura wymaga ustalonego trails.¢¢ org $B387 User add File SPECification.¢¢ trails equ $A72¢ confnam equ $A79¢¢ CKSPEC equ $B44D¢¢ U_FSPEC ldx trails Na pocz⇧tku procedura sprawdza czy w confnam jest¢ beq eB394 juə jaki③ zapis.¢¢ lda confnam-1,x Gdy tak jest sprawdza czy jego ostatnia litera to¢ jsr CKSPEC litera specjalna nazwy.¢ bne eB3A6 Gdy tak nie jest procedura si❎ koczy.¢¢ eB394 ldy #$03 Teraz procedura dopisuje jokery zwi❎kszaj⇧c¢ ldx trails¢ eB399 lda allfnme,y¢ sta confnam,x¢ stx trails dugo③⇨ confnam.¢ inx¢ dey¢ bpl eB399¢¢ eB3A6 rts¢¢ allfnme dta b($9B),c'*.*'¢¢ Procedura pobiera z wiersza polece parametr liczbowy i zamienia go na¢ dwu cyfrow⇧ liczb❎ zwracan⇧ w AX. Gdy w F z=1 parametrem nie jest liczba.¢ Wska♪nik bufoff ustawiony jest na nast❎pny parametr.¢¢ org $B3AD User GET NUMber.¢¢ bufadr equ $15¢ divend equ $A52¢ bufoff equ $A62¢ lbuff equ $A97¢¢ getnumer equ $AAD7¢ snxprm equ $B45C¢¢ U_GETNUM jsr snxprm Na pocz⇧tku odszukiwany jest nast❎pny parametr.¢¢ lda <lbuff Ustawia wska♪nik bufadr na confnam.¢ sta bufadr¢ lda >lbuff¢ sta bufadr+1¢¢ jsr getnumer Teraz procedura wywouje funkcj❎ (procedury PRINTF)¢ zamieniaj⇧c⇧ tekst liczbowy na liczb❎ i¢ php zapami❎tuje wynik jej dziaania¢ sty bufoff oraz nawy wska♪nik.¢ jsr snxprm Nast❎pnie procedura odszukuje nast❎pny parametr i¢ cmp #',' je③li konczy si❎ on przecinkiem¢ bne eB3C7¢ inc bufoff zwi❎ksza wska♪nik.¢¢ eB3C7 lda divend Na koniec procedura pobiera wynik liczbowy¢ ldx divend+1¢ plp i ustawia rejestr F zgodnie z dziaaniem¢ rts podprogramu.¢¢ Procedura pobiera parametr ON/OFF. Gdy parametrem byo ON wynikiem¢ w F jest c=1, gdy OFF c=0. W przeciwnym wypadku procedura koczy si❎ b❎dem¢ sygnalizowanym przez U_FAIL.¢¢ org $B3CF User GET ON or OFF.¢¢ confnam equ $A79¢¢ U_FAIL equ $A6BE¢ U_GETPAR equ $B27E¢ TOUPPER equ $B442¢¢ U_GONOFF jsr U_GETPAR Na pocz⇧tku procedura pobiera parametr.¢ lda confnam Nast❎pnie porwnuje jego pierwszy znak¢ jsr TOUPPER¢ cmp #'O' z 'O'.¢ bne eB3EA¢¢ lda confnam+1 Gdy tak jest porwnuje drugi znak¢ jsr TOUPPER¢ cmp #'N'¢ beq eB3F0 z 'N' i¢ cmp #'F'¢ beq eB3EF 'F'.¢¢ eB3EA lda #$9C Gdy znak nie jest əadnym z nich wywouje b⇧d.¢ jmp U_FAIL B⇧d : Bad paramater.¢¢ eB3EF clc W przeciwnym razie zwraca odpowiedni wynik.¢ eB3F0 rts¢¢ Procedura porwnuje parametr ze zbiorem parametrw w tablicy. Wska♪nik do¢ tablicy w AX. Parametr w confnam o dugo③ci w trails.¢ Kaədy element w tablicy ma ostatni znak w negatywie. Koniec tablicy¢ zaznaczony znakiem zero. Procedura zwraca numer parametru i w F c=1 go¢ zosta on odnaleziony lub c=0 gdy nie.¢¢ org $B3F1 User get TOKEN number.¢¢ bufadr equ $15¢ trails equ $A72¢ confnam equ $A79¢ temp1 equ $C38¢ temp2 equ $C40¢¢ TOUPPER equ $B442¢¢ U_TOKEN sta bufadr Na pocz⇧tku procedura ustala wska♪nik do tablicy¢ stx bufadr+1 paramterw.¢¢ ldx trails Teraz procedura pobiera¢ eB3F8 lda confnam-1,x znak parametru¢ jsr TOUPPER zwi❎ksza mae litery do duəych¢ sta confnam-1,x¢ cmp #':' i porwnuje z dwukropkiem.¢ beq eB408¢ dex Gdy nie jest to dwukropek zmniejsza wska♪nik znaku.¢ bne eB3F8¢¢ eB408 ldy #$00 Po odnalezieniu pocz⇧tku parametru procedura¢ sty temp2 zeruje zmienn⇧ tymczasow⇧ numeru,¢ stx temp1 a w drugiej zapami❎tuje wska♪nik pocz⇧tku parametru.¢¢ eB410 ldx temp1 Nast❎pnie procedura pobiera wska♪nik pocz⇧tku¢ dex zmniejsza go¢ dey i zmniejsza wska♪nik buforu tablicy.¢¢ eB415 inx Teraz procedura zwi❎ksza obydwa wska♪niki¢ iny¢ cpx trails i porwnuje X z kocem parametru.¢ beq eB431¢¢ lda confnam,x Gdy nie jest to koniec porwnuje poszczeglne znaki¢ eor (bufadr),y paramterw.¢ beq eB415¢ cmp #$80 A gdy s⇧ rəne sprawdza czy rənica leəy w 7 bicie.¢ bne eB42E¢¢ lda confnam+1,x Gdy tak jest procedura sprawdza czy jest to napewno¢ cmp #$9B koniec parametru.¢ beq eB43E¢¢ eB42E inc temp2 I gdy nie zwi❎ksza numer parametru.¢¢ eB431 lda (bufadr),y Po czym odszukuje koniec parametru w tablicy.¢ bmi eB438¢ iny¢ bne eB431¢¢ eB438 iny Teraz procedura sprawdza czy nast⇧pi juə koniec¢ lda (bufadr),y tablicy.¢ bne eB410¢¢ clc I gdy tak jest lub parametr jest odnaleziony¢ eB43E lda temp2 procedura si❎ koczy.¢ rts¢¢ Procedura zamienia znak maej litery na duə⇧. Znak niesiony w A,¢ wynik w A. Procedura nie zmienia rejestrw X,Y.¢¢ org $B442 TO UPPER.¢¢ TOUPPER cmp #'a' Na pocz⇧tku procedura sprawdza czy znak jest ma⇧¢ bcc eB44C liter⇧.¢ cmp #'z'+1¢ bcs eB44C¢ and #$5F I je③li jest gasi 5 bit znaku.¢ eB44C rts¢¢ Procedura sprawdza czy znak jest znakiem specjalnym nazwy.¢ Wynikiem z=1 gdy jest. Procedura nie zmienia warto③ci rejestrw A,X i Y.¢¢ org $B44D ChecK SPECification.¢¢ CKSPEC cmp #':' Procedura porwnuje znak do znakw specjalnego¢ beq eB45B znaczenia.¢ cmp #'>'¢ beq eB45B¢ cmp #'\'¢ beq eB45B¢ cmp #'<'¢ eB45B rts¢¢ Procedura odnajduj⇧ca nast❎pny parametr w wierszu polece.¢¢ org $B45C Sreach NeXt PaRaMeter.¢¢ bufoff equ $A62¢ lbuff equ $A97¢¢ snxprm ldy bufoff Na pocz⇧tku procedura pobiera wska♪nik pozycji¢ eB45F lda lbuff,y w wierszu polece, teraz pobiera znak¢ cmp #' ' tak dugo jak b❎d⇧ one spacjami.¢ bne eB469¢ iny¢ bne eB45F¢ eB469 sty bufoff Gdy procedura wykryje pierwszy znak inny niə spacja¢ rts ustawia nowy wska♪nik i si❎ koczy.¢¢ end of doc.¢