Browse Source

Added call/ret CPU test.

master
Ian Burgmyer 4 years ago
parent
commit
85e6c3417e
  1. 21
      Makefile
  2. 148
      cpu/callRet.asm

21
Makefile

@ -9,7 +9,7 @@ MKDIR = mkdir
.PHONY: dirs
all: dirs video
all: dirs cpu video
clean:
rm -r ${BIN_DIR}/ ${OBJ_DIR}/
@ -18,12 +18,27 @@ dirs:
${MKDIR} -p ${BIN_DIR}
${MKDIR} -p ${OBJ_DIR}
#
# CPU
#
cpu: cpuDirs \
${BIN_DIR}/cpu/callRet.gb
cpuDirs:
${MKDIR} -p ${OBJ_DIR}/cpu
${MKDIR} -p ${BIN_DIR}/cpu
${BIN_DIR}/cpu/callRet.gb: dirs cpu/callRet.asm
${AS} -o ${OBJ_DIR}/cpu/callRet.o cpu/callRet.asm
${LD} -o ${BIN_DIR}/cpu/callRet.gb ${OBJ_DIR}/cpu/callRet.o
${FIX} ${BIN_DIR}/cpu/callRet.gb
#
# Video
#
video: videoDirs \
${BIN_DIR}/video/lcdToggle.gb \
${BIN_DIR}/video/vblankInt.gb
${BIN_DIR}/video/lcdToggle.gb \
${BIN_DIR}/video/vblankInt.gb
videoDirs:
${MKDIR} -p ${BIN_DIR}/video

148
cpu/callRet.asm

@ -0,0 +1,148 @@
HeaderTitle EQUS "\"CALLRET\""
include "common/defines.inc"
include "common/header.inc"
; 1: call / ret
; 2: call / ret nz
; 3: call / ret z
; 4: call / ret nc
; 5: call / ret c
; 6: call nz / ret
; 7: call z / ret
; 8: call nc / ret
; 9: call c / ret
SECTION "home", ROM0
ProgramStart:
call waitVBlank
; disable the LCD while we clear the logo
ld hl, $ff40
ld a, [hl]
res 7, a
ld [hl], a
call clearLogo
; enable the LCD
ld hl, $ff40
ld a, [hl]
set 7, a
ld [hl], a
call waitVBlank
ld hl, $8010
call drawRect
call waitVBlank
call retNz
ld hl, $8040
call drawRect
call waitVBlank
call retZ
ld hl, $8060
call drawRect
call waitVBlank
call retNc
ld hl, $8080
call drawRect
call waitVBlank
call retC
ld hl, $80a0
call drawRect
call waitVBlank
ld a, 2
dec a
ld hl, $8110
call nz, drawRect
call waitVBlank
ld a, 1
dec a
ld hl, $8130
call z, drawRect
call waitVBlank
ld a, 2
dec a
ld hl, $8150
call nc, drawRect
call waitVBlank
ld a, 255
add a, 1
ld hl, $8170
call c, drawRect
loop:
jr loop
SECTION "waitVBlank", ROM0[$200]
waitVBlank:
ldh a, [$ff44]
cp $90
jr nz, waitVBlank
ret
SECTION "clearLogo", ROM0[$220]
clearLogo:
ld hl, $81A0
.clearLoop:
ld a, $0
ld [hld], a
ld a, h
cp $80
jr nz, .clearLoop
ld a, l
cp $10
jr nz, .clearLoop
ret
SECTION "drawRect", ROM0[$240]
drawRect:
push af
push de
ld d, 16
ld a, $ff
.logoDraw:
ld [hli], a
dec d
jr nz, .logoDraw
pop de
pop af
ret
SECTION "ret", ROM0[$300]
retError:
jr retError
retNz:
ld a, 2
dec a
ret nz
jr retError
retZ:
ld a, 1
dec a
ret z
jr retError
retNc:
ld a, 2
dec a
ret nc
jr retError
retC:
ld a, 255
add a, 1
ret c
jr retError
Loading…
Cancel
Save