[elektro-etc] a kiirt versenyrol

Erdos Zoltan silverst at t-online.hu
Sun Oct 10 22:28:32 CEST 2010


Hali!

par napja irtam, hogy versenyt ajanlok a legkisebb mukodteto program 
megirasara Z 80 alapon.

sajnos a kiirasra egyetlen megoldas sem erkezet..
a hatarido most lejart.

en megcsinaltam gyorsan. egybol el is kuldtem az erintettnek..
kb 2 ora alatt ugy, hogy a z80 assembly-t mar reg elfelejtettem.
amire emlekeztem az a specialis rutinhivo (RST) utasitas (amivel lehet 
byte-okat sporolni)

tehat egy vazlatos megoldas:

;
; Z80 minimal sys
;
; reset (3)
rst0: rst   1    ; beolvas egy 4 jegyu cimet a billentyuzetrol a (hl) 
regiszterbe
       jp    (hl) ; programvegrehajtas a HL altal meghatarozott helyrol
;
; input 4 digit to hl
;       (5)
rst1: rst   2    ; beolvas egy 2 jegyu erteket a billentyuzetrol az A 
regiszterbe
       mov h,a    ; elpakolja a H regiszterbe
       rst   2    ; beolvas egy 2 jegyu erteket a billentyuzetrol az A 
regiszterbe
       mov l,a    ; elpakolja az L regiszterbe
       ret        ; es visszamegy a hivo helyre
;
; input 2 char to A
;       (7)
rst2: rst   3    ; beolvas egy 4 bites erteket az A regiszterbe
       rld   a    ; 4 bittel feltolja a beolvasottat a byte felso felebe
       mov   b,a  ; es felremasolja B-be
       rst   3    ; beolvas egy 4 bites erteket az A regiszterbe
       or    a,b  ; es osszefesuli B-vel
       ret        ; es vissza
;
; input digit to A low side
;        (10)
rst3: in  a,port ; hexa billentyuzet beolvasas
       and a,#80  ; a legfelso bit a lenyomas indikator
       jz  rst3   ; ha nincs semmi nyomva, varakozik (ujra olvasgat)
       in  a,port ; ervenyes lenyomas beolvasasa
       and a,#0F  ; ertek kivagasa (szam csak az also felen lehet)
       ret
;
;
;
; display memory location, and modify
;   (input 4 digit, display, increment or input data and write
;         (27)
memo:  rst  1      ; beolvas 4 karakteres cimet a hl regiszterbe
memo2: mov  a,(hl) ; beolvassa a memoriabol a cim tartalmat az akkuba
        out  port,a ; es kiirja a ledekre
                    ;
memo3: in   a,port ; beolvassa a billentyu allapotot
        and a,#80   ; a legfelso bit a lenyomas indikator
        jz   memo3  ; megvarjuk, mig elengedik (ujra olvasgat)
        in   a,port ; beolvassa a billentyu allapotot
        and  a,#20  ; a b6-on van a cimnovelo gomb
        jnz  nexta  ; ha az van lenyomva, kovetkezo cim
        rst  2      ; ha nem leptetes, akkor beolvas erteket
        mov  (hl),a ; es tarol,
                    ; majd lep a kovetkezo cimre
;
nexta: inc hl      ; noveljuk a cimet
next1: in  a,port  ; hexa billentyuzet beolvasas
        and a,#80   ; a legfelso bit a lenyomas indikator
        jnz next1   ; megvarjuk, mig elengedik (ujra olvasgat)
        jr  memo2   ; es ujra kijelezzuk
;
;



More information about the Elektro-etc mailing list