Robotrontechnik-Forum

Registrieren || Einloggen || Hilfe/FAQ || Suche || Mitglieder || Home || Statistik || Kalender || Admins Willkommen Gast! RSS

Robotrontechnik-Forum » Technische Diskussionen » JUTE: Programm Kopier-Fix » Themenansicht

Autor Thread - Seiten: -1-
000
14.02.2007, 17:25 Uhr
spakko



Hallo,

zum einfachen Kopieren von Speicherbereichen im JUTE überlasse ich Euch hier folgendes Programm im ASM-Quelltext:

Quellcode:
;Kopierfix
    .org %4000
Anfang:
    call    %08DD    ;Bildschirm löschen
    ld    %5A,#%4B    ;K
    call    %0827
    ld    %5A,#%4F    ;O
    call    %0827
    ld    %5A,#%50    ;P
    call    %0827
    ld    %5A,#%49    ;I
    call    %0827
    ld    %5A,#%45    ;E
    call    %0827
    ld    %5A,#%52    ;R
    call    %0827
    ld    %5A,#%2D    ;-
    call    %0827
    ld    %5A,#%46    ;F
    call    %0827
    ld    %5A,#%49    ;I
    call    %0827
    ld    %5A,#%58    ;X
    call    %0827
    call    %0ACE    ;neue Zeile
    call    %0ACE    ;neue Zeile
    ld    %5A,#%51    ;Q
    call    %0827
    ld    %5A,#%55    ;U
    call    %0827
    ld    %5A,#%45    ;E
    call    %0827
    ld    %5A,#%4C    ;L
    call    %0827
    ld    %5A,#%4C    ;L
    call    %0827
    ld    %5A,#%45    ;E
    call    %0827
    call    %0ACE    ;neue Zeile
    ld    %5A,#%56    ;V
    call    %0827
    ld    %5A,#%4F    ;O
    call    %0827
    ld    %5A,#%4E    ;N
    call    %0827
    ld    %5A,#%3A    ;:
    call    %0827
    ld    %2A,#%24    ;Quelle von
    call    Adresse_eingeben
    call    %0ACE    ;neue Zeile
    ld    %5A,#%42    ;B
    call    %0827
    ld    %5A,#%49    ;I
    call    %0827
    ld    %5A,#%53    ;S
    call    %0827
    ld    %5A,#%3A    ;:
    call    %0827
    ld    %2A,#%26    ;Quelle bis
    call    Adresse_eingeben
    call    %0ACE    ;neue Zeile
    ld    %5A,#%5A    ;Z
    call    %0827
    ld    %5A,#%49    ;I
    call    %0827
    ld    %5A,#%45    ;E
    call    %0827
    ld    %5A,#%4C    ;L
    call    %0827
    call    %0ACE    ;neue Zeile
    ld    %5A,#%56    ;V
    call    %0827
    ld    %5A,#%4F    ;O
    call    %0827
    ld    %5A,#%4E    ;N
    call    %0827
    ld    %5A,#%3A    ;:
    call    %0827
    ld    %2A,#%28    ;Ziel von
    call    Adresse_eingeben
    call    %0ACE    ;neue Zeile
    ld    %5A,#%42    ;B
    call    %0827
    ld    %5A,#%45    ;E
    call    %0827
    ld    %5A,#%52    ;R
    call    %0827
    ld    %5A,#%45    ;E
    call    %0827
    ld    %5A,#%49    ;I
    call    %0827
    ld    %5A,#%54    ;T
    call    %0827
    ld    %5A,#%3F    ;?
    call    %0827
    ;auf Taste warten
    call    %0C1D    ;Tastenabfrage
    ld    %22,%5A
    cp    %22,#%4A    ;J
    jr    Z,Kop_start
    ret
Kop_start:
    di                ;Los gehts
    push rp
    srp #%20
    incw    rr6        ;Damit auch die letzte Postion kopiert wird !
