#include "ti82.h" #include "keys.inc" .org START_ADDR .db "Hex-Workshop82 v1.0 by BtC",0 number = TEXT_MEM binone = TEXT_MEM+4 bintwo = TEXT_MEM+8 binthree = TEXT_MEM+12 binfour = TEXT_MEM+16 ld a,0 ld (number),a ROM_CALL(CLEARLCD) ; guess ld hl,Back ; put background ld de, $88B8 ld bc, $300 ldir ROM_CALL(DISP_GRAPH) jr Main Down: ld hl,(number) dec hl ld (number),hl jr Main Up: ld hl,(number) inc hl ld (number),hl jr Main Stat: ld a,100 ld hl,(number) Statloop: dec hl dec a jr nz,Statloop ld (number),hl jr Main Del: ld bc,100 ld hl,(number) add hl,bc ld (number),hl Main: ld hl, (number) ld de,$0101 ld b,5 call Put_nbr call Binary ld hl,(binthree) ld de,$0801 ld b,4 call Put_nbr ld hl,(binfour) ld de,$0814 ld b,4 call Put_nbr ld hl,(binone) ld de,$0827 ld b,4 call Put_nbr ld hl,(bintwo) ld de,$083B ld b,4 call Put_nbr call Hexa Wait: call GET_KEY cp G_UP jr z,Up cp G_DOWN jr z,Down cp G_LEFT jr z,Plus cp G_RIGTH jr z,Min cp G_DEL jr z,Del cp G_STAT jr z,Stat cp G_CLEAR jr nz,Wait ret Plus: ld bc,10 ld hl,(number) add hl,bc ld (number),hl jr Main Min: ld a,10 ld hl,(number) Minloop: dec hl dec a jr nz,Minloop ld (number),hl jr Main Put_nbr: ; display the number and the binary numbers push DE ; Thanks to Cory R. Crooks LD DE,$802C Put_nbr_loop: CALL UNPACK_HL ADD A,$30 LD (DE),A DEC DE djnz Put_nbr_loop LD A,0 LD ($802D),A INC DE ex de,hl pop DE ld ($8215), de ROM_CALL(D_ZM_STR) ret Binary: ;convert (number) in four decimal ld hl,0 ;numbers stored in TEXT_MEM ld de,(number) ld a,e and %10000000 cp 0 jr z,Onehund ld bc,1000 add hl,bc Onehund: ld a,e and %01000000 cp 0 jr z,Onedec ld bc,100 add hl,bc Onedec: ld a,e and %00100000 cp 0 jr z,Oneunit ld bc,10 add hl,bc Oneunit: ld a,e and %00010000 cp 0 jr z,Twoth ld bc,1 add hl,bc Twoth: ld (binone),hl ld hl,0 ld bc,0 ld a,e and %00001000 cp 0 jr z,Twohund ld bc,1000 add hl,bc Twohund: ld a,e and %00000100 cp 0 jr z,Twodec ld bc,100 add hl,bc Twodec: ld a,e and %00000010 cp 0 jr z,Twounit ld bc,10 add hl,bc Twounit: ld a,e and %00000001 cp 0 jr z,Endbinone ld bc,1 add hl,bc Endbinone: ld (bintwo),hl ld hl,0 ld de,(number) ld a,d and %10000000 cp 0 jr z,Threehund ld bc,1000 add hl,bc Threehund: ld a,d and %01000000 cp 0 jr z,Threedec ld bc,100 add hl,bc Threedec: ld a,d and %00100000 cp 0 jr z,Threeunit ld bc,10 add hl,bc Threeunit: ld a,d and %00010000 cp 0 jr z,Fourth ld bc,1 add hl,bc Fourth: ld (binthree),hl ld hl,0 ld bc,0 ld a,d and %00001000 cp 0 jr z,Fourhund ld bc,1000 add hl,bc Fourhund: ld a,d and %00000100 cp 0 jr z,Fourdec ld bc,100 add hl,bc Fourdec: ld a,d and %00000010 cp 0 jr z,Fourunit ld bc,10 add hl,bc Fourunit: ld a,d and %00000001 cp 0 jr z,Endbin ld bc,1 add hl,bc Endbin: ld (binfour),hl ret Hexa: ; Convert number ( in fact the four ld a,4 ; binary numbers ) into hexadecimal ld de,$0F01 ; number. ld ($8215),de Comp: cp 4 call z,Ldfour cp 3 call z,Ldthree cp 2 call z,Ldtwo cp 1 call z,Ldone dec a ld c,a Hexdef: ld a,d cp 0 call z,Putzero cp 1 call z,Putone cp 10 call z,Puttwo cp 11 call z,Putthree cp 100 call z,Putfour cp 101 call z,Putfive cp 111 call z,Putseven cp 110 call z,Putsix cp 232 call z,Puteight cp 233 call z,Putnine cp 242 call z,Puta cp 243 call z,Putb cp 76 call z,Putc cp 77 call z,Putd cp 86 call z,Pute cp 87 call z,Putf ld a,b ROM_CALL(M_CHARPUT) ld a,c cp 0 jr z,Endhexa jr Comp Endhexa: ret Ldfour: ld hl,(binthree) ld d,l ret Ldthree: ld hl,(binfour) ld d,l ret Ldtwo: ld hl,(binone) ld d,l ret Ldone: ld hl,(bintwo) ld d,l ret Putone: ld b,'1' ret Putzero: ld b,'0' ret Puttwo: ld b,'2' ret Putthree: ld b,'3' ret Putfour: ld b,'4' ret Putfive: ld b,'5' ret Putsix: ld b,'6' ret Putseven: ld b,'7' ret Puteight: ld b,'8' ret Putnine: ld b,'9' ret Puta: ld b,'A' ret Putb: ld b,'B' ret Putc: ld b,'C' ret Putd: ld b,'D' ret Pute: ld b,'E' ret Putf: ld b,'F' ret Back: ;guess... .db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 .db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 .db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 .db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 .db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 .db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 .db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 .db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 .db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 .db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 .db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,255,254,0,0,0,0,0,0,0,0,0,127,255,255 .db 248,0,0,0,0,0,0,0,3,255,156,255,255,0,0,0,0,0,0,0,31,255,57,255,255,224,0,0,0,0,0 .db 0,127,255,57,255,255,248,0,0,0,0,0,0,255,254,115,9,63,252,0,0,132,16,0,3,255,254,2,97,63,255 .db 0,0,72,16,0,7,255,252,228,8,255,255,131,134,76,32,16,15,255,252,228,248,255,255,193,201,54,33,224,31,255 .db 249,201,132,255,255,224,105,166,78,64,31,255,249,204,36,255,255,224,95,191,241,128,63,255,255,255,255,255,255,240,32 .db 112,134,0,63,255,255,255,255,255,255,240,30,32,120,0,63,159,231,252,255,159,255,240,79,38,120,120,63,63,207,249 .db 255,63,255,240,39,198,127,128,63,153,159,249,255,63,255,240,18,64,64,0,63,51,48,130,98,12,32,240,28,33,207 .db 192,31,51,38,16,200,33,134,96,13,190,59,32,31,0,204,35,204,195,12,227,231,200,16,16,15,0,204,33,228,195 .db 12,192,56,48,31,128,7,51,152,73,33,134,25,128,64,32,13,0,3,51,194,76,137,144,131,0,64,32,11,0,0 .db 255,255,255,255,255,60,3,240,32,57,128,0,127,255,255,255,255,56,0,80,24,24,96,0,31,255,255,255,255,224,0 .db 96,55,232,0,0,3,255,255,255,255,0,0,113,211,244,0,0,0,127,255,255,248,0,1,143,131,66,0,0,0,1 .db 255,254,0,0,2,7,198,1,0,0,0,0,0,0,0,0,0,27,124,0,128,8,1,224,32,8,1,192,0,3,24 .db 0,64,8,1,16,32,72,2,32,128,5,152,0,0,14,81,227,56,108,66,12,192,11,200,0,0,9,81,20,164,74 .db 162,2,128,3,4,0,0,9,81,20,164,74,130,42,128,1,12,0,0,14,33,227,56,42,97,198,64,1,6,0,0 .db 0,32,0,0,0,0,0,0,1,131,0,0,0,64,0,0,0,0,0,0,1,0,128,0 .End