2016-04-09 10 views
-2

ich ein AsmProgram gemacht, die diesen Hex-Code lautet:Probleme mit TI-83 + z80 hex Programm

9D95:00 
9D96:00 
9D97:00 
9D98:00 
9D99:0E 
9D9A:09 
9D9B:3E 
9D9C:00 
9D9D:EF 
9D9E:5D 
9D9F:49 
9DA0:06 
9DA1:80 
9DA2:A8 
9DA3:CB 
9DA4:47 
9DA5:CB 
9DA6:0F 
9DA7:CA 
9DA8:95 
9DA9:9D 
9DAA:10 
9DAB:F9 
9DAC:C9 

es sollte warten, bis die + Taste gedrückt wird dann am Ende, aber es scheint nicht zu arbeite.

+1

Was soll dieser Hex-Dump tun? Es sieht nicht wie Z80-Maschinencode aus. – usr2564301

+0

@RadLexus sieht wie

aus: Paare. Erinnere dich nicht an 'AsmPrgm', obwohl Adressen erlaubt sind. –

+0

@Ilja: Ja, das ist mir klar. Aber der Code-Teil dieses Hex-Dumps sieht nicht wie Z80-Code aus. Auch wenn es so ist: sollen wir das selbst zerlegen, während das OP * irgendwo die richtige Montage hat? (Sicher?) – usr2564301

Antwort

4

Dies ist Ihr Original-Code, soweit ich sagen kann:

 .org 9D95h 
     nop 
     nop 
     nop 
     nop 
     ld c, 09h  ; ??? 
     ld a, 0   ; ??? 
     rst 28h   ; \ 
     .db 5Dh   ; > DispTail, destroys AF, BC, DE, HL, aka 
     .db 49H   ;/undefined behaviour in this case (we don't 
         ; know what A contains) 
     ld b, 80h  ; B <- 0x80 
     xor b   ; A <- A XOR B 
     bit 0, a  ; A[0] == 0, Z is set, if so 
loop: rrc a   ; rotate right A, C <- A[0] 
     jp z, 9D95h  ; Jump to 9D95, if Z set 
     djnz loop  ; Decrease B, jump if not zero to loop 
     ret    ; After 128 jumps, returns 

Also alles in allem, sie Schlüsselcode Überprüfung Teil falsch war aus der sich gehen (die falsche ROM Aufruf aufrufen und übermäßig gewundenen) . Hier ist, was schien zu funktionieren:

 .org 9D95h 
     rst 28h   ; \ 
     .db 72h   ; > Call GetKey, A <- key code 
     .db 49h   ;/
     cp 80h   ; Compare A with immediate value 0x80 (subtract), 
         ; key code for [+] is 0x80 
     jp nz, 9D95h ; Jump if Z is not set (was not 0x80) 
     ret    ; return 

oder in hex:

EF 72 49 FE 80 C2 95 9D C9 
+0

Ich habe ein B_Call-Diagramm verwendet, das ich denke, ist nur für den Ti-84 gedacht, also wurde getkey durch disptail ersetzt. Wo ist eine gute b_call Hex-Liste für ti-83? –

+0

Gefunden http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4972, obwohl es für die 83+ ist. –

1

Das Programm, das Sie geschrieben hat, ist im Wesentlichen für den TI-83 +/84 +/SE-Modell-Rechner. Ihr beabsichtigtes Ziel war für den TI-83. Es gibt drei wichtigsten Dinge, die Sie ändern müssen:

    Code bei .org 9327 $ starten
  • , nicht 9D95 $
  • Es gibt keine bCall() ist nur Systemaufrufe. Statt bCall (_GetCSC) Sie _GetCSC nennen würden Sie
  • Sie benötigen ti83asm.inc statt ti83plus.inc

So mit allem, lassen Sie uns ein Beispiel-Programm machen:

.NOLIST 
#define equ .equ 
#define EQU .equ 
#define end .end 
#include "ti83asm.inc" 
#include "tokens.inc" 
.LIST 
.org 9327h 
start: 
    call _GetKey ;CDFE4C 
    cp 80h  ;FE80 
    jr nz,start ;20F9 
    ret   ;C9 

I‘ Ich habe nie für den TI-83 programmiert, also hoffe ich aus den Tutorials, die ich gelesen habe, dass ich funktionierenden Code zusammensetze.