This commit is contained in:
Tolik Trek 2023-06-12 00:09:22 +10:00
commit 0b0f943c34
11 changed files with 3411 additions and 0 deletions

BIN
.DS_Store vendored Normal file

Binary file not shown.

408
LUA/Functions.lua Normal file
View File

@ -0,0 +1,408 @@
---@diagnostic disable: undefined-global
-- []===========================[]
-- ¯à¥¢à é ¥â "YYYY-MM-DD" ¢ "DD", "MM", "YYYY"
function Get_date_RU(str_date)
return string.char(string.byte(str_date,10), string.byte(str_date,11)), string.char(string.byte(str_date,7), string.byte(str_date,8)), string.char(string.byte(str_date,2), string.byte(str_date,3), string.byte(str_date,4), string.byte(str_date,5))
end
-- []===========================[]
-- []===========================[]
function Get_file_data(fname)
-- 㡨ࠥ¬ ¨§ ¤¥ä ©­ _¯ãâ¨_ä ©«  ¢á直¥ â ¡ë ¨ ¯à®¡¥«ë «¨è­¨¥. <20>ãâì ¤®«¦¥­ ¡ëâì ®¡à ¬«ñ­ ®¤¨­ à­ë¬¨ ª ¢ë窠¬¨
fname = string.gsub(string.match(fname, '\'.*\''), "'", "")
local file = assert(io.open(fname, "rb"))
local data = file:read("*all")
file:close()
return data
end
-- []===========================[]
-- []===========================[]
-- ¢®§¢à é ¥â ç¨á«® ¨§ áâப¨ ¨«¨ ä ©«  § ¤ ­­®© à §¬¥à­®áâ¨
-- get_number (file, offset, bytes)
function Get_number (str,offset, bytes)
local factor = 1
local number = 0
if bytes > 8 then
sj.error("error in function 'get_number' with variable 'bytes'", bytes)
sj.exit(1)
end
for i = offset, offset+bytes-1, 1 do
number = number + str:byte(i) * factor
factor = factor * 256
end
return number
end
-- []===========================[]
-- []===========================[]
-- áç¨â ¥â ª®­â஫ì­ãî á㬬㠤«ï ä ©« 
-- get_checksum(FileName, FileLength)
function Get_checksum(fname, fStart, fLength)
local reg_b = 0
local reg_c = 0
local reg_d = 0
local reg_e = 0
local data = Get_file_data(fname)
fLength = tonumber(fLength)
if (fLength == 0) or (fLength == nil) then fLength = data:len() end
if (fStart == 0) or (fStart == nil) then fStart = 1 end
-- <09> áçñâ ª®­â஫쭮© á㬬ë (ॣ¨áâàë BC - ¬« ¤è¨© ¨ DE - áâ à訩):
--print(fname, "fStart", fStart, "fLength", fLength)
for i = fStart, fLength, 1 do
reg_c = reg_c + data:byte(i)
if reg_c > 255 then
reg_c = reg_c - 256
reg_b = reg_b + data:byte(i)
if reg_b > 255 then
reg_b = reg_b - 256
reg_e = reg_e + data:byte(i)
if reg_e > 255 then
reg_e = reg_e - 256
reg_d = reg_d + data:byte(i)
if reg_d > 255 then
reg_d = reg_d - 256
end
end
end
end
--print (string.format("%x",i-1), string.format("%x", reg_d*16777216+reg_e*65536+reg_b*256+reg_c))
end
return reg_d*16777216+reg_e*65536+reg_b*256+reg_c
end
-- []===========================[]
-- []===========================[]
-- ¤®áâ ñâ ¨§ BMP-8bit à §à¥è¥­¨¥, à §¬¥à à áâà , ᬥ饭¨¥ à áâà , ª®«-¢® 梥⮢
function Get_bmp8bit_values(fname)
local TBitMapFileHeader = {
bfType = 0+1,
bfSize = 2+1,
bfOffBits = 10+1
}
local TBitmapInfoHeader = {
biSize = 0+14+1,
biWidth = 4+14+1,
biHeight = 8+14+1,
biplanes = 12+14+1,
biBitCount = 14+14+1,
biCompression = 16+14+1,
biSizeImage = 20+14+1,
biXPelsPerMeter = 24+14+1,
biYPelsPerMeter = 28+14+1,
biClrUsed = 32+14+1,
biClrImportant = 36+14+1
}
local bmp_height, bmp_width, bmp_image_size, bmp_colors, bmp_image_offset, temp_variable
local data = Get_file_data(fname)
temp_variable = Get_number (data,TBitMapFileHeader.bfType, 2)
if temp_variable ~= 19778 then
sj.error("error, not BMP file")
sj.exit(1)
end
temp_variable = Get_number(data, TBitmapInfoHeader.biSize, 4)
if temp_variable ~= 40 then
sj.error("error, unsupported DIB header", temp_variable)
sj.exit(1)
end
temp_variable = Get_number (data,TBitmapInfoHeader.biBitCount, 2)
if temp_variable > 8 then
sj.error("error in BMP file, not 8-bit pallete, but", temp_variable)
sj.exit(1)
end
bmp_height = Get_number (data, TBitmapInfoHeader.biHeight, 4)
--[[
if bmp_height > 256 then
sj.error("error in BMP file, max height is 256, but", bmp_height)
sj.exit(1)
end
]]--
bmp_width = Get_number(data, TBitmapInfoHeader.biWidth, 4)
--[[
if bmp_width > 320 then
sj.error("error in BMP file, max width is 320, but", bmp_width)
sj.exit(1)
end
]]--
bmp_image_offset = Get_number(data, TBitMapFileHeader.bfOffBits, 4)
bmp_image_size = bmp_height * bmp_width
bmp_colors = (Get_number (data, TBitMapFileHeader.bfOffBits, 4) - Get_number (data, TBitmapInfoHeader.biSize, 4) - (TBitmapInfoHeader.biSize - 1))/4
return bmp_width, bmp_height, bmp_image_size, bmp_image_offset, bmp_colors
end
-- []===========================[]
-- []===========================[]
function Detect_os()
local BinaryFormat = package.cpath:match("%p[\\|/][?]%p(%a+)")
if BinaryFormat == "dll" then return "Windows" elseif
BinaryFormat == "dylib" then return "MacOS" elseif
BinaryFormat == "so" then
if (os.execute("test -e /sbin/dynamic_pager")) then return "MacOS"
else return "Linux"
end
else
print("--[ ERROR! OS is not detected!!! ]--")
os.exit(1)
end
end
-- []===========================[]
-- []===========================[]
function File_save(fname, new_fname, offset, size, fstep, fskip)
if (fstep and fskip) == nil then fstep = 0 fskip = 0 end
local data = Get_file_data(fname)
local file = assert(io.open(new_fname, "w+b"))
if (io.type(file) == "file" ) then
if fstep + fskip ~= 0 then
local i = offset + 1
repeat
file:write(string.sub(data, i, i+fstep-1))
i = i+fstep+fskip
until i >= (offset + 1 + size - 1)
file:close()
return true
else
file:write(string.sub(data, offset+1, offset+1+size-1))
file:close()
return true
end
else
file:close()
return false
end
end
-- []===========================[]
-- []===========================[]
function Get_Full_Filename(pname, fname, OStype)
-- 㡨ࠥ¬ ¨§ ¤¥ä ©­ _¯ãâ¨_ä ©«  ¢á直¥ â ¡ë ¨ ¯à®¡¥«ë «¨è­¨¥. <20>ãâì ¤®«¦¥­ ¡ëâì ®¡à ¬«ñ­ ®¤¨­ à­ë¬¨ ª ¢ë窠¬¨
local psep = "/"
fname = string.gsub(string.match(fname, '\'.*\''), "'", "")
pname = string.gsub(string.match(pname, '\'.*\''), "'", "")
return (pname .. psep .. fname)
--print (fname, pname)
end
-- []===========================[]
-- []===========================[]
function INCLUDING_INFO_START()
-- {ii_parent_num} = ii_count
-- {ii_parent_num, ii_nested_level, ii_file_name, ii_start_addr, ii_end_addr, ii_its_size}
-- {ii_parent_num, ii_nested_level, ii_file_name, ii_start_addr, ii_end_addr, ii_its_size}
-- {ii_parent_num} = ii_count
-- {ii_parent_num, ii_nested_level, ii_file_name, ii_start_addr, ii_end_addr, ii_its_size}
-- {ii_parent_num, ii_nested_level, ii_file_name, ii_start_addr, ii_end_addr, ii_its_size}
--ii_parent_num = 1
ii_nested_level = 1
ii_file_name = 2
ii_start_addr = 3
ii_end_addr = 4
ii_its_size = 5
ii_array = {} -- nest level, data
ii_count = 0
ii_nest = {}
ii_nest_count = 0
ii_tmp_nested_level = -1
end
-- []---------------------------[]
function INCLUDING_INFO_ADDstart()
local temp_cnt = tonumber(sj.get_define("__INCLUDE_LEVEL__"))
if temp_cnt < ii_tmp_nested_level then
print("Error in script INCLUDING_INFO_ADDstart: new nesting < old nesting\r\n","File: " .. sj.get_define("__FILE__"), "Line: " .. sj.get_define("__LINE__"))
sj.exit(1)
elseif temp_cnt > 20 then
print("Error in script INCLUDING_INFO_ADDstart: current nesting > 20\r\n","File: " .. sj.get_define("__FILE__"), "Line: " .. sj.get_define("__LINE__"))
sj.exit(1)
end
ii_array[ii_count] = {--ii_count, -- ii_parent_num
temp_cnt, -- ii_nested_level
sj.get_define("__FILE__"),
sj.current_address,
0,0
}
ii_nest[ii_nest_count] = ii_count
ii_nest_count = ii_nest_count+1
ii_count = ii_count + 1
ii_tmp_nested_level = temp_cnt
end
-- []---------------------------[]
function INCLUDING_INFO_ADDend()
local temp_cnt = tonumber(sj.get_define("__INCLUDE_LEVEL__"))
if temp_cnt > ii_tmp_nested_level then
print("Error in script INCLUDING_INFO_ADDend: current nesting > old nesting\r\n","File: " .. sj.get_define("__FILE__"), "Line: " .. sj.get_define("__LINE__"))
sj.exit(1)
end
ii_nest_count = ii_nest_count-1
temp_cnt = ii_nest[ii_nest_count]
ii_array[temp_cnt][ii_end_addr] = sj.current_address
ii_array[temp_cnt][ii_its_size] = sj.current_address - ii_array[temp_cnt][ii_start_addr]
ii_tmp_nested_level = ii_array[temp_cnt][ii_nested_level]
end
-- []---------------------------[]
function INCLUDING_INFO_END()
local nest_sting_start = "Àó"
local nest_sting_line = "ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ"
local previous_nest = 0
print(" File\t\t\t\t\t","Start \tEnd \tSize ")
for i = 0, ii_count-1, 1 do
--print(tostring(ii_array[i][ii_nested_level]) .. " " .. ii_array[i][ii_file_name]:sub(ii_array[i][ii_file_name]:find("/")+1,-1),"\r\t\t\t\t\t", tostring(ii_array[i][ii_start_addr]), tostring(ii_array[i][ii_end_addr]), tostring(ii_array[i][ii_its_size]))
print(tostring(ii_array[i][ii_nested_level]) .. " " .. ii_array[i][ii_file_name]:sub(ii_array[i][ii_file_name]:find("/")+1,-1),"\r\t\t\t\t\t", string.format("%X",ii_array[i][ii_start_addr]), string.format("%X",ii_array[i][ii_end_addr]), tostring(ii_array[i][ii_its_size]))
end
end
-- []===========================[]
-- []===========================[]
function Hrust_File(cmdLine, firstPath, secondPath, firstName, secondName)
cmdLine = string.gsub(string.match(cmdLine, '\'.*\''), "'", "")
firstPath = string.gsub(string.match(firstPath, '\'.*\''), "'", "")
secondPath = string.gsub(string.match(secondPath, '\'.*\''), "'", "")
firstName = string.gsub(string.match(firstName, '\'.*\''), "'", "")
secondName = string.gsub(string.match(secondName, '\'.*\''), "'", "")
local fullCmdLine = cmdLine .. firstPath .. firstName .. " " .. secondPath .. secondName
print(fullCmdLine)
end
-- []===========================[]
-- []===========================[]
-- Š®­¢¥àâ¨â ç¨á«® ¢ áâப㠥£® ¤¢®¨ç­®£® ¯à¥¤áâ ¢«¥­¨ï. bits - à §à來®áâì, ¥á«¨ ç¨á«® ¡®«ìè¥,
-- 祬 à §à來®áâì ¤«ï ¯à¥¤áâ ¢«¥­¨ï í⮣® ç¨á« , â® ¡ã¤¥â ¡ £
function Number2Binary(n, bits)
bits = bits-1
local t = {}
for i = bits, 0, -1 do
t[#t+1] = math.floor(n/2^i)
n = n%2^i
end
return table.concat(t)
end
-- []===========================[]
-- []===========================[]
function DCP_Page2Table (DCP_PAGE)
local portsTable = {}
local bitAddress = 0
local bitTMPor = 0
local bitMask = 0
local CNFadr = 0
local CNFadrEnd = 0
for Altera_Port = 1, 0xFF, 1 do
for CNF = 0, 3, 1 do
CNFadr = 1 + CNF * 0x1000
CNFadrEnd = CNFadr + 0x0FFF
bitAddress = 0
bitTMPor = 0
for address = CNFadr, CNFadrEnd, 1 do
if (DCP_PAGE:byte(address) == Altera_Port) then
if bitAddress == 0 then
bitAddress = (address-1)
bitTMPor = (address-1)
else
bitAddress = bitAddress & (address-1)
bitTMPor = bitTMPor | (address-1)
end
end
end
if (bitAddress ~= 0) then
bitMask = ~bitAddress ~ bitTMPor
bitMask = bitMask & 0x3FFF
portsTable[#portsTable+1] = bitAddress
portsTable[#portsTable+1] = bitMask
portsTable[#portsTable+1] = Altera_Port
end
end
end
return portsTable
end
-- []===========================[]
-- []===========================[]
function Generate_DCPASM_fromPAGE (DCP_Page_file, DCP_new_ASM)
-- ¯®«ãç ¥¬ ¯®àâë ¨§ ä ©« 
print(DCP_Page_file)
print(DCP_new_ASM)
local data = Get_file_data(DCP_Page_file)
DCP_TABLE = DCP_Page2Table(data)
-- ®âªà뢠¥¬ ä ©« ­  § ¯¨áì
local DCP_TABLE_CODE
-- 㡨ࠥ¬ ¨§ ¤¥ä ©­ _¯ãâ¨_ä ©«  ¢á直¥ â ¡ë ¨ ¯à®¡¥«ë «¨è­¨¥. <20>ãâì ¤®«¦¥­ ¡ëâì ®¡à ¬«ñ­ ®¤¨­ à­ë¬¨ ª ¢ë窠¬¨
DCP_new_ASM = string.gsub(string.match(DCP_new_ASM, '\'.*\''), "'", "")
DCP_TABLE_CODE = assert(io.open(DCP_new_ASM, "w+"))
-- è ¯ª 
assert(DCP_TABLE_CODE:write(';', '\r\n'))
assert(DCP_TABLE_CODE:write(';-----------------------------------------------------------------------;', '\r\n', '\r\n'))
-- â ¡«¨æ 
for i = 1, #DCP_TABLE, 3 do
assert(DCP_TABLE_CODE:write(';', '\r\n'))
assert(DCP_TABLE_CODE:write(' DW %', Number2Binary(DCP_TABLE[i], 14), '\r\n'))
assert(DCP_TABLE_CODE:write(' DW %', Number2Binary(DCP_TABLE[i+1], 14), '\r\n'))
assert(DCP_TABLE_CODE:write(' DB #', string.format("%X",DCP_TABLE[i+2]), '\r\n'))
end
-- ¯®¤¢ «
assert(DCP_TABLE_CODE:write('; DCP END MARKER', '\r\n'))
assert(DCP_TABLE_CODE:write(' DW 0,0,0', '\r\n'))
assert(DCP_TABLE_CODE:write(';-----------------------------------------------------------------------;', '\r\n'))
assert(DCP_TABLE_CODE:write(';'))
-- § ªàë⨥ ä ©« 
assert(DCP_TABLE_CODE:flush())
assert(DCP_TABLE_CODE:close())
end
-- []===========================[]

197
constants/BIOS_equ.inc Normal file
View File

@ -0,0 +1,197 @@
; ‘âப  ID ¡ãâ«® ¤¥à 
MACRO _mSYSID
DZ 'Starting...'
ENDM
;
;[‚ë§®¢ ä㭪権 .-------------------
ToBIOS EQU #08
ToBIOS_18 EQU #18
ToBIOS_3D13 EQU #3D13
ToBIOS_FromEXT EQU #3FD0
;---------------------------------------
BIOS:
;[”㭪樨 à ¡®âë á ¯ ¬ïâìî]-------------
.GetMemSize EQU #C0 ;#90 ; Ž¯à¥¤¥«¥­¨¥ ®¡ê¥¬®¢ އ“
.InitMem EQU #C1 ;#91 ; ˆ­¨æ¨ «¨§ æ¨ï à á¯à¥¤¥«¥­¨ï ¯ ¬ïâ¨.
.GetMem EQU #C2 ; ‚뤥«¥­¨¥ ¡«®ª  އ“
.FreeMem EQU #C3 ; Žá¢®¡®¤¨âì ¡«®ª އ“
.GetMemPage EQU #C4 ; <20>®«ãç¨âì 䨧¨ç¥áª¨© ­®¬¥à áâà ­¨æë ¨§ ¡«®ª  ¯ ¬ïâ¨
.GetMemBlkPages EQU #C5 ; <20>®«ãç¨âì ᯨ᮪ 䨧¨ç¥áª¨å áâà ­¨æ ¡«®ª 
.GetBanksPorts EQU #C6 ; <20>®«ã祭¨¥  ¤à¥á®¢ ¯®à⮢ ®ª®­
.GetMemPageNext EQU #C7 ; <20>®«ãç¨âì ­®¬¥à á«¥¤ãî饩 áâà ­¨æë ¡«®ª  ¯® ¯à¥¤ë¤ã饬ã ü
;.GET_RAMD_NUM EQU #9B ; <20>®«ãç¨âì ­®¬¥à RAM-Disk-  (0..15) ¯® ¥£® block id
.DivMemBlocks EQU #9D ; <20> §¤¥«¥­¨¥ ¡«®ª 
.MergeMemBlocks EQU #9E ; ‘«¨ï­¨¥ ¡«®ª®¢
;---------------------------------------
;[<EFBFBD> ¡®â  á ¡«®ª ¬¨ އ“, ª ª á RAM-Disks]
.BLK_RD_WR EQU #C8 ; —⥭¨¥/§ ¯¨áì ¨§/¢ ¡«®ª ¯ ¬ï⨠ᥪâ®à ¬¨ ¯® 256 ¡ ©â
.GetMemRMD EQU #92 ; <20>®«ãç¨âì ¡«®ª ¯ ¬ï⨠N bytes ¤«ï RAM-Disk' 
.FreeMemRMD EQU #93 ; Žá¢®¡®¤¨âì ¡«®ª ¯ ¬ï⨠¤«ï RAM-Disk' 
.GetMemPageRMD EQU #94 ; <20>®«ãç¨âì 䨧¨ç¥áª¨© ­®¬¥à áâà ­¨æë RAM-Disk' 
.RAMD_CALC_PAGE EQU #98 ; ‚ëç¨á«¥­¨¥ áâà ­¨æë ¨  ¤à¥á  ¢ RAM-Disk ¯®  ¡á®«îâ­®¬ã ­®¬¥àã ᥪâ®à 
.BLK_TO_RAMD EQU #C9 ; <20> §­ ç¨âì ¡«®ª ¯ ¬ï⨠RAM-Disk-ã
.RAMD_CLEAR EQU #CA ; Žá¢®¡®¤¨âì RAM-Disk
.GET_RAMD_ST EQU #CE ; <20>®«ã祭¨¥ ¨¤¥­â¨ä¨ª â®à  ¡«®ª , ­ §­ ç¥­­®£® ­  RAM-Disk
;---------------------------------------
;[“¯à ¢«¥­¨¥ ­ §­ ç¥­¨¥¬ ­  ¤¨áª®¢®¤ë]--
.RAMD_TO_DRV EQU #CB ; <20> §­ ç¥­¨¥ RAM-Disk ­  ¤¨áª®¢®¤ TR-DOS
.FDD_TO_DRV EQU #CC ; <20> §­ ç¥­¨¥ 䨧¨ç¥áª®£® ¤¨áª®¢®¤  ­  «®£¨ç¥áª¨©
.HDD_TO_DRV EQU #CD ; <20> §­ ç¥­¨¥ ¢¨­ç¥áâ¥à  ­  ¤¨áª®¢®¤
.GET_DRV_ST EQU #CF ; <20>®«ãç¨âì ⨯ ­ §­ ç¥­¨ï ­  «®£¨ç¥áª¨© ¤¨áª®¢®¤
;---------------------------------------
;[“¯à ¢«¥­¨¥ ®ª­ ¬¨ ¨ ०¨¬ ¬¨ íªà ­ ]--
.WIN_OPEN EQU #B0 ; ”ã­ªæ¨ï ®âªàëâ¨ï ®ª­ .
.WIN_CLOSE EQU #B1 ; § ªàë⨥ ®ª­ 
.WIN_COPY EQU #B2 ; Š®¯¨à®¢ ­¨¥ ¤ ­­ëå ⥪á⮢®£® ®ª­  ¢ ¯ ¬ïâì (§ ¯®¬¨­ ­¨¥ ®ª­ )
.WIN_RESTORE EQU #B3 ; Š®¯¨à®¢ ­¨¥ ¨§ ¯ ¬ï⨠¢ ⥪á⮢®¥ ®ª­® (¢®ááâ ­®¢«¥­¨¥ ®ª­ )
.WIN_GET_SYM EQU #B4 ; ‚§ïâì ᨬ¢®« á íªà ­ 
.WIN_PUT_SYM EQU #B5 ; <20>®«®¦¨âì ᨬ¢®« ­  íªà ­
.WIN_SET_ZG EQU #B6 ; ãáâ ­®¢ª  §­ ª®£¥­¥à â®à 
.WIN_MOVE EQU #B7 ; <20>¥à¥¬¥é¥­¨¥ ®ª­ 
.WIN_GET_ZG EQU #B8 ; <20>®«ã祭¨¥ §­ ª®£¥­¥à â®à 
;---------------------------------------
;[”㭪樨 ¯¥ç â¨ ¨ ã¯à. ०¨¬®¬ íªà ­ ]-
.LP_OPEN_S EQU #80 ; Žâªàë⨥ áâ ­¤ àâ­ëå ®ª®­.
.LP_PRINT_ALL EQU #81 ; <20>¥ç âì ᨬ¢®«®¢ á  âਡã⮬
.LP_PRINT_SYM EQU #82 ; ‚뢮¤ ᨬ¢®«®¢ ­  íªà ­ ¡¥§  âਡãâ 
.LP_PRINT_ATR EQU #83 ; ¯¥ç âì  âਡã⮢
.LP_SET_PLACE EQU #84 ; “áâ ­®¢ª  ⥪ã饣® §­ ª®¬¥áâ  ¢ ®ª­¥
.LP_PRINT_LINE EQU #85 ; ‚뢮¤ áâப¨ ᨬ¢®«®¢ ­  íªà ­ á ⥪ã饣® §­ ª®¬¥áâ 
.LP_PRINT_LINE2 EQU #86 ; ‚뢮¤ áâப¨ ᨬ¢®«®¢ ­  íªà ­ ¡¥§  âਡã⮢
.LP_PRINT_LINE3 EQU #87 ; ‚뢮¤ áâப¨ ᨬ¢®«®¢ ¤® à §¤¥«¨â¥«ï
.LP_PRINT_LINE4 EQU #88 ; ‚뢮¤ áâப¨ ᨬ¢®«®¢ ¤® à §¤¥«¨â¥«ï, ¡¥§  âਡã⮢
.LP_CLS_WIN EQU #89 ; Žç¨á⪠ íªà ­ 
.LP_SCROLL_UD EQU #8A ; ‘ªà®««¨­£ ç á⨠£«®¡ «ì­®£® ®ª­  ¢¢¥àå/¢­¨§
.LP_PRINT_LINE5 EQU #8B ; ‚뢮¤ áâப¨ ᨬ¢®«®¢ ­  íªà ­ ¤® à §¤¥«¨â¥«ï
.LP_PRINT_LINE6 EQU #8C ; ‚뢮¤ áâப¨ ᨬ¢®«®¢ ­  íªà ­ ¤® à §¤¥«¨â¥«ï ¡¥§  âਡã⮢
.LP_CLS_WIN2 EQU #8D ; Žç¨á⪠ íªà ­  á 㪠§ ­¨¥¬ ᨬ¢®«  § ¯®«­¥­¨ï
.LP_GET_PLACE EQU #8E ; <20>®«ãç¨âì ⥪ã饥 ¯®«®¦¥­¨¥ ¢ë¢®¤  ­  íªà ­
;---------------------------------------
;[ƒà ä¨ç¥áª¨¥ ä㭪樨]------------------
.PIC_POINT EQU #A1 ; “áâ ­®¢¨âì â®çªã
.PIC_SET_PAL EQU #A4 ; “áâ ­®¢ª  ¯ «¨âàë
.SET_PAL_INIT EQU #A6 ; “áâ ­®¢ª  ¢­ãâ७­¥© ¯ «¨âàë
;---------------------------------------
;[<EFBFBD> ¡®â  á HDD. #4X (fast)]-------------
.HDD_INIT EQU #40 ; ˆ­¨æ¨ «¨§ æ¨ï ¢¨­ç¥áâ¥à 
.HDD_RECAL EQU #41 ; <20>¥ª «¨¡à®¢ª  ¢¨­ç¥áâ¥à 
.HDD_TEST_IDE EQU #42 ; ’¥áâ ­ «¨ç¨ï ¨­â¥àä¥©á  IDE
.HDD_PREPARE EQU #43 ; <20>®¤£®â®¢ª  ¢¨­ç¥áâ¥à  ª ®¯¥à æ¨¨ ç⥭¨ï/§ ¯¨á¨
.HDD_READ_BPB EQU #44 ; —¨â âì BPB ¯¥à¢®£® à §¤¥« 
.HDD_READ EQU #45 ; —¨â âì ᥪâ®à  á ¢¨­ç¥áâ¥à 
.HDD_WRITE EQU #46 ; <20>¨á âì ᥪâ®à  ­  ¢¨­ç¥áâ¥à
.HDD_PART EQU #47 ; <20> áâனª  ¯ àâ¨æ¨© ¨ master/slave
.HDD_READ_NEXT EQU #48 ; —¨â âì á«¥¤ãî騩 ᥪâ®à (ONLY FOR LBA!)
;---------------------------------------
;[<EFBFBD> ¡®â  á HDD ¨ ¤¨áª®¢®¤ ¬¨. #5X]------
.DRV_RESET EQU #51 ; ‘¡à®á ª®­â஫«¥à  ¨ ­ áâனª  ­  ¤¨áª
.DRV_READ_LONG EQU #52 ; —⥭¨¥ á ãáâனá⢠¢ 㪠§ ­­ãî áâà ­¨æã
.DRV_WRITE_LONG EQU #53 ; ‡ ¯¨áì ­  ãáâனá⢠ ¢ 㪠§ ­­ãî áâà ­¨æã
.DRV_VERIFY EQU #54 ; <20>஢¥àª  ᥪâ®à®¢
.DRV_READ EQU #55 ; —⥭¨¥ á ãáâனá⢠
.DRV_WRITE EQU #56 ; ‡ ¯¨áì ­  ãáâனá⢠
.DRV_DETECT EQU #57 ; Ž¯à¥¤¥«¥­¨¥ ¯ à ¬¥â஢ ãáâனá⢠
.DRV_GET_PAR EQU #58 ; <20>®«ãç¨âì ¯ à ¬¥âàë ­®á¨â¥«ï
.DRV_SET_PAR EQU #59 ; “áâ ­®¢¨âì ¯ à ¬¥âàë ­®á¨â¥«ï
.EXT_VERSION EQU #5A ; <20>®¬¥à ¢¥àᨨ ¤¨áª®¢®© ᯥæ¨ä¨ª æ¨¨.
.DRV_LIST EQU #5F ; ‘¯¨á®ª ¤¨áª®¢ëå ãáâனáâ¢
;---------------------------------------
;[“¯à ¢«¥­¨¥ ¦¥«¥§®¬, ®¯à. ¢¥àᨨ]------
.FN_TURBO EQU #8F ; ”ã­ªæ¨ï ã¯à ¢«¥­¨ï âãà¡® ०¨¬®¬ ¨ FDD 720/1440
.FN_TURBO.OFF EQU #02
.FN_TURBO.ON EQU #03
.FN_TURBO.VG.OFF EQU #12
.FN_TURBO.VG.ON EQU #13
.CheckInit EQU #97 ; …᫨ ®¡­ à㦥­ ¯¥à¢ë© áâ àâ, â® ¨­¨æ¨ «¨§ æ¨ï ¢á¥© ¯ ¬ïâ¨, á¨á⥬­ëå ¯¥à¥¬¥­­ëå
.FullInit EQU #9F ; ˆ­¨æ¨ «¨§ æ¨ï ¢á¥© ¯ ¬ïâ¨, á¨á⥬­ëå ¯¥à¥¬¥­­ëå
.FN_CRIPT EQU #ED ; ‚ë¤ ç  ¯®«­®£® Board Number
.RST_CONF.AY8910 EQU #EE ; ¤«ï ᮢ¬¥á⨬®á⨠á á®ä⮬ Sp97, ¯¥à¥ª«î祭¨¥ ¢ ª®­äã AY8910
.FN_VERSION EQU #EF ; ‚ë¤ ç  ¨­ä®à¬ æ¨¨ ® ¢¥àᨨ BIOS  ¨ ¦¥«¥§ .
.RST_CONF.SP97_1 EQU #F0 ; ¤«ï ᮢ¬¥á⨬®á⨠á á®ä⮬ Sp97, ¯¥à¥ª«î祭¨¥ ¢ ª®­äã Sprinter-1
.RST_CONF.SP97_2 EQU #F1 ; ¤«ï ᮢ¬¥á⨬®á⨠á á®ä⮬ Sp97, ¯¥à¥ª«î祭¨¥ ¢ ª®­äã Sprinter-2
.FN_SYNC EQU #F2 ; “áâ ­®¢ª  ᨭåà®­¨§ æ¨¨, ®ç¨á⪠ áâà ­¨æë ०¨¬  íªà ­ 
.SPRINTER_ALL EQU #F3 ; ¯¥à¥ª«î祭¨¥ ª®­ä¨£ãà æ¨¨ ¯®«ì§®¢ â¥«ï
.DCP_FN0 EQU #F4 ; ”ã­ªæ¨ï ã¯à ¢«¥­¨ï ¤¥è¨äà â®à®¬ ¯®à⮢. ”ã­ªæ¨ï ¢ à §à ¡®âª¥
.CMOS_TEST EQU #F5 ; <20>஢¥à¨âì ­ «¨ç¨¥ CMOS
.CMOS_RD EQU #F6 ; —¨â âì ¨§ ॣ¨áâà  CMOS
.CMOS_WR EQU #F7 ; <20>¨á âì ¢ ॣ¨áâà CMOS
.SET_PORTS EQU #F8 ; “áâ ­®¢ª  ¢­ãâ७­¨å ¯®à⮢. ”ã­ªæ¨ï ¢ à §à ¡®âª¥
.READ_PORTS EQU #F9 ; —⥭¨¥ ¢­ãâ७­¨å ¯®à⮢. ”ã­ªæ¨ï ¢ à §à ¡®âª¥
.WRITE_PORTS EQU #FA ; ‡ ¯¨áì ¢­ãâ७­¨å ¯®à⮢. ”ã­ªæ¨ï ¢ à §à ¡®âª¥
.GOTO_SPECTRUM EQU #FB
.REINIT EQU #FD ;[x] restart, soft/hard reset, reinit RAM ID for spectrum pages
.REINIT.RESTART EQU #01
.REINIT.SOFT_RESET EQU #02
.REINIT.HARD_RESET EQU #03
.REINIT.SET_ZXPAGES EQU #04
;---------------------------------------
;-----------------------[<EFBFBD><EFBFBD><EFBFBD>Ž<EFBFBD><EFBFBD>Ž!!!]----------------------
;=============================================================
; ..‚­ãâ७­ïï äã­ªæ¨ï..
; ®âªàëâì £à ä¨ç¥áª®¥ ®ª­®, á ®¯¨á â¥«¥¬ ¢ IX
; ­  ¬¥á⥠HL, E - áâà ­¨æ  ०¨¬ , ᥤ쬮© ¡¨â E - ०¨¬ BOND
.PIC_FN0 EQU #A0
;=============================================================
;=============================================================
; point 3D13h C=0A2h
; ‚›‚Ž„ ˆ<EFBFBD>ˆˆ 'FILL' ¢å®¤: dE - ¢¥à⨪ «ì, HL - £®à¨§®­â «ì.
; IX - ¤«¨­  «¨­¨¨ ¢ â®çª å, A - 梥â
.PIC_FN2 EQU #A2
;=============================================================
;=============================================================
; point 3D13h C=0A3h
; ‚›‚Ž„ ˆ<EFBFBD>ˆˆ 'COPY' ¢å®¤: dE - ¢¥à⨪ «ì, IX - £®à¨§®­â.
; A',HL' -  ¤à¥á ¤ ­­ëå, ®âªã¤  ¡à âì ¤ ­­ë¥
; A' - áâà ­¨æ  RAM-Disk/MEM, HL' -  ¤à¥á ¢ áâà.2
; BC' - ¤«¨­  ¤ ­­ëå
; ‚ë室: HL',A' - á«¥¤ãî騩 ¡ ©â ¢ RAM-Disk !!!
.PIC_FN3 EQU #A3
;=============================================================
;=============================================================
; point 3D13h C=0A5h
; <EFBFBD>ŽŠ€ <EFBFBD><EFBFBD>ˆ ‚›‚Ž„€ <EFBFBD> <EFBFBD>Š<EFBFBD><EFBFBD> ‚室: E = 0/1
.PIC_FN5 EQU #A5
;=============================================================
;=============================================================
; point 3D13h C=0A7h
;////// ­¥¤®¤¥« ­­ ï !!! ////////////////////////////
; <EFBFBD>¨á®¢ ­¨¥ «¨­¨©. - ¢¥à⨪ «ì, HL - £®à¨§®­â «ì
; H' - ¢ëá®â , C'/DE',B' - add_parameters D - color
; C' = 80h, DE' = 0, B'=0 - ¤«ï ¢¥à⨪ «ì­ëå «¨­¨©
; €«£®à¨â¬:
; 1: <EFBFBD>®áâ ¢¨âì â®çªã 梥⮬ D
; HL,C + DE,B -> HL,C
; dec H'
; jr nz,1
.PIC_FN7 EQU #A7
; point 3D13h C=0A8h
.PIC_FN8 EQU #A8
;=============================================================
;=============================================================
;/////// projected !!! ////////////////////////////////
; <EFBFBD>¨á®¢ ­¨¥ á¯à ©â®¢
; E - ¢¥à⨪ «ì, IX - £®à¨§®­â «ì
; D - ª®¤ 㢥«¨ç¥­¨ï/㬥­ì襭¨ï
; B - ã¯à ¢«ïî騩 ª®¤
; 0 - ‚뢮¤ ¯®áâ®ï­­®£® á¯à ©â 
; 1 - ‚뢮¤ ¢à¥¬¥­­®£® á¯à ©â 
; 2 - ‚®ááâ ­®¢«¥­¨¥ ª à⨭ª¨ ¯®¤ ¢à¥¬¥­­ë¬ á¯à ©â®¬
; HL - Special coding data ( ¤ ­­ë¥ á¯à ©â  ä®à¬ , 梥â .. )
; flick-¯®¤®¡­ë© ä®à¬ â
.PIC_FN9 EQU #A9
;=============================================================

33
constants/EXE_Header.z80 Normal file
View File

@ -0,0 +1,33 @@
;
;***************************************
ORG org_addr - exe_header.length
exe_header equ $
BYTE 'EXE' ; 0-3 EXE ‘¨£­ âãà 
BYTE 0 ; 4 Version of EXE file
DWORD exe_header.length ; 5-6 ª ª®£® ᬥ饭¨ï ¢ ä ©«¥ ¡ã¤¥â £à㧨âìáï ª®¤ ¢
; ; 7-8 ¯ ¬ïâì ¯®  ¤à¥áã (Code_addr) Low addr, High addr.
WORD Loader_length ; 9-10 <20> §¬¥à ¯¥à¢¨ç­®£® § £àã§ç¨ª  ¨«¨ 0
WORD #0000 ; 11-12 Reserved
WORD #0000 ; 13-14 Reserved
WORD #0000 ; 15-16 Reserved
WORD code_addr ; 17-18 €¤à¥á à á¯®«®¦¥­¨ï ª®¤  ¢ ¯ ¬ï⨠(#4100-#FFFF)
WORD program_start ; 19-20 €¤à¥á ¢ ¯ ¬ïâ¨ á ª®â®à®£® § ¯ãáâ¨âáï ª®¤ (Reg. PC)
WORD stack_point ; 21-22 €¤à¥á á⥪  (Reg. SP)
IFDEF EXEinfoMACRO ; 23-512 Œ®¦­® ¨á¯®«ì§®¢ âì ¯®¤ ⥪áâ ¤«ï ¢ë¯¥­¤àñ¦  ¨«¨ ­¥ ¨á¯®«ì§®¢ âì
_mEXEinfo
ENDIF
; <20><>ˆŒ…<C592>:
; BLOCK 10,' ' ; ‚ëà ¢­¨¢ ­¨¥ ¤«ï ªà á¨¢®£® ®â®¡à ¦¥­¨ï ¢ HEX
; BYTE 'Turbo Assembler '
; BYTE ' v 0.71 '
; BYTE 'Coded in 1999 by'
; BYTE ' Enin Anton. '
; BYTE ' Resurrected & '
; BYTE ' modified by '
; BYTE ' Anatoliy '
; BYTE ' Belyanskiy, '
; BYTE ' Sprinter Team '
; BYTE ' 2023 '
.length equ $-exe_header ; !FIXIT   ¥á«¨ ª®¤ ¤«ï § £à㧪¨ ­¥ áà §ã ¯®á«¥ § £®«®¢ª ?
;***************************************
;

1871
constants/SP2000.inc Normal file

File diff suppressed because it is too large Load Diff

397
constants/dss_equ.inc Normal file
View File

@ -0,0 +1,397 @@
;[‚ë§®¢ ä㭪権 DSS]--------------------
ToDSS EQU #10
;---------------------------------------
;---[<EFBFBD>ãä¥à ¯®¤ á«ã¦¥¡­ãî áâபã DSS]----
; Command_Line_parameters (CLP)
; ‘¬¥é¥­¨ï ®â­®á¨â¥«ì­® §­ ç¥­¨ï ¢ IX
; ¯à¨ áâ à⥠EXE ¨§ DSS.
CLP_Buffer EQU 131 ; <EFBFBD>®«­ ï ¤«¨­  ¡ãä¥à 
CLP_FM EQU -3 ; ” ©«®¢ë© ¬ ­¨¯ã«ïâ®à, ¥á«¨ exe-ä ©« á ¯¥à¢¨ç­ë¬ § £àã§ç¨ª®¬
CLP_MemBlockID EQU -2 ; ˆ¤¥­â¨ä¨ª â®à ¡«®ª  ¯ ¬ïâ¨
CLP_ProgLevel EQU -1 ; “஢¥­ì ⥪ã饩 ¯à®£à ¬¬ë
CLP_CLLength EQU 0 ; „«¨­­  ª®¬ ­¤­®© áâப¨
CLP_Parameters EQU 1 ; <EFBFBD> à ¬¥âàë ª®¬ ­¤­®© áâப¨, § ª ­ç¨¢ ¥âáï ­ã«¥¬ (127 bytes)
; (CLP_CLLength) + 3 ; ­ ç «® ¯®«­®£® ¯ã⨠¤® § ¯ã᪠¥¬®£® ¯à¨«®¦¥­¨ï (¢¬¥áâ¥ á ¨¬¥­¥¬ EXE)
;---------------------------------------
;------------[DSS Functions]------------
Dss:
.Version EQU #00
.ChDisk EQU #01
.CurDisk EQU #02
.DskInfo EQU #03
.G_ENTRY EQU #04
; EQU #05
; EQU #06
; EQU #07
; ¢å®¤: ­¥â
; ¢ë室: A - ­®¬¥à ¯®á«¥¤­¥£® «®£. ¤¨áª  ¢ á¨á⥬¥
.RescanDrives EQU #08
.BootDSK EQU #09
;
; File i/o
.Create EQU #0A
.Creat_N EQU #0B
; EQU #0C
.ERASE EQU #0D
.Delete EQU #0E
.Move EQU #0F
.Rename EQU #10
.Open EQU #11
.Open.RW EQU 0
.Open.R EQU 1
.Open.W EQU 2
.Close EQU #12
.Read EQU #13 ; ¯® ¢®§¢à âã ¯à¥à뢠­¨ï ¢á¥£¤  ¢ª«î祭ë
.Write EQU #14
.Move_FP EQU #15
.Move_FP.FrStart EQU 0
.Move_FP.FrCurrent EQU 1
.Move_FP.FrEnd EQU 2
.Attrib EQU #16
.Get_D_T EQU #17
.Put_D_T EQU #18
.F_First EQU #19
.F_Next EQU #1A
.MkDir EQU #1B
.RmDir EQU #1C
.ChDir EQU #1D
.CurDir EQU #1E
; EQU #1F
; EQU #20
.SysTime EQU #21
.SetTime EQU #22
; EQU #23
; EQU #24
; EQU #25
; EQU #26
; EQU #27
; EQU #28
; EQU #29
; EQU #2A
; EQU #2B
; EQU #2C
; EQU #2D
; EQU #2E
; EQU #2F
;
; Keyboard
.WaitKey EQU #30
.ScanKey EQU #31
.EchoKey EQU #32
.CTRLKey EQU #33
.EDIT EQU #34
.K_CLEAR EQU #35
.K_SETUP EQU #36
.TestKey EQU #37
;
; Memory
.SetWin EQU #38
.SetWin1 EQU #39
.SetWin2 EQU #3A
.SetWin3 EQU #3B
.INFOMEM EQU #3C
.GetMem EQU #3D
.FreeMem EQU #3E
.SetMem EQU #3F
;
; Execution
.Exec EQU #40
.Exit EQU #41
.Wait EQU #42
.GSwitch EQU #43
.DosName EQU #44
.EX_Path EQU #45
.EX_Path.GET_ALL EQU 0 ; <EFBFBD> §®¡à âì áâபã
.EX_Path.GET_DRIVE EQU 1 ; ‚뤥«¨âì ¨¬ï ¤¨áª 
.EX_Path.GET_PATH EQU 2 ; ‚뤥«¨âì ¤¨à¥ªâ®à¨î
.EX_Path.GET_NAME EQU 3 ; ‚뤥«¨âì ¨¬ï ä ©« 
.EX_Path.GET_TYPE EQU 4 ; ‚뤥«¨âì à áè¨à¥­¨¥ ä ©« 
.EX_Path.GET_ALL_EX EQU 5 ; ‚뤥«¨âì ¨¬ï ¤¨áª , ¯ãâì ª ä ©«ã, ¨¬ï ä ©«  ¨ à áè¨à¥­¨¥ ä ©« 
.EX_Path.RESR EQU 6 ; ‡ à¥§¥à¢¨à®¢ ­®
.EX_Path.GSWITCH EQU 7 ; ‚뤥«¨âì ¯ à ¬¥âà ª®¬ ­¤­®© áâப¨
.EX_Path.GETNAME EQU 8 ; <EFBFBD>८¡à §®¢ âì ¨§ 11 ᨬ¢®«ì­®£® ä®à¬ â  ¢ ä®à¬ â „Ž‘
.EX_Path.MASK EQU 9 ; <EFBFBD>८¡à §®¢ âì ¨§ ä®à¬ â  „Ž‘ ¢ 11 ᨬ¢®«ì­ë© ä®à¬ â
.Environ EQU #46
.AppInfo EQU #47
; EQU #48
; EQU #49
; EQU #4A
; EQU #4B
; EQU #4C
; EQU #4D
; EQU #4E
; EQU #4F
;
; Video
.SetVMod EQU #50
.SetVMod.txt40x32 EQU 2
.SetVMod.txt80x32 EQU 3
.SetVMod.grf320x256 EQU #81
.SetVMod.grf6400x256 EQU #82
.GetVMod EQU #51
.Locate EQU #52
.Cursor EQU #53
.SelPage EQU #54
.Scroll EQU #55
.Clear EQU #56
.RdChar EQU #57
.WrChar EQU #58
.WinCopy EQU #59
.WinRest EQU #5A
.PutChar EQU #5B
.PChars EQU #5C
;
; Printer
.RES_PRN EQU #5D
.CTRLPRN EQU #5E
.Print EQU #5F
;---------------------------------------
;
;
;------------[Video modes]--------------
DssVmod:
.txt40 EQU #02 ; (02) - ⥪áâ®¢ë© 40x32x16 梥⮢
.txt80 EQU #03 ; (03) - ⥪áâ®¢ë© 80x32x16 梥⮢
.gfx320 EQU #81 ; (129) - £à ä¨ç¥áª¨© 320x256x256 梥⮢
.gfx640 EQU #82 ; (130) - £à ä¨ç¥áª¨© 640x256x16 梥⮢
;---------------------------------------
;
;
;------------[Error codes]--------------
MODULE DSS_Error
sys:
.NO_ERROR EQU #00 ; 00 - ­¥â ®è¨¡®ª
.INVALID_FUNCTION EQU #01 ; 01 - ­¥¢¥à­ë© ­®¬¥à ä㭪樨
.INVALID_DRIVE EQU #02 ; 02 - ­¥¯à ¢¨«ì­ë© ­®¬¥à ãáâனá⢠
.FILE_NOT_FOUND EQU #03 ; 03 - ä ©« ­¥ ®¡­ à㦥­
.PATH_NOT_FOUND EQU #04 ; 04 - ­¥¢¥à­ë© ¯ãâì
.INVALID_HANDLE EQU #05 ; 05 - ­¥áãé¥áâ¢ãî騩 ä ©«®¢ë© ¬ ­¨¯ã«ïâ®à
.NO_HANDLES EQU #06 ; 06 - ­¥â ᢮¡®¤­®£® ä ©«®¢®£® ¬ ­¨¯ã«ïâ®à 
.FILE_EXISTS EQU #07 ; 07 - ä ©« áãé¥áâ¢ã¥â
.READONLY EQU #08 ; 08 - ä ©« ⮫쪮 ¤«ï ç⥭¨ï
.ROOT_OVERFLOW EQU #09 ; 09 - ¯¥à¥¯®«­¥­¨¥ ROOT (ª®à­¥¢®£® ª â «®£ )
.DISK_FULL EQU #0A ; 10 - ­¥â ᢮¡®¤­®£® ¬¥áâ  ­  ¤¨áª¥
.DIR_NOT_EMPTY EQU #0B ; 11 - ª â «®£ ­¥ ¯ãáâ
.CURRENT_DIR EQU #0C ; 12 - ¯®¯ë⪠ 㤠«¨âì ⥪ã騩 ª â «®£
.UNKNOWN_FORMAT EQU #0D ; 13 - ­¥¨§¢¥áâ­ë© ä®à¬ â
.INVALID_ACCESS EQU #0E ; 14 - ­¥¢®§¬®¦­ ï ®¯¥à æ¨ï
.DIR_EXISTS EQU #0F ; 15 - ª â «®£ 㦥 ¥áâì
.INVALID_NAME EQU #10 ; 16 - ­¥¢¥à­®¥ ¨¬ï
.INVALID_EXE EQU #11 ; 17 - ­¥¯à ¢¨«ì­ë© EXE-ä ©«
.UNKNOWN_EXE EQU #12 ; 18 - ­¥ ¯®¤¤¥à¦¨¢ ¥¬ ï ¢¥àá¨ï EXE-ä ©« 
.ACCESS_DENIED EQU #13 ; 19 - à¥áãàá ­¥ ¤®áâ㯥­
.NOT_READY EQU #14 ; 20 - ­¥â £®â®¢­®áâ¨
.SEEK_ERROR EQU #15 ; 21 - ®è¨¡ª  ¯®§¨æ¨®­¨à®¢ ­¨ï
.SECTOR_NOT_FOUND EQU #16 ; 22 - ᥪâ®à ­¥ ­ ©¤¥­
.CRC_ERROR EQU #17 ; 23 - ®è¨¡ª  CRC
.WRITE_PROTECT EQU #18 ; 24 - § é¨â  § ¯¨á¨
.READ_ERROR EQU #19 ; 25 - ®è¨¡ª  ç⥭¨ï
.WRITE_ERROR EQU #1A ; 26 - ®è¨¡ª  § ¯¨á¨
;.GENERAL_FAILURE EQU #1B ; 27 - ®¡é ï ®è¨¡ª 
.DRIVE_FAILURE EQU #1B ; 27 - á¡®© ¤¨áª 
;.RESERVED_28 EQU #1C ; 28 - § à¥§¥à¢¨à®¢ ­
;.RESERVED_29 EQU #1D ; 29 - § à¥§¥à¢¨à®¢ ­
.NOT_ENOUGH_MEMORY EQU #1E ; 30 - ­¥¤®áâ â®ç­® ¯ ¬ïâ¨
.INVALID_MEMORY_HND EQU #1F ; 31 - ­¥áãé¥áâ¢ãî騩 ¡«®ª ¯ ¬ïâ¨
;.RESERVED_32 EQU #20 ; 32 - § à¥§¥à¢¨à®¢ ­®
.ENV_ITEM_OVERFLOW EQU #21 ; 33 - ¯à¥¢ë襭 ¬ ªá¨¬ «ì­ë© à §¬¥à ¯¥à¥¬¥­­®©
;.RESERVED_34 EQU #22 ; 34 - § à¥§¥à¢¨à®¢ ­®
.TOO_MANY_FILES_IN_DIR EQU #23 ; 35 - ᫨誮¬ ¬­®£® ä ©«®¢ ¢ ¤¨à¥ªâ®à¨¨
.TOO_DEEP_DIR_DEPTH EQU #24 ; 36 - ᫨誮¬ ¡®«ìè ï ¢«®¦¥­­®áâì ª â «®£®¢ ¨«¨ ª®«¨ç¥á⢮ ¯ ¯®ª > 1023
.USER_ABORT EQU #25 ; 37 - ®¯¥à æ¨ï ¯à¥à¢ ­  ¯®«ì§®¢ â¥«¥¬
.COMMON_ERROR EQU #26 ; 38 - ®¡é ï ®è¨¡ª 
;.RESERVED_39 EQU #27 ; 39 - § à¥§¥à¢¨à®¢ ­®
;.RESERVED_40 EQU #28 ; 40 - § à¥§¥à¢¨à®¢ ­®
;.RESERVED_41 EQU #29 ; 41 - § à¥§¥à¢¨à®¢ ­®
;.RESERVED_42 EQU #2A ; 42 - § à¥§¥à¢¨à®¢ ­®
;.RESERVED_43 EQU #2B ; 43 - § à¥§¥à¢¨à®¢ ­®
;.RESERVED_44 EQU #2C ; 44 - § à¥§¥à¢¨à®¢ ­®
;.RESERVED_45 EQU #2D ; 45 - § à¥§¥à¢¨à®¢ ­®
;.RESERVED_46 EQU #2E ; 46 - § à¥§¥à¢¨à®¢ ­®
;.RESERVED_47 EQU #2F ; 47 - § à¥§¥à¢¨à®¢ ­®
.INVALID_VIDEO_MODE EQU #30 ; 48 - ­¥¯à ¢¨«ì­ë© ¢¨¤¥®à¥¦¨¬
;
drv:
.NO_ERROR EQU #00 ; 00 - NO ERRORS
.INVALID_COMMAND EQU #01 ; 01 - BAD COMMAND
.INVALID_DRIVE EQU #02 ; 02 - BAD DRIVE NUMBER
.UNKNOWN_FORMAT EQU #03 ; 03 - UNKNOW FORMAT
.NOT_READY EQU #04 ; 04 - NOT READY
.SEEK_ERROR EQU #05 ; 05 - SEEK ERROR
.SECTOR_NOT_FOUND EQU #06 ; 06 - SECTOR NOT FOUND
.CRC_ERROR EQU #07 ; 07 - CRC ERROR
.WRITE_PROTECT EQU #08 ; 08 - WRITE PROTECT
.READ_ERROR EQU #09 ; 09 - READ ERROR
.WRITE_ERROR EQU #0A ; 10 - WRITE ERROR
.GENERAL_FAILURE EQU #0B ; 11 - FAILURE
.DEVICE_BUSY EQU #0C ; 12 - BUSY (DEVICE OPENED)
;.RESERVED EQU #0D ; 13 - RESERVED
;
mouse:
.NO_ERROR EQU #00 ; 0 - NO ERROR
.INVALID_COMMAND EQU #01 ; 1 - COMMAND NOT PRESENT
.DEVICE_ABSENT EQU #02 ; 2 - DEVICE ABSENT
.CURSOR_ON EQU #03 ; 3 - CURSOR ON (already)
.CURSOR_OFF EQU #04 ; 4 - CURSOR OFF (already)
.CURSOR_TOO_BIG EQU #05 ; 5 - CURSOR IMAGE VERY BIG
ENDMODULE
/*
; DB #00
; DB "Bad command or file name",0
01: DB "Invalid function",0
02: DB "Invalid drive number",0
03: DB "File not found",0
04: DB "Path not found",0 ; ­¥¢¥à­ë© ¯ãâì
05: DB "Invalid handle",0
06: DB "Extended error 6",0 ; ­¥â ᢮¡®¤­®£® ä ©«®¢®£® ¬ ­¨¯ã«ïâ®à 
07: DB "File exist",0
08: DB "File read only",0
09: DB "Root overflow",0
10: DB "No free space",0
11: DB "Directory not empty",0
12: DB "Can't delete current directory",0
13: DB "Invalid media",0
14: DB "Unknown operation",0 ; ­¥¢®§¬®¦­ ï ®¯¥à æ¨ï
15: DB "Directory exist",0
16: DB "Invalid filename",0
17: DB "Invalid EXE-file",0
18: DB "Not supported EXE-file",0
19: DB "Access denied",0
20: DB "Not ready",0
21: DB "Seek error",0
22: DB "Sector not found",0
23: DB "CRC error",0
24: DB "Write protect",0
25: DB "Read error",0
26: DB "Write error",0
27: DB "Drive failure",0 ; ®¡é ï ®è¨¡ª 
28: DB "Extended error 28",0
29: DB "Extended error 29",0
30: DB "No free memory",0
31: DB "Invalid memory block",0
32: DB "Extended error 32",0
33: DB "Extended error 33",0
34: DB "Extended error 34",0
; DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
*/
;---------------------------------------
;
;
;---------------[Files]-----------------
FileMode:
.RW EQU 00
.Read EQU 01
.Write EQU 02
;
FileAttrib:
.Normal EQU 00 ; Normal file, no attributes
.RDOnly EQU 01 ; Read only attribute
.Hidden EQU 02 ; Hidden file
.System EQU 04 ; System file
.Label EQU 08 ; Volume label
.Direc EQU #10 ; Directory
.Arch EQU #20 ; Archive
;---------------------------------------
;
;
;---------[control characters]----------
_cc:
.cr EQU #0D ;¢®§¢à â ª®à¥âª¨
.lf EQU #0A ;­®¢ ï áâப 
.tab EQU 9 ;ᨬ¢®« â ¡ã«ï樨
.space EQU #20 ;ᨬ¢®« ¯à®¡¥« 
;---------------------------------------
;
; <EFBFBD>ਫ®¦¥­¨¥ <EFBFBD>. ’ ¡«¨æ  ¯®§¨æ¨®­­ëå ª®¤®¢
; key ASCII/SCAN key ASCII/SCAN
; ` 000h 000h V 056h 02Dh
; Esc 01Bh 001h B 042h 02Eh
; 1 031h 002h N 04Eh 02Fh
; 2 032h 003h M 04Dh 030h
; 3 033h 004h , 02Ch 031h
; 4 034h 005h . 02Eh 032h
; 5 035h 006h / 02Fh 033h
; 6 036h 007h RShift ---- 034h
; 7 037h 008h \ 05Ch 035h
; 8 038h 009h LCtrl ---- 036h
; 9 039h 00Ah LAlt ---- 037h
; 0 030h 00Bh Space 020h 038h
; - 02Dh 00Ch RAlt ---- 039h
; = 03Dh 00Dh RCtrl ---- 03Ah
; BackSpace 008h 00Eh F1 000h 03Bh
; Tab 009h 00Fh F2 000h 03Ch
; Q 051h 010h F3 000h 03Dh
; W 057h 011h F4 000h 03Eh
; E 045h 012h F5 000h 03Fh
; R 052h 013h F6 000h 040h
; T 054h 014h F7 000h 041h
; Y 059h 015h F8 000h 042h
; U 055h 016h F9 000h 043h
; I 049h 017h F10 000h 044h
; O 04Fh 018h F11 000h 045h
; P 050h 019h F12 000h 046h
; [ 05Bh 01Ah PrScrn ---- 047h
; ] 05Dh 01Bh ScrlLock 000h 048h
; CapsLock 000h 01Ch NumLock 000h 049h
; A 041h 01Dh / 02Fh 04Ah
; S 053h 01Eh * 02Ah 04Bh
; D 044h 01Fh - 02Dh 04Ch
; F 046h 020h + 02Bh 04Dh
; G 047h 021h enter 00Dh 04Eh
; H 048h 022h Del . 000h 04Fh
; J 04Ah 023h Ins 0 000h 050h
; K 04Bh 024h End 1 000h 051h
; L 04Ch 025h Down 2 000h 052h
; ; 03Bh 026h PgDw 3 000h 053h
; ' 027h 027h Left 4 000h 054h
; Enter 00Dh 028h 5 000h 055h
; LShift ---- 029h Right 6 000h 056h
; Z 05Ah 02Ah Home 7 000h 057h
; X 058h 02Bh Up 8 000h 058h
; C 043h 02Ch PgUp 9 000h 059h
; <EFBFBD>ਫ®¦¥­¨¥ . <EFBFBD> ©â  âਡã⮢ ⥪á⮢®£® íªà ­ 
; ¡¨â 7 - <EFBFBD>ਧ­ ª ¬¥àæ ­¨ï ᨬ¢®« 
; ¡¨âë 6,5,4 - –¢¥â ä®­  ᨬ¢®«  8 梥⮢ (0...7) RGB
; ¡¨âë 3,2,1,0 - –¢¥â ᨬ¢®«  16 梥⮢ (0...15) IRGB
; –¢¥â  ¤«ï ä®­  ¨ ¤«ï ᨬ¢®« :
; 0 0h 0000b - —ñà­ë©
; 1 1h 0001b - ‘¨­¨©
; 2 2h 0010b - ‡¥«ñ­ë©
; 3 3h 0011b - ƒ®«ã¡®© (樠­)
; 4 4h 0100b - Šà á­ë©
; 5 5h 0101b - ”¨®«¥â®¢ë©
; 6 6h 0110b - Š®à¨ç­¥¢ë©
; 7 7h 0111b - <EFBFBD>¥«ë©
; ’®«ìª® ¤«ï ᨬ¢®« :
; 8 8h 1000b - ‘¥àë©
; 9 9h 1001b - Ÿàª®-ᨭ¨©
; 10 Ah 1010b - Ÿàª®-§¥«ñ­ë©
; 11 Bh 1011b - Ÿàª®-£®«ã¡®©
; 12 Ch 1100b - Ÿàª®-ªà á­ë©
; 13 Dh 1101b - Ÿàª®-䨮«¥â®¢ë©
; 14 Eh 1110b - †ñ«âë©
; 15 Fh 1111b - Ÿàª®-¡¥«ë©
;

85
macroses/accelerator.z80 Normal file
View File

@ -0,0 +1,85 @@
; Œ ªà®áë  ªá¥«¥à â®à  ¤«ï ªà á®âë))
;--------[¢ëª«îç¨âì  ªá¥«¥à â®à]--------
MACRO ACC_Off
LD B,B
ENDM
;---------------------------------------
;---------[०¨¬ ¯à¨¥¬  ¡ ©â ]----------
; ‚ª«îç ¥â  ªá¥«¥à â®à ¢ ०¨¬ ¯à¨¥¬ 
; ¡ ©â  à §¬¥à  ¡«®ª  ¤ «¥¥ á«¥¤ã¥â
; ª®¬ ­¤  ⨯  LD A,dat, £¤¥ dat ¨ ¡ã¤¥â
; ­®¢ë¬ à §¬¥à®¬ ¡«®ª . …᫨ à §¬¥à
; ¡«®ª  ¡ë« ãáâ ­®¢«¥­ à ­¥¥, ¥£® ¬®¦­®
; ­¥ ãáâ ­ ¢«¨¢ âì.
MACRO ACC_SetBlockSize
LD D,D
ENDM
;---------------------------------------
;-------[§ ¯®«­¥­¨¥ ®¤­¨¬ ¡ ©â®¬]-------
; ޝ¥à æ¨ï Fill. <20>®á«¥¤ãîé ï ª®¬ ­¤ 
; ⨯  LD (HL),A ¯à¨¢¥¤¥â ª § ¯®«­¥­¨î
; 㪠§ ­­®£® à ­¥¥ ª®«¨ç¥á⢠ ¡ ©â
; §­ ç¥­¨¥¬ A
MACRO ACC_FillOneByte
LD C,C
ENDM
;---------------------------------------
;----[§ ¯®«­¥­¨¥ ¢¥à⨪ «ì­ëå «¨­¨©]----
; ޝ¥à æ¨ï Fill ¤«ï £à ä¨ç¥áª®£® íªà ­ .
; <20>®á«¥¤ãîé ï ª®¬ ­¤  ⨯  LD (HL),A
; ¯à¨¢¥¤¥â ª § ¯®«­¥­¨î §­ ç¥­¨¥¬ A
; ¢¥à⨪ «ì­ëå «¨­¨© íªà ­  㪠§ ­­ë¬
; à ­¥¥ ª®«¨ç¥á⢮¬ ¡ ©â
MACRO ACC_FillScreenOneByte
LD E,E
ENDM
;---------------------------------------
;----------[ª®¯¨à®¢ ­¨¥ ¡«®ª ]----------
; <20>®á«¥¤ãîé ï ª®¬ ­¤  ⨯  LD A,(HL)
; ¯à¨¢¥¤¥â ª § ¯®«­¥­¨î އ“  ªá¥«¥à â®à 
; ¤ ­­ë¬¨ ¨§  ¤à¥á  (HL),   ª®¬ ­¤  ⨯ 
; LD (DE),A ¯à¨¢¥¤¥â ª ¯¥à¥§ ¯¨á¨ ¤ ­­ëå
; ¨§ އ“  ªá¥«¥à â®à  ¢ ®á­®¢­®¥ ¨«¨
; ¢¨¤¥®-އ“.
MACRO ACC_CopyBlock
LD L,L
ENDM
;---------------------------------------
;---[ª®¯¨à®¢ ­¨¥ £à ä¨ç¥áª®£® ¡«®ª ]----
; Š®¯¨à®¢ ­¨¥ ¡«®ª  ¤«ï £à ä. íªà ­ .
; <20>®á«¥¤ãîé ï ª®¬ ­¤  ⨯  LD A,(HL)
; ¯à¨¢¥¤¥â ª § ¯®«­¥­¨î އ“  ªá¥«¥à â®à 
; ¤ ­­ë¬¨ ¨§  ¤à¥á  (HL),   ª®¬ ­¤  ⨯ 
; LD (DE),A ¯à¨¢¥¤¥â ª ¯¥à¥§ ¯¨á¨ ¤ ­­ëå
; ¨§ އ“  ªá¥«¥à â®à  ¢ ¢¨¤¥®-އ“
; ¢¥à⨪ «ì­ë¬¨ «¨­¨ï¬¨. í⮬ ०¨¬¥
;  ªá¥«ì ¯à¨ ç⥭¨¨ ¢ ¡ãä¥à ¨ § ¯¨á¨ ¢
; ¯ ¬ïâì 㢥«¨ç¨¢ ¥â ­¥  ¤à¥á,   PORT_Y
MACRO ACC_CopyScreenBlock
LD A,A
ENDM
;---------------------------------------
;--------[„¢®©­ ï § ¯¨áì ¡ ©â ]---------
; <20>ਠ§ ¯¨á¨ ¡ ©â  Byte ¯®  ¤à¥áã Addr
; ¯à®¨á室¨â § ¯¨áì ¤¢ãå Byte ¢  ¤à¥áá :
; (Addr & #FE) ¨ (Addr & #FE)+1
MACRO ACC_DoubleByte
LD H,H
ENDM
;---------------------------------------
;---------[¯®ª  ¯ãâì ¢ ­¨ªã¤ ]----------
; <20> ¡®â ¥â â ª ¦¥ ª ª ¨ ld b,b
; <20>ã ¨ ¯à¨ ®âª«î祭­ëå ¯à¥à뢠­¨ïå ¡ã¤¥â
; §­ ¬¥­¨âë© DI:HALT)))
MACRO ACC_Halt
HALT
ENDM
;---------------------------------------

356
macroses/macros.z80 Normal file
View File

@ -0,0 +1,356 @@
;=======================================
; ᪫¥¨¢ ¥â áâப㠯ã⨠ª ä ©«ã á® áâப®© ¨¬¥­¨ ä ©« 
; retname - ¨¬ï ¤¥ä ©­  ᮤ¥à¦ é¥¥ ¯ãâì ¨ ¨¬ï ä ©« 
; pname - áâப  ¢ ®¤¨­ à­ëå ª ¢ë窠å á ¯ãâñ¬ ª ä ©«ã
; fname - áâப  ¢ ®¤¨­ à­ëå ª ¢ë窠å á ¨¬¥­¥¬ ä ©« 
; OStype - 'MacOS', 'Linux' ¨«¨ 'Windows'. “ª §ë¢ ¥â ª ª®© à §¤¥«¨â¥«ì ¬¥¦¤ã ä ©« ¬¨/¯ ¯ª ¬¨ ¨á¯®«ì§ã¥âáï ¢ ¯¥à¥¤ ­­®© áâப¥,'/' ¨«¨ '\'
MACRO mGETfullNAME retname, pname, fname, OStype
DEFINE tmpLString1 pname
DEFINE tmpLString2 fname
DEFINE tmpLString3 retname
DEFINE tmpLString4 OStype
LUA
local tmp3 = sj.get_define("tmpLString3")
tmp3 = string.gsub(string.match(tmp3, '\'.*\''), "'", "")
sj.insert_define(tmp3, "'" .. Get_Full_Filename(sj.get_define("tmpLString1"), sj.get_define("tmpLString2"), sj.get_define("tmpLString4")) .. "'")
ENDLUA
UNDEFINE tmpLString4
UNDEFINE tmpLString3
UNDEFINE tmpLString2
UNDEFINE tmpLString1
ENDM
;=======================================
;=======================================
MACRO _mInfoBLOCK endAddr, filler
DISPLAY " Free ",/D,endAddr, " bytes at ",/H, $, " address."
BLOCK endAddr,filler
ENDM
;=======================================
;=======================================
MACRO _mInfoALIGN num, filler
.temp equ $
ALIGN num,filler
IF (($-.temp) > 0)
DISPLAY " Free ",/D,$-.temp, " bytes at ",/H, .temp, " address."
ENDIF
ENDM
;=======================================
;=======================================
MACRO _mSIZE_INFO name, startAddr, endAddr, pages, mKey
IF mKey == 1
display " "
display "v----------------------------------------------------------v"
display " Start End Size Free in page"
ENDIF
display "* ",name," ",/H,startAddr, " ", endAddr, " ", (endAddr) - (startAddr), " ",/A, (#4000*(pages))-((endAddr) - (startAddr))
IF mKey == 2
display "^----------------------------------------------------------^"
display " "
ENDIF
ENDM
;=======================================
;=======================================
MACRO _mCollectInfo_begin
IF COLLECT_INFO
LUA PASS3
INCLUDING_INFO_START()
ENDLUA
ENDIF
ENDM
;---------------------------------------
MACRO _mCollectInfo_addStart
IF COLLECT_INFO
LUA PASS3
INCLUDING_INFO_ADDstart()
ENDLUA
ENDIF
ENDM
;---------------------------------------
MACRO _mCollectInfo_addEnd
IF COLLECT_INFO
LUA PASS3
INCLUDING_INFO_ADDend()
ENDLUA
ENDIF
ENDM
;---------------------------------------
MACRO _mCollectInfo_end
IF COLLECT_INFO
LUA PASS3
INCLUDING_INFO_END()
ENDLUA
ENDIF
ENDM
;=======================================
;=======================================
MACRO _mARRAYstart
ENDM
;---------------------------------------
MACRO _mARRAYadd
ENDM
;---------------------------------------
MACRO _mARRAYshow
ENDM
;=======================================
;=======================================
MACRO mHRUSTfile fname, hstEXT, macPATH, linPATH, winPATH, osName
IF osName = 'MacOS' : DEFINE tmpLString3 =
ELSEIF osName = 'Linux' :
ELSEIF osName = 'Windows' :
DEFINE tmpLString1 = fname
DEFINE tmpLString2 = hstEXT
DEFINE tmpLString3 =
DEFINE tmpLString4 =
DEFINE tmpLString5 =
ENDM
;=======================================
;=======================================
; ‚®§¢à é ¥â ¨¬ï ®¯¥à æ¨®­­®© á¨áâ¥¬ë ¢ ¤¥ä ©­¥ retname
; 'MacOS', 'Linux' ¨«¨ 'Windows'
MACRO mGETosNAME retname
DEFINE tmpLString retname
LUA
local tmp = sj.get_define("tmpLString")
tmp = string.gsub(string.match(tmp, '\'.*\''), "'", "")
sj.insert_define(tmp, "'" .. Detect_os() .. "'")
ENDLUA
ENDM
;=======================================
;=======================================
MACRO FRAM_ON
IN A,(FastRAM.ON)
IFN NORM_FastRAM
PUSH BC
;PUSH AF
LD BC,#1FFD
XOR A
OUT (C),A
OUT (FastRAM.SLOT0),A
;POP AF
POP BC
ENDIF
ENDM
MACRO FRAM_OFF
IN A,(FastRAM.OFF)
IFN NORM_FastRAM
PUSH BC
;PUSH AF
LD BC,#1FFD
LD A,1
OUT (C),A
XOR A
OUT (FastRAM.SLOT0),A
;POP AF
POP BC
ENDIF
ENDM
;=======================================
;=======================================
MACRO STACK_CHECK_MACRO _mSP, _mSPbuffer
assert $ < _mSP-_mSPbuffer, WARNING! Stack buffer may corrupt data/code!
ENDM
;=======================================
;=======================================
MACRO SAFE_PORTY
IFNDEF NeedSafePort_Y
ASSERT 0, "--===[ Error! To use SAFE_PORTY you MUST define NeedSafePort_Y 0/1 ]===--"
ELSEIF NeedSafePort_Y
LD A,#C0
OUT (PORT_Y),A
ENDIF
ENDM
MACRO ZERO_PORTY
IFNDEF NeedSafePort_Y
ASSERT 0, "--===[ Error! To use SAFE_PORTY you MUST define NeedSafePort_Y 0/1 ]===--"
ELSEIF NeedSafePort_Y
LD A,0
OUT (PORT_Y),A
ENDIF
ENDM
MACRO SAFE_PORTY_2
IFNDEF NeedSafePort_Y
ASSERT 0, "--===[ Error! To use SAFE_PORTY you MUST define NeedSafePort_Y 0/1 ]===--"
ELSEIF NeedSafePort_Y
EXX
LD C,PORT_Y
IN B,(C)
PUSH BC
LD E,#C0
OUT (C),E
EXX
ENDIF
ENDM
MACRO RESTORE_PORTY
IFNDEF NeedSafePort_Y
ASSERT 0, "--===[ Error! To use SAFE_PORTY you MUST define NeedSafePort_Y 0/1 ]===--"
ELSEIF NeedSafePort_Y
EXX
POP BC
OUT (C),B
EXX
ENDIF
ENDM
;=======================================
;=======================================
MACRO PrintProc
MODULE PrintF
;---------------------------------------
printstr:
; ¢ ॣ. HL  ¤à¥á ­  ¯¥ç â ¥¬ë© ¡ãä¥à
LD C,Dss.PChars
jp ToDSS
;---------------------------------------
;---------------------------------------
; ¢ ॣ. A ç¨á«® ¯¥ç â ¥¬®¥ ª ª hex
printhex:
LD D,A
RRCA
RRCA
RRCA
RRCA
AND #0F
ADD A,#30
CP #3A
JR C,.PRNH1
ADD A,7
.PRNH1:
CALL .PRINT_CHAR
LD A,D
AND #0F
ADD A,#30
CP #3A
JP C,.PRINT_CHAR
ADD A,7
JP .PRINT_CHAR
; ¢ ॣ¨áâॠA ᨬ¢®« ¤«ï ¯¥ç â¨
.PRINT_CHAR:
LD BC,#0182
JP ToBIOS
;---------------------------------------
ENDMODULE
ENDM
;=======================================
;=======================================
MACRO M_hex2dec2ascii_8bit size
; ‚•Ž„:
; ॣ. C - HEX ç¨á«® ¤«ï ¯à¥®¡à §®¢ ­¨ï (0-255)
; ॣ. HL -  ¤à¥á ¢ ¯ ¬ï⨠¤«ï á®åà ­¥­¨ï áâப¨ १ã«ìâ â  (1-3 ¡ ©â  ASCII)
; size - 1-3 ascii ᨬ¢®«  ­  ¢ë室¥ (®â ¬« ¤è¥£® ª áâ à襬ã à §àï¤ã)
IF size == 3
ld a,199
cp c
ld a,#30
jr nc,.nxt
inc a
.nxt: ld (hl),a
ENDIF
xor a
ld b,8
.loop:
sla c
adc a,a
daa
IF size == 3
jp nc,.skip
inc (hl)
ENDIF
.skip: djnz .loop
IF size == 3
inc hl
ENDIF
IF size == 1
and #0F
or #30
ld (hl),a
ELSE
ld (hl),a
ld a,#33
rrd
inc hl
ld (hl),a
ENDIF
;.exit:
ENDM
;=======================================
;=======================================
MACRO M_Get_Mem mem_buf_addr, pages
ld b,pages
rst ToDSS
ret c
ld hl,mem_buf_addr
ld c,BIOS.GetMemBlkPages
rst ToBIOS
ret
ENDM
;=======================================
;=======================================
; !TODO border color -  ªâ¨¢¨à®¢ âì ¬ ªà®á ¨ ¢«ã¯¨âì ¢¥§¤¥ ª®£¤  ¯¥à¥¬¥­­ë¥ sys_page ¡ã¤ãâ ç¥à¥§ áâàãªâãàã ᤥ« ­ë ¢ SP2000.INC
; MACRO BORDER color
; IF color == 0
; XOR A
; ELSE
; LD A,color
; ENDIF
; out (BorderColor),a
; ENDM
;=======================================
;-----------[DSS Functions]----------[v]
MACRO DSS_GETMEM pages, error_handler
ld b,pages
ld c,Dss.GetMem
rst ToDSS
jp c,error_handler
;A - ¨¤¥­â¨ä¨ª â®à ¡«®ª ,
;«¨¡® ª®¤ ®è¨¡ª¨ ¥á«¨ CF-1
ENDM
;------------------------------------[^]
;----------[BIOS Functions]----------[v]
;------------------------------------[^]

View File

@ -0,0 +1,9 @@
;
STRUCT str_EasterSprites
SpAddress WORD ;  ¤à¥á á¯à ©â  ¢ ¯ ¬ïâ¨
SpWidth WORD ; ˜¨à¨­ 
SpHeight BYTE ; ‚ëá®â  + Y coord
SpXCoord WORD ; X coord
SpYCoord BYTE ; Y coord
ENDS
;

24
structures/FileSystem.inc Normal file
View File

@ -0,0 +1,24 @@
;
STRUCT _sBOOT_SEC ; 62 bytes
.JMP: BLOCK 3,0 ; +#00 "JMP"
.ID_NAME: TEXT 8,{"DSS_1.7","0"} ; +#03 DOS NAME - DB "DSS_1.70"
; Block Parameters BIOS
.B_P_S: WORD #200 ; +#0B BYTE PER SECTOR
.S_P_C: BYTE 2 ; +#0D SECTORS PER CLUSTER
.RESERVE: WORD 1 ; +#0E RESERVE SECTORS
.FAT_NUM: BYTE 2 ; +#10 AMOUNT FATS
.F_P_DIR: WORD 112 ; +#11 FILES IN DIRECTORY
.S_P_D: WORD 1440 ; +#13 ALL SECTORS ON DISK
.ID_FORM: BYTE #F0 ; +#15 ID FORMAT
.S_P_F: WORD 2 ; +#16 SIZE FAT IN SECTORS
.S_P_T: WORD 9 ; +#18 SECTOR PER TRACK
.HEADS: WORD 2 ; +#1A AMOUNT SIDES
.HIDDEN: DWORD 0 ; +#1C HIDDEN SECTORS
.BPB_BIG_TOTAL_SECTORS: DWORD 0 ; +#20 BIG TOTAL SECTOR
.BPB_PHISICAL_DRIVE_NUMBER: WORD #80 ; +#24 PHISICAL DRIVE NUMBER
.BPB_EXT_BOOT_RECORD_SIGNATURE: BYTE #29 ; +#26 EXTENDED BOOT RECORD SIGNATURE
.BPB_SERIAL_NUMBER: DWORD 0 ; +#27 VOLUME SERIAL NUMBER
.BPB_LABEL: TEXT 8,{"NO NAME"," "} ; +#2B DISK LABEL
.ID_FAT: TEXT 8,{"FAT16"," "} ; +#36 FILE SYSTEM ID ( BPB_FS_ID )
ENDS
;

31
structures/bmp.inc Normal file
View File

@ -0,0 +1,31 @@
;
STRUCT MAIN_BMP
ChipsPic BLOCK mpCH_Width * mpCH_Height
;MainPic BLOCK 160*168 ; !!!!!! hardcode
MainPic BYTE
ENDS
STRUCT TBitMapFileHeader ; = 14 bytes
bfType WORD ; 'BM'
bfSize DWORD ; à §¬¥à ¢á¥£® ä ©« 
bfReserved DWORD 0 ;
bfOffBits DWORD ; ­ ç «® ¡¨â®¢®£® ¬ áᨢ  ®â­®á¨â¥«ì­® ­ ç «  ä ©« 
;---[File Info] ; = 40 bytes
biSize DWORD 40 ; Š®«¨ç¥á⢮ ¡ ©â®¢ ¢ DIB header (á í⮣® ¬®¬¥­â )
biWidth DWORD ; ˜¨à¨­  ¨§®¡à ¦¥­¨ï ¢ ¯¨ªá¥«ïå
biHeight DWORD ; ‚ëá®â  ¨§®¡à ¦¥­¨ï ¢ ¯¨ªá¥«ïå
biplanes WORD ; Š®«¨ç¥á⢮ ¯«®áª®á⥩ ¨«¨ 梥⮢ëå á«®¥¢
biBitCount WORD ; Š®«-¢® ¡¨â®¢ ­  ¯¨ªá¥«ì
biCompression DWORD ; ’¨¯ ᦠâ¨ï
biSizeImage DWORD 0 ; <EFBFBD> §¬¥à ª à⨭ª¨ ¢ ¡ ©â å, ¥á«¨ ¨§®¡à ¦¥­¨¥ ­¥á¦ â®¥, â® §­ ç¥­¨¥ ४®¬¥­¤®¢ ­® ãáâ ­ ¢«¨¢ âì ¢ ­®«ì
biXPelsPerMeter DWORD ; ƒ®à¨§®­â «ì­®¥ à §à¥è¥­¨¥ (¢ ¯¨ªá¥«ïå ­  ¬¥âà)
biYPelsPerMeter DWORD ; ‚¥à⨪ «ì­®¥ à §à¥è¥­¨¥ (¢ ¯¨ªá¥«ïå ­  ¬¥âà)
biClrUsed DWORD 0 ; Ž¯à¥¤¥«ï¥â ª®«¨ç¥á⢮ ¨á¯®«ì§ã¥¬ëå æ¢¥â®¢ ¨§ â ¡«¨æë
biClrImportant DWORD 0 ; Š®«¨ç¥á⢮ ¢ ¦­ëå ¤«ï ¨§®¡à ¦¥­¨ï 梥⮢
;--[File Data]
bdPallete BLOCK #400
bdRaster MAIN_BMP
ENDS
;