Różne procedury | Kompilacja |
WEJŚCIOWE | WYJŚCIE DANYCH | STOSU | ||
ConBD | Konwersja bajtu do systemu DEC-ASCIIZ | A | textbuf | 1x |
ConBDs | Konwersja bajtu do systemu DEC-ASCIIZ (szybka) | A | textbuf | - |
Con8D | Konwersja 8-bitów do systemu DEC-ASCIIZ | var0 | textbuf | - |
ConWD | Konwersja słowa (16-bit) do systemu DEC-ASCIIZ | [var0, var1] | textbuf | 1x |
Con16D | Konwersja 16-bitów do systemu DEC-ASCIIZ | [var0, var1] | textbuf | - |
Con24D | Konwersja 24-bitów do systemu DEC-ASCIIZ | [var0, var1, var2] | textbuf | - |
Con32D | Konwersja 32-bitów do systemu DEC-ASCIIZ | [var0, var1, var2, var3] | textbuf | - |
ConBO | Konwersja bajtu do systemu OCT-ASCIIZ | A | textbuf | 1x |
ConBOs | Konwersja bajtu do systemu OCT-ASCIIZ (szybka) | A | textbuf | - |
Con8O | Konwersja 8-bitów do systemu OCT-ASCIIZ | var0 | textbuf | - |
Con16O | Konwersja 16-bitów do systemu OCT-ASCIIZ | [var0, var1] | textbuf | - |
Con24O | Konwersja 24-bitów do systemu OCT-ASCIIZ | [var0, var1, var2] | textbuf | - |
Con32O | Konwersja 32-bitów do systemu OCT-ASCIIZ | [var0, var1, var2, var3] | textbuf | - |
ConBH | Konwersja bajtu do systemu HEX-ASCIIZ | A | textbuf | - |
ConBB | Konwersja bajtu do systemu BIN-ASCIIZ | A | textbuf | - |
WEJŚCIOWE | DANYCH | STOSU | ||
Add168 | Dodawanie bajtu NN do słowa: [16] + [8] = [16] | [var0, var1] + NN | [var0, var1] | - |
Add1616 | Dodawanie 2 słów: [16] + [16] = [16] | [var0, var1] + [var2, var3] | [var0, var1] | - |
Add248 | Dodawanie bajtu NN do wartości 24-bitowej: [24] + [8] = [24] | [var0, var1, var2] + NN | [var0, var1, var2] | - |
Add2416 | Dodawanie słowa do wartości 24-bitowej: [24] + [16] = [24] | [var0, var1, var2] + [var3, var4] | [var0, var1, var2] | - |
Add2424 | Dodawanie 2 wartości 24-bitowych: [24] + [24] = [24] | [var0, var1, var2] + [var3, var4, var5] | [var0, var1, var2] | - |
Add328 | Dodawanie bajtu NN do wartości 32-bitowej: [32] + [8] = [32] | [var0, var1, var2, var3] + NN | [var0, var1, var2, var3] | - |
Add3216 | Dodawanie słowa do wartości 32-bitowej: [32] + [16] = [32] | [var0, var1, var2, var3] + [var4, var5] | [var0, var1, var2, var3] | - |
Add3224 | Dodawanie wartości 24-bitowej do wartości 32-bitowej: [32] + [24] = [32] | [var0, var1, var2, var3] + [var4, var5, var6] | [var0, var1, var2, var3] | - |
Add3232 | Dodawanie 2 wartości 32-bitowych: [32] + [32] = [32] | [var0, var1, var2, var3] + [var4, var5, var6, var7] | [var0, var1, var2, var3] | - |
Sub168 | Odejmowanie bajtu NN od słowa: [16] - [8] = [16] | [var0, var1] - NN | [var0, var1] | - |
Sub1616 | Odejmowanie 2 słów: [16] - [16] = [16] | [var0, var1] - [var2, var3] | [var0, var1] | - |
Sub248 | Odejmowanie bajtu NN od wartości 24-bitowej: [24] - [8] = [24] | [var0, var1, var2] - NN | [var0, var1, var2] | - |
Sub2416 | Odejmowanie słowa od wartości 24-bitowej: [24] - [16] = [24] | [var0, var1, var2] - [var3, var4] | [var0, var1, var2] | - |
Sub2424 | Odejmowanie 2 wartości 24-bitowych: [24] - [24] = [24] | [var0, var1, var2] - [var3, var4, var5] | [var0, var1, var2] | - |
Sub328 | Odejmowanie bajtu NN od wartości 32-bitowej: [32] - [8] = [32] | [var0, var1, var2, var3] - NN | [var0, var1, var2, var3] | - |
Sub3216 | Odejmowanie słowa od wartości 32-bitowej: [32] - [16] = [32] | [var0, var1, var2, var3] - [var4, var5] | [var0, var1, var2, var3] | - |
Sub3224 | Odejmowanie wartości 24-bitowej od wartości 32-bitowej: [32] - [24] = [32] | [var0, var1, var2, var3] - [var4, var5, var6] | [var0, var1, var2, var3] | - |
Sub3232 | Odejmowanie 2 wartości 32-bitowych: [32] - [32] = [32] | [var0, var1, var2, var3] - [var4, var5, var6, var7] | [var0, var1, var2, var3] | - |
Mul88 | Mnożenie 2 bajtów: [8] * [8] = [16] | var0 * var1 | [var0, var1] | - |
Mul1616 | Mnożenie 2 słów: [16] * [16] = [32] | [var2, var3] * [var4, var5] | [var0, var1, var2, var3] | - |
Div88 | Dzielenie 2 bajtów: [8] / [8] = [8] + [8] | var0 / var1 | var0 + A | - |
Div1616 | Dzielenie 2 słów: [16] / [16] = [16] + [16] | [var0, var1] / [var2, var3] | [var0, var1] + [var4, var5] | - |
ARGUMENTY WEJŚCIOWE | WYJŚCIE DANYCH | STOSU | ||
LenStr | Liczenie znaków w ciągu ASCIIZ | textbuf | X | - |
DelZero | Usuwanie zbędnych zer z wartości ASCIIZ | textbuf | textbuf | - |
ClrZero | Zamienianie zbędnych zer w wartości ASCIIZ na spacje | textbuf | textbuf | - |
CPUtype | Generowanie ciągu ASCIIZ z typem procesora (NMOS/CMOS) | - | textbuf | - |
RegP | Generowanie ciągu ASCIIZ z wartościami flag rejestru P | P | textbuf | 2x |
ConBD: lda #$00 ;bajt do konwersji ldx #$00 ConBD0: ldy #$2F clc adc ConBD2,X ConBD1: iny sec sbc ConBD2,X cmp ConBD2,X bcs ConBD1 pha ;odkładanie A na stos tya sta textbuf,X pla ;przywracanie A ze stosu inx cpx #$03 bne ConBD0 lda #$00 sta textbuf,X ;wyjście danych rts ConBD2: .db $64,$0A,$01 ;Maksymalna wartość liczby wyjściowej: "255" ($FF) ;Rozmiar: 40 B, linii kodu: 21
ConBDs: lda #$00 ;bajt do konwersji ldy #$2F ldx #$3A sec ConBDs0: iny sbc #$64 bcs ConBDs0 ConBDs1: dex adc #$0A bmi ConBDs1 adc #$2F sty textbuf stx textbuf+1 sta textbuf+2 lda #$00 sta textbuf+3 ;wyjście danych rts ;Maksymalna wartość liczby wyjściowej: "255" ($FF) ;Rozmiar: 34 B, linii kodu: 17
Con8D: lda #$00 sta var0 ;bajt do konwersji ldx #$02 ;maksymalna liczba cyfr (-1 cyfra) Con8D0: ldy #$09 ;liczba bitów do konwersji (+1 bit) lda #$00 clc Con8D1: rol A cmp #$0A bcc Con8D2 sbc #$0A Con8D2: rol var0 dey bne Con8D1 clc adc #$30 sta textbuf,X dex bpl Con8D0 sty textbuf+3 ;wyjście danych rts ;Maksymalna wartość liczby wyjściowej: "255" ($FF) ;Rozmiar: 38 B, linii kodu: 20
ConWD: lda #$00 sta var0 ;starszy bajt do konwersji lda #$00 sta var1 ;młodszy bajt do konwersji lda #$00 ldx #$05 ConWD0: sta textbuf,X dex bpl ConWD0 ldx #$10 ConWD1: asl var1 rol var0 txa pha ;odkładanie A na stos ldx #$04 ConWD2: ldy textbuf,X lda ConWD4,Y rol A sta textbuf,X dex bne ConWD2 rol textbuf pla ;przywracanie A ze stosu tax dex bne ConWD1 ConWD3: lda textbuf,X clc adc #$30 sta textbuf,X ;wyjście danych inx cpx #$05 bne ConWD3 rts ConWD4: .db $00,$01,$02,$03,$04,$80,$81,$82,$83,$84 ;Maksymalna wartość liczby wyjściowej: "65535" ($FFFF) ;Rozmiar: 78 B, linii kodu: 35
Con16D: lda #$00 sta var0 ;starszy bajt do konwersji lda #$00 sta var1 ;młodszy bajt do konwersji ldx #$04 ;maksymalna liczba cyfr (-1 cyfra) Con16D0: ldy #$11 ;liczba bitów do konwersji (+1 bit) lda #$00 clc Con16D1: rol A cmp #$0A bcc Con16D2 sbc #$0A Con16D2: rol var1 rol var0 dey bne Con16D1 clc adc #$30 sta textbuf,X dex bpl Con16D0 sty textbuf+5 ;wyjście danych rts ;Maksymalna wartość liczby wyjściowej: "65535" ($FFFF) ;Rozmiar: 46 B, linii kodu: 23
Con24D: lda #$00 sta var0 ;najstarszy bajt do konwersji lda #$00 sta var1 lda #$00 sta var2 ;najmłodszy bajt do konwersji ldx #$07 ;maksymalna liczba cyfr (-1 cyfra) Con24D0: ldy #$19 ;liczba bitów do konwersji (+1 bit) lda #$00 clc Con24D1: rol A cmp #$0A bcc Con24D2 sbc #$0A Con24D2: rol var2 rol var1 rol var0 dey bne Con24D1 clc adc #$30 sta textbuf,X dex bpl Con24D0 sty textbuf+8 ;wyjście danych rts ;Maksymalna wartość liczby wyjściowej: "16777215" ($FFFFFF) ;Rozmiar: 54 B, linii kodu: 26
Con32D: lda #$00 sta var0 ;najstarszy bajt do konwersji lda #$00 sta var1 lda #$00 sta var2 lda #$00 sta var3 ;najmłodszy bajt do konwersji ldx #$09 ;maksymalna liczba cyfr (-1 cyfra) Con32D0: ldy #$21 ;liczba bitów do konwersji (+1 bit) lda #$00 clc Con32D1: rol A cmp #$0A bcc Con32D2 sbc #$0A Con32D2: rol var3 rol var2 rol var1 rol var0 dey bne Con32D1 clc adc #$30 sta textbuf,X dex bpl Con32D0 sty textbuf+10 ;wyjście danych rts ;Maksymalna wartość liczby wyjściowej: "4294967295" ($FFFFFFFF) ;Rozmiar: 62 B, linii kodu: 29
ConBO: lda #$00 ;bajt do konwersji ldx #$00 ConBO0: ldy #$2F clc adc ConBO2,X ConBO1: iny sec sbc ConBO2,X cmp ConBO2,X bcs ConBO1 pha ;odkładanie A na stos tya sta textbuf,X pla ;przywracanie A ze stosu inx cpx #$03 bne ConBO0 lda #$00 sta textbuf,X ;wyjście danych rts ConBO2: .db $40,$08,$01 ;Maksymalna wartość liczby wyjściowej: "377" ($FF) ;Rozmiar: 40 B, linii kodu: 21
ConBOs: lda #$00 ;bajt do konwersji ldy #$2F ldx #$38 sec ConBOs0: iny sbc #$40 bcs ConBOs0 ConBOs1: dex adc #$08 bmi ConBOs1 adc #$2F sty textbuf stx textbuf+1 sta textbuf+2 lda #$00 sta textbuf+3 ;wyjście danych rts ;Maksymalna wartość liczby wyjściowej: "377" ($FF) ;Rozmiar: 34 B, linii kodu: 17
Con8O: lda #$00 sta var0 ;bajt do konwersji ldx #$02 ;maksymalna liczba cyfr (-1 cyfra) Con8O0: ldy #$09 ;liczba bitów do konwersji (+1 bit) lda #$00 clc Con8O1: rol A cmp #$08 bcc Con8O2 sbc #$08 Con8O2: rol var0 dey bne Con8O1 clc adc #$30 sta textbuf,X dex bpl Con8O0 sty textbuf+3 ;wyjście danych rts ;Maksymalna wartość liczby wyjściowej: "377" ($FF) ;Rozmiar: 38 B, linii kodu: 20
Con16O: lda #$00 sta var0 ;starszy bajt do konwersji lda #$00 sta var1 ;młodszy bajt do konwersji ldx #$05 ;maksymalna liczba cyfr (-1 cyfra) Con16O0: ldy #$11 ;liczba bitów do konwersji (+1 bit) lda #$00 clc Con16O1: rol A cmp #$08 bcc Con16O2 sbc #$08 Con16O2: rol var1 rol var0 dey bne Con16O1 clc adc #$30 sta textbuf,X dex bpl Con16O0 sty textbuf+6 ;wyjście danych rts ;Maksymalna wartość liczby wyjściowej: "177777" ($FFFF) ;Rozmiar: 46 B, linii kodu: 23
Con24O: lda #$00 sta var0 ;najstarszy bajt do konwersji lda #$00 sta var1 lda #$00 sta var2 ;najmłodszy bajt do konwersji ldx #$07 ;maksymalna liczba cyfr (-1 cyfra) Con24O0: ldy #$19 ;liczba bitów do konwersji (+1 bit) lda #$00 clc Con24O1: rol A cmp #$08 bcc Con24O2 sbc #$08 Con24O2: rol var2 rol var1 rol var0 dey bne Con24O1 clc adc #$30 sta textbuf,X dex bpl Con24O0 sty textbuf+8 ;wyjście danych rts ;Maksymalna wartość liczby wyjściowej: "77777777" ($FFFFFF) ;Rozmiar: 54 B, linii kodu: 26
Con32O: lda #$00 sta var0 ;najstarszy bajt do konwersji lda #$00 sta var1 lda #$00 sta var2 lda #$00 sta var3 ;najmłodszy bajt do konwersji ldx #$0A ;maksymalna liczba cyfr (-1 cyfra) Con32O0: ldy #$21 ;liczba bitów do konwersji (+1 bit) lda #$00 clc Con32O1: rol A cmp #$08 bcc Con32O2 sbc #$08 Con32O2: rol var3 rol var2 rol var1 rol var0 dey bne Con32O1 clc adc #$30 sta textbuf,X dex bpl Con32O0 sty textbuf+11 ;wyjście danych rts ;Maksymalna wartość liczby wyjściowej: "37777777777" ($FFFFFFFF) ;Rozmiar: 62 B, linii kodu: 29
ConBH: lda #$00 ;bajt do konwersji ldx #$00 ConBH0: tay cpx #$00 bne ConBH1 and #$F0 ror A ror A ror A ror A ConBH1: and #$0F clc adc #$30 cmp #$3A bmi ConBH2 clc adc #$07 ;adc #$27 - małe litery (a-f) ConBH2: sta textbuf,X tya inx cpx #$02 bne ConBH0 lda #$00 sta textbuf,X ;wyjście danych rts ;Maksymalna wartość liczby wyjściowej: "FF" ($FF) ;Procedura generuje duże lub małe litery (a-f) ;Rozmiar: 42 B, linii kodu: 25
ConBB: lda #$00 ;bajt do konwersji ldx #$00 ConBB0: rol A tay lda #$30 bcc ConBB1 lda #$31 ConBB1: sta textbuf,X tya inx cpx #$08 ;liczba bitów do konwersji bne ConBB0 lda #$00 sta textbuf,X ;wyjście danych rts ;Maksymalna wartość liczby wyjściowej: "11111111" ($FF) ;Rozmiar: 27 B, linii kodu: 15
Add168: clc lda var1 ;młodszy bajt słowa adc #$01 ;bajt NN sta var1 ;młodszy bajt wyniku bcc Add168a inc var0 ;starszy bajt słowa/wyniku Add168a: rts ;Z=1 i C=1 jeśli wynik >65535 ;Rozmiar: 15 B, linii kodu: 7
Add168: clc lda var1 ;młodszy bajt słowa adc #$01 ;bajt NN sta var1 ;młodszy bajt wyniku lda var0 ;starszy bajt słowa adc #$00 sta var0 ;starszy bajt wyniku rts ;C=1 jeśli wynik >65535 ;Rozmiar: 18 B, linii kodu: 8
Add1616: clc lda var1 ;młodszy bajt 1 słowa adc var3 ;młodszy bajt 2 słowa sta var1 ;młodszy bajt wyniku lda var0 ;starszy bajt 1 słowa adc var2 ;starszy bajt 2 słowa sta var0 ;starszy bajt wyniku rts ;C=1 jeśli wynik >65535 ;Rozmiar: 20 B, linii kodu: 8
Add248: clc lda var2 ;najmłodszy bajt wartości adc #$01 ;bajt NN sta var2 ;najmłodszy bajt wyniku bcc Add248a inc var1 bne Add248a inc var0 ;najstarszy bajt wartości/wyniku Add248a: rts ;Z=1 i C=1 jeśli wynik >16777215 ;Rozmiar: 20 B, linii kodu: 9
Add248: clc lda var2 ;najmłodszy bajt wartości adc #$01 ;bajt NN sta var2 ;najmłodszy bajt wyniku lda var1 adc #$00 sta var1 lda var0 ;najstarszy bajt wartości adc #$00 sta var0 ;najstarszy bajt wyniku rts ;C=1 jeśli wynik >16777215 ;Rozmiar: 26 B, linii kodu: 11
Add2416: clc lda var2 ;najmłodszy bajt wartości adc var4 ;młodszy bajt słowa sta var2 ;najmłodszy bajt wyniku lda var1 adc var3 ;starszy bajt słowa sta var1 bcc Add2416a inc var0 ;najstarszy bajt wartości/wyniku Add2416a: rts ;Z=1 i C=1 jeśli wynik >16777215 ;Rozmiar: 25 B, linii kodu: 10
Add2416: clc lda var2 ;najmłodszy bajt wartości adc var4 ;młodszy bajt słowa sta var2 ;najmłodszy bajt wyniku lda var1 adc var3 ;starszy bajt słowa sta var1 lda var0 ;najstarszy bajt wartości adc #$00 sta var0 ;najstarszy bajt wyniku rts ;C=1 jeśli wynik >16777215 ;Rozmiar: 28 B, linii kodu: 11
Add2424: clc lda var2 ;najmłodszy bajt 1 wartości adc var5 ;najmłodszy bajt 2 wartości sta var2 ;najmłodszy bajt wyniku lda var1 adc var4 sta var1 lda var0 ;najstarszy bajt 1 wartości adc var3 ;najstarszy bajt 2 wartości sta var0 ;najstarszy bajt wyniku rts ;C=1 jeśli wynik >16777215 ;Rozmiar: 29 B, linii kodu: 11
Add328: clc lda var3 ;najmłodszy bajt wartości adc #$01 ;bajt NN sta var3 ;najmłodszy bajt wyniku bcc Add328a inc var2 bne Add328a inc var1 bne Add328a inc var0 ;najstarszy bajt wartości/wyniku Add328a: rts ;Z=1 i C=1 jeśli wynik >4294967295 ;Rozmiar: 25 B, linii kodu: 11
Add328: clc lda var3 ;najmłodszy bajt wartości adc #$01 ;bajt NN sta var3 ;najmłodszy bajt wyniku lda var2 adc #$00 sta var2 lda var1 adc #$00 sta var1 lda var0 ;najstarszy bajt wartości adc #$00 sta var0 ;najstarszy bajt wyniku rts ;C=1 jeśli wynik >4294967295 ;Rozmiar: 34 B, linii kodu: 14
Add3216: clc lda var3 ;najmłodszy bajt wartości adc var5 ;młodszy bajt słowa sta var3 ;najmłodszy bajt wyniku lda var2 adc var4 ;starszy bajt słowa sta var2 bcc Add3216a inc var1 bne Add3216a inc var0 ;najstarszy bajt wartości/wyniku Add3216a: rts ;Z=1 i C=1 jeśli wynik >4294967295 ;Rozmiar: 30 B, linii kodu: 12
Add3216: clc lda var3 ;najmłodszy bajt wartości adc var5 ;młodszy bajt słowa sta var3 ;najmłodszy bajt wyniku lda var2 adc var4 ;starszy bajt słowa sta var2 lda var1 adc #$00 sta var1 lda var0 ;najstarszy bajt wartości adc #$00 sta var0 ;najstarszy bajt wyniku rts ;C=1 jeśli wynik >4294967295 ;Rozmiar: 36 B, linii kodu: 14
Add3224: clc lda var3 ;najmłodszy bajt 1 wartości adc var6 ;najmłodszy bajt 2 wartości sta var3 ;najmłodszy bajt wyniku lda var2 adc var5 sta var2 lda var1 adc var4 ;najstarszy bajt 2 wartości sta var1 bcc Add3224a inc var0 ;najstarszy bajt 1 wartości/wyniku Add3224a: rts ;Z=1 i C=1 jeśli wynik >4294967295 ;Rozmiar: 34 B, linii kodu: 13
Add3224: clc lda var3 ;najmłodszy bajt 1 wartości adc var6 ;najmłodszy bajt 2 wartości sta var3 ;najmłodszy bajt wyniku lda var2 adc var5 sta var2 lda var1 adc var4 ;najstarszy bajt 2 wartości sta var1 lda var0 ;najstarszy bajt 1 wartości adc #$00 sta var0 ;najstarszy bajt wyniku rts ;C=1 jeśli wynik >4294967295 ;Rozmiar: 37 B, linii kodu: 14
Add3232: clc lda var3 ;najmłodszy bajt 1 wartości adc var7 ;najmłodszy bajt 2 wartości sta var3 ;najmłodszy bajt wyniku lda var2 adc var6 sta var2 lda var1 adc var5 sta var1 lda var0 ;najstarszy bajt 1 wartości adc var4 ;najstarszy bajt 2 wartości sta var0 ;najstarszy bajt wyniku rts ;C=1 jeśli wynik >4294967295 ;Rozmiar: 38 B, linii kodu: 14
Sub168: sec lda var1 ;młodszy bajt słowa sbc #$01 ;bajt NN sta var1 ;młodszy bajt wyniku bcs Sub168a dec var0 ;starszy bajt słowa/wyniku Sub168a: rts ;Rozmiar: 15 B, linii kodu: 7
Sub168: sec lda var1 ;młodszy bajt słowa sbc #$01 ;bajt NN sta var1 ;młodszy bajt wyniku lda var0 ;starszy bajt słowa sbc #$00 sta var0 ;starszy bajt wyniku rts ;C=0 jeśli wynik <0 ;Rozmiar: 18 B, linii kodu: 8
Sub1616: sec lda var1 ;młodszy bajt 1 słowa sbc var3 ;młodszy bajt 2 słowa sta var1 ;młodszy bajt wyniku lda var0 ;starszy bajt 1 słowa sbc var2 ;starszy bajt 2 słowa sta var0 ;starszy bajt wyniku rts ;C=0 jeśli wynik <0 ;Rozmiar: 20 B, linii kodu: 8
Sub248: sec lda var2 ;najmłodszy bajt wartości sbc #$01 ;bajt NN sta var2 ;najmłodszy bajt wyniku lda var1 sbc #$00 sta var1 bcs Sub248a dec var0 ;najstarszy bajt wartości/wyniku Sub248a: rts ;Rozmiar: 23 B, linii kodu: 10
Sub248: sec lda var2 ;najmłodszy bajt wartości sbc #$01 ;bajt NN sta var2 ;najmłodszy bajt wyniku lda var1 sbc #$00 sta var1 lda var0 ;najstarszy bajt wartości sbc #$00 sta var0 ;najstarszy bajt wyniku rts ;C=0 jeśli wynik <0 ;Rozmiar: 26 B, linii kodu: 11
Sub2416: sec lda var2 ;najmłodszy bajt wartości sbc var4 ;młodszy bajt słowa sta var2 ;najmłodszy bajt wyniku lda var1 sbc var3 ;starszy bajt słowa sta var1 bcs Sub2416a dec var0 ;najstarszy bajt wartości/wyniku Sub2416a: rts ;Rozmiar: 25 B, linii kodu: 10
Sub2416: sec lda var2 ;najmłodszy bajt wartości sbc var4 ;młodszy bajt słowa sta var2 ;najmłodszy bajt wyniku lda var1 sbc var3 ;starszy bajt słowa sta var1 lda var0 ;najstarszy bajt wartości sbc #$00 sta var0 ;najstarszy bajt wyniku rts ;C=0 jeśli wynik <0 ;Rozmiar: 28 B, linii kodu: 11
Sub2424: sec lda var2 ;najmłodszy bajt 1 wartości sbc var5 ;najmłodszy bajt 2 wartości sta var2 ;najmłodszy bajt wyniku lda var1 sbc var4 sta var1 lda var0 ;najstarszy bajt 1 wartości sbc var3 ;najstarszy bajt 2 wartości sta var0 ;najstarszy bajt wyniku rts ;C=0 jeśli wynik <0 ;Rozmiar: 29 B, linii kodu: 11
Sub328: sec lda var3 ;najmłodszy bajt wartości sbc #$01 ;bajt NN sta var3 ;najmłodszy bajt wyniku lda var2 sbc #$00 sta var2 lda var1 sbc #$00 sta var1 bcs Sub328a dec var0 ;najstarszy bajt wartości/wyniku Sub328a: rts ;Rozmiar: 31 B, linii kodu: 13
Sub328: sec lda var3 ;najmłodszy bajt wartości sbc #$01 ;bajt NN sta var3 ;najmłodszy bajt wyniku lda var2 sbc #$00 sta var2 lda var1 sbc #$00 sta var1 lda var0 ;najstarszy bajt wartości sbc #$00 sta var0 ;najstarszy bajt wyniku rts ;C=0 jeśli wynik <0 ;Rozmiar: 34 B, linii kodu: 14
Sub3216: sec lda var3 ;najmłodszy bajt wartości sbc var5 ;młodszy bajt słowa sta var3 ;najmłodszy bajt wyniku lda var2 sbc var4 ;starszy bajt słowa sta var2 lda var1 sbc #$00 sta var1 bcs Sub3216a dec var0 ;najstarszy bajt wartości/wyniku Sub3216a: rts ;Rozmiar: 33 B, linii kodu: 13
Sub3216: sec lda var3 ;najmłodszy bajt wartości sbc var5 ;młodszy bajt słowa sta var3 ;najmłodszy bajt wyniku lda var2 sbc var4 ;starszy bajt słowa sta var2 lda var1 sbc #$00 sta var1 lda var0 ;najstarszy bajt wartości sbc #$00 sta var0 ;najstarszy bajt wyniku rts ;C=0 jeśli wynik <0 ;Rozmiar: 36 B, linii kodu: 14
Sub3224: sec lda var3 ;najmłodszy bajt 1 wartości sbc var6 ;najmłodszy bajt 2 wartości sta var3 ;najmłodszy bajt wyniku lda var2 sbc var5 sta var2 lda var1 sbc var4 ;najstarszy bajt 2 wartości sta var1 bcs Sub3224a dec var0 ;najstarszy bajt 1 wartości/wyniku Sub3224a: rts ;Rozmiar: 34 B, linii kodu: 13
Sub3224: sec lda var3 ;najmłodszy bajt 1 wartości sbc var6 ;najmłodszy bajt 2 wartości sta var3 ;najmłodszy bajt wyniku lda var2 sbc var5 sta var2 lda var1 sbc var4 ;najstarszy bajt 2 wartości sta var1 lda var0 ;najstarszy bajt 1 wartości sbc #$00 sta var0 ;najstarszy bajt wyniku rts ;C=0 jeśli wynik <0 ;Rozmiar: 37 B, linii kodu: 14
Sub3232: sec lda var3 ;najmłodszy bajt 1 wartości sbc var7 ;najmłodszy bajt 2 wartości sta var3 ;najmłodszy bajt wyniku lda var2 sbc var6 sta var2 lda var1 sbc var5 sta var1 lda var0 ;najstarszy bajt 1 wartości sbc var4 ;najstarszy bajt 2 wartości sta var0 ;najstarszy bajt wyniku rts ;C=0 jeśli wynik <0 ;Rozmiar: 38 B, linii kodu: 14
Mul88: lda #$00 clc ldx #$08 Mul88a: bcc Mul88b clc adc var0 ;bajt 1 Mul88b: ror A ror var1 ;bajt 2, młodszy bajt wyniku dex bpl Mul88a sta var0 ;starszy bajt wyniku rts ;Rozmiar: 22 B, linii kodu: 12
Mul1616: lda #$00 sta var1 clc ldx #$10 Mul1616a: bcc Mul1616b clc lda var1 adc var5 ;młodszy bajt 1 słowa sta var1 lda var0 adc var4 ;starszy bajt 1 słowa Mul1616b: ror A sta var0 ;najstarszy bajt wyniku ror var1 ror var2 ;starszy bajt 2 słowa ror var3 ;młodszy bajt 2 słowa, najmłodszy bajt wyniku dex bpl Mul1616a rts ;Rozmiar: 43 B, linii kodu: 19
Div88: lda #$00 ldx #$08 Div88a: asl var0 ;bajt 1 rol A ;bajt z niepodzieloną resztą cmp var1 ;bajt 2 bcc Div88b inc var0 ;bajt wyniku sbc var1 Div88b: dex bne Div88a rts ;Jeśli var1 (bajt 2) > var0 (bajt 1): wynik = $00, reszta = var0 (bajt 1). ;Po dzieleniu przez 0: wynik = $FF, reszta = var0 (bajt 1) (0/0 i 255/1 dają taki sam rezultat). ;Rozmiar: 23 B, linii kodu: 11
Div1616: lda #$00 sta var4 sta var5 ldx #$10 Div1616a: asl var1 ;młodszy bajt 1 słowa/wyniku rol var0 ;starszy bajt 1 słowa/wyniku rol var5 ;młodszy bajt słowa z niepodzieloną resztą rol var4 ;starszy bajt słowa z niepodzieloną resztą sec lda var5 sbc var3 ;młodszy bajt 2 słowa tay lda var4 sbc var2 ;starszy bajt 2 słowa bcc Div1616b inc var1 sty var5 sta var4 Div1616b: dex bne Div1616a rts ;Jeśli [var2, var3] (słowo 2) > [var0, var1] (słowo 1): wynik = $0000, reszta = [var0, var1] (słowo 1). ;Po dzieleniu przez 0: wynik = $FFFF, reszta = [var0, var1] (słowo 1) (0/0 i 65535/1 dają taki sam ;rezultat). ;Rozmiar: 51 B, linii kodu: 21
LenStr: ldx #$FF LenStr0: inx ;liczba znaków (maks. 255) lda textbuf,X bne LenStr0 rts ;Rozmiar: 9 B, linii kodu: 5
DelZero: ldx #$FF ldy #$FF DelZero0: inx lda textbuf,X beq DelZero3 cmp #$30 beq DelZero0 dex cpx #$FF beq DelZero2 DelZero1: inx iny lda textbuf,X sta textbuf,Y bne DelZero1 DelZero2: rts DelZero3: sta textbuf+1 rts ;Rozmiar: 34 B, linii kodu: 18
ClrZero: ldx #$00 lda textbuf,X ClrZero0: cmp #$30 beq ClrZero1 rts ClrZero1: lda #$20 ;znak spacji sta textbuf,X inx lda textbuf,X bne ClrZero0 lda #$30 dex sta textbuf,X rts ;Rozmiar: 28 B, linii kodu: 14
CPUtype: ldx #$FF CPUtype0: inx ;kopiowanie ciągu ASCIIZ do wyjścia danych lda CPUtype2,X sta textbuf,X bne CPUtype0 sed ;sprawdzanie typu procesora lda #$99 clc adc #$01 cld bne CPUtype1 ;typ NMOS lda #$43 sta textbuf+10 ;zmiana 11 znaku ciągu ASCIIZ CPUtype1: rts CPUtype2: .db "CPU type: NMOS",0 ;Rozmiar: 41 B, linii kodu: 15
RegP: php ;odkładanie P na stos ldx #$00 ldy #$FF RegP0: iny lda RegP2,X sta textbuf,Y iny lda #$3A sta textbuf,Y iny pla ;załadowanie P ze stosu do A rol A pha ;odkładanie A na stos lda #$30 bcc RegP1 lda #$31 RegP1: sta textbuf,Y iny lda #$20 sta textbuf,Y inx cpx #$08 bne RegP0 lda #$00 sta textbuf,Y pla ;przywracanie A ze stosu rts RegP2: .db "NV-BDIZC" ;Rozmiar: 57 B, linii kodu: 28