119 lines
1.6 KiB
NASM
119 lines
1.6 KiB
NASM
|
.org 0xF800
|
||
|
mov sp,#STACK
|
||
|
call litedram_init
|
||
|
|
||
|
|
||
|
mov bx,#load_i2c_txt
|
||
|
call print
|
||
|
|
||
|
;########### SET ROM ADDRESS ############
|
||
|
mov al,#0x50
|
||
|
outb #0x61
|
||
|
|
||
|
mov ax,#0x0000 ; I2C ADDRESS
|
||
|
outw #0x62
|
||
|
|
||
|
mov al,#0x02 ; Write 16bit
|
||
|
outb #0x63
|
||
|
|
||
|
mov al,#0x00
|
||
|
outb #0x60
|
||
|
|
||
|
;wait_send: inw #0x62
|
||
|
;test al,#0x01
|
||
|
;jnz wait_send
|
||
|
|
||
|
mov ax,#0x1FFE
|
||
|
aa:
|
||
|
dec ax
|
||
|
jnz aa
|
||
|
|
||
|
mov bx,#OK_loading_txt
|
||
|
call print
|
||
|
|
||
|
|
||
|
;############ READ 20% ##################
|
||
|
|
||
|
mov bx,#0xD000
|
||
|
mov di,#0x0000
|
||
|
rom_read_loop:
|
||
|
mov al,#0x05 ; Read, 8bit, ignore ack
|
||
|
outb #0x63
|
||
|
|
||
|
mov al,#0x00
|
||
|
outb #0x60
|
||
|
|
||
|
mov ax,#0x1FFE
|
||
|
aa2:
|
||
|
dec ax
|
||
|
jnz aa2
|
||
|
|
||
|
inw #0x60
|
||
|
STOSB
|
||
|
|
||
|
cmp di,#0x2999
|
||
|
jz print_20
|
||
|
cmp di,#0x5333
|
||
|
jz print_40
|
||
|
cmp di,#0x7CCC
|
||
|
jz print_60
|
||
|
cmp di,#0xA666
|
||
|
jz print_80
|
||
|
|
||
|
back:dec bx
|
||
|
jnz rom_read_loop
|
||
|
|
||
|
|
||
|
MOV AX,#0xC000
|
||
|
JMP AX
|
||
|
|
||
|
print_20:
|
||
|
mov bx,#twenty_prc_txt
|
||
|
call print
|
||
|
jmp back
|
||
|
|
||
|
print_40:
|
||
|
mov bx,#forty_prc_txt
|
||
|
call print
|
||
|
jmp back
|
||
|
|
||
|
print_60:
|
||
|
mov bx,#sixty_prc_txt
|
||
|
call print
|
||
|
jmp back
|
||
|
|
||
|
print_80:
|
||
|
mov bx,#eighty_prc_txt
|
||
|
call print
|
||
|
jmp back
|
||
|
|
||
|
|
||
|
include LiteDram_init.asm
|
||
|
|
||
|
print:
|
||
|
mov al,[bx]
|
||
|
cmp al,#0
|
||
|
je print_exit
|
||
|
out byte #0xA5
|
||
|
inc bx
|
||
|
jmp print
|
||
|
print_exit:
|
||
|
ret
|
||
|
|
||
|
.BLKB 18 ; Using the text as stack space for the compiled program
|
||
|
STACK: ; brainfuck_mandelbrot depends on stack being at the end
|
||
|
|
||
|
load_i2c_txt: .ASCII 'Read I2C EEPROM:\0'
|
||
|
OK_loading_txt: .ASCII 'OK\nLoading rom 0%\r\0'
|
||
|
twenty_prc_txt: .ASCII 'Loading rom 20%\r\0'
|
||
|
forty_prc_txt: .ASCII 'Loading rom 40%\r\0'
|
||
|
sixty_prc_txt: .ASCII 'Loading rom 60%\r\0'
|
||
|
eighty_prc_txt: .ASCII 'Loading rom 80%\r\0'
|
||
|
|
||
|
.ORG 0xFFF0
|
||
|
MOV AX,#0xF800
|
||
|
JMP AX
|
||
|
|
||
|
.ORG 0xFFFF
|
||
|
DB 0x00 ;Make sure a full 64KiB image
|