starten:
    ldc r0,@rr4
    lde @rr8,r0
    incw rr4
    incw rr8
    cp r6,r4
    jr nz,starten    ;oberer Teil nicht 0, dann weiter
    cp r7,r5
    jr nz,starten    ;unterer Teil nicht 0, dann weiter
    pop rp
    ei
    call    %08DD    ;Bildschirm löschen
    ld    %5A,#%46    ;F
    call    %0827
    ld    %5A,#%45    ;E
    call    %0827
    ld    %5A,#%52    ;R
    call    %0827
    ld    %5A,#%54    ;T
    call    %0827
    ld    %5A,#%49    ;I
    call    %0827
    ld    %5A,#%47    ;G
    call    %0827
    ld    %5A,#%21    ;!
    call    %0827
    call    %0ACE    ;neue Zeile
    ld    %5A,#%4E    ;N
    call    %0827
    ld    %5A,#%4F    ;O
    call    %0827
    ld    %5A,#%43    ;C
    call    %0827
    ld    %5A,#%48    ;H
    call    %0827
    ld    %5A,#%4D    ;M
    call    %0827
    ld    %5A,#%41    ;A
    call    %0827
    ld    %5A,#%4C    ;L
    call    %0827
    ld    %5A,#%3F    ;?
    call    %0827
    ;auf Taste warten
    call    %0C1D    ;Tastenabfrage
    ld    %22,%5A
    cp    %22,#%4A    ;J
    jp    Z,Anfang    
    ret
    
Taste_erkannt:
    ld    %5A,%22        ;Darstellen    
    call    %0827
    ld    @%2F,%20    ;Lade Zeichen in Zwischenspeicher
    dec    %2F            ;Stellenzeiger Zwischenspeicher
    srp    #%20
    djnz    r3,Tastenabfrage
    rl    %2E    ;1.Stelle
    rl    %2E
    rl    %2E
    rl    %2E
    and    %2E,#%F0
    rl    %2C    ;3.Stelle
    rl    %2C
    rl    %2C
    rl    %2C
    and    %2C,#%F0
    add    %2E,%2D    ;1.& 2.Stelle zusammenführen
    add    %2C,%2B    ;3.& 4.Stelle zusammenführen
    ld    @%2A,%2E    ;oberer Adressteil
    inc    %2A
    ld    @%2A,%2C    ;unterer Adressteil
    ret    

Adresse_eingeben:
    ld    %23,#%04        ;Stellenzähler auf 4
    ld    %2F,#%2E        ;Stellenzeiger
Tastenabfrage:
    call    %0C1D    ;Tastenabfrage
    ld    %22,%5A
    ld    %20,#%00
    cp    %22,#%30    ;0
    jp    Z,Taste_erkannt
    ld    %20,#%01
    cp    %22,#%31    ;1
    jp    Z,Taste_erkannt
    ld    %20,#%02
    cp    %22,#%32    ;2
    jp    Z,Taste_erkannt
    ld    %20,#%03
    cp    %22,#%33    ;3
    jp    Z,Taste_erkannt
    ld    %20,#%04
    cp    %22,#%34    ;4
    jp    Z,Taste_erkannt
    ld    %20,#%05
    cp    %22,#%35    ;5
    jp    Z,Taste_erkannt
    ld    %20,#%06
    cp    %22,#%36    ;6
    jp    Z,Taste_erkannt
    ld    %20,#%07
    cp    %22,#%37    ;7
    jp    Z,Taste_erkannt
    ld    %20,#%08
    cp    %22,#%38    ;8
    jp    Z,Taste_erkannt
    ld    %20,#%09
    cp    %22,#%39    ;9
    jp    Z,Taste_erkannt
    ld    %20,#%0A
    cp    %22,#%41    ;A
    jp    Z,Taste_erkannt
    ld    %20,#%0B
    cp    %22,#%42    ;B
    jp    Z,Taste_erkannt
    ld    %20,#%0C
    cp    %22,#%43    ;C
    jp    Z,Taste_erkannt
    ld    %20,#%0D
    cp    %22,#%44    ;D
    jp    Z,Taste_erkannt
    ld    %20,#%0E
    cp    %22,#%45    ;E
    jp    Z,Taste_erkannt
    ld    %20,#%0F
    cp    %22,#%46    ;F
    jp    Z,Taste_erkannt
    jp    Tastenabfrage

.end

Das Programm kann an beliebiger Stelle im RAM/ROM stehen, muß aber für jede gewünschte Startadresse neu übersetzt werden. In diesem Fall startet es ab Adresse %4000, also aus dem ROM auf Platz 3.

Erfahrungsberichte bitte hier mitteilen. Danke.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
Seiten: -1-     [ Technische Diskussionen ]  



Robotrontechnik-Forum

powered by ThWboard 3 Beta 2.84-php5
© by Paul Baecher & Felix Gonschorek