include "include\ATJ2085_Ports.inc" DEFC LCD_PORT=0xee ;MFP_GPOA_SELECT_REG DEFC LCD_BIT=1 DEFC hlength = 0x800 DEFC clength = 0x34F DEFC orgval = 0x0 DEFC filesize = 3072 org orgval defw 0x50,0x4757,0x9719,0x3 defw hlength,0,clength,hlength defw 0, 0, 0, 0, 0,0,hlength endheader: defs hlength-(endheader-orgval) start: di ld a,0 out (WATCHDOG_REG),a ; disable watchdog ; ld a,INT_MROM_SRAM_ZRAM2 ; out (INTERNAL_MROM_SRAM_PAGE_REG),a ld a,0x1f ;MFP_SELECT_CS0S|GPOA2_ENABLE|GPOA2_OUTPUT_2|GPOA2_OUTPUT_1|GPOA2_OUTPUT_0 out (MFP_GPOA_SELECT_REG),a ld a, EM_PAGE_HI_CE3_INV ; for output to the lcd out (EM_PAGE_HI_REG),a ld sp,lastl ; set stack call set_dat ; in a,(GPIOB_DATA_REG) ; set background to white ; and 0xf8 ; out (GPIOB_DATA_REG),a ld a,MINT_ENABLE_RTC out (MINT_ENABLE_REG),a im 1 ld hl,misrstart ld de,0x0038 ld bc,misrend-misrstart ldir ; copy NMI ISR to 0x0066 ld hl,nmisrstart ld de,0x0066 ld bc,nmisrend-nmisrstart ldir ; ei ld a,3 ld b,0 hang: inc b call printval jr hang misrstart: ei reti misrend: nmisrstart: retn nmisrend: set_cmd: in a,(LCD_PORT) ;0xee or LCD_BIT sub LCD_BIT out (LCD_PORT),a ret set_dat: in a,(LCD_PORT) or LCD_BIT out (LCD_PORT),a ret send_cmd: ; command in a push af call set_cmd pop af ld (0x8001),a push af call set_dat pop af ret setsl: ; set screen page [c:0-3] and column [b:0-255] push af call set_cmd ld a,0xB0 or c ld (0x8001),a ld a,b and 0x0F ;the lowest 4 bits ld (0x8001),a ld a,b srl a srl a srl a srl a or 0x10 ld (0x8001),a call set_dat pop af ret clearcol: ;column: b[0-255], modifies c push af xor a ld c,0 call setsl ld (0x8000),a ld c,1 call setsl ld (0x8000),a ld c,2 call setsl ld (0x8000),a ld c,3 call setsl ld (0x8000),a pop af ret printval: ;print a value a[0..31] column: b[0-255] push af push bc call clearcol ld c,a srl c srl c srl c call setsl and 7 ld b,a inc b ld a,0x80 loopie: rlc a djnz loopie ld (0x8000),a pop bc pop af ret current: defs filesize-(current-orgval) lastl: