Merge branch 'master' of ichibi:/home/git/Repositories/pato-z80-home-computer
This commit is contained in:
commit
66414a2e57
@ -16,6 +16,17 @@
|
|||||||
; Video pin: PA0 (pin 1)
|
; Video pin: PA0 (pin 1)
|
||||||
; Sync pin: PC0 (pin 22)
|
; Sync pin: PC0 (pin 22)
|
||||||
; Debug hsync pin: PC1 (pin 23)
|
; Debug hsync pin: PC1 (pin 23)
|
||||||
|
;
|
||||||
|
; RESERVED REGISTERS:
|
||||||
|
; R25: Current status (what the interrupt should do when fired):
|
||||||
|
; 0, 2, 4, 6, 8 = long sync start (sync pin low and register next interrupt after 30uS)
|
||||||
|
; 1, 3, 5, 7, 9 = long sync end (sync pin high and register next interrupt after 2uS)
|
||||||
|
; 10, 12, 14, 16, 18 = short sync start (sync pin low and register next interrupt after 2uS)
|
||||||
|
; 11, 13, 15, 17, 19 = short sync end (sync pin high and register next interrupt after 30uS)
|
||||||
|
; 20 = draw lines (draw 304 lines complete with line sync and back porch, then start short
|
||||||
|
; sync: sync pin low and next interrupt after 2uS)
|
||||||
|
; 21, 23, 25, 27, 29 = short sync start (sync pin low and register next interrupt after 2uS)
|
||||||
|
; 22, 24, 26, 28, 30 = short sync end (sync pin high, reset R25 to 0 and register next interrupt after 30uS)
|
||||||
|
|
||||||
.include "atmega1284definition.asm"
|
.include "atmega1284definition.asm"
|
||||||
|
|
||||||
@ -29,29 +40,27 @@
|
|||||||
; start vector
|
; start vector
|
||||||
.org 0x0000
|
.org 0x0000
|
||||||
rjmp main ; jump to main label
|
rjmp main ; jump to main label
|
||||||
|
.org 0x0002
|
||||||
|
rjmp on_int0 ; interrupt 0
|
||||||
|
|
||||||
; main program
|
; main program
|
||||||
main:
|
main:
|
||||||
|
; setup
|
||||||
sbi DDRC, SYNC_PIN ; set pin as output
|
sbi DDRC, SYNC_PIN ; set pin as output
|
||||||
sbi DDRC, DEBUG_PIN ; set pin as output
|
sbi DDRC, DEBUG_PIN ; set pin as output
|
||||||
ldi r16, 0xFF
|
ldi r16, 0xFF
|
||||||
out DDRA, r16 ; set port as output (contains video pin)
|
out DDRA, r16 ; set port as output (contains video pin)
|
||||||
|
|
||||||
|
|
||||||
|
;*** Load data into ram ***
|
||||||
|
; Set X to 0x0100
|
||||||
|
ldi r27, high(FRAMEBUFFER<<1)
|
||||||
|
ldi r26, low(FRAMEBUFFER<<1)
|
||||||
|
; Set Z to 0x1000 (cat image)
|
||||||
|
ldi r31, high(CAT_IMAGE<<1)
|
||||||
|
ldi r30, low(CAT_IMAGE<<1)
|
||||||
|
|
||||||
|
load_mem_loop:
|
||||||
|
|
||||||
|
|
||||||
;*** Load data into ram ***
|
|
||||||
; Set X to 0x0100
|
|
||||||
ldi r27, high(FRAMEBUFFER<<1)
|
|
||||||
ldi r26, low(FRAMEBUFFER<<1)
|
|
||||||
; Set Z to 0x1000 (cat image)
|
|
||||||
ldi r31, high(CAT_IMAGE<<1)
|
|
||||||
ldi r30, low(CAT_IMAGE<<1)
|
|
||||||
|
|
||||||
|
|
||||||
load_mem_loop:
|
|
||||||
lpm r17, Z+
|
lpm r17, Z+
|
||||||
;ldi r17, 0b00001111
|
;ldi r17, 0b00001111
|
||||||
st X+, r17
|
st X+, r17
|
||||||
@ -61,6 +70,17 @@ load_mem_loop:
|
|||||||
cpi r26, 0b11000000
|
cpi r26, 0b11000000
|
||||||
brne load_mem_loop ; if not 0, repeat h_picture_loop
|
brne load_mem_loop ; if not 0, repeat h_picture_loop
|
||||||
|
|
||||||
|
; loop forever
|
||||||
|
forever:
|
||||||
|
jmp forever
|
||||||
|
|
||||||
|
|
||||||
|
; ********* FUNCTIONS CALLED BY INTERRUPT ***********
|
||||||
|
|
||||||
|
on_int0:
|
||||||
|
; called two times per line (every 32 uS) during hsync. Disabled while drawing picture.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
v_refresh_loop:
|
v_refresh_loop:
|
||||||
; set X register to framebuffer start 0x0100
|
; set X register to framebuffer start 0x0100
|
||||||
|
Loading…
Reference in New Issue
Block a user