forked from MirrorRepos/RomWBW
16 changed files with 268 additions and 7 deletions
@ -0,0 +1,11 @@ |
|||
@echo off |
|||
setlocal |
|||
|
|||
set TOOLS=../../../Tools |
|||
set PATH=%TOOLS%\tasm32;%PATH% |
|||
set TASMTABS=%TOOLS%\tasm32 |
|||
|
|||
tasm -t180 -g3 -fFF -dWBW vgmplay.asm vgmplay.com vgmplay.lst || exit /b |
|||
|
|||
copy /Y VGMPLAY.COM ..\..\..\Binary\Apps\ || exit /b |
|||
copy /Y Tunes\*.* ..\..\..\Binary\Apps\Tunes\ || exit /b |
|||
@ -0,0 +1,5 @@ |
|||
@echo off |
|||
setlocal |
|||
|
|||
if exist *.com del *.com |
|||
if exist *.lst del *.lst |
|||
@ -0,0 +1,14 @@ |
|||
OBJECTS = VGMPLAY.COM |
|||
DEST = ../../../Binary/Apps |
|||
TOOLS = ../../../Tools |
|||
|
|||
include $(TOOLS)/Makefile.inc |
|||
|
|||
DEPS := VGMPLAY.ASM $(shell find . -name '*.inc') |
|||
|
|||
VGMPLAY.COM: $(DEPS) |
|||
$(TASM) -dWBW VGMPLAY.ASM VGMPLAY.COM VGMPLAY.LST |
|||
|
|||
all:: |
|||
mkdir -p $(DEST)/Tunes |
|||
cp Tunes/* $(DEST)/Tunes |
|||
@ -0,0 +1,175 @@ |
|||
; |
|||
; Print character in A without destroying any registers |
|||
; |
|||
PRTCHR: |
|||
PUSH BC ; save registers |
|||
PUSH DE |
|||
PUSH HL |
|||
LD E,A ; character to print in E |
|||
LD C,$02 ; BDOS function to output a character |
|||
CALL BDOS ; do it |
|||
POP HL ; restore registers |
|||
POP DE |
|||
POP BC |
|||
RET |
|||
; |
|||
PRTDOT: |
|||
; |
|||
; shortcut to print a dot preserving all regs |
|||
PUSH AF ; save af |
|||
LD A,'.' ; load dot char |
|||
CALL PRTCHR ; print it |
|||
POP AF ; restore af |
|||
RET ; done |
|||
; |
|||
PRTCR: |
|||
; |
|||
; shortcut to print a carriage return preserving all regs |
|||
PUSH AF ; save af |
|||
LD A,13 ; load CR value |
|||
CALL PRTCHR ; print it |
|||
POP AF ; restore af |
|||
RET ; done |
|||
; |
|||
; Print a zero terminated string at (DE) without destroying any registers |
|||
; |
|||
PRTSTR: |
|||
PUSH DE |
|||
; |
|||
PRTSTR1: |
|||
LD A,(DE) ; get next char |
|||
OR A |
|||
JR Z,PRTSTR2 |
|||
CALL PRTCHR |
|||
INC DE |
|||
JR PRTSTR1 |
|||
; |
|||
PRTSTR2: |
|||
POP DE ; restore registers |
|||
RET |
|||
; |
|||
; Print the value in A in hex without destroying any registers |
|||
; |
|||
PRTHEX: |
|||
PUSH AF ; save AF |
|||
PUSH DE ; save DE |
|||
CALL HEXASCII ; convert value in A to hex chars in DE |
|||
LD A,D ; get the high order hex char |
|||
CALL PRTCHR ; print it |
|||
LD A,E ; get the low order hex char |
|||
CALL PRTCHR ; print it |
|||
POP DE ; restore DE |
|||
POP AF ; restore AF |
|||
RET ; done |
|||
; |
|||
; print the hex word value in bc |
|||
; |
|||
PRTHEXWORD: |
|||
PUSH AF |
|||
LD A,B |
|||
CALL PRTHEX |
|||
LD A,C |
|||
CALL PRTHEX |
|||
POP AF |
|||
RET |
|||
; |
|||
; print the hex dword value in de:hl |
|||
; |
|||
PRTHEX32: |
|||
PUSH BC |
|||
PUSH DE |
|||
POP BC |
|||
CALL PRTHEXWORD |
|||
PUSH HL |
|||
POP BC |
|||
CALL PRTHEXWORD |
|||
POP BC |
|||
RET |
|||
; |
|||
; Convert binary value in A to ascii hex characters in DE |
|||
; |
|||
HEXASCII: |
|||
LD D,A ; save A in D |
|||
CALL HEXCONV ; convert low nibble of A to hex |
|||
LD E,A ; save it in E |
|||
LD A,D ; get original value back |
|||
RLCA ; rotate high order nibble to low bits |
|||
RLCA |
|||
RLCA |
|||
RLCA |
|||
CALL HEXCONV ; convert nibble |
|||
LD D,A ; save it in D |
|||
RET ; done |
|||
|
|||
; |
|||
; Convert low nibble of A to ascii hex |
|||
; |
|||
HEXCONV: |
|||
AND $0F ; low nibble only |
|||
ADD A,$90 |
|||
DAA |
|||
ADC A,$40 |
|||
DAA |
|||
RET |
|||
|
|||
; |
|||
; Print value of A or HL in decimal with leading zero suppression |
|||
; Use prtdecb for A or prtdecw for HL |
|||
; |
|||
PRTDECB: |
|||
PUSH HL |
|||
LD H,0 |
|||
LD L,A |
|||
CALL PRTDECW ; print it |
|||
POP HL |
|||
RET |
|||
; |
|||
PRTDECW: |
|||
PUSH AF |
|||
PUSH BC |
|||
PUSH DE |
|||
PUSH HL |
|||
CALL PRTDEC0 |
|||
POP HL |
|||
POP DE |
|||
POP BC |
|||
POP AF |
|||
RET |
|||
; |
|||
PRTDEC0: |
|||
LD E,'0' |
|||
LD BC,-10000 |
|||
CALL PRTDEC1 |
|||
LD BC,-1000 |
|||
CALL PRTDEC1 |
|||
LD BC,-100 |
|||
CALL PRTDEC1 |
|||
LD C,-10 |
|||
CALL PRTDEC1 |
|||
LD E,0 |
|||
LD C,-1 |
|||
PRTDEC1: |
|||
LD A,'0' - 1 |
|||
PRTDEC2: |
|||
INC A |
|||
ADD HL,BC |
|||
JR C,PRTDEC2 |
|||
SBC HL,BC |
|||
CP E |
|||
RET Z |
|||
LD E,0 |
|||
CALL PRTCHR |
|||
RET |
|||
; |
|||
; Start a new line |
|||
; |
|||
CRLF2: |
|||
CALL CRLF ; two of them |
|||
CRLF: |
|||
PUSH AF ; preserve AF |
|||
LD A,13 ; <CR> |
|||
CALL PRTCHR ; print it |
|||
LD A,10 ; <LF> |
|||
CALL PRTCHR ; print it |
|||
POP AF ; restore AF |
|||
RET |
|||
Loading…
Reference in new issue