61 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
; **************************************************************************************************
 | 
						|
; **************************************************************************************************
 | 
						|
;  THIS WILL NOT RUN ON REAL HARDWARE UNLESS YOU BURN THE NATIVE CODE AT THE BOTTOM
 | 
						|
;  OF THIS FILE INTO THE GIGATRONS ROM AT THE CORRECT ADDRESS, EMULATION ONLY!
 | 
						|
; **************************************************************************************************
 | 
						|
; **************************************************************************************************
 | 
						|
 | 
						|
vram        EQU     0x0800
 | 
						|
x_bounds    EQU     0x9E
 | 
						|
y_bounds    EQU     0x76
 | 
						|
 | 
						|
x_rand      EQU     0x06
 | 
						|
y_rand      EQU     0x07
 | 
						|
sysFn       EQU     0x22
 | 
						|
 | 
						|
vbase       EQU     0x40
 | 
						|
pixels      EQU     0x42
 | 
						|
xx          EQU     0x43
 | 
						|
yy          EQU     0x44
 | 
						|
 | 
						|
                
 | 
						|
SYS_DrawPixel2x2_32 EQU     0x2300      ; native code that is defined with either DBR or DWR is written to ROM at this address
 | 
						|
 | 
						|
        
 | 
						|
            LDWI    vram
 | 
						|
            STW     vbase
 | 
						|
 | 
						|
            LDWI    0x0000      
 | 
						|
            STW     xx
 | 
						|
 | 
						|
            LDWI    SYS_DrawPixel2x2_32
 | 
						|
            STW     sysFn
 | 
						|
            
 | 
						|
loop        LD      x_rand      ; x position
 | 
						|
            ST      xx
 | 
						|
            SUBI    x_bounds    ; works as (x_rand % x_bounds), but only because x_bounds is > 0x00FF/2, fails otherwise
 | 
						|
            BLE     y_load
 | 
						|
            ST      xx
 | 
						|
 | 
						|
y_load      LD      y_rand      ; y position
 | 
						|
            ST      yy
 | 
						|
            SUBI    y_bounds    ; works as (y_rand % y_bounds), but only because y_bounds is > 0x00FF/3, fails otherwise
 | 
						|
            BLE     draw
 | 
						|
            ST      yy
 | 
						|
            SUBI    y_bounds
 | 
						|
            BLE     draw
 | 
						|
            ST      yy
 | 
						|
            
 | 
						|
draw        LDW     vbase
 | 
						|
            ADDW    xx
 | 
						|
            STW     pixels
 | 
						|
        
 | 
						|
            SYS     32          ; SYS_DrawPixel2x2_32
 | 
						|
 | 
						|
            BRA     loop        
 | 
						|
        
 | 
						|
        
 | 
						|
; this is a native code routine that is written into ROM using the DBR command, (Define Byte ROM), at the equate defined
 | 
						|
; by SYS_DrawPixel2x2_32: this native code is specific to this vCPU module with the input registers that it accepts
 | 
						|
SYS_DrawPixel2x2_32     DBR $01 $06 $11 $42 $15 $43 $DE $00 $CE $00 $11 $42 $00 $01 $95 $43 $01 $06 $DE $00 $CE $00 $02 $00 $14 $03 $E0 $CB $00 $F0
 | 
						|
         |