8bitworkshop/presets/astrocade-bios/test2.s

50 lines
2.4 KiB
ArmAsm

; Demo 1: HELLO, WORLDS! / 2018 hxlnt
; Inspired by Adam Trionfo Hello World
; http://www.ballyalley.com/ml/ml_homebrew/helloworld/hello.asm
; From: https://github.com/hxlnt/astrocade
; need these in 1st file sdcc linker sees
.area _HOME
.area _INITIALIZER
.area _DATA
.area _INITIALIZED
.area _BSEG
.area _BSS
.area _HEAP
.area _CODE
.include "astrocade.inc"
.globl _main
_main:
.db 0x55 ; ... with the code for a normal menued cartridge
.dw MENUST ; Initialize menu
.dw PrgName ; ... with string at PrgName
.dw PrgStart ; ... such that selecting the program enters PrgStart
PrgName: .ascii "HELLO, WORLDS!"; String
.db 0 ; ... which must be followed by 0
PrgStart: DI ; Disable interrupts
LD SP,#0x4fce ; position stack below BIOS vars
ld hl,#0x20d ; small font -> IX
push hl
pop ix
SYSTEM INTPC ; Begin interpreter mode
DO SETOUT ; Set output ports
.db 100*2 ; ... with VBLANK line set to line 100
.db 112/4 ; ... with color boundary 112 pixels from the left of the screen
.db 0b00001000 ; ... with screen interrupts reenabled
DO COLSET ; Set color palettes
.dw Palettes ; ... with the values at Palettes
DO FILL ; Set background fill
.dw NORMEM ; ... starting at the beginning of screen RAM
.dw 99*BYTEPL ; ... and going for 100 lines
.db 0b00010010 ; ... with a fill pattern of three different colored pixels
DO STRDIS ; Set string display
.db 0 ; ... starting 0 pixels from the left of the screen
.db 32 ; ... and 32 pixels from the top of the screen
.db 0b00001100 ; ... with no enlargement, foreground color = 11, background color = 00
.dw PrgName ; ... to show string at PrgName
DONT XINTC
Loop: JP Loop ; Play infinite loop
Palettes: .db 0xBF,0x00,0x00,0x00 ; Left color palette (11b, 10b, 01b, 00b)
.db 0xE7,0x9A,0x39,0x19 ; Right color palette (11b, 10b, 01b, 00b)