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. |