common_includes/macros_sp.a80

225 lines
3.6 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

; LAST UPDATE: 05.07.2025 savelij
; ¤«ï ¢ë§ë¢®¢ BIOS
; RGC - ­®¬¥à ä㭪樨 BIOS
; RGB - ॣ¨áâà B
; RGA - ॣ¨áâà A
; RGIX - ॣ¨áâà IX
SPBIOS MACRO RGC,RGB,RGA,RGIX
IFNB RGIX
LD IX,RGIX
ENDIF
IFNB RGA
IF RGA = 0
XOR A
ELSE
LD A,RGA
ENDIF
ENDIF
IFNB RGC
IFNB RGB
LD BC,RGB << 8 + RGC
ELSE
LD C,RGC
ENDIF
ENDIF
RST 8
ENDM
; ¤«ï ¢ë§ë¢®¢ DSS
; RGC - ­®¬¥à ä㭪樨 BIOS
; RGB - ॣ¨áâà B
; RGA - ॣ¨áâà A
; RGIX - ॣ¨áâà IX
SPDSS MACRO RGC,RGB,RGA,RGIX
IFNB RGIX
LD IX,RGIX
ENDIF
IFNB RGA
IF RGA = 0
XOR A
ELSE
LD A,RGA
ENDIF
ENDIF
IFNB RGC
IFNB RGB
LD BC,RGB << 8 + RGC
ELSE
LD C,RGC
ENDIF
ENDIF
RST 0x10
ENDM
; ¤«ï à ¡®âë á MOUSE
; RGC - ­®¬¥à ä㭪樨 BIOS
; RGB - ॣ¨áâà B
; RGA - ॣ¨áâà A
; RGIX - ॣ¨áâà IX
SPMOUSE MACRO RGC,RGB,RGA,RGIX
IFNB RGIX
LD IX,RGIX
ENDIF
IFNB RGA
IF RGA = 0
XOR A
ELSE
LD A,RGA
ENDIF
ENDIF
IFNB RGC
IFNB RGB
LD BC,RGB << 8 + RGC
ELSE
LD C,RGC
ENDIF
ENDIF
RST 0x30
ENDM
; ¤«ï BIOS
; RGC - ­®¬¥à ä㭪樨 BIOS
; RGB - ॣ¨áâà B
; RGA - ॣ¨áâà A
BIOS18 MACRO RGC,RGB,RGA,RGIX
IFNB RGIX
LD IX,RGIX
ENDIF
IFNB RGA
IF RGA = 0
XOR A
ELSE
LD A,RGA
ENDIF
ENDIF
IFNB RGC
IFNB RGB
LD BC,RGB << 8 + RGC
ELSE
LD C,RGC
ENDIF
ENDIF
RST 0x18
ENDM
; ¤«ï SYSTEM.DOS ¨ SYSTEM.EXE
; RSTNUM - ­®¬¥à RST
; RGC - ­®¬¥à ä㭪樨 BIOS
; RGB - ॣ¨áâà B
; RGA - ॣ¨áâà A
SPSYSDOS MACRO RSTNUM,RGC,RGB,RGA,RGIX
IFNB RGIX
LD IX,RGIX
ENDIF
IFNB RGA
IF RGA = 0
XOR A
ELSE
LD A,RGA
ENDIF
ENDIF
IFNB RGC
IFNB RGB
LD BC,RGB << 8 + RGC
ELSE
LD C,RGC
ENDIF
ENDIF
RST RSTNUM
ENDM
; PORT -  ¤à¥á ¯®àâ 
; NUM - §­ ç¥­¨¥ ¤«ï § ¯¨á¨
; FLAG - ¯à¨ ­ «¨ç¨¨ ¢ ¯®àâ ¯¨è¥âáï ᮤ¥à¦¨¬®¥ ॣ¨áâà  A
SETPORT MACRO PORT,NUM,FLAG
IFB FLAG ; ¥á«¨ FLAG ¥áâì, ­¥ ¬¥­ï¥¬ ॣ¨áâà A
IF NUM = 0
XOR A
ELSE
LD A,NUM
ENDIF
ENDIF
OUT (PORT),A
ENDM
GETPORT MACRO PORT
IN A,(PORT)
ENDM
; ¨­¨â áç¥â稪  ¤«ï £¥­¥à æ¨¨ ¨¬¥­¨ ¬¥âª¨
GEN_NAME_INIT MACRO
NAMENUM := 0
ENDM
; £¥­¥à æ¨ï ¨¬¥­¨ ¬¥âª¨ ¨ ¨­ªà¨¬¥­â áç¥â稪  ¨¬¥­¨ ¬¥âª¨
GEN_NAME MACRO NAME,LABEL
NAMENUMTXT := "\{NAMENUM}"
NAME_{NAMENUMTXT} := $
IFNB LABEL
LABEL EQU NAMENUM ; £¥­¥à æ¨ï 㪠§ ­­®£® ¨¬¥­¨ á ⥪ã騬 ­®¬¥à®¬ á®®¡é¥­¨ï
ENDIF
NAMENUM := NAMENUM + 1
ENDM
; £¥­¥à æ¨ï â ¡«¨æë ¬¥â®ª (⮫쪮 á® ¢â®à®£® ¯à®å®¤ )
GEN_TABL MACRO NAME
IF MOMPASS > 1
CURRENT := 0
REPT MAXITEM
CURRENTTXT := "\{CURRENT}"
DW NAME_{CURRENTTXT}
CURRENT := CURRENT + 1
ENDM
ENDIF
ENDM
ACCEL MACRO BYTE
DB BYTE
ENDM
; ä®à¬¨à®¢ â¥«ì EXE § £®«®¢ª , ¯ à ¬¥âàë:
; ORGADR -  ¤à¥á ORG ¤«ï ãç¥â  à §¬¥à  EXE § £®«®¢ª 
; VERSION (BYTE) - ¢¥àá¨ï § £®«®¢ª 
; PRIMARYLOADER (WORD) - <20> §¬¥à ¯¥à¢¨ç­®£® § £àã§ç¨ª  ¨«¨ 0
; ADRLOAD (WORD) - €¤à¥á à á¯®«®¦¥­¨ï ª®¤  ¢ ¯ ¬ï⨠(0x4100-0xFFFF)
; ADRSTART (WORD) - €¤à¥á ¢ ¯ ¬ïâ¨ á ª®â®à®£® § ¯ãáâ¨âáï ª®¤ (Reg. PC)
; ADRSTACK (WORD) - €¤à¥á á⥪  (Reg. SP)
; RESERVED - ᪮«ìª® ¡ ©â 0 १¥à¢¨à®¢ âì
HDR_EXE MACRO ORGADR,VERSION,PRIMARYLOADER,ADRLOAD,ADRSTART,ADRSTACK,RESERVED
IFNB ORGADR
IF MOMPASS > 1
ORG ORGADR - (.END - .START)
ELSE
ORG ORGADR
ENDIF
ENDIF
.START DB "EXE",VERSION
IF MOMPASS > 1
DD .END - .START
ELSE
DD 22
ENDIF
DW PRIMARYLOADER
DW 0,0,0
DW ADRLOAD,ADRSTART,ADRSTACK
IF RESERVED > 0
DB RESERVED DUP (0)
ENDIF
.END
ENDM
; ä®à¬¨à®¢ â¥«ì ⥪á⮢®© áâப¨ ¤ âë ᡮન
BUILDDATE EQU "\{(DDATE / 10) + '0'}\{(DDATE # 10) + '0'}.\{MMOUNTH / 10 + '0'}\{MMOUNTH # 10 + '0'}.20\{(YYEAR / 10) + '0'}\{(YYEAR # 10) + '0'}"