
! SPACE INVADERS
SETUP
   TRAP ACTIVE FORCE LINE  NO

INCLUDE "8080.POD"

ADDRESS SPACE INFORMATION

! H
ROM @ 0000-07FF SIG E04E
! G
ROM @ 0800-0FFF SIG D8C2
! F
ROM @ 1000-17FF SIG 5804
! E
ROM @ 1800-1FFF SIG C5AF

! TODO: Figure out what it would be for SI Deluxe

! Both blocks are on the same chips, virtual partition
! Even addresses are on the G column
! Odd addresses are on the H column
RAM @ 2000-23FF ! CPU
RAM @ 2400-3FFF ! Video

PROGRAM MAIN
	DPY-All RAM WIPE START
	EXECUTE PROGRAM 1
	EXECUTE PROGRAM 2
       DPY-ALL RAM WIPE END
	STOP

! Set the CPU ram region to 0x00
PROGRAM 1
	DPY-CPU RAM WIPE START
	REG8 = 2000
	REG9 = 23FF
	EXECUTE PROGRAM clear
       DPY-CPU RAM WIPE END
	STOP

! Set the VIDEO ram region to 0x00
PROGRAM 2
	DPY-VID RAM WIPE START
	REG8 = 2400
	REG9 = 3FFF
	EXECUTE PROGRAM clear
       DPY-VID RAM WIPE END
	STOP

!Utility function to set a range to known 0x00 value
! REG8 contains start of range
! REG9 contains end of range
program CLEAR
	DPY-CLEARING MEMORY
	REGF=REG8
	REG1=0

   WRLOOP:
	DPY-CLEARING MEMORY $F

       WRITE @REGF = 00
       INC REGF
       IF REGF > REG9 GOTO END
       GOTO WRLOOP

   END:
       DPY-CLEAR COMPLETED

!Utility function to set a range to a known 0xFF value
! REG8 contains start of range
! REG9 contains end of range
program Fill
	DPY-FILLING MEMORY
	REGF=REG8
	REG1=0

   WRLOOP:
       DPY-$F
	
       WRITE @REGF = FF
       INC REGF
       IF REGF > REG9 GOTO END
       GOTO WRLOOP

   END:
       DPY-FILL COMPLETED


! Have a board where writing 0 to all ram results in @2000 = 0x80
! looks like addressing issues.
! so write and after each check the value of 2000, if it is not 0x00
! stop and say where we crossed
program 5
	dpy-Clear test 2000
	REGF=2000
	REG9=23ff
	reg2=2000

   WRLOOP:
       DPY-$F
	
       WRITE @REGF = 00
	read @reg2
	if REGE = 0 goto stillgood
	DPY-WRITE ERROR $F $E
	STOP
	stillgood:

       INC REGF
       IF REGF > REG9 GOTO END
       GOTO WRLOOP

   END:
       DPY-FILL COMPLETED	
 

program x
	if reg1 > 0 goto skipdisplay
       DPY-$F
	reg1 = 100
   skipdisplay:
	dec reg1

PROGRAM fillvid
	DPY-VID RAM FILL START
	REG8 = 2400
	REG9 = 3FFF
	EXECUTE PROGRAM fill
       DPY-VID RAM FILL END
	STOP

program altfill
	dpy-Alt fill evens
	REGF = 2400
	REG9 = 3FFF

  WRLOOP:
       DPY-$F
	
       WRITE @REGF = 00
       INC REGF
	INC REGF

       IF REGF > REG9 GOTO END
       GOTO WRLOOP

   END:
       DPY-FILL COMPLETED	


 