225 lines
3.6 KiB
Plaintext
225 lines
3.6 KiB
Plaintext
|
||
; 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'}"
|