You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
119 lines
1.4 KiB
119 lines
1.4 KiB
HeaderTitle EQUS "\"CALLRET\"" |
|
|
|
include "common/defines.inc" |
|
include "common/header.inc" |
|
include "common/functions.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 |
|
|
|
ld b, $ff ; Fill pattern. |
|
ld sp, $e000 |
|
|
|
call clearLogo |
|
|
|
; Simple call. |
|
call waitVBlank |
|
ld hl, $8010 |
|
call fillTile |
|
|
|
; Conditional returns. |
|
call waitVBlank |
|
call retNz |
|
ld hl, $8040 |
|
call fillTile |
|
|
|
call waitVBlank |
|
call retZ |
|
ld hl, $8060 |
|
call fillTile |
|
|
|
call waitVBlank |
|
call retNc |
|
ld hl, $8080 |
|
call fillTile |
|
|
|
call waitVBlank |
|
call retC |
|
ld hl, $80a0 |
|
call fillTile |
|
|
|
; Conditional calls. |
|
call waitVBlank |
|
ld a, 2 |
|
dec a |
|
ld hl, $80f0 |
|
call nz, fillTile |
|
|
|
call waitVBlank |
|
ld a, 1 |
|
dec a |
|
ld hl, $8110 |
|
call z, fillTile |
|
|
|
call waitVBlank |
|
ld a, 200 |
|
add a, 55 |
|
ld hl, $8130 |
|
call nc, fillTile |
|
|
|
call waitVBlank |
|
ld a, 255 |
|
add a, 1 |
|
ld hl, $8150 |
|
call c, fillTile |
|
|
|
; Stack pointer validation. |
|
ld hl, sp+$00 |
|
ld a, h |
|
cp $e0 |
|
jr nz, loop |
|
ld a, l |
|
cp $00 |
|
jr nz, loop |
|
ld hl, $8180 |
|
call waitVBlank |
|
call fillTile |
|
|
|
loop: |
|
jr loop |
|
|
|
|
|
SECTION "retTests", ROM0[$200] |
|
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, 200 |
|
add a, 55 |
|
ret nc |
|
jr retError |
|
|
|
retC: |
|
ld a, 255 |
|
add a, 1 |
|
ret c |
|
jr retError
|
|
|