2016-04-09 10 views
-2

programı: o + düğmesine sona ardından basılana kadar beklemek gerekiyorduzorlanıyor TI-83 + z80 altıgen bu hex kodunu çalışan bir AsmProgram yapılan

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 

ama görünmüyor çalışıyor.

+1

Bu hex dökümü ne yapması gerekiyor? Z80 makine kodu gibi görünmüyor. – usr2564301

+0

@RadLexus,

: çiftlerine benziyor. AsmPrgm' nin adresleri hatırlamasına izin vermeyin. –

+0

@Ilja: evet bunu anlıyorum. Ancak bu hex döküntünün kod kısmı Z80 kodu gibi görünmüyor. Öyle olsa bile: biz bu işi kendimiz halletmeliyiz, oysa OP * * bir yere doğru montajı var mı? (Kesinlikle?) – usr2564301

cevap

4

Ancak bu kadar söyleyebilirim orijinal kod şöyledir: Yani

 .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 

Sonuçta, (yanlış ROM çağrısını ve aşırı dolambaçlı çağırarak) gidip almak onlar anahtar kodu kontrol kısmı yanlış . İşte işe yaradı ne:

 .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 

veya hex: Yazdığınız

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

Ben sadece ti-84 için olduğu tahmin edilen bir b_call şeması kullanıyorum, bu yüzden getkey dispand ile değiştirildi. ti-83 için iyi bir b_call hex listesi nerede? –

+0

http://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4972 bulundu, ancak 83+ için. –

1

programı TI-83 +/84 +/SE modeli hesap makineleri için aslında. Hedeflediğiniz hedef TI-83 için. değiştirmeniz gereken üç temel öğe vardır:

    de .org $ 9327 kodunuzu başlayın
  • değil $ 9D95
  • () sadece sistem çağrıları s hiçbir bcall bulunmamaktadır. Ben

    .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 
    

    : Yerine bcall (_GetCSC) size en bir örnek program yapalım, sen bütün bu olan ti83asm.inc yerine ti83plus.inc ait

Yani gerek _GetCSC

  • diyorsunuz ediyorum ve asla TI-83 için programlanmadı, bu yüzden okuduğum derslerden umarım birlikte çalışma kodunu birleştirdim.

  • İlgili konular