mirror of
https://github.com/Tolik-Trek/MountIMA.git
synced 2026-06-15 17:31:35 +03:00
Initial commit
This commit is contained in:
commit
cf4295cc85
4
.gitmodules
vendored
Normal file
4
.gitmodules
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
[submodule "Shared_Includes"]
|
||||
branch = main
|
||||
path = Shared_Includes
|
||||
url = https://github.com/Tolik-Trek/Shared_Includes.git
|
||||
408
Shared_Includes/LUA/Functions.lua
Normal file
408
Shared_Includes/LUA/Functions.lua
Normal 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
Shared_Includes/constants/BIOS_equ.inc
Normal file
197
Shared_Includes/constants/BIOS_equ.inc
Normal 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
Shared_Includes/constants/EXE_Header.z80
Normal file
33
Shared_Includes/constants/EXE_Header.z80
Normal 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
Shared_Includes/constants/SP2000.inc
Normal file
1871
Shared_Includes/constants/SP2000.inc
Normal file
File diff suppressed because it is too large
Load Diff
397
Shared_Includes/constants/dss_equ.inc
Normal file
397
Shared_Includes/constants/dss_equ.inc
Normal 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
Shared_Includes/macroses/accelerator.z80
Normal file
85
Shared_Includes/macroses/accelerator.z80
Normal 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
Shared_Includes/macroses/macros.z80
Normal file
356
Shared_Includes/macroses/macros.z80
Normal 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]
|
||||
|
||||
;------------------------------------[^]
|
||||
9
Shared_Includes/structures/EasterSprites.inc
Normal file
9
Shared_Includes/structures/EasterSprites.inc
Normal 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
Shared_Includes/structures/FileSystem.inc
Normal file
24
Shared_Includes/structures/FileSystem.inc
Normal 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
Shared_Includes/structures/bmp.inc
Normal file
31
Shared_Includes/structures/bmp.inc
Normal 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
|
||||
;
|
||||
653
mountima.asm
Normal file
653
mountima.asm
Normal file
@ -0,0 +1,653 @@
|
||||
;
|
||||
;
|
||||
; !TODO
|
||||
;
|
||||
; [ ] - ª«îç ¤«ï § £à㧪¨ ®¡à § ¢ ®¢ë© à ¬-¤¨áª "/i ¨¬ï_ä ©« "
|
||||
; [ ] - ª«îç ¤«ï § £à㧪¨ ®¡à § ¢ áãé¥áâ¢ãî騩 à ¬-¤¨áª "/i ¨¬ï_ä ©« /d ¡ãª¢ ¤¨áª "
|
||||
; [ ] - ª«îç ¤«ï á®åà ¥¨ï à ¬-¤¨áª ¢ ®¡à § "/s ¡ãª¢ ¤¨áª "
|
||||
; [ ] - ª«îç ¤«ï § ªàëâ¨ï à ¬-¤¨áª "/á ¡ãª¢ ¤¨áª "
|
||||
;
|
||||
|
||||
|
||||
;
|
||||
; Compilation parameters
|
||||
;-------------[]
|
||||
;DEVICE SPRINTER
|
||||
;MMU 2 e, 0 ; ã«¥¢ ï áâà ¨æ ¢ ¡ ªã 2 ¨ ¯à®¢¥àª £à ¨æë
|
||||
;OUTPUT './Build/new.bin'
|
||||
;-------------[]
|
||||
|
||||
|
||||
; Defines section
|
||||
;-------------[]
|
||||
define NEED_LOADER 0
|
||||
; define NeedSafePort_Y 0
|
||||
;-------------[]
|
||||
|
||||
|
||||
; Included LUA section
|
||||
;-------------[]
|
||||
includelua <Shared_Includes/LUA/Functions.LUA>
|
||||
;-------------[]
|
||||
|
||||
|
||||
; Included constants section
|
||||
;-------------[]
|
||||
include 'Shared_Includes/constants/sp2000.inc'
|
||||
include 'Shared_Includes/constants/dss_equ.inc'
|
||||
include 'Shared_Includes/constants/BIOS_equ.inc'
|
||||
;-------------[]
|
||||
|
||||
|
||||
; Included macroses section
|
||||
;-------------[]
|
||||
include 'Shared_Includes/macroses/macros.z80'
|
||||
include 'Shared_Includes/macroses/accelerator.z80'
|
||||
;-------------[]
|
||||
|
||||
|
||||
; Standart EQU section
|
||||
;-------------[]
|
||||
org_addr EQU #8000 + CLP_Buffer
|
||||
code_addr EQU BEGIN
|
||||
stack_point EQU #C000
|
||||
stack_buffer EQU 64
|
||||
program_start EQU BEGIN
|
||||
;-------------[]
|
||||
|
||||
|
||||
; Program EQU section
|
||||
;-------------[]
|
||||
; IMG_File:
|
||||
; .Sectors EQU 2880
|
||||
; .RamPages EQU 90
|
||||
|
||||
; STRUCT MEM_BUFFER_BLOCK
|
||||
; FileID BYTE
|
||||
; BlockID BYTE
|
||||
; SavePage BYTE
|
||||
; PagesBuffer BLOCK IMG_File.RamPages+1
|
||||
; ENDS
|
||||
;-------------[]
|
||||
|
||||
|
||||
; Code start section
|
||||
;[]-------------------------------------------------------------------[]
|
||||
include 'Shared_Includes/constants/EXE_Header.z80'
|
||||
ORG org_addr
|
||||
BEGIN:
|
||||
|
||||
; LD C,BIOS.LP_GET_PLACE
|
||||
; RST ToBIOS
|
||||
; PUSH DE
|
||||
|
||||
; LD HL,EXIT.messages.test
|
||||
; LD C,Dss.PChars
|
||||
; RST ToDSS
|
||||
|
||||
; POP DE
|
||||
; LD E,0
|
||||
; LD C,BIOS.LP_SET_PLACE
|
||||
; RST ToBIOS
|
||||
|
||||
; LD HL,EXIT.messages.help
|
||||
; LD C,Dss.PChars
|
||||
; RST ToDSS
|
||||
; di : halt
|
||||
|
||||
LD (dss_line),IX ; ‘®åà 塞 㪠§ ⥫ì áâப㠧 ¯ã᪠.
|
||||
LD A,(IX) ; âãâ DSS ª« ¤ñâ ¤«¨ã ¯ à ¬¥â஢ ª®¬.áâப¨
|
||||
AND A ; ¯à®¢¥à塞 ®âáãâá⢨¥ ¯ à ¬¥â஢
|
||||
JP Z,EXIT.help ; § ¯ã᪠¢ ª®¬.áâப¥. …᫨ ¨å ¥â - ¢ë室 á ¨áâàãªæ¨¥©
|
||||
|
||||
|
||||
CALL Set_keys
|
||||
JP C,EXIT.error.UNDEFINED
|
||||
|
||||
; ¯à®¢¥àª ª«î祩 ¥á®¢¬¥á⨬®áâì))
|
||||
LD HL,key_buff
|
||||
LD A,(HL)
|
||||
INC HL
|
||||
XOR (HL)
|
||||
JR NZ,.not_saveRMD
|
||||
|
||||
INC HL
|
||||
OR (HL)
|
||||
JP Z,EXIT.error.WrongKeys
|
||||
CALL RMD_SAVE
|
||||
JP EXIT.good
|
||||
|
||||
.not_saveRMD:
|
||||
AND (HL)
|
||||
JR NZ,RMD_MOUNT
|
||||
|
||||
RMD_UNMOUNT: ;LD A,(key_buff.DRVsave)
|
||||
;INC A
|
||||
;CALL NZ,RMD_SAVE
|
||||
;!TODO check error?
|
||||
|
||||
LD A,(key_buff.DRV)
|
||||
LD C,BIOS.FreeMemRMD
|
||||
RST ToBIOS
|
||||
;!TODO check error?
|
||||
|
||||
LD C,Dss.RescanDrives
|
||||
RST ToDSS
|
||||
|
||||
JP EXIT.good
|
||||
;!TODO
|
||||
;-------------[]
|
||||
|
||||
;-------------[]
|
||||
;‘®åà ¥¨¥ ®¡à § à ¬¤¨áª ¢ ä ©«
|
||||
RMD_SAVE: IN A,(SLOT3)
|
||||
LD (.SavePage),A
|
||||
|
||||
LD A,(key_buff.DRVsave)
|
||||
LD C,BIOS.GET_RAMD_ST
|
||||
RST ToBIOS
|
||||
|
||||
LD HL,PagesBuffer
|
||||
LD C,BIOS.GetMemBlkPages
|
||||
RST ToBIOS
|
||||
|
||||
;LD HL,PagesBuffer
|
||||
LD C,Dss.Write
|
||||
.loop: PUSH BC
|
||||
PUSH HL
|
||||
|
||||
LD A,(HL)
|
||||
OUT (SLOT3),A
|
||||
LD A,(key_buff.FM)
|
||||
LD HL,#C000
|
||||
LD DE,#4000
|
||||
;LD C,Dss.Write
|
||||
RST ToDSS
|
||||
; A - ä ©«®¢ë© ¬ ¨¯ã«ïâ®à
|
||||
; HL - ¤à¥á ¢ ¯ ¬ïâ¨
|
||||
; DE - ª®«¨ç¥á⢮ ç¨â ¥¬ëå ¡ ©â
|
||||
POP HL
|
||||
POP BC
|
||||
;!TODO 㤠«ïâì ä ©« ¥á«¨ ®è¨¡ª § ¯¨á¨
|
||||
JP C,EXIT.error.writeFile
|
||||
|
||||
INC HL
|
||||
DJNZ .loop
|
||||
|
||||
.SavePage+*: LD A,0
|
||||
OUT (SLOT3),A
|
||||
LD C,Dss.RescanDrives
|
||||
RST ToDSS
|
||||
|
||||
LD A,(key_buff.FM)
|
||||
LD C,Dss.Close
|
||||
RST ToDSS
|
||||
|
||||
RET
|
||||
;-------------[]
|
||||
|
||||
|
||||
|
||||
|
||||
;-------------[]
|
||||
RMD_MOUNT: LD A,(key_buff.FM)
|
||||
LD HL,0
|
||||
LD IX,0
|
||||
LD B,Dss.Move_FP.FrEnd
|
||||
LD C,Dss.Move_FP
|
||||
RST ToDSS ; ã§ ñ¬ à §¬¥à ä ©«
|
||||
; A - ä ©«®¢ë© ¬ ¨¯ã«ïâ®à
|
||||
; HL:IX - ᬥ饨¥ 㪠§ â¥«ï ¢ ä ©«¥
|
||||
; B - ᯮᮡ ¯¥à¥¬¥é¥¨ï:
|
||||
; 0 - ®â ç « ä ©«
|
||||
; 1 - ®â ⥪ã饣® § 票ï 㪠§ ⥫ï
|
||||
; 2 - ®â ª®æ ä ©«
|
||||
|
||||
XOR A
|
||||
OR H
|
||||
JP NZ,EXIT.error.noRAM
|
||||
LD A,L
|
||||
CP #39
|
||||
JP NC,EXIT.error.noRAM
|
||||
|
||||
PUSH IX
|
||||
POP HL
|
||||
DUP 2 ; ¯à¥¢à é ¥¬ à §¬¥à ä ©« ¢ ¡ ©â å ¢ áâà ¨æë
|
||||
SLA L
|
||||
RL H
|
||||
RLA
|
||||
EDUP
|
||||
LD B,A
|
||||
LD A,H
|
||||
OR L
|
||||
JR Z,.skipINK
|
||||
INC B ; ¥®¡å®¤¨¬®¥ ç¨á«® áâà ¨æ
|
||||
;-------------[]
|
||||
.skipINK: LD A,B
|
||||
LD (.RamPagesNum),A
|
||||
LD C,BIOS.GetMem
|
||||
RST ToBIOS
|
||||
;LD B,num_pages ; § ¯à 訢 ¥¬®¥ ç¨á«® áâà ¨æ Ž‡“
|
||||
;LD C,0C2h ; ®¬¥à äãªæ¨¨
|
||||
;CALL 3D13h ; NC -> € - ¨¤¥â¨ä¨ª â®à ¡«®ª
|
||||
; CF -> A=1 - ¥â ¯ ¬ïâ¨
|
||||
JP C,EXIT.error.noRAM
|
||||
LD (.BlockID),A
|
||||
;-------------[]
|
||||
|
||||
|
||||
;-------------[]
|
||||
LD HL,PagesBuffer
|
||||
LD C,BIOS.GetMemBlkPages
|
||||
RST ToBIOS
|
||||
; LD A,id_blk ; ¨¤¥â¨ä¨ª â®à ¡«®ª
|
||||
; LD HL,bufer ; ¡ãä¥à ¤«¨®© 256 ¡ ©â ¤«ï à §¬¥é¥¨ï ᯨáª
|
||||
; ; ¡ãä¥à ¤®«¦¥ ¡ëâì ¤«¨®© ¥¤¨¨æã ¡®«ìè¥ ç¨á«
|
||||
; ; áâà ¨æ ¢ ¡«®ª¥
|
||||
; LD C,0C5h ; ®¬¥à äãªæ¨¨
|
||||
; RST ToBIOS ; NC -> HL - â®â ¦¥ ¡ãä¥à, B - ç¨á«® áâà ¨æ ¢ ¡«®ª¥
|
||||
; ; ¤ ë¥ ¯® ¤à¥áã HL - ᯨ᮪ 䨧¨ç¥áª¨å áâà ¨æ ¯®
|
||||
; ; ¯®à浪ã. ‘¯¨á®ª § ª 稢 ¥âáï ¡ ©â®¬ FF
|
||||
; ; CF -> ¥¢¥àë© ¨¤¥â¨ä¨ª â®à ¡«®ª . ‘â à ï
|
||||
; ; ¨ä®à¬ æ¨ï ¢ ¡ãä¥à¥ ¬®¦¥â ¡ëâì § â¥àâ
|
||||
JP C,EXIT.error.wrongMEMblkID
|
||||
;-------------[]
|
||||
|
||||
|
||||
;-------------[]
|
||||
XOR A
|
||||
.loop: PUSH AF
|
||||
LD C,BIOS.GET_RAMD_ST
|
||||
RST ToBIOS ; ¯®«ã票¥ ¨¤¥â¨ä¨ª â®à ¡«®ª , § 祮£® RAM-Disk
|
||||
|
||||
AND A
|
||||
JR Z,.loopExit
|
||||
|
||||
POP AF
|
||||
INC A
|
||||
CP 16
|
||||
JP NZ,.loop
|
||||
|
||||
JP EXIT.error.noFreeRAMdsk
|
||||
.loopExit:
|
||||
POP AF
|
||||
;-------------[.]
|
||||
; .
|
||||
; .
|
||||
;-------------[.]
|
||||
; A = ram_disk number from BIOS.GET_RAMD_ST
|
||||
.BlockID+*: LD HL,0
|
||||
LD B,L
|
||||
LD C,BIOS.BLK_TO_RAMD
|
||||
RST ToBIOS
|
||||
; ; «î¡®© ¡«®ª ¯ ¬ï⨠¬®¦¥â ᮤ¥à¦ âì ¤ ë¥
|
||||
; ; RAM-Disk- ¢ ä®à¬ ⥠TR-DOS ¤«ï ¯®¤ª«î票ï íâ¨å
|
||||
; ; ¤ ëå ¢ ª ç¥á⢥ ¤¨áª ¨ á«ã¦¨â íâ äãªæ¨ï
|
||||
; LD A,ram_disk ; ®¬¥à RAM-Disk- 0..15 - ᮮ⢥âáâ¢ã¥â
|
||||
; ; RAM-Disk- ¬ ®â e: ¤® t:
|
||||
; LD B,id_blk ; ¨¤¥â¨ä¨ª â®à ¡«®ª
|
||||
; LD C,0C9h ; ®¬¥à äãªæ¨¨
|
||||
; RST ToBIOS ; NC -> ®à¬ «ì®¥ § ¢¥à襨¥
|
||||
; ; CF -> ®è¨¡ª : ¥¢¥àë© ®¬¥à RAM-Disk- ¨«¨
|
||||
; ; RAM-Disk § ïâ
|
||||
JR C,EXIT.error.wrongRAMdrv
|
||||
;-------------[]
|
||||
|
||||
;—⥨¥ ®¡à § ¢ ¯ ¬ïâì à ¬¤¨áª
|
||||
;-------------[]
|
||||
LD A,(key_buff.FM)
|
||||
LD HL,0
|
||||
LD IX,0
|
||||
LD B,Dss.Move_FP.FrStart
|
||||
LD C,Dss.Move_FP
|
||||
RST ToDSS
|
||||
|
||||
IN A,(SLOT3)
|
||||
LD (.SavePage),A
|
||||
.RamPagesNum+*: LD B,0
|
||||
LD HL,PagesBuffer
|
||||
LD C,Dss.Read
|
||||
|
||||
;;;;!TODO ᤥ« âì ®¡é¥© ¯à®æ¥¤ãன
|
||||
.LOOP: PUSH BC
|
||||
PUSH HL
|
||||
|
||||
LD A,(HL)
|
||||
OUT (SLOT3),A
|
||||
LD A,(key_buff.FM)
|
||||
LD HL,#C000
|
||||
LD DE,#4000
|
||||
;LD C,Dss.Read
|
||||
RST ToDSS
|
||||
; A - ä ©«®¢ë© ¬ ¨¯ã«ïâ®à
|
||||
; HL - ¤à¥á ¢ ¯ ¬ïâ¨
|
||||
; DE - ª®«¨ç¥á⢮ ç¨â ¥¬ëå ¡ ©â
|
||||
POP HL
|
||||
POP BC
|
||||
JR C,EXIT.error.readFile
|
||||
INC HL
|
||||
DJNZ .LOOP
|
||||
;;;;
|
||||
|
||||
.SavePage+*: LD A,0
|
||||
OUT (SLOT3),A
|
||||
LD C,Dss.RescanDrives
|
||||
RST ToDSS
|
||||
|
||||
LD A,(key_buff.FM)
|
||||
LD C,Dss.Close
|
||||
RST ToDSS
|
||||
;!TODO check error?
|
||||
; JP EXIT.good
|
||||
;-------------[]
|
||||
|
||||
|
||||
;-------------[]
|
||||
MODULE EXIT
|
||||
good: LD B,DSS_Error.sys.NO_ERROR
|
||||
LD HL,messages.good
|
||||
printANDexit: PUSH BC
|
||||
LD C,Dss.PChars
|
||||
RST ToDSS
|
||||
POP BC
|
||||
.loop: LD C,Dss.Exit
|
||||
RST ToDSS
|
||||
JR .loop
|
||||
|
||||
help: LD HL,messages.help
|
||||
LD B,DSS_Error.sys.NO_ERROR
|
||||
JP printANDexit
|
||||
error:
|
||||
.writeFile: LD B,DSS_Error.sys.WRITE_ERROR
|
||||
LD HL,messages.writeFile
|
||||
JP printANDexit
|
||||
|
||||
.WrongKeys: LD B,DSS_Error.sys.GENERAL_FAILURE
|
||||
LD HL,messages.WrongKeys
|
||||
JP printANDexit
|
||||
|
||||
.UNDEFINED: LD B,DSS_Error.sys.GENERAL_FAILURE
|
||||
LD HL,messages.UNDEFINED
|
||||
JP printANDexit
|
||||
|
||||
.noRAM: LD B,DSS_Error.sys.NOT_ENOUGH_MEMORY
|
||||
LD HL,messages.noRAM
|
||||
JP printANDexit
|
||||
|
||||
.wrongMEMblkID: LD B,DSS_Error.sys.INVALID_MEMORY_HND
|
||||
LD HL,messages.wrongMEMblkID
|
||||
JP printANDexit
|
||||
|
||||
.wrongRAMdrv: LD B,DSS_Error.sys.INVALID_DRIVE
|
||||
LD HL,messages.wrongRAMdrv
|
||||
JP printANDexit
|
||||
|
||||
.readFile: LD B,DSS_Error.sys.READ_ERROR
|
||||
LD HL,messages.readFile
|
||||
JP printANDexit
|
||||
|
||||
.noFreeRAMdsk: LD B,DSS_Error.sys.GENERAL_FAILURE
|
||||
LD HL,messages.noFreeRAMdsk
|
||||
JP printANDexit
|
||||
;
|
||||
messages:
|
||||
.good: DZ "\r\n All Done. Good luck)))\r\n"
|
||||
.noRAM: DZ "\r\n ERROR! No enough memory.\r\n"
|
||||
.wrongMEMblkID: DZ "\r\n ERROR! Invalid Memory block ID.\r\n"
|
||||
.wrongRAMdrv: DZ "\r\n ERROR! Invalid RAM disk ID or RAM disk busy.\r\n"
|
||||
.readFile: DZ "\r\n ERROR! Unable to read disk image file.\r\n"
|
||||
.writeFile: DZ "\r\n ERROR! Unable to write disk image to file.\r\n"
|
||||
.noFreeRAMdsk: DZ "\r\n ERROR! The number of RAM disks in use has reached its maximum.\r\n"
|
||||
.WrongKeys: DZ "\r\n ERROR! Wrong key combination.\r\n"
|
||||
.help: DZ "\r\n HELP MESSAGE IN PROGRESS\r\n" ;!TODO
|
||||
.UNDEFINED: DZ "\r\n Undefined error: SET_KEYS\r\n" ;!TODO
|
||||
;.test DZ "1234567890-1234567890-1234567890-1234567890"
|
||||
;.help: DZ " HELP MESSAGE IN PROGRESS\r\n" ;!TODO
|
||||
ENDMODULE
|
||||
;-------------[]
|
||||
dss_line: DW 0
|
||||
;*******************************************************
|
||||
|
||||
; ____ _ _
|
||||
; / ___| ___| |_ | | _____ _ _ ___
|
||||
; \___ \ / _ \ __| | |/ / _ \ | | / __|
|
||||
; ___) | __/ |_ | < __/ |_| \__ \
|
||||
; |____/ \___|\__| |_|\_\___|\__, |___/
|
||||
; |___/
|
||||
; <20>®«ãç ¥¬ ª«îç¨ § ¯ã᪠, à ᯨ娢 ¥¬ ¨å ¯® 㣫 ¬,
|
||||
; áâà ¨¢ ¥¬ ç «ìë¥ ãá«®¢¨ï à ¡®âë.
|
||||
;-----------------;
|
||||
key_buff:
|
||||
.U: DB 0 ; unmount
|
||||
.M: DB 0 ; mount
|
||||
.S: DB 0 ; save ramdisk
|
||||
.FM: DB 0 ; File Manipulator
|
||||
.DRV: DB #FF ; ®¬¥à à ¬¤¨áª ¤«ï unmount
|
||||
.DRVsave: DB #FF ; ®¬¥à à ¬¤¨áª ¤«ï SAVE
|
||||
;-----------------;
|
||||
Set_keys: LD HL,(dss_line)
|
||||
INC HL
|
||||
LD (.NextParam),HL
|
||||
.CheckChar: CALL .GetParam
|
||||
;JR NC,.next
|
||||
CCF
|
||||
RET NC ; <20> §¡®à ®ª®ç¥.
|
||||
|
||||
.next: LD A,(Buffer+2) ; ‚ ®á®¢®¬ 横«¥ CheckChar ¬ë ¦¤ñ¬ ⮫쪮 ¤¢
|
||||
ADD #FF ; ᨬ¢®« ¢ ª«îç¥. <20>®í⮬㠥᫨ ¨å ¡®«ìè¥,
|
||||
RET C ; â® ¢ë室¨¬ á ®è¨¡ª®©.
|
||||
|
||||
LD A,(Buffer)
|
||||
SUB '/'
|
||||
SCF
|
||||
RET NZ
|
||||
|
||||
; <20>஢¥àª /ãáâ ®¢ª ª«îç
|
||||
LD HL,key_buff ; ç «® åà ¥¨ï ª«î祩
|
||||
LD E,L ; ¤«ï ¯à®¢¥àª¨ ª«îç U
|
||||
LD A,(Buffer+1)
|
||||
AND %11011111 ; ¤¥« ¥¬ ¬ «¥ìª¨© ᨬ¢®« ¡®«ì訬)))
|
||||
CP 'U' ; ¯à®¢¥à塞 ¯ à ¬¥âà mount image
|
||||
JR Z,.set_key
|
||||
INC HL ; á«¥¤ãî騩 ª«îç
|
||||
CP 'M' ; ¯à®¢¥à塞 ¯ à ¬¥âà unmount image
|
||||
JR Z,.set_key
|
||||
INC HL ; á«¥¤ãî騩 ª«îç
|
||||
CP 'S' ; ¯à®¢¥à塞 ¯ à ¬¥âà save image
|
||||
JR Z,.set_key
|
||||
SCF ; ®è¨¡ª ¢ ¯ à ¬¥âà¥
|
||||
RET ; ¢ë室 á ®è¨¡ª®©
|
||||
;-----------------;
|
||||
|
||||
;-----------------;
|
||||
.set_key: LD A,(HL) ; ¯à®¢¥à塞 ¥ ãáâ ®¢«¥ «¨ ª«îç.
|
||||
ADD #FF ; ¥á«¨ ¥áâì, § ç¨â ª«îç ¢¢¥¤ñ 2 à §
|
||||
RET C ; ®è¨¡ª - ¯®¢â®à ª«îç . ¢ë室
|
||||
INC (HL) ; <20>ਧ ª ãáâ ®¢ª¨ ª«îç - ¥ ®«ì. “áâ ®¢¨«¨ ª«îç.
|
||||
|
||||
LD A,L
|
||||
SUB E ; ¤«ï ¯à®¢¥àª¨ ª«îç U
|
||||
LD (.save_a),A
|
||||
|
||||
CALL .GetParam ; ¯®«ãç ¥¬ á«¥¤ãî騩 ¯ à ¬¥âà áâப¨ DOS ª ©¤¥®¬ã ª«îçã
|
||||
RET C ; ¢ë室, ¥á«¨ ®è¨¡ª
|
||||
|
||||
XOR A
|
||||
.save_a+*: OR 0
|
||||
JR NZ,.file_key
|
||||
|
||||
CALL .GetDRVnum
|
||||
RET C
|
||||
LD (key_buff.DRV),A ; á®åà 塞 ®¬¥à à ¬¤¨áª ¤«ï BIOS.FreeMemRMD
|
||||
JP .CheckChar ; ¯®£ «¨ á«¥¤ãî騩 ¢¨â®ª à §¡®à ª«î祩
|
||||
/*
|
||||
.save_a+*: LD A,0
|
||||
XOR 2
|
||||
JR Z,.key_save
|
||||
XOR 2
|
||||
JR NZ,.file_key
|
||||
;unmount key
|
||||
CALL .GetDRVnum
|
||||
;!TODO error number
|
||||
RET C
|
||||
LD (key_buff.DRV),A ; á®åà 塞 ®¬¥à à ¬¤¨áª ¤«ï BIOS.FreeMemRMD
|
||||
;--------------------
|
||||
JP .CheckChar ; ¯®£ «¨ á«¥¤ãî騩 ¢¨â®ª à §¡®à ª«î祩
|
||||
|
||||
.key_save:
|
||||
CALL .GetDRVnum
|
||||
RET C
|
||||
LD (key_buff.DRVsave),A ; á®åà 塞 ®¬¥à à ¬¤¨áª ¤«ï BIOS.FreeMemRMD
|
||||
*/
|
||||
|
||||
;!FIXIT
|
||||
.file_key:
|
||||
LD HL,Buffer
|
||||
LD A,(key_buff.M)
|
||||
AND A
|
||||
JR Z,.noRD
|
||||
CALL .OpenRDfile ; Žâªàë⨥ ä ©« (¨«¨ ¯à®¢¥àª «¨ç¨ï) ¯® ¨¬¥¨ ¨§ ¡ãä¥à
|
||||
RET C ; ¢ë室, ¥á«¨ ®è¨¡ª
|
||||
JP .CheckChar ; ¯®£ «¨ á«¥¤ãî騩 ¢¨â®ª à §¡®à ª«î祩
|
||||
|
||||
.noRD: CALL .OpenWRfile
|
||||
RET C ; ¢ë室, ¥á«¨ ®è¨¡ª
|
||||
LD A,(key_buff.DRVsave)
|
||||
INC A
|
||||
JP NZ,.CheckChar
|
||||
|
||||
LD HL,(.NextParam)
|
||||
INC HL
|
||||
LD A,(HL)
|
||||
CP ':'
|
||||
JP NZ,.CheckChar
|
||||
|
||||
CALL .GetParam
|
||||
CCF
|
||||
RET NC
|
||||
|
||||
CALL .GetDRVnum
|
||||
RET C
|
||||
LD (key_buff.DRVsave),A ; á®åà 塞 ®¬¥à à ¬¤¨áª ¤«ï save ram drive
|
||||
|
||||
JP .CheckChar ; ¯®£ «¨ á«¥¤ãî騩 ¢¨â®ª à §¡®à ª«î祩
|
||||
;-----------------;
|
||||
|
||||
;-----------------;
|
||||
.GetParam:
|
||||
.NextParam+1: LD HL,0
|
||||
LD DE,Buffer ; ¡ãä¥à ¤«ï ®¯¥à 権 á® áâப ¬¨
|
||||
LD C,Dss.GSwitch ; âã⠢뤥«ï¥¬ ¯ à ¬¥âà § ¯ãáª
|
||||
RST #10 ; ¯®«ãç ¥¬ ¢ ¡ãä¥à¥ á«¥¤ãî騩 ¯ à ¬¥âà
|
||||
LD (.NextParam),HL
|
||||
LD A,(Buffer)
|
||||
AND A
|
||||
RET NZ ; <20>®à¬ «ìë© ¢®§¢à â C = 0
|
||||
SCF
|
||||
RET ; ‚®§¢à â á ®è¨¡ª®© C = 1
|
||||
;-----------------;
|
||||
|
||||
;-----------------;
|
||||
.OpenRDfile: LD BC,Dss.EX_Path.GET_ALL * 256 + Dss.EX_Path ; ¯à®¢¥à塞 ¡ãä¥à ª®à४â®áâì ¨¬¥¨ ä ©«
|
||||
RST ToDSS
|
||||
RET C ; ®è¨¡ª ¢ áâப¥
|
||||
AND %00000011 ; ¯à®¢¥à塞, çâ® ¥áâì ¨¬ï ¨
|
||||
XOR %00000011 ; à áè¨à¥¨¥ ä ©« (0 ¨ 1 ¡¨âë)
|
||||
SCF
|
||||
RET NZ ; ®è¨¡ª ä ©« - ¢ë室
|
||||
|
||||
LD A,Dss.Open.R
|
||||
LD HL,Buffer
|
||||
LD C,Dss.Open
|
||||
RST 10h ; ®âªàë⨥ ä ©«
|
||||
LD (key_buff.FM),A ; á®åà 塞 ä ©«®¢ë© ¬ ¨¯ã«ïâ®à
|
||||
RET
|
||||
;
|
||||
.OpenWRfile: XOR A ;LD A,FileAttrib.Normal
|
||||
LD C,Dss.Create
|
||||
RST ToDSS
|
||||
LD (key_buff.FM),A ; á®åà 塞 ä ©«®¢ë© ¬ ¨¯ã«ïâ®à
|
||||
RET
|
||||
;-----------------;
|
||||
.GetDRVnum: LD HL,Buffer+2
|
||||
LD (HL),'\'
|
||||
INC HL
|
||||
LD (HL),0
|
||||
EX DE,HL
|
||||
LD HL,Buffer
|
||||
|
||||
LD B,Dss.EX_Path.GET_DRIVE
|
||||
LD C,Dss.EX_Path ; âãâ ®¯à¥¤¥«ï¥¬ ¨¬ï ¤¨áª «¨ ¢ ¡ãä¥à¥
|
||||
RST ToDSS ; ¯®«ãç ¥¬ ¢ € «®£¨ç¥áª¨© ®¬¥à ¤¨áª
|
||||
RET C
|
||||
|
||||
LD BC,0*256 + 8
|
||||
LD DE,#55AA
|
||||
RST #18 ; ¨§ «®£¨ç¥áª®£® ¢ 䨧¨ç¥áª¨© ®¬¥à ¤¨áª
|
||||
EX AF,AF'
|
||||
LD C,A
|
||||
AND #F0
|
||||
XOR #60
|
||||
SCF
|
||||
RET NZ
|
||||
|
||||
LD A,C
|
||||
AND #0F
|
||||
|
||||
|
||||
RET
|
||||
;-----------------;
|
||||
;*******************************************************
|
||||
|
||||
|
||||
Loader_length EQU $-BEGIN
|
||||
;!FIXIT
|
||||
PagesBuffer EQU $
|
||||
Buffer EQU PagesBuffer+256
|
||||
|
||||
;----------------------------------------------[End Code section]
|
||||
STACK_CHECK_MACRO stack_point, (stack_buffer+256)
|
||||
;----------------------------------------------[Data after Loader]
|
||||
|
||||
/*
|
||||
;-----------------------------------------------------------------------;
|
||||
Test: LD (dss_line),IX ; ‘®åà 塞 㪠§ ⥫ì áâப㠧 ¯ã᪠.
|
||||
LD A,(IX) ; âãâ DSS ª« ¤ñâ ¤«¨ã ¯ à ¬¥â஢ ª®¬.áâப¨
|
||||
AND A ; ¯à®¢¥à塞 ®âáãâá⢨¥ ¯ à ¬¥â஢
|
||||
JP NZ,1F ; § ¯ã᪠¢ ª®¬.áâப¥. …᫨ ¨å ¥â,
|
||||
LD HL,Help_Msg ; â® ¯¥ç â ¥¬ ¨áâàãªæ¨î ¨ ¢ë室¨¬
|
||||
CALL PrintStr ; ¨§ ¯à®£à ¬¬ë á ®à¬ «ìë¬ ª®¤®¬
|
||||
LD B,0 ; § ¢¥à襨ï.
|
||||
JP Exit ;
|
||||
;-----------------------------------------------------------------------;
|
||||
|
||||
;-----------------------------------------------------------------------;
|
||||
GetParam: LD HL,(NextParameter) ;
|
||||
LD C,43h ; âã⠢뤥«ï¥¬ ¯ à ¬¥âà § ¯ãáª
|
||||
LD DE,Buffer ; ¡ãä¥à ¤«ï ®¯¥à 権 á® áâப ¬¨
|
||||
RST #10 ; ¯®«ãç ¥¬ ¢ ¡ãä¥à¥ á«¥¤ãî騩 ¯ à ¬¥âà
|
||||
ld (NextParameter),hl ;
|
||||
CCF ;
|
||||
LD A,(Buffer) ;
|
||||
AND A ;
|
||||
RET NZ ; <20>®à¬ «ìë© ¢®§¢à â C = 0
|
||||
SCF ;
|
||||
RET ; ‚®§¢à â á ®è¨¡ª®© C = 1
|
||||
;-----------------------------------------------------------------------;
|
||||
|
||||
LD HL,COMLINE ;HL 㪠§ë¢ ¥â ª®¬ ¤ãî áâபã
|
||||
.loop: LD DE,BUFFER ;DE 㪠§ë¢ ¥â ¡ãä¥à ¤«ï ¯ à ¬¥â஢
|
||||
LD C,43h ;”ãªæ¨ï ¢ë¤¥«¥¨ï ¯ à ¬¥âà
|
||||
RST 10h ;‚믮«¥¨¥ äãªæ¨¨
|
||||
PUSH AF
|
||||
PUSH HL
|
||||
|
||||
|
||||
|
||||
POP HL
|
||||
POP AF
|
||||
JP NC,.loop
|
||||
LD A,(BUFFER)
|
||||
AND A
|
||||
JR NZ,NEXTP
|
||||
*/
|
||||
Loading…
Reference in New Issue
Block a user