📄 myap.asm
字号:
;*******************************************************************************
;* s1 mp3 player ap replacement for testing purposes
;* author: wiRe@s1mp3.de (www.s1mp3.de)
;* compiler: z80asm (http://savannah.nongnu.org/projects/z80asm)
;*******************************************************************************
;-------------------------------------------------------------------------------
; definitions
;-------------------------------------------------------------------------------
HEADER_LENGTH: equ 0x0800
CODE_ADDRESS: equ 0x0800
FILE_LENGTH: equ 13312 ; the filesize of the ap u want to replace
;-------------------------------------------------------------------------------
; ap header
;-------------------------------------------------------------------------------
org 0x0000
header: dw 0x0050 ; header id
dw 0x4757 ;
dw 0x9719 ;
dw 0x0003 ;
dw HEADER_LENGTH ; text fileoffset (lo)
dw 0 ; text fileoffset (hi)
dw CODE_LENGTH ; text length
dw CODE_ADDRESS ; text address
dw 0 ; data fileoffset (lo)
dw 0 ; data fileoffset (hi)
dw 0 ; data length
dw 0 ; data address
dw 0 ; bss length
dw 0 ; bss address
dw entrypoint ; entry point
db 0 ; entry bank
db 0 ; number of banks
ds HEADER_LENGTH - $
;-------------------------------------------------------------------------------
; code segment
;-------------------------------------------------------------------------------
org CODE_ADDRESS
entrypoint: push bc
push de
ld de, 0
call ClearScreen
ld e, FONT_TYPE_LARGE
call SetAsciiFont
ld e, 0+((128-4*6*3)/4)
ld c, 0
call SetTextPos
ld de, textstr
ld c, 0xff
call PutS
ld de, 0
call UpdateScreen
msgloop: in a, (4Eh) ; set watchdog timer
set 3, a
out (4Eh), a
ld a, 0x11 ; call API_MSG_GetSysMsg
rst RSTFastAPI
jp msgloop ; infinite loop
textstr: db 'wiRe was here!', 0
;-------------------------------------------------------------------------------
; api functions and definitions
;-------------------------------------------------------------------------------
RSTFastAPI: equ 0x08
RSTBankAPI: equ 0x10
RSTDisplayAPI: equ 0x20
API_PutChar: equ 0x00
API_PutS: equ 0x01
API_PutImage: equ 0x02
API_GetFontPoint: equ 0x03
API_SetAsciiFont: equ 0x05
API_SetTextPos: equ 0x06
API_GetTextPos: equ 0x07
API_UpdateScreen: equ 0x10
;BANKA
API_UI_BaseNoA: equ 0x00a0
API_ClearScreen: equ 0x0000 + API_UI_BaseNoA
API_PutSDImage: equ 0x0001 + API_UI_BaseNoA
API_InvertRegion: equ 0x0002 + API_UI_BaseNoA
API_SetContrast: equ 0x0003 + API_UI_BaseNoA
API_HoriScroll: equ 0x0004 + API_UI_BaseNoA
API_StandbyScreen:equ 0x0005 + API_UI_BaseNoA
API_MsgBox: equ 0x000f + API_UI_BaseNoA
;BANKB
API_UI_BaseNoB: equ 0x10a0
API_ShowLogo: equ 0x0001 + API_UI_BaseNoB
FONT_TYPE_TINY: equ 0xff
FONT_TYPE_TINY_INVERT: equ 0xff
FONT_TYPE_SMALL: equ 0
FONT_TYPE_SMALL_INVERT: equ 1
FONT_TYPE_LARGE: equ 4
FONT_TYPE_LARGE_INVERT: equ 0xff
FONT_TYPE_DEFAULT: equ FONT_TYPE_SMALL
;Display API
UpdateScreen: ld a, API_UpdateScreen
jp RSTDisplayAPI
SetTextPos: ld a, API_SetTextPos
jp RSTDisplayAPI
GetTextPos: ld a, API_GetTextPos
jp RSTDisplayAPI
SetAsciiFont: ld a, API_SetAsciiFont
jp RSTDisplayAPI
PutChar: ld a, API_PutChar
jp RSTDisplayAPI
PutS: ld a, API_PutS
jp RSTDisplayAPI
PutImage: ld a, API_PutImage
jp RSTDisplayAPI
PutSDImage: ld hl, API_PutSDImage
jp RSTDisplayAPI
GetFontPoint: ld a, API_GetFontPoint
jp RSTDisplayAPI
;Bank API
StandbyScreen: ld hl, API_StandbyScreen
jp RSTBankAPI
ClearScreen: ld hl, API_ClearScreen
jp RSTBankAPI
HoriScroll: ld hl, API_HoriScroll
jp RSTBankAPI
MsgBox: ld hl, API_MsgBox
jp RSTBankAPI
ShowLogo: ld hl, API_ShowLogo
jp RSTBankAPI
SetContrast: ld hl, API_SetContrast
jp RSTBankAPI
InvertRegion: ld hl, API_InvertRegion
jp RSTBankAPI
;-------------------------------------------------------------------------------
; end of file
;-------------------------------------------------------------------------------
CODE_LENGTH: equ $ - CODE_ADDRESS
FILE_OFFSET: equ HEADER_LENGTH + CODE_LENGTH
if FILE_LENGTH > FILE_OFFSET
ds FILE_LENGTH - FILE_OFFSET
endif
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -