SECTION "main", ROM0[$db01] _start: ld d,h ld e,l writeagain: push de ld hl,$fff8 add hl,de ld d,h ld e,l .testkeys ldh a,[$fff8] and a jr nz,.testkeys ld hl,$c3a0 write: ld [hl],$7c inc hl ld a,d call writehex ld a,e call writehex ld [hl],$e3 inc hl ld a,[de] call writehex ld [hl],$7c ld bc,12 add hl,bc inc de ld a,l cp 8 jr nz,write waiting: ld hl,$c445 ld [hl],$ed pop de .testbuttons db $76 ; halt ldh a,[$fff8] ld b,a bit 3,b jr z,.nostartbtn ld a,d add $10 ld d,a .nostartbtn bit 2,b jr z,.noselectbtn inc d .noselectbtn bit 1,b ret nz bit 0,b jr nz,bytechangeloop bit 6,b jr z,.noupbtn dec de .noupbtn bit 7,b jr z,.nodownbtn inc de .nodownbtn bit 5,b jr z,.noleftbtn ld hl,$fff0 add hl,de ld d,h ld e,l .noleftbtn bit 4,b jr z,.norightbtn ld hl,$0010 add hl,de ld d,h ld e,l .norightbtn writeagainbounce: jr writeagain storeandwriteagain: ld a,c ld [de],a jr writeagainbounce bytechangeloop: ld [hl],$ec ld a,[de] ld c,a bytechangeloopentry: db $76 ; halt ldh a,[$fff8] and a jr z,storeandwriteagain ld b,a bit 6,b jr z,.noupbtn ld a,c add $10 ld c,a .noupbtn bit 7,b jr z,.nodownbtn ld a,c sub $10 ld c,a .nodownbtn bit 5,b jr z,.noleftbtn dec c .noleftbtn bit 4,b jr z,.norightbtn inc c .norightbtn ld l,$46 ld a,c call writehex .waitbuttonsc ldh a,[$fff8] cp $0d jr z,specialexec and $fe jr nz,.waitbuttonsc jr bytechangeloopentry writehex: ld b,a swap a and $0f call writehexdigit ld a,b ; fall through to writehexdigit writehexdigit: and $0f add $f6 jr nc,.noadd add $60 .noadd ld [hli],a .retinstr ret specialexec: ld hl,.executive ld [hl],e inc hl ld [hl],d call $3e94 ; GetPredefRegisters ld a,[$cc4e] db $c3 ; jp .executive ; subroutine address goes here