216 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			216 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
%include macros/gigatron.i
 | 
						|
 | 
						|
vars            EQU     0x30
 | 
						|
scratch			EQU		vars + 0x00
 | 
						|
x0				EQU		vars + 0x02
 | 
						|
y0				EQU		vars + 0x03
 | 
						|
xy0				EQU		x0
 | 
						|
x1				EQU		vars + 0x04
 | 
						|
y1				EQU		vars + 0x05
 | 
						|
xy1				EQU		x1
 | 
						|
cLines			EQU		vars + 0x06
 | 
						|
Color			EQU		vars + 0x07
 | 
						|
 | 
						|
 | 
						|
printT_tt		EQU		vars + 0x10
 | 
						|
printT_ii		EQU		vars + 0x11
 | 
						|
printT_Chr      EQU     vars + 0x12
 | 
						|
textStr         EQU     vars + 0x14
 | 
						|
textPos         EQU     vars + 0x16
 | 
						|
 | 
						|
vblank_frameCountPrev  EQU     vars + 0x20
 | 
						|
 | 
						|
pattern0		EQU		0x1005	' 2 pix ligne 1
 | 
						|
pattern1		EQU		0x0510  ' 2 pix ligne 2
 | 
						|
buttonRight		EQU		1
 | 
						|
buttonLeft		EQU		2
 | 
						|
buttonDown		EQU		4
 | 
						|
buttonUp		EQU		8
 | 
						|
buttonStart		EQU		16
 | 
						|
buttonSelect	EQU		32
 | 
						|
buttonB			EQU		64
 | 
						|
buttonA			EQU		128
 | 
						|
 | 
						|
entry_point     EQU     0x0200
 | 
						|
subroutines     EQU     0x0300
 | 
						|
data			EQU		0x0400
 | 
						|
 | 
						|
test_string		EQU		data + 0x00
 | 
						|
test_string    DB      6 'coucou'
 | 
						|
 | 
						|
 | 
						|
 | 
						|
entry_point CALL    waitVBlank
 | 
						|
		LDI		0x08		; giga_vram hi
 | 
						|
        ST		y0			; 
 | 
						|
		ADDI	1
 | 
						|
        ST		y1			;
 | 
						|
 | 
						|
        LDI  giga_yres       ' Load screen Y dimension, (120)       
 | 
						|
yloop   ST		cLines
 | 
						|
        
 | 
						|
		LDI  giga_xres-2	
 | 
						|
		ST   x0       ' on commence par le bout
 | 
						|
		ST   x1 
 | 
						|
xloop	LDWI pattern0
 | 
						|
        DOKE xy0
 | 
						|
		LDWI pattern1
 | 
						|
		DOKE xy1
 | 
						|
		LD   x0
 | 
						|
        SUBI 2   	    ; X loop
 | 
						|
		ST   x0
 | 
						|
		ST   x1
 | 
						|
        BNE  xloop      ; (le signe passe pas sur un octet 160 > 128)
 | 
						|
 | 
						|
		; derniere colonne
 | 
						|
		LDWI pattern0
 | 
						|
		DOKE xy0
 | 
						|
		LDWI pattern1
 | 
						|
		DOKE xy1
 | 
						|
            
 | 
						|
       ; Y loop
 | 
						|
		LD	 y0
 | 
						|
        ADDI 2
 | 
						|
		ST	 y0
 | 
						|
		ADDI 1
 | 
						|
		ST 	 y1
 | 
						|
        LD   cLines    
 | 
						|
        SUBI 2  
 | 
						|
        BNE  yloop
 | 
						|
 | 
						|
        LDWI	giga_vram + 0x0A00 + 0x40
 | 
						|
		STW		textPos
 | 
						|
		LDWI	test_string
 | 
						|
		STW		textStr
 | 
						|
		CALL	printText
 | 
						|
 | 
						|
 | 
						|
drawing	LDI		giga_xres/2
 | 
						|
        ST		x0
 | 
						|
		LDI		giga_yres/2
 | 
						|
		ST		y0
 | 
						|
		LDI		0x3F
 | 
						|
		ST		Color
 | 
						|
 | 
						|
forever CALL    waitVBlank
 | 
						|
        LD		giga_buttonState
 | 
						|
		ANDI	buttonRight
 | 
						|
		BNE		noright
 | 
						|
		LD		x0
 | 
						|
		ADDI	1
 | 
						|
		ST		x0
 | 
						|
noright	LD		giga_buttonState
 | 
						|
        ANDI	buttonLeft
 | 
						|
		BNE		noleft
 | 
						|
		LD		x0
 | 
						|
		ADDI	-1
 | 
						|
		ST		x0
 | 
						|
noleft	LD		giga_buttonState
 | 
						|
        ANDI	buttonUp
 | 
						|
		BNE		noup
 | 
						|
		LD		y0
 | 
						|
		ADDI	-1
 | 
						|
		ST		y0
 | 
						|
noup	LD		giga_buttonState
 | 
						|
        ANDI	buttonDown
 | 
						|
		BNE		nodown
 | 
						|
		LD		y0
 | 
						|
		ADDI	1
 | 
						|
		ST		y0
 | 
						|
nodown	LD		giga_buttonState
 | 
						|
        ANDI	buttonA
 | 
						|
		BNE		noA
 | 
						|
		LD		Color
 | 
						|
		ADDI	1
 | 
						|
		ST		Color
 | 
						|
noA		LD		giga_buttonState
 | 
						|
        ANDI	buttonB
 | 
						|
		BNE		noB
 | 
						|
		LD		Color
 | 
						|
		ADDI	-1
 | 
						|
		ST		Color
 | 
						|
noB		bra		drawpix
 | 
						|
 | 
						|
drawpix	LDW		giga_vram
 | 
						|
        ADDW	xy0
 | 
						|
		STW		scratch
 | 
						|
		LD		Color
 | 
						|
		POKE	scratch
 | 
						|
 | 
						|
        BRA  forever
 | 
						|
 | 
						|
 | 
						|
subroutines		RET
 | 
						|
 | 
						|
waitVBlank      LD      giga_frameCount
 | 
						|
                SUBW    vblank_frameCountPrev
 | 
						|
                BEQ     waitVBlank
 | 
						|
                LD      giga_frameCount
 | 
						|
				STW     vblank_frameCountPrev
 | 
						|
                RET
 | 
						|
 | 
						|
%MACRO  LoopCounter _counter _label
 | 
						|
    LD      _counter
 | 
						|
	SUBI    0x01
 | 
						|
	ST      _counter
 | 
						|
	BNE     _label
 | 
						|
%ENDM
 | 
						|
 | 
						|
; prints text using the inbuilt font and SYS routine
 | 
						|
printText	LDWI    SYS_VDrawBits_134   ; setup 8 vertical pixel SYS routine
 | 
						|
        STW     giga_sysFn
 | 
						|
 | 
						|
        LDI     0x00                ; background colour
 | 
						|
		ST      giga_sysArg0
 | 
						|
		LDI     0x3F                ; foreground colour
 | 
						|
		ST      giga_sysArg1
 | 
						|
 | 
						|
        LDW     textStr             ; first byte is length
 | 
						|
		PEEK
 | 
						|
		ST      printT_tt
 | 
						|
		INC     textStr
 | 
						|
 | 
						|
printT_chr	LDW     textStr
 | 
						|
        PEEK
 | 
						|
		SUBI    32                  ; (char - 32)*5 + 0x0700
 | 
						|
		STW     printT_Chr
 | 
						|
		LSLW
 | 
						|
		LSLW
 | 
						|
		ADDW    printT_Chr
 | 
						|
		STW     scratch
 | 
						|
		LDWI    giga_text32
 | 
						|
		ADDW    scratch
 | 
						|
		STW     scratch             ; text font slice base address for chars 32-81
 | 
						|
 | 
						|
        LDW     printT_Chr
 | 
						|
		SUBI    50
 | 
						|
		BLT     printT_draw
 | 
						|
		LDW     scratch
 | 
						|
		ADDI    0x06
 | 
						|
		STW     scratch             ; text font slice base address for chars 82+
 | 
						|
 | 
						|
printT_draw	LDI     0x05
 | 
						|
        ST      printT_ii
 | 
						|
printT_slice LDW     textPos
 | 
						|
        STW     giga_sysArg4        ; xy
 | 
						|
		LDW     scratch             ; text font slice base address
 | 
						|
		LUP     0x00                ; get ROM slice
 | 
						|
		ST      giga_sysArg2
 | 
						|
		SYS     0xCB                ; draw vertical slice, SYS_VDrawBits_134, 270 - 134/2 = 0xCB
 | 
						|
		INC     scratch             ; next vertical slice
 | 
						|
		INC     textPos             ; next x
 | 
						|
		LoopCounter printT_ii printT_slice
 | 
						|
 | 
						|
        INC     textStr             ; next char
 | 
						|
		INC     textPos             ; 1 pixel space between chars
 | 
						|
		LoopCounter printT_tt printT_chr
 | 
						|
		RET
 | 
						|
 | 
						|
 | 
						|
 | 
						|
_startAddress_      EQU     entry_point
 | 
						|
_callTable_         EQU     0x007E
 | 
						|
_singleStepWatch_   EQU     giga_frameCount
 | 
						|
_cpuUsageAddressA_  EQU     subroutines
 | 
						|
_cpuUsageAddressB_  EQU     subroutines+0x10	; waitVBlank
 |