690 lines
11 KiB
OpenEdge ABL
690 lines
11 KiB
OpenEdge ABL
%MACRO LoopCounterTo1 _counter _label
|
|
LD _counter
|
|
SUBI 0x01
|
|
ST _counter
|
|
BGT _label
|
|
%ENDM
|
|
|
|
%MACRO LoopCounterTo0 _counter _label
|
|
LD _counter
|
|
SUBI 0x01
|
|
ST _counter
|
|
BGE _label
|
|
%ENDM
|
|
|
|
%MACRO LoopCounter _counter _label
|
|
LD _counter
|
|
SUBI 0x01
|
|
ST _counter
|
|
BNE _label
|
|
%ENDM
|
|
|
|
%MACRO LoopCounter1 _counter _label
|
|
LD _counter
|
|
SUBI 0x01
|
|
ST _counter
|
|
BGE _label
|
|
%ENDM
|
|
|
|
%MACRO LutPeek _lut _index
|
|
LDWI _lut
|
|
DEEK
|
|
ADDW _index
|
|
PEEK
|
|
%ENDM
|
|
|
|
%MACRO LutDeek _lut _index _scratch
|
|
LDWI _lut
|
|
DEEK
|
|
STW _scratch
|
|
LDW _index
|
|
LSLW
|
|
ADDW _scratch
|
|
DEEK
|
|
%ENDM
|
|
|
|
%MACRO ForNextInc _var _label _end
|
|
INC _var
|
|
LD _var
|
|
SUBI _end
|
|
BLE _label
|
|
%ENDM
|
|
|
|
%MACRO ForNextDec _var _label _end
|
|
LDW _var
|
|
SUBI 1
|
|
STW _var
|
|
SUBI _end
|
|
BGE _label
|
|
%ENDM
|
|
|
|
%MACRO ForNextDecZero _var _label
|
|
LDW _var
|
|
SUBI 1
|
|
STW _var
|
|
BGE _label
|
|
%ENDM
|
|
|
|
%MACRO ForNextFarDecZero _var _label
|
|
LDW _var
|
|
SUBI 1
|
|
STW _var
|
|
BLT _label_ + 3
|
|
_label_ CALLI _label
|
|
%ENDM
|
|
|
|
%MACRO ForNextAdd _var _label _end _step
|
|
LDW _var
|
|
ADDI _step
|
|
STW _var
|
|
SUBI _end
|
|
BLE _label
|
|
%ENDM
|
|
|
|
%MACRO ForNextSub _var _label _end _step
|
|
LDW _var
|
|
SUBI _step
|
|
STW _var
|
|
SUBI _end
|
|
BGE _label
|
|
%ENDM
|
|
|
|
%MACRO ForNextVarAdd _var _label _vEnd _vStep
|
|
LDW _var
|
|
ADDW _vStep
|
|
STW _var
|
|
SUBW _vEnd
|
|
BLE _label
|
|
%ENDM
|
|
|
|
%MACRO ForNextVarSub _var _label _vEnd _vStep
|
|
LDW _var
|
|
SUBW _vStep
|
|
STW _var
|
|
SUBW _vEnd
|
|
BGE _label
|
|
%ENDM
|
|
|
|
%MACRO ForNextFarInc _var _label _end
|
|
INC _var
|
|
LD _var
|
|
SUBI _end
|
|
BGT _label_ + 3
|
|
_label_ CALLI _label
|
|
%ENDM
|
|
|
|
%MACRO ForNextFarDec _var _label _end
|
|
LDW _var
|
|
SUBI 1
|
|
STW _var
|
|
SUBI _end
|
|
BLT _label_ + 3
|
|
_label_ CALLI _label
|
|
%ENDM
|
|
|
|
%MACRO ForNextFarAdd _var _label _end _step
|
|
LDW _var
|
|
ADDI _step
|
|
STW _var
|
|
SUBI _end
|
|
BGT _label_ + 3
|
|
_label_ CALLI _label
|
|
%ENDM
|
|
|
|
%MACRO ForNextFarSub _var _label _end _step
|
|
LDW _var
|
|
SUBI _step
|
|
STW _var
|
|
SUBI _end
|
|
BLT _label_ + 3
|
|
_label_ CALLI _label
|
|
%ENDM
|
|
|
|
%MACRO ForNextFarVarAdd _var _label _vEnd _vStep
|
|
LDW _var
|
|
ADDW _vStep
|
|
STW _var
|
|
SUBW _vEnd
|
|
BGT _label_ + 3
|
|
_label_ CALLI _label
|
|
%ENDM
|
|
|
|
%MACRO ForNextFarVarSub _var _label _vEnd _vStep
|
|
LDW _var
|
|
SUBW _vStep
|
|
STW _var
|
|
SUBW _vEnd
|
|
BLT _label_ + 3
|
|
_label_ CALLI _label
|
|
%ENDM
|
|
|
|
%MACRO Return
|
|
POP
|
|
RET
|
|
%ENDM
|
|
|
|
%MACRO GotoNumeric
|
|
CALLI gotoNumericLabel
|
|
%ENDM
|
|
|
|
%MACRO GosubNumeric
|
|
CALLI gosubNumericLabel
|
|
%ENDM
|
|
|
|
%MACRO ResetVideoTable
|
|
CALLI resetVideoTable
|
|
%ENDM
|
|
|
|
%MACRO ResetVideoFlags
|
|
CALLI resetVideoFlags
|
|
%ENDM
|
|
|
|
%MACRO ClearScreen
|
|
CALLI clearScreen
|
|
%ENDM
|
|
|
|
%MACRO ClearRect
|
|
CALLI clearRect
|
|
%ENDM
|
|
|
|
%MACRO ClearVertBlinds
|
|
CALLI clearVertBlinds
|
|
%ENDM
|
|
|
|
%MACRO AtTextCursor
|
|
CALLI atTextCursor
|
|
%ENDM
|
|
|
|
%MACRO Input
|
|
CALLI input
|
|
%ENDM
|
|
|
|
%MACRO NewLine
|
|
CALLI newLineScroll
|
|
%ENDM
|
|
|
|
%MACRO PrintChr _chr
|
|
LDI _chr
|
|
CALLI printChr
|
|
%ENDM
|
|
|
|
%MACRO PrintAcChr
|
|
CALLI printChr
|
|
%ENDM
|
|
|
|
%MACRO PrintVarChr _var
|
|
LD _var
|
|
CALLI printChr
|
|
%ENDM
|
|
|
|
%MACRO PrintSpc
|
|
CALLI printSpc
|
|
%ENDM
|
|
|
|
%MACRO PrintHex
|
|
CALLI printHex
|
|
%ENDM
|
|
|
|
%MACRO PrintString _str
|
|
LDWI _str
|
|
CALLI printText
|
|
%ENDM
|
|
|
|
%MACRO PrintAcString
|
|
CALLI printText
|
|
%ENDM
|
|
|
|
%MACRO PrintVarString _var
|
|
LDW _var
|
|
CALLI printText
|
|
%ENDM
|
|
|
|
%MACRO PrintAcLeft
|
|
CALLI printLeft
|
|
%ENDM
|
|
|
|
%MACRO PrintAcRight
|
|
CALLI printRight
|
|
%ENDM
|
|
|
|
%MACRO PrintAcMid
|
|
CALLI printMid
|
|
%ENDM
|
|
|
|
%MACRO PrintAcLower
|
|
CALLI printLower
|
|
%ENDM
|
|
|
|
%MACRO PrintAcUpper
|
|
CALLI printUpper
|
|
%ENDM
|
|
|
|
%MACRO PrintInt16 _int
|
|
LDWI _int
|
|
CALLI printInt16
|
|
%ENDM
|
|
|
|
%MACRO PrintAcInt16
|
|
CALLI printInt16
|
|
%ENDM
|
|
|
|
%MACRO PrintVarInt16 _var
|
|
LDW _var
|
|
CALLI printInt16
|
|
%ENDM
|
|
|
|
%MACRO ReadIntVar
|
|
CALLI readIntVar
|
|
%ENDM
|
|
|
|
%MACRO ReadStrVar
|
|
CALLI readStrVar
|
|
%ENDM
|
|
|
|
%MACRO StringChr
|
|
CALLI stringChr
|
|
%ENDM
|
|
|
|
%MACRO StringSpc
|
|
STW strAddr
|
|
CALLI stringSpc
|
|
%ENDM
|
|
|
|
%MACRO StringHex
|
|
STW strAddr
|
|
CALLI stringHex
|
|
%ENDM
|
|
|
|
%MACRO StringCopy
|
|
CALLI stringCopy
|
|
%ENDM
|
|
|
|
%MACRO StringCmp
|
|
CALLI stringCmp
|
|
%ENDM
|
|
|
|
%MACRO StringConcat
|
|
CALLI stringConcat
|
|
%ENDM
|
|
|
|
%MACRO StringConcatLut
|
|
CALLI stringConcatLut
|
|
%ENDM
|
|
|
|
%MACRO StringLeft
|
|
CALLI stringLeft
|
|
%ENDM
|
|
|
|
%MACRO StringRight
|
|
CALLI stringRight
|
|
%ENDM
|
|
|
|
%MACRO StringMid
|
|
CALLI stringMid
|
|
%ENDM
|
|
|
|
%MACRO StringLower
|
|
STW strDstAddr
|
|
CALLI stringLower
|
|
%ENDM
|
|
|
|
%MACRO StringUpper
|
|
STW strDstAddr
|
|
CALLI stringUpper
|
|
%ENDM
|
|
|
|
%MACRO StringInt
|
|
CALLI stringInt
|
|
%ENDM
|
|
|
|
%MACRO IntegerStr
|
|
CALLI integerStr
|
|
%ENDM
|
|
|
|
%MACRO Absolute
|
|
CALLI absolute
|
|
%ENDM
|
|
|
|
%MACRO Sign
|
|
CALLI sign
|
|
%ENDM
|
|
|
|
%MACRO IntMin
|
|
CALLI integerMin
|
|
%ENDM
|
|
|
|
%MACRO IntMax
|
|
CALLI integerMax
|
|
%ENDM
|
|
|
|
%MACRO IntClamp
|
|
CALLI integerClamp
|
|
%ENDM
|
|
|
|
%MACRO Rand
|
|
CALLI rand16bit
|
|
%ENDM
|
|
|
|
%MACRO RandMod
|
|
STW mathY
|
|
CALLI randMod16bit
|
|
%ENDM
|
|
|
|
%MACRO ShiftLeft4bit
|
|
CALLI shiftLeft4bit
|
|
%ENDM
|
|
|
|
%MACRO ShiftLeft8bit
|
|
CALLI shiftLeft8bit
|
|
%ENDM
|
|
|
|
%MACRO ShiftRight1bit
|
|
CALLI shiftRight1bit
|
|
%ENDM
|
|
|
|
%MACRO ShiftRight2bit
|
|
CALLI shiftRight2bit
|
|
%ENDM
|
|
|
|
%MACRO ShiftRight3bit
|
|
CALLI shiftRight3bit
|
|
%ENDM
|
|
|
|
%MACRO ShiftRight4bit
|
|
CALLI shiftRight4bit
|
|
%ENDM
|
|
|
|
%MACRO ShiftRight5bit
|
|
CALLI shiftRight5bit
|
|
%ENDM
|
|
|
|
%MACRO ShiftRight6bit
|
|
CALLI shiftRight6bit
|
|
%ENDM
|
|
|
|
%MACRO ShiftRight7bit
|
|
CALLI shiftRight7bit
|
|
%ENDM
|
|
|
|
%MACRO ShiftRight8bit
|
|
CALLI shiftRight8bit
|
|
%ENDM
|
|
|
|
%MACRO ShiftRightSgn1bit
|
|
CALLI shiftRightSgn1bit
|
|
%ENDM
|
|
|
|
%MACRO ShiftRightSgn2bit
|
|
CALLI shiftRightSgn2bit
|
|
%ENDM
|
|
|
|
%MACRO ShiftRightSgn3bit
|
|
CALLI shiftRightSgn3bit
|
|
%ENDM
|
|
|
|
%MACRO ShiftRightSgn4bit
|
|
CALLI shiftRightSgn4bit
|
|
%ENDM
|
|
|
|
%MACRO ShiftRightSgn5bit
|
|
CALLI shiftRightSgn5bit
|
|
%ENDM
|
|
|
|
%MACRO ShiftRightSgn6bit
|
|
CALLI shiftRightSgn6bit
|
|
%ENDM
|
|
|
|
%MACRO ShiftRightSgn7bit
|
|
CALLI shiftRightSgn7bit
|
|
%ENDM
|
|
|
|
%MACRO ShiftRightSgn8bit
|
|
CALLI shiftRightSgn8bit
|
|
%ENDM
|
|
|
|
%MACRO ScanlineMode
|
|
CALLI scanlineMode
|
|
%ENDM
|
|
|
|
%MACRO WaitVBlanks
|
|
CALLI waitVBlanks
|
|
%ENDM
|
|
|
|
%MACRO WaitVBlank
|
|
CALLI waitVBlank
|
|
%ENDM
|
|
|
|
%MACRO ReadPixel
|
|
LDW drawPixel_xy
|
|
CALLI readPixel
|
|
%ENDM
|
|
|
|
%MACRO DrawPixel
|
|
LDW drawPixel_xy
|
|
CALLI drawPixel
|
|
%ENDM
|
|
|
|
%MACRO DrawLine
|
|
CALLI drawLine
|
|
%ENDM
|
|
|
|
%MACRO DrawVTLine
|
|
CALLI drawVTLine
|
|
%ENDM
|
|
|
|
%MACRO DrawHLine
|
|
CALLI drawHLine
|
|
%ENDM
|
|
|
|
%MACRO DrawVLine
|
|
CALLI drawVLine
|
|
%ENDM
|
|
|
|
%MACRO DrawCircle
|
|
CALLI drawCircle
|
|
%ENDM
|
|
|
|
%MACRO DrawCircleF
|
|
CALLI drawCircleF
|
|
%ENDM
|
|
|
|
%MACRO DrawRect
|
|
CALLI drawRect
|
|
%ENDM
|
|
|
|
%MACRO DrawRectF
|
|
CALLI drawRectF
|
|
%ENDM
|
|
|
|
%MACRO DrawPoly
|
|
CALLI drawPoly
|
|
%ENDM
|
|
|
|
%MACRO DrawPolyRel
|
|
CALLI drawPolyRel
|
|
%ENDM
|
|
|
|
%MACRO SetPolyRelFlipX
|
|
CALLI setPolyRelFlipX
|
|
%ENDM
|
|
|
|
%MACRO SetPolyRelFlipY
|
|
CALLI setPolyRelFlipY
|
|
%ENDM
|
|
|
|
%MACRO AtLineCursor
|
|
CALLI atLineCursor
|
|
%ENDM
|
|
|
|
%MACRO SetMidiStream
|
|
STW midiId
|
|
CALLI setMidiStream
|
|
%ENDM
|
|
|
|
%MACRO PlayMidi
|
|
STW midiStream
|
|
CALLI resetMidi
|
|
%ENDM
|
|
|
|
%MACRO PlayMidiV
|
|
STW midiStream
|
|
CALLI resetMidi
|
|
%ENDM
|
|
|
|
%MACRO GetMidiNote
|
|
CALLI midiGetNote
|
|
%ENDM
|
|
|
|
%MACRO PlayMusic
|
|
STW musicStream
|
|
CALLI resetMusic
|
|
CALLI playMusic
|
|
%ENDM
|
|
|
|
%MACRO GetMusicNote
|
|
CALLI musicGetNote
|
|
%ENDM
|
|
|
|
%MACRO TimeString
|
|
CALLI timeString
|
|
%ENDM
|
|
|
|
%MACRO DrawSprite
|
|
CALLI drawSprite
|
|
%ENDM
|
|
|
|
%MACRO DrawSpriteX
|
|
CALLI drawSpriteX
|
|
%ENDM
|
|
|
|
%MACRO DrawSpriteY
|
|
CALLI drawSpriteY
|
|
%ENDM
|
|
|
|
%MACRO DrawSpriteXY
|
|
CALLI drawSpriteXY
|
|
%ENDM
|
|
|
|
%MACRO GetSpriteLUT
|
|
CALLI getSpriteLUT
|
|
%ENDM
|
|
|
|
%MACRO SoundAll
|
|
CALLI soundAll
|
|
%ENDM
|
|
|
|
%MACRO SoundAllOff
|
|
CALLI soundAllOff
|
|
%ENDM
|
|
|
|
%MACRO SoundOff
|
|
CALLI soundOff
|
|
%ENDM
|
|
|
|
%MACRO SoundOn
|
|
CALLI soundOn
|
|
%ENDM
|
|
|
|
%MACRO SoundOnV
|
|
CALLI soundOnV
|
|
%ENDM
|
|
|
|
%MACRO SoundMod
|
|
CALLI soundMod
|
|
%ENDM
|
|
|
|
%MACRO BcdAdd
|
|
CALLI bcdAdd
|
|
%ENDM
|
|
|
|
%MACRO BcdSub
|
|
CALLI bcdSub
|
|
%ENDM
|
|
|
|
%MACRO BcdInt
|
|
CALLI bcdInt
|
|
%ENDM
|
|
|
|
%MACRO BcdCmp
|
|
CALLI bcdCmp
|
|
%ENDM
|
|
|
|
%MACRO BcdCpy
|
|
CALLI bcdCpy
|
|
%ENDM
|
|
|
|
%MACRO JumpFalse _label id
|
|
BNE _id_ + 3 ; unique id is used as an internal macro label
|
|
_id_ CALLI _label
|
|
%ENDM
|
|
|
|
%MACRO JumpEQ _label id
|
|
BEQ _id_ + 3
|
|
_id_ CALLI _label
|
|
%ENDM
|
|
|
|
%MACRO JumpNE _label id
|
|
BNE _id_ + 3
|
|
_id_ CALLI _label
|
|
%ENDM
|
|
|
|
%MACRO JumpLE _label id
|
|
BLE _id_ + 3
|
|
_id_ CALLI _label
|
|
%ENDM
|
|
|
|
%MACRO JumpGE _label id
|
|
BGE _id_ + 3
|
|
_id_ CALLI _label
|
|
%ENDM
|
|
|
|
%MACRO JumpLT _label id
|
|
BLT _id_ + 3
|
|
_id_ CALLI _label
|
|
%ENDM
|
|
|
|
%MACRO JumpGT _label id
|
|
BGT _id_ + 3
|
|
_id_ CALLI _label
|
|
%ENDM
|
|
|
|
%MACRO CopyBytes
|
|
CALLI copyBytes
|
|
%ENDM
|
|
|
|
%MACRO CopyWords
|
|
CALLI copyWords
|
|
%ENDM
|
|
|
|
%MACRO ResetVars
|
|
CALLI resetVars
|
|
%ENDM
|
|
|
|
; Can't use CALLI as this code can be run on ROM's < ROMv5a
|
|
%MACRO RomCheck
|
|
LDWI romCheck
|
|
CALL giga_vAC
|
|
%ENDM
|
|
|
|
%MACRO RomExec
|
|
CALLI romExec
|
|
%ENDM
|
|
|
|
%MACRO RomRead
|
|
STW romReadAddr
|
|
CALLI romRead
|
|
%ENDM
|
|
|
|
%MACRO Initialise
|
|
LDWI 0x0F20
|
|
STW fgbgColour ; yellow on blue
|
|
|
|
LDI ENABLE_SCROLL_BIT
|
|
STW miscFlags ; reset flags
|
|
|
|
LDI 0
|
|
STW midiStream ; reset MIDI
|
|
|
|
CALLI resetVideoFlags
|
|
%ENDM
|