mirror of
https://github.com/Tolik-Trek/Spectrum.EXE.git
synced 2026-06-15 17:11:38 +03:00
Release 25/06/2025
This commit is contained in:
commit
c26759bb4c
9
.gitignore
vendored
Normal file
9
.gitignore
vendored
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
/.DS_Store
|
||||||
|
/.tmp
|
||||||
|
/.vscode
|
||||||
|
/Build/
|
||||||
|
/Debug/
|
||||||
|
/Icon/
|
||||||
|
/SP_Core.code-workspace
|
||||||
|
/RUN/
|
||||||
|
/Docs/
|
||||||
@ -1 +0,0 @@
|
|||||||
Ž¯â¨¬ «ìë© LZH
From : hrumer@gorny.ru
>>ˆ£®àì <20> ¢«®¢ ¢¥¤ñ⠯஥ªâ 7-zip, ®â ¥£® ¢ ª®ä¥à¥æ¨¨ ï
>>ã§ « ¯à® «£®à¨â¬ optimal lzh - ª®£¤ ¢ë¡¨à ¥âáï
>>¤¥©áâ¢¨â¥«ì® ®¯â¨¬ «ìë© á¯®á®¡ ¯®¤¡®à áâப ¯à¨ 㦥
>>áãé¥áâ¢ãî饬 ¤¥à¥¢¥ ª®¤®¢ ¤«¨ ¨ à ááâ®ï¨©.
DB>•€—“íâ®â «£®à¨â¬.
„¥à¦¨!
<0A>â®â «£®à¨â¬ ॠ«ì® 㦥 ª ¦¤®¬ã ¯ ª¥àã ᯥªâà㬥. Ÿ ¤®«-
¦¥ ¡ë« ¥£® ॠ«¨§®¢ âì ¤«ï ¢á¥å åà㬮¢,åàãá⮢ ¨ « §¥àª®¬¯ ªâ®¢
âà¨-ç¥âëॠ£®¤ § ¤. €©ï©ï© ¢ ®¡é¥¬. „«ï " ¬¥à⢮" § è¨âëå
ª®¤®¢, ª ª í⮠ᤥ« ® ¢ ¡®«ìè¨á⢥ ¯ ª¥à®¢ ᯥª¥, íâ®â
«£®à¨â¬ ¯à¨¥áñâ ®ª®«®, ¡®îáì ᪠§ âì,2-20%.<08> ¯ ª¥à å ⨯
RIP¤® ¯à¨¬¥à®1-10%.<08>â® ¢áª¨¤ªã. Š®¥ç®, ¯ ¬ï⨠¬®£® ¤®
¯ ª®¢ªã, â®à¬®§¨âì ¡ã¤¥â á¥àìñ§®, ® ¥áâì à §«¨çë¥ ¢ ਠâë
- ªã᪨ ª ª®© ¤«¨ë à §¡¨âì ä ©« ¨ ¯à®ç¥¥.„ å®âì PC ¬®¦®
¯ ª®¢ âì.
--------åàã¬--------
ˆ£®àì <20> ¢«®¢ ¯¨á « ¢ RU.COMPRESS ¢ 1999 £®¤ã.
€«£®à¨â¬ ®¯â¨¬ «ì®£® Lempel-Ziv-Huffman ª®¤¨à®¢ ¨ï
----------------------------------------------------
1)
<0A>®¨áª ᮢ¯ ¤¥¨© ¢ á«®¢ àî ®áãé¥á⢫ï¥âáï ¤«ï ª ¦¤®£® ᬥ饨ï.
<0A>ਠ¯®¨áª¥ ¤®¯®«¨â¥«ì® ᮡ¨à ¥¬ ¨ä®à¬ æ¨î ®¡ ®¯â¨¬ «ìëå (¯®
à ááâ®ï¨î) ᮢ¯ ¤¥¨ïå á ¤«¨ ¬¨ ®â2¤® ¤«¨ë ¬ ªá¨¬ «ì®£®
ᮢ¯ ¤¥¨ï.
Offsets[] = Get_Longest_And_Other_Good_Matches();
// Offsets.Size = length of longest match.
// Offsets[i] = back offset in dictionary for match with len=i.
BYTE Get_Current_Literal();
// returns current byte
2)
‚ᥣ¤ ¬®¦¥¬ ¯®áç¨â âì, ᪮«ìª® ¯à¥¤¯®«®¦¨â¥«ì® ¡¨â § ©¬ñâ
«î¡®© ¢ ਠâ (match/literal) ®á®¢¥ ¨ä®à¬ 樨 ® ¯à¥¤ë¤ãé¨å
huffman ¡«®ª å:
int Get_Match_Huffman_Price(int Length, int Offset);
// Length = length of match
// Offset = offset of match;
// Result = number of bits for coding this match;
int Get_Literal_Huffman_Price(BYTE Literal);
// Result = number of bits for coding this Literal;
3)
Câந¬ ®¯â¨¬ «ìãî ¯®á«¥¤®¢ ⥫ì®áâì ª®¤®¢ ¬®£® 室®¢
¢¯¥àñ¤.
…áâì ¡®«ì让 ¬ áᨢ a[]:
a[i] =
{
int Price;// –¥ ¯ã⨠¢ ¡¨â å,çâ®¡ë ¤®¡à âìáï ¤® i-£® ¡ ©â .
struct
{
int Prev;// <20>®§¨æ¨ï,®âªã¤ ¬ë ¯àë£ ¥¬ ¢ ⥪ãéãî(=i) ¯®§¨æ¨î
// ¤«ï Literal: Prev = i - 1
// ¤«ï Match' á ¤«¨®© Length: Prev = i - Length
int Offset;// ‘¬¥é. ¢ ¡ãä¥à¥(á«®¢ à¥) § ¤ ¢ á«ãç ¥ Œatch'
// ¤«ï § ¯¨á¨ Œatch' ®â Prev ¤® i
}
}
a)
„«ï ¢á¥å í«¥¬¥â®¢ a[] ãáâ ¢«¨¢ ¥¬ Price = ¡¥áª®¥ç®áâì.
b)
for(int i=0; i < Big_Value; i++)
{
// ‘ãé¥áâ¢ãîâ ¥ª®â®àë¥ ãá«®¢¨ï ¤®áà®ç®£® ¢ëå. ¨§ í⮣® 横«
// <20>®«ãç ¥¬ ¬ áᨢ Offsets[2..Longest_match_length] ᬥ饨© ¢
// ¡ãä¥à¥ (á«®¢ à¥) § ¤, ᬮâਠ1).
Offsets[] = Get_Longest_And_Other_Good_Matches();
for(int Len = 1; Len < Offsets[].Length; Len++)
// Len=1 means Literal
{
// Ž¯à¥¤¥«ï¥¬ æ¥ã ¢ ¡¨â å à áᬠâਢ ¥¬®£® "¯à릪 " Len
// ᨬ¢®«®¢ ¢¯¥àñ¤
if (Len == 1) // it's a literal
aPrice = Get_Literal_Huffman_Price(Get_Current_Literal());
else
aPrice = Get_Match_Huffman_Price(Len, Offsets[Len]);
// ¨ ¢ëç¨á«ï¥¬ æ¥ã ®¢®£® ª ¤¨¤ â ¢ a[i + Len].
aNewPrice = a[i].Price + aPrice;
if (aNewPrice < a[i + Len].Price )
// …᫨ ¢ë£®¤® áâ àë© ¯ãâì (áâ à ï æ¥ ¬®¦¥â ¡ëâì ¤ ¦¥
// à ¢ ¡¥áª®¥ç®áâ¨,â.¥.¢®®¡é¥ ¥éñ ¥â ¯ãâ¨) § ¬¥¨âì
// ®¢ë¬, â® ¬¥ï¥¬ a[i + Len], çâ®¡ë ® 㪠§ë¢ « i
{
a[i + Len].Price = aNewPrice;
a[i + Len].Prev = i;
a[i + Len].Offset = Offsets[Len];
}
}
}
c)
„¢¨£ ïáì ¯® a[] ®â ª®æ , ᮡ¨à ¥¬ "®¯â¨¬ «ìë¥" match/literal
¯®á«¥¤®¢ ⥫ì®á⨠¨ ª®¤¨à㥬 ¨å.
End.
--------åàã¬--------
>>‚ ®¡é¥¬, ¬®¥ ®â®è¥¨¥ ᬮâਠ¢ëè¥, ® ¢®â ¥áâì ¦¥ ¤à㣠ï
>>¨â¥à¥á ï ¢¥éì - ¯à®áâ® ¯®¤¤¥à¦ âì à ᯠª®¢ªãLZMA
>>ᯥªâà㬥. <20>à ¢¤ , ¬¥ ª ¦¥âáï, ¡ã¤¥â ¥ã¤®¡® ¨á¯®«ì§®¢ âì
>>à ᯠª®¢é¨ªLZMA¤«ï ¯à®£à ¬¬ ᯥªâà㬥.
DB><04>® ¬®¦® ¯à¨¬¥¨âì ¤«ï ¦ãà «®¢ ¨«¨ ¡®«ìè¨å á¯à ¢®ç¨ª®¢.
DB><04> ¯à¨¬¥à,Open Letters ®¤®¬ ¤¨áª¥ ;)
>>PS. <20>¥à¥ç¨â « ⢮ñ ¯¨á쬮 ¨ ¯®ï«, çâ® ¨á室¨ª¨ ⥡¥
>>¯à¨á« «¨...
DB>’ ¬ ¡¥§ ¯®««¨âàë ¥ ¢ê¥¤¥èì -1021ä ©«,3.4¬¥£ ¡ ©â
DB>¨á室¨ª®¢. Œãá®àª .
<0A>ã, ¯®««¨âà ¥ ¯à®¡«¥¬ :). ’ ¬ ¨ á ¯®««¨âன ¥ ¢ê¥¤¥èì.
’ë ¥ ¯à®¡®¢ « ¨§ãç¨âì ¯à®áâ® ¤¥ª®¤¥à, â®â, ª®â®àë© ¢ ä ©«¥
\SRC\7zip\Compress\LZMA_C\lzmadecode.c,â ¬ ¢á¥£®23ª¡ :).
|
|
||||||
@ -1,106 +0,0 @@
|
|||||||
|
|
||||||
Утилита GRFVIEW предназначена для просмотра монохромных или
|
|
||||||
цветных (мультиколорных) картинок в формате CP/M-редактора GRAF
|
|
||||||
в режиме 640x200. В самой среде CP/M данные картинки имеют рас-
|
|
||||||
ширение BLK, однако в OS TASiS оно зарезервировано за драйверами
|
|
||||||
дисковых устройств и, чтобы избежать путаницы, здесь им было
|
|
||||||
присвоено "свободное" расширение GRF - производная от названия
|
|
||||||
редактора. Поэтому, при переносе картинок из CP/M в TASiS не за-
|
|
||||||
будьте сменить расширение!
|
|
||||||
|
|
||||||
Откуда можно раздобыть GRF/BLK-файлы?
|
|
||||||
|
|
||||||
1) Нарисовать самостоятельно в графическом редакторе GRAF.
|
|
||||||
|
|
||||||
2) Сконвертировать в CP/M из исходных МОНОХРОМНЫХ(!) PCX-файлов
|
|
||||||
при помощи специальной, прилагающейся к редактору утилиты
|
|
||||||
PCXBLK.COM. Само-собой, таким способом можно получить только мо-
|
|
||||||
нохромные картинки. Но их можно вручную раскрасить все в том же
|
|
||||||
редакторе.
|
|
||||||
|
|
||||||
3) Сконвертировать в RetroX (редактор -> Import Picture -> Settings ->
|
|
||||||
ZX Clones Special -> TurboATM Multicolor Polychrome)... а поскольку сохранять
|
|
||||||
он не умеет, то сделать скриншот, обрезать картинку (ширина должна делиться
|
|
||||||
на 8, а высота на 2), сохранить в фотошопе в формате bmp 8bpp (0-й цвет
|
|
||||||
желательно принудительно задать чёрным), потом сконвертировать утилитой
|
|
||||||
RetroX to GRF.
|
|
||||||
|
|
||||||
ФОРМАТ BLK(GRF)-ФАЙЛА
|
|
||||||
=====================
|
|
||||||
|
|
||||||
Смещение Кол-во Значение
|
|
||||||
============ ======== ============
|
|
||||||
#0000 #30(16x3) Палитра. Представляет собой 16 троек
|
|
||||||
значений GRB-цветов (именно в таком
|
|
||||||
порядке), представленных в виде сим-
|
|
||||||
волов ASCII:
|
|
||||||
|
|
||||||
"0"(#30) - цвет (G,R или B) выключен
|
|
||||||
"1"(#31) - цвет низкой интенсивности
|
|
||||||
"2"(#32) - цвет в режиме BRIGHT 0
|
|
||||||
"3"(#33) - цвет в режиме BRIGHT 1
|
|
||||||
Любое другое значение приравнивается
|
|
||||||
утилитой GRFVIEW к "3".
|
|
||||||
|
|
||||||
#0030(*) #03 Метка "GRF" - означает, что за ней
|
|
||||||
следуют два значащих байта
|
|
||||||
|
|
||||||
#0033(*) #01 Рекомендуемые атрибуты (INK & PAPER)
|
|
||||||
заднего фона, на который налагается
|
|
||||||
изображение. Актуально для картинок,
|
|
||||||
по размеру меньших 640x200.
|
|
||||||
|
|
||||||
#0034(*) #01 Рекомендуемый цвет бордюра (#00-#0F)
|
|
||||||
Может быть актуально при использова-
|
|
||||||
нии нестандартной палитры.
|
|
||||||
|
|
||||||
#0035 #4B Не используется. Может быть забито
|
|
||||||
любым мусором.
|
|
||||||
|
|
||||||
#0080(**) #01 X-координата (0-79) левого верхнего
|
|
||||||
угла выводимой картинки, измеряемая
|
|
||||||
в столбцах (1 стлб= 8 пикс= 1 байт)
|
|
||||||
|
|
||||||
#0081(**) #01 Y-координата (0-199) левого верхнего
|
|
||||||
угла выводимой картинки, измеряемая
|
|
||||||
в строчках (1 стр = 1 пиксель)
|
|
||||||
|
|
||||||
#0082 #01 WIDTH - ширина картинки в столбцах
|
|
||||||
(от 1 до 80)
|
|
||||||
|
|
||||||
#0083 #01 HIGH - высота картинки в строчках
|
|
||||||
(от 1 до 200)
|
|
||||||
|
|
||||||
#0084 WIDTH*HIGH Растр монохромного изображения.
|
|
||||||
Представляет собой последователь-
|
|
||||||
ность слева направо столбцов от
|
|
||||||
1 до x (x = WIDTH), состоящих из
|
|
||||||
y байтов каждый (y = HIGH), считая
|
|
||||||
сверху вниз.
|
|
||||||
|
|
||||||
#84+WIDTH*HIGH #nnnn Растр атрибутов. Полная аналогия
|
|
||||||
растра монохромного изображения по
|
|
||||||
структуре, с той лишь разницей, что
|
|
||||||
он прилагается в упакованном по ме-
|
|
||||||
тоду RLE виде. То есть, представляет
|
|
||||||
из себя последовательность двухбайт-
|
|
||||||
ных слов, первый байт в каждом из
|
|
||||||
которых означает количество (1-255)
|
|
||||||
последовательно идущих одинаковых
|
|
||||||
байтов атрибутов, а второй байт -
|
|
||||||
собственно, само значение атрибута.
|
|
||||||
|
|
||||||
----------------------------------
|
|
||||||
Примечания:
|
|
||||||
|
|
||||||
*) НОВОВВЕДЕНИЕ специально для утилиты GRFVIEW. В оригинале -
|
|
||||||
неиспользуемый участок. Может быть забит любым мусором.
|
|
||||||
|
|
||||||
**) Необязательные параметры X и Y картинки, особенно для утили-
|
|
||||||
ты GRFVIEW, где изображение автоматически центрируется, в соот-
|
|
||||||
ветствии со своими габаритами.
|
|
||||||
|
|
||||||
****************************************************************
|
|
||||||
2006, февраль. Тимонин Максим/NedoPC group
|
|
||||||
****************************************************************
|
|
||||||
P.S. Стартовый адрес COM-файла в TASiS - 24000DEC
|
|
||||||
@ -1,11 +0,0 @@
|
|||||||
Sprinter ZX
|
|
||||||
c:\zx\roms\SP_128.BIN
|
|
||||||
c:\zx\roms\SP__48.BIN
|
|
||||||
c:\zx\roms\SP_TRD.BIN
|
|
||||||
c:\zx\roms\SP_EXP.BIN
|
|
||||||
c:\zx\roms\SP_EXP.BIN
|
|
||||||
c:\zx\roms\SP_EXP2.BIN
|
|
||||||
/turbo /7FFD /ret-fn
|
|
||||||
;
|
|
||||||
|
|
||||||
|
|
||||||
215
For_4x.asm
Normal file
215
For_4x.asm
Normal file
@ -0,0 +1,215 @@
|
|||||||
|
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-;
|
||||||
|
INCLUDE 'Shared_Includes/structures/FileSystem.inc'
|
||||||
|
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-;
|
||||||
|
|
||||||
|
; in: HL - CLUSTER
|
||||||
|
; out: HL:IX - SECTOR
|
||||||
|
; ‚ ç «¥ ¤®«¦ ¡ëâì ¢ë¯®«¥ ¨¨æ¨ «¨§ æ¨ï BPB 4x
|
||||||
|
CLUSTER_TO_SECTOR:
|
||||||
|
IN A,(SLOT3)
|
||||||
|
EX AF,AF'
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (SLOT3),A
|
||||||
|
LD A,(SYS_PAGE.MS_BPB+CLAST_SIZE)
|
||||||
|
EX DE,HL
|
||||||
|
LD HL,(SYS_PAGE.MSD_DAT_SEC)
|
||||||
|
LD (.MSD_DAT_SEC),HL
|
||||||
|
LD HL,(SYS_PAGE.MSD_DAT_SEC2)
|
||||||
|
LD (.MSD_DAT_SEC2),HL
|
||||||
|
EX DE,HL
|
||||||
|
EX AF,AF'
|
||||||
|
OUT (SLOT3),A
|
||||||
|
EX AF,AF'
|
||||||
|
;
|
||||||
|
LD DE,0 ;!FIXIT for FAT32
|
||||||
|
DEC HL
|
||||||
|
DEC HL
|
||||||
|
XOR 1
|
||||||
|
JR Z,.skip
|
||||||
|
;
|
||||||
|
RRA
|
||||||
|
.loop: ADD HL,HL
|
||||||
|
RL E
|
||||||
|
RL D
|
||||||
|
;
|
||||||
|
RRA
|
||||||
|
JP NC,.loop
|
||||||
|
;
|
||||||
|
.skip: EX DE,HL
|
||||||
|
LD XL,E
|
||||||
|
LD XH,D
|
||||||
|
.MSD_DAT_SEC+1: LD DE,0 ;first data sector ;!FIXIT ¥á«¨ ç «ìë© á¥ªâ®à > #FFFF
|
||||||
|
XOR A
|
||||||
|
ADD IX,DE
|
||||||
|
.MSD_DAT_SEC2+1:
|
||||||
|
LD DE,0
|
||||||
|
ADC HL,DE
|
||||||
|
;!TODO ¤® «¨ ¯à®¢¥àïâì ¯¥à¥¯®«¥¨¥ HL:IX?
|
||||||
|
RET
|
||||||
|
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-;
|
||||||
|
|
||||||
|
|
||||||
|
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-;
|
||||||
|
SET_IMAGE_DIR_SECTOR:
|
||||||
|
LD HL,ONE_FILE
|
||||||
|
LD DE,TMP_BUFF
|
||||||
|
LD A,FAT_ATTR.DIRECTORY
|
||||||
|
LD BC,Dss.F_First.FATname
|
||||||
|
RST ToDSS
|
||||||
|
RET C
|
||||||
|
;
|
||||||
|
LD HL,(TMP_BUFF + FAT_DIRECTORY_RECORD.FIRST_CLUSTER_L)
|
||||||
|
CALL CLUSTER_TO_SECTOR
|
||||||
|
LD (RESET_TO_ZX.DIR_SEC_L),IX
|
||||||
|
LD (RESET_TO_ZX.DIR_SEC_H),HL
|
||||||
|
RET
|
||||||
|
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-;
|
||||||
|
|
||||||
|
|
||||||
|
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-;
|
||||||
|
SET_CURRENT_HDD:
|
||||||
|
.NUMBER+1: LD A,#FF
|
||||||
|
CP #FF
|
||||||
|
LD C,BIOS.HDD_INIT
|
||||||
|
JP Z,ToBIOS
|
||||||
|
LD C,BIOS.HDD_PART ; IDE-1/IDE-2
|
||||||
|
JP ToBIOS
|
||||||
|
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-;
|
||||||
|
|
||||||
|
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-;
|
||||||
|
BPB_SetUp: LD A,SYS_PAGE
|
||||||
|
LD HL,SYS_PAGE.MS_BPB
|
||||||
|
LD C,BIOS.HDD_READ_BPB
|
||||||
|
RST ToBIOS
|
||||||
|
.PARAMS: IN A,(SLOT3)
|
||||||
|
EX AF,AF'
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (SLOT3),A
|
||||||
|
;
|
||||||
|
LD A,(SYS_PAGE.MS_BPB+FORM_CODE)
|
||||||
|
CP #F0
|
||||||
|
JP C,.ERROR_BPB
|
||||||
|
|
||||||
|
LD DE,SYS_PAGE.MS_BPB+FAT_ID
|
||||||
|
LD HL,.FAT1_MSG
|
||||||
|
LD B,4
|
||||||
|
.L1: LD A,(DE)
|
||||||
|
CP ' '
|
||||||
|
JR NZ,.L11
|
||||||
|
INC DE
|
||||||
|
JR .L1
|
||||||
|
.L11: CP (HL)
|
||||||
|
JR NZ,.PC_DOS
|
||||||
|
|
||||||
|
INC HL
|
||||||
|
INC DE
|
||||||
|
DJNZ .L1
|
||||||
|
LD A,(DE)
|
||||||
|
CP '6'
|
||||||
|
LD HL,#81FF ; FAT16 ä« £
|
||||||
|
JR Z,.FAT
|
||||||
|
CP '2'
|
||||||
|
JP NZ,.ERROR_BPB
|
||||||
|
|
||||||
|
.PC_DOS: LD HL,#01FF ; FAT12 ä« £
|
||||||
|
.FAT: LD (SYS_PAGE.FAT_FLAG),HL
|
||||||
|
|
||||||
|
LD A,(SYS_PAGE.MS_BPB+S_P_T) ; Š®«¨ç¥á⢮ ᥪâ®à®¢ â४
|
||||||
|
LD (SYS_PAGE.MSD_SECS),A
|
||||||
|
|
||||||
|
LD IX,(SYS_PAGE.MS_BPB+SPECIAL_SECS)
|
||||||
|
LD HL,(SYS_PAGE.MS_BPB+SPECIAL_SECS+2)
|
||||||
|
.NO_LD_SPECIAL: LD BC,0
|
||||||
|
LD DE,(SYS_PAGE.MS_BPB+RESERV_SECS)
|
||||||
|
|
||||||
|
ADD IX,DE
|
||||||
|
ADC HL,BC
|
||||||
|
|
||||||
|
LD (SYS_PAGE.MSD_FAT_SEC),IX ; ç «ìë© á¥ªâ®à FAT
|
||||||
|
LD (SYS_PAGE.MSD_FAT_SEC2),HL ; ç «ìë© á¥ªâ®à FAT
|
||||||
|
|
||||||
|
LD DE,(SYS_PAGE.MS_BPB+S_P_F) ; ç¨á«® ᥪâ®à®¢ ¢ FAT
|
||||||
|
LD A,(SYS_PAGE.MS_BPB+FATS_NUM) ; ª®«¨ç¥á⢮ FATs
|
||||||
|
.NEXT_ADD:
|
||||||
|
ADD IX,DE
|
||||||
|
ADC HL,BC
|
||||||
|
DEC A
|
||||||
|
JR NZ,.NEXT_ADD
|
||||||
|
LD (SYS_PAGE.MSD_CAT_SEC),IX ; ç «ìë© á¥ªâ®à DIR
|
||||||
|
LD (SYS_PAGE.MSD_CAT_SEC2),HL ; ç «ìë© á¥ªâ®à DIR
|
||||||
|
LD BC,(SYS_PAGE.MS_BPB+SEC_SIZE) ; <20> §¬¥à ᥪâ®à
|
||||||
|
LD A,B
|
||||||
|
RL C
|
||||||
|
RLA
|
||||||
|
RL C
|
||||||
|
RLA
|
||||||
|
RL C
|
||||||
|
RLA
|
||||||
|
LD C,A
|
||||||
|
LD B,0 ; BC - ç¨á«® ä ©«®¢ëå § ¯¨á¥© ¢ ᥪâ®à¥
|
||||||
|
LD (SYS_PAGE.FilesPerSector),A
|
||||||
|
LD DE,(SYS_PAGE.MS_BPB+FLS_NUM) ; —¨á«® ä ©«®¢ëå § ¯¨á¥©
|
||||||
|
|
||||||
|
EX DE,HL
|
||||||
|
DEC HL
|
||||||
|
XOR A
|
||||||
|
.NEXT_ADD2:
|
||||||
|
INC A
|
||||||
|
JR Z,.ERROR_BPB
|
||||||
|
SBC HL,BC
|
||||||
|
JR NC,.NEXT_ADD2
|
||||||
|
EX DE,HL
|
||||||
|
|
||||||
|
LD E,A ; A - ç¨á«® ᥪâ®à®¢ ¢ DIR
|
||||||
|
LD BC,0
|
||||||
|
LD D,B
|
||||||
|
LD (SYS_PAGE.SectorsPerCluster),A
|
||||||
|
|
||||||
|
ADD IX,DE ; <20> ç «® DATA area
|
||||||
|
ADC HL,BC
|
||||||
|
|
||||||
|
LD (SYS_PAGE.MSD_DAT_SEC),IX
|
||||||
|
LD (SYS_PAGE.MSD_DAT_SEC2),HL
|
||||||
|
|
||||||
|
LD BC,(SYS_PAGE.MS_BPB+SEC_SIZE) ; <20> §¬¥à ᥪâ®à
|
||||||
|
; D = 0
|
||||||
|
LD H,D
|
||||||
|
LD L,D
|
||||||
|
LD E,D
|
||||||
|
LD A,(SYS_PAGE.MS_BPB+CLAST_SIZE)
|
||||||
|
LD D,A
|
||||||
|
XOR A
|
||||||
|
.NEXT_ADD3:
|
||||||
|
ADD HL,BC ; ‚ëç¨á«¥¨¥ ¤«¨ë ª« áâ¥à
|
||||||
|
ADC A,E
|
||||||
|
DEC D
|
||||||
|
JR NZ,.NEXT_ADD3
|
||||||
|
|
||||||
|
LD (SYS_PAGE.CLUSTER_LEN),HL
|
||||||
|
LD B,E
|
||||||
|
LD C,A
|
||||||
|
LD (SYS_PAGE.CLUSTER_LEN2),BC
|
||||||
|
;
|
||||||
|
; DE=0
|
||||||
|
EX DE,HL ;LD HL,0
|
||||||
|
LD BC,(SYS_PAGE.MS_BPB+S_P_T)
|
||||||
|
LD A,(SYS_PAGE.MS_BPB+H_P_S)
|
||||||
|
.BPB_L1: ; ‚›—ˆ‘‹ˆ’œ ŠŽ‹ˆ—…‘’‚Ž ‘…Š’Ž<E28099>Ž‚ <20>€ –ˆ‹ˆ<E280B9>„<EFBFBD>
|
||||||
|
ADD HL,BC
|
||||||
|
DEC A
|
||||||
|
JR NZ,.BPB_L1
|
||||||
|
LD (SYS_PAGE.S_X_H),HL
|
||||||
|
;
|
||||||
|
EX AF,AF'
|
||||||
|
OUT (SLOT3),A
|
||||||
|
AND A
|
||||||
|
RET
|
||||||
|
;
|
||||||
|
.ERROR_BPB:
|
||||||
|
EX AF,AF'
|
||||||
|
OUT (SLOT3),A
|
||||||
|
SCF
|
||||||
|
RET
|
||||||
|
;
|
||||||
|
.FAT1_MSG: DB "FAT1"
|
||||||
|
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-;
|
||||||
@ -1 +1 @@
|
|||||||
Subproject commit 80b60f7294ce3eee958a0c4e9a6f29577cee496f
|
Subproject commit a0e68ce3a19bd47537585e49bfbf5e45fab197a1
|
||||||
177
ZXMODE/ZXMODE.FRT
Normal file
177
ZXMODE/ZXMODE.FRT
Normal file
@ -0,0 +1,177 @@
|
|||||||
|
\ \\\\ menu program for spectrum.exe \\\\ \
|
||||||
|
|
||||||
|
VARIABLE MAIN-X
|
||||||
|
VARIABLE CURS-M
|
||||||
|
VARIABLE MENU
|
||||||
|
VARIABLE ITEMS
|
||||||
|
VARIABLE EXE-POINT
|
||||||
|
VARIABLE PLACE-M
|
||||||
|
|
||||||
|
: M-CB 10 COLOR ! ;
|
||||||
|
: M-C0 07 COLOR ! ;
|
||||||
|
: M-C1 70 COLOR ! ;
|
||||||
|
: M-C2 30 COLOR ! ;
|
||||||
|
: M-C3 3F COLOR ! ;
|
||||||
|
: M-C4 01 COLOR ! ;
|
||||||
|
|
||||||
|
: CLSM M-CB 100 SET_POS 17 0 DO CLL CR LOOP ;
|
||||||
|
|
||||||
|
: MENU" CREATE , , ," ;
|
||||||
|
: ITEM" , ," BL WORD FIND IF NAME> , ELSE ABORT" no word!" THEN ;
|
||||||
|
: END-MENU 0 , ;
|
||||||
|
|
||||||
|
\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \
|
||||||
|
|
||||||
|
19 CONSTANT LEN-F
|
||||||
|
|
||||||
|
: EDIT-FNAME EXE-POINT @ PLACE-M @ OVER C@ LEN-F - + SET_POS C@+ + LEN-F - LEN-F 1- (EXPECT) ;
|
||||||
|
: EDIT-CNAME EXE-POINT @ PLACE-M @ OVER C@ 0D - + SET_POS C@+ + 0D - 0C (EXPECT) ;
|
||||||
|
: NO-ESC ;
|
||||||
|
: H-LINE M-C3 1800 SET_POS CLL 1801 SET_POS ;
|
||||||
|
|
||||||
|
: NEW-MENU M-C1 PLACE-M @ SET_POS EXE-POINT @ C@+ TYPE MENU ! CLSM ;
|
||||||
|
|
||||||
|
: M-EXIT M-C0 CLS BYE ;
|
||||||
|
|
||||||
|
: RET-MAIN MAIN-X @ MENU @ = IF M-EXIT THEN
|
||||||
|
H-LINE ." Ret to Main " MAIN-X @ NEW-MENU ;
|
||||||
|
|
||||||
|
: NO-FN H-LINE ." no function " ;
|
||||||
|
|
||||||
|
1 0E1B MENU" TRDS TRD files "
|
||||||
|
1 ITEM" Disk A: testfile.trd " EDIT-FNAME
|
||||||
|
1 ITEM" Disk B: " EDIT-FNAME
|
||||||
|
1 ITEM" Disk C: " EDIT-FNAME
|
||||||
|
1 ITEM" Disk D: " EDIT-FNAME
|
||||||
|
1 ITEM" Main Menu <esc> " RET-MAIN
|
||||||
|
END-MENU
|
||||||
|
|
||||||
|
1 21B MENU" ROMS ROM Menu "
|
||||||
|
1 ITEM" BASIC48 basic48.bin " EDIT-FNAME
|
||||||
|
1 ITEM" BASIC128 basic128.bin " EDIT-FNAME
|
||||||
|
1 ITEM" TR-DOS trdos5s.bin " EDIT-FNAME
|
||||||
|
1 ITEM" EXPANSION exp.bin " EDIT-FNAME
|
||||||
|
1 ITEM" BIOS1 exp.bin " EDIT-FNAME
|
||||||
|
1 ITEM" BIOS2 exp2.bin " EDIT-FNAME
|
||||||
|
1 ITEM" Main Menu <esc> " RET-MAIN
|
||||||
|
END-MENU
|
||||||
|
|
||||||
|
1 414 MENU" CONFIG Options Menu "
|
||||||
|
1 ITEM" Turbo Yes " NO-FN
|
||||||
|
1 ITEM" Sprinter ports Yes " NO-FN
|
||||||
|
1 ITEM" Port 1FFD Yes " NO-FN
|
||||||
|
1 ITEM" Port 7FFD Yes " NO-FN
|
||||||
|
1 ITEM" 512Kb Memory No " NO-FN
|
||||||
|
1 ITEM" Original Int No " NO-FN
|
||||||
|
1 ITEM" Scorpion Int No " NO-FN
|
||||||
|
1 ITEM" 312 screen lines No " NO-FN
|
||||||
|
1 ITEM" Start TR-DOS No " NO-FN
|
||||||
|
1 ITEM" Install only No " NO-FN
|
||||||
|
1 ITEM" Reset to ZX Yes " NO-FN
|
||||||
|
1 ITEM" Main Menu <esc> " RET-MAIN
|
||||||
|
END-MENU
|
||||||
|
|
||||||
|
1 D03 MENU" STAN Standards "
|
||||||
|
1 ITEM" Sprinter ZX " NO-FN
|
||||||
|
1 ITEM" ZX Spectrum " NO-FN
|
||||||
|
1 ITEM" Pentagon 128 " NO-FN
|
||||||
|
1 ITEM" Scorpion 256 " NO-FN
|
||||||
|
1 ITEM" Pentagon 512 " NO-FN
|
||||||
|
1 ITEM" Main Menu <esc> " RET-MAIN
|
||||||
|
END-MENU
|
||||||
|
|
||||||
|
1 512 MENU" SPEC Specials "
|
||||||
|
1 ITEM" Save your MODE " NO-FN
|
||||||
|
1 ITEM" Save utility " NO-FN
|
||||||
|
1 ITEM" Main Menu <esc> " RET-MAIN
|
||||||
|
END-MENU
|
||||||
|
|
||||||
|
: START-ZX H-LINE ." Start SPECTRUM.EXE" ;
|
||||||
|
: STANDARD H-LINE ." Choose standard mode" STAN NEW-MENU ;
|
||||||
|
: CONFIG-ZX H-LINE ." Set Spectrum MODE options" CONFIG NEW-MENU ;
|
||||||
|
: ROM-SET H-LINE ." Set Spectrum ROM files" ROMS NEW-MENU ;
|
||||||
|
: TRD-FILES H-LINE ." Set TR-DOS disk images" TRDS NEW-MENU ;
|
||||||
|
: SPECIALS H-LINE ." Special functions" SPEC NEW-MENU ;
|
||||||
|
|
||||||
|
1 203 MENU" MAIN Main Menu " ( pos,curs,"name" )
|
||||||
|
1 ITEM" Mode: Sprinter ZX " EDIT-CNAME
|
||||||
|
1 ITEM" Start " START-ZX ( type "name" word )
|
||||||
|
1 ITEM" Standard modes " STANDARD
|
||||||
|
1 ITEM" Options " CONFIG-ZX
|
||||||
|
1 ITEM" ROM files " ROM-SET
|
||||||
|
1 ITEM" Disk image files " TRD-FILES
|
||||||
|
1 ITEM" Specials " SPECIALS
|
||||||
|
1 ITEM" Exit <esc> " M-EXIT
|
||||||
|
END-MENU
|
||||||
|
|
||||||
|
MAIN MAIN-X !
|
||||||
|
|
||||||
|
: CURS-TYPE CURS-M @ 0=
|
||||||
|
IF GET_POS PLACE-M ! DUP EXE-POINT ! C@+ M-C2 TYPE M-C1 ELSE C@+ TYPE THEN
|
||||||
|
-1 CURS-M +! 1 ITEMS +! ;
|
||||||
|
|
||||||
|
: HEAD ( len -> ) GET_POS SWAP M-C1 C" É EMIT 0 DO C" Í EMIT LOOP C" » EMIT 100 + SET_POS ;
|
||||||
|
: TEXT ( len -> ) GET_POS OVER M-C1 C" º EMIT CURS-TYPE C" º EMIT M-C4 ." ±±" 100 + SET_POS ;
|
||||||
|
: LINE ( len -> ) GET_POS SWAP M-C1 C" Ç EMIT 0 DO C" Ä EMIT LOOP C" ¶ EMIT M-C4 ." ±±" 100 + SET_POS ;
|
||||||
|
: ENDS ( l->) GET_POS OVER M-C1 C" È EMIT 0 DO C" Í EMIT LOOP C" ¼ EMIT M-C4 ." ±±"
|
||||||
|
102 + SET_POS 2 + C" ± SWAP 0 DO DUP EMIT LOOP DROP ;
|
||||||
|
|
||||||
|
MAIN MENU !
|
||||||
|
|
||||||
|
: PRINT-MENU COLOR @ M-C1 ITEMS 0! EXE-POINT 0!
|
||||||
|
MENU @
|
||||||
|
DUP @ SET_POS 2 +
|
||||||
|
DUP @ CURS-M ! 2 +
|
||||||
|
DUP C@ HEAD TEXT DUP C@ LINE DUP C@ SWAP C@+ +
|
||||||
|
BEGIN DUP @ 0<> WHILE
|
||||||
|
2 + TEXT C@+ + 2 + REPEAT
|
||||||
|
DROP ENDS COLOR ! ;
|
||||||
|
|
||||||
|
|
||||||
|
: CURS-UP MENU @ 2 + DUP @ 1- 1 MAX SWAP ! ;
|
||||||
|
: CURS-DN MENU @ 2 + DUP @ 1+ ITEMS @ 1- MIN SWAP ! ;
|
||||||
|
: CURS-HOME 1 MENU @ 2 + ! ;
|
||||||
|
: CURS-END ITEMS @ 1- MENU @ 2 + ! ;
|
||||||
|
|
||||||
|
: EXE-MENU M-C0 EXE-POINT @ ?DUP IF C@+ + @ EXECUTE THEN ;
|
||||||
|
|
||||||
|
: KEY-MENU WAIT-KEY
|
||||||
|
|
||||||
|
DUP [ SYS-ID 011B AND SYS-ID NOT 011B AND OR ] LITERAL = IF DROP RET-MAIN EXIT THEN ( ESC )
|
||||||
|
DUP [ SYS-ID 4400 AND SYS-ID NOT 4400 AND OR ] LITERAL = IF DROP RET-MAIN EXIT THEN ( F10 )
|
||||||
|
DUP [ SYS-ID 5200 AND SYS-ID NOT 5000 AND OR ] LITERAL = IF DROP CURS-DN EXIT THEN ( Down )
|
||||||
|
DUP [ SYS-ID 5800 AND SYS-ID NOT 4800 AND OR ] LITERAL = IF DROP CURS-UP EXIT THEN ( Up )
|
||||||
|
DUP [ SYS-ID 280D AND SYS-ID NOT 1C0D AND OR ] LITERAL = IF DROP EXE-MENU EXIT THEN ( Up )
|
||||||
|
\ DUP [ SYS-ID D400 AND SYS-ID NOT 7300 AND OR ] LITERAL = IF DROP W-LEFT EXIT THEN ( <ctrl )
|
||||||
|
\ DUP [ SYS-ID D600 AND SYS-ID NOT 7400 AND OR ] LITERAL = IF DROP W-RIGHT EXIT THEN ( ctrl> )
|
||||||
|
\ DUP [ SYS-ID 5400 AND SYS-ID NOT 4B00 AND OR ] LITERAL = IF DROP -POS EXIT THEN ( <- )
|
||||||
|
\ DUP [ SYS-ID 5600 AND SYS-ID NOT 4D00 AND OR ] LITERAL = IF DROP +POS EXIT THEN ( -> )
|
||||||
|
\ DUP [ SYS-ID 0F09 AND SYS-ID NOT 0F09 AND OR ] LITERAL = IF DROP TAB+ EXIT THEN ( tab )
|
||||||
|
\ DUP [ SYS-ID 8F09 AND SYS-ID NOT 0F00 AND OR ] LITERAL = IF DROP TAB- EXIT THEN ( <tab )
|
||||||
|
\ DUP [ SYS-ID 0E08 AND SYS-ID NOT 0E08 AND OR ] LITERAL = IF DROP DELX EXIT THEN ( <del )
|
||||||
|
\ DUP [ SYS-ID 8E00 AND SYS-ID NOT 0E7F AND OR ] LITERAL = IF DROP DELW EXIT THEN ( ctrl<del )
|
||||||
|
DUP [ SYS-ID 5700 AND SYS-ID NOT 4700 AND OR ] LITERAL = IF DROP CURS-HOME EXIT THEN ( home )
|
||||||
|
DUP [ SYS-ID D700 AND SYS-ID NOT 7700 AND OR ] LITERAL = IF DROP CURS-HOME EXIT THEN ( ctrl.home )
|
||||||
|
DUP [ SYS-ID 5100 AND SYS-ID NOT 4F00 AND OR ] LITERAL = IF DROP CURS-END EXIT THEN ( end )
|
||||||
|
DUP [ SYS-ID D100 AND SYS-ID NOT 7500 AND OR ] LITERAL = IF DROP CURS-END EXIT THEN ( ctrl.end )
|
||||||
|
|
||||||
|
DROP ;
|
||||||
|
|
||||||
|
: LOOP-M M-CB CLS S0 @ SP! R0 @ RP!
|
||||||
|
MAIN MENU ! CURS-HOME
|
||||||
|
H-LINE 0 SET_POS M-C3 CLL ." Spectrum.exe config utility version 0.02"
|
||||||
|
BEGIN
|
||||||
|
PRINT-MENU KEY-MENU AGAIN ;
|
||||||
|
|
||||||
|
BL WORD NO-ESC FIND DROP NAME> ESC-W !
|
||||||
|
|
||||||
|
TRUE H-FLAG !
|
||||||
|
07 COLOR !
|
||||||
|
|
||||||
|
MAKE LOOP-M
|
||||||
|
\ PC> INC-END SAVE-SYSTEM _test.com
|
||||||
|
\ SP> INC-END SAVE-SYSTEM zxmode.exe
|
||||||
|
|
||||||
|
CLS LOOP-M
|
||||||
|
BYE
|
||||||
|
|
||||||
19
ZXMODE/_HELP.FRT
Executable file
19
ZXMODE/_HELP.FRT
Executable file
@ -0,0 +1,19 @@
|
|||||||
|
\ !! DO NOT EDIT THIS FILE !!
|
||||||
|
M-C0 100 SET_POS
|
||||||
|
CLL CR
|
||||||
|
CLL .( This is a help page ¿)
|
||||||
|
CLL .( ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ)
|
||||||
|
CLL CR
|
||||||
|
CLL .( Main keys: F1 - help F10 - Terminate program)
|
||||||
|
CLL .( Down - cursor DOWN Up - cursor UP)
|
||||||
|
CLL .( Home - cursor to 1-st line End - cursor to last)
|
||||||
|
CLL .( Enter - Execute ESC - Exit from menu)
|
||||||
|
CLL CR
|
||||||
|
CLL .( Special keys: Ctrl+left - Shift menu Left)
|
||||||
|
CLL .( Ctrl+right - Shift menu Right)
|
||||||
|
CLL .( Ctrl+PageUp - Shift menu Up)
|
||||||
|
CLL .( Ctrl+PageDown - Shift menu Down)
|
||||||
|
CLL CR
|
||||||
|
CLL .( --*** press any key ***--) CLL CR
|
||||||
|
M-CB WAIT-KEY MENU @ NEW-MENU
|
||||||
|
|
||||||
@ -1,71 +0,0 @@
|
|||||||
; Œ ªà®áë ªá¥«¥à â®à ¤«ï ªà á®âë))
|
|
||||||
|
|
||||||
;--------[¢ëª«îç¨âì ªá¥«¥à â®à]--------
|
|
||||||
MACRO ACC_Off
|
|
||||||
ld b,b
|
|
||||||
ENDM
|
|
||||||
;---------------------------------------
|
|
||||||
|
|
||||||
;---------[०¨¬ ¯à¨¥¬ ¡ ©â ]----------
|
|
||||||
MACRO ACC_SetBlockSize
|
|
||||||
ld d,d
|
|
||||||
; ¢ª«îç ¥â ªá¥«¥à â®à ¢ ०¨¬ ¯à¨¥¬
|
|
||||||
; ¡ ©â à §¬¥à ¡«®ª ¤ «¥¥ á«¥¤ã¥â
|
|
||||||
; ª®¬ ¤ ⨯ LD A,dat, £¤¥ dat ¨ ¡ã¤¥â
|
|
||||||
; ®¢ë¬ à §¬¥à®¬ ¡«®ª . …᫨ à §¬¥à
|
|
||||||
; ¡«®ª ¡ë« ãáâ ®¢«¥ à ¥¥, ¥£® ¬®¦®
|
|
||||||
; ¥ ãáâ ¢«¨¢ âì.
|
|
||||||
ENDM
|
|
||||||
;---------------------------------------
|
|
||||||
|
|
||||||
;-------[§ ¯®«¥¨¥ ®¤¨¬ ¡ ©â®¬]-------
|
|
||||||
MACRO ACC_FillOneByte
|
|
||||||
ld c,c
|
|
||||||
; ޝ¥à æ¨ï Fill. <20>®á«¥¤ãîé ï ª®¬ ¤
|
|
||||||
; ⨯ LD (HL),A ¯à¨¢¥¤¥â ª § ¯®«¥¨î
|
|
||||||
; 㪠§ ®£® à ¥¥ ª®«¨ç¥á⢠¡ ©â
|
|
||||||
; § 票¥¬ A
|
|
||||||
ENDM
|
|
||||||
;---------------------------------------
|
|
||||||
|
|
||||||
;----[§ ¯®«¥¨¥ ¢¥à⨪ «ìëå «¨¨©]----
|
|
||||||
;ޝ¥à æ¨ï Fill ¤«ï £à ä¨ç¥áª®£® íªà .
|
|
||||||
MACRO ACC_FillScreenOneByte
|
|
||||||
ld e,e
|
|
||||||
; <20>®á«¥¤ãîé ï ª®¬ ¤ ⨯ LD (HL),A
|
|
||||||
; ¯à¨¢¥¤¥â ª § ¯®«¥¨î § 票¥¬ A
|
|
||||||
; ¢¥à⨪ «ìëå «¨¨© íªà 㪠§ ë¬
|
|
||||||
; à ¥¥ ª®«¨ç¥á⢮¬ ¡ ©â
|
|
||||||
ENDM
|
|
||||||
;---------------------------------------
|
|
||||||
|
|
||||||
;----------[ª®¯¨à®¢ ¨¥ ¡«®ª ]----------
|
|
||||||
MACRO ACC_CopyBlock
|
|
||||||
ld l,l
|
|
||||||
; <20>®á«¥¤ãîé ï ª®¬ ¤ ⨯ LD A,(HL)
|
|
||||||
; ¯à¨¢¥¤¥â ª § ¯®«¥¨î އ“ ªá¥«¥à â®à
|
|
||||||
; ¤ 묨 ¨§ ¤à¥á (HL), ª®¬ ¤ ⨯
|
|
||||||
; LD (DE),A ¯à¨¢¥¤¥â ª ¯¥à¥§ ¯¨á¨ ¤ ëå
|
|
||||||
; ¨§ އ“ ªá¥«¥à â®à ¢ ®á®¢®¥ ¨«¨
|
|
||||||
; ¢¨¤¥®-އ“.
|
|
||||||
ENDM
|
|
||||||
;---------------------------------------
|
|
||||||
|
|
||||||
;---[ª®¯¨à®¢ ¨¥ £à ä¨ç¥áª®£® ¡«®ª ]----
|
|
||||||
MACRO ACC_CopyScreenBlock
|
|
||||||
ld a,a
|
|
||||||
; ª®¯¨à®¢ ¨¥ ¡«®ª ¤«ï £à ä. íªà .
|
|
||||||
; <20>®á«¥¤ãîé ï ª®¬ ¤ ⨯ LD A,(HL)
|
|
||||||
; ¯à¨¢¥¤¥â ª § ¯®«¥¨î އ“ ªá¥«¥à â®à
|
|
||||||
; ¤ 묨 ¨§ ¤à¥á (HL), ª®¬ ¤ ⨯
|
|
||||||
; LD (DE),A ¯à¨¢¥¤¥â ª ¯¥à¥§ ¯¨á¨ ¤ ëå
|
|
||||||
; ¨§ އ“ ªá¥«¥à â®à ¢ ¢¨¤¥®-އ“
|
|
||||||
; ¢¥à⨪ «ì묨 «¨¨ï¬¨.
|
|
||||||
ENDM
|
|
||||||
;---------------------------------------
|
|
||||||
|
|
||||||
;--------------[Reserved]---------------
|
|
||||||
MACRO ACC_Reserved
|
|
||||||
LD H,H
|
|
||||||
ENDM
|
|
||||||
;---------------------------------------
|
|
||||||
@ -1,73 +0,0 @@
|
|||||||
;
|
|
||||||
MACRO FRAM_ON
|
|
||||||
IN A,(FastRAM_ON)
|
|
||||||
IF Emulator
|
|
||||||
PUSH BC
|
|
||||||
PUSH AF
|
|
||||||
LD BC,#1FFD
|
|
||||||
XOR A
|
|
||||||
OUT (C),A
|
|
||||||
OUT (FastRam_BANK0),A
|
|
||||||
POP AF
|
|
||||||
POP BC
|
|
||||||
ENDIF
|
|
||||||
ENDM
|
|
||||||
|
|
||||||
MACRO FRAM_OFF
|
|
||||||
IN A,(FastRAM_OFF)
|
|
||||||
IF Emulator
|
|
||||||
PUSH BC
|
|
||||||
PUSH AF
|
|
||||||
LD BC,#1FFD
|
|
||||||
LD A,1
|
|
||||||
OUT (C),A
|
|
||||||
XOR A
|
|
||||||
OUT (FastRam_BANK0),A
|
|
||||||
POP AF
|
|
||||||
POP BC
|
|
||||||
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
|
|
||||||
;
|
|
||||||
;
|
|
||||||
10
param.txt
Normal file
10
param.txt
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
‘âப 1: Scorpion 256
|
||||||
|
‘âப 2: c:\zx\roms\SC_128.BIN
|
||||||
|
‘âப 3: c:\zx\roms\SC__48.BIN
|
||||||
|
‘âப 4: c:\zx\roms\SC_TRD.BIN
|
||||||
|
‘âப 5: c:\zx\roms\SC_EXP.BIN
|
||||||
|
‘âப 6: c:\zx\roms\SC_EXP.BIN
|
||||||
|
‘âப 7: c:\zx\roms\SP_EXP2.BIN
|
||||||
|
‘âப 8: /turbo /sprinter /7FFD /1FFD /ret-zx /load-pal
|
||||||
|
‘âப 9: c:\zx\palette\komod.pal
|
||||||
|
‘âப 10: ;
|
||||||
2290
spectrum.asm
2290
spectrum.asm
File diff suppressed because it is too large
Load Diff
381
trdscl.a80
381
trdscl.a80
@ -33,24 +33,22 @@ DelFilesNum BYTE 0
|
|||||||
DiskName TEXT 8,{" "} ; beta version
|
DiskName TEXT 8,{" "} ; beta version
|
||||||
ENDS
|
ENDS
|
||||||
|
|
||||||
/*
|
; SYS_SECTOR:
|
||||||
SYS_SECTOR:
|
; DB 0
|
||||||
DB 0
|
; BLOCK 224,0
|
||||||
BLOCK 224,0
|
; .FirstFreeSec: DB 0
|
||||||
.FirstFreeSec: DB 0
|
; .FirstFreeTrk: DB 1
|
||||||
.FirstFreeTrk: DB 1
|
; .DiskType DB #16 ; #16 = 80-2, #17 = 40-2, #18 = 80-1, #19 = 40-1
|
||||||
.DiskType DB #16 ; #16 = 80-2, #17 = 40-2, #18 = 80-1, #19 = 40-1
|
; .AllFilesNum: DB 0
|
||||||
.AllFilesNum: DB 0
|
; .FreeSectors: DW 2544
|
||||||
.FreeSectors: DW 2544
|
; DB #10
|
||||||
DB #10
|
; DW 0000
|
||||||
DW 0000
|
; BLOCK 9,32
|
||||||
BLOCK 9,32
|
; DB 0
|
||||||
DB 0
|
; .DelFilesNum: DB 0
|
||||||
.DelFilesNum: DB 0
|
; .DiskName: BLOCK 8,32
|
||||||
.DiskName: BLOCK 8,32
|
; BLOCK 3,0
|
||||||
BLOCK 3,0
|
|
||||||
;
|
;
|
||||||
*/
|
|
||||||
|
|
||||||
; ÉÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
|
; ÉÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
|
||||||
; ºC¬¥é¥¨¥ ³„«¨ ³ H § 票¥ º
|
; ºC¬¥é¥¨¥ ³„«¨ ³ H § 票¥ º
|
||||||
@ -64,19 +62,18 @@ SYS_SECTOR:
|
|||||||
; º #0E ³ 1 ³ H®¬¥p 1£® c¥ªâ®p º
|
; º #0E ³ 1 ³ H®¬¥p 1£® c¥ªâ®p º
|
||||||
; º #0F ³ 1 ³ H®¬¥p ¤®p®¦ª¨ º
|
; º #0F ³ 1 ³ H®¬¥p ¤®p®¦ª¨ º
|
||||||
; ÈÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
|
; ÈÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
|
||||||
/*
|
|
||||||
CAT_ELEMENT:
|
; CAT_ELEMENT:
|
||||||
.Name BLOCK 8,32
|
; .Name BLOCK 8,32
|
||||||
.Type DB 0
|
; .Type DB 0
|
||||||
.Start DW 0000
|
; .Start DW 0000
|
||||||
.Length DW 0000
|
; .Length DW 0000
|
||||||
.Sectors DB 0
|
; .Sectors DB 0
|
||||||
.FirstSector DB 0
|
; .FirstSector DB 0
|
||||||
.FirstTrack DB 0
|
; .FirstTrack DB 0
|
||||||
*/
|
|
||||||
|
|
||||||
STRUCT CAT_Elements
|
STRUCT CAT_Elements
|
||||||
Name block 8
|
Name BLOCK 8
|
||||||
Type BYTE
|
Type BYTE
|
||||||
Start WORD
|
Start WORD
|
||||||
Length WORD
|
Length WORD
|
||||||
@ -95,215 +92,210 @@ FileBlock CAT_Elements
|
|||||||
; Page = 64 sectors = 4 tracks
|
; Page = 64 sectors = 4 tracks
|
||||||
|
|
||||||
;-----------[]
|
;-----------[]
|
||||||
Load_SCL:
|
|
||||||
;-------[Œ¥âª ¤¨áª - ¨¬ï ä ©« ]-------
|
|
||||||
ld hl,ONE_FILE
|
|
||||||
ld de,SCL_Buffer
|
|
||||||
ld bc,#0300+Dss.EX_Path
|
|
||||||
rst ToDSS
|
|
||||||
jr c,.skip
|
|
||||||
|
|
||||||
ld hl,SCL_Buffer
|
;-------[Œ¥âª ¤¨áª - ¨¬ï ä ©« ]-------
|
||||||
ld a,'.'
|
Load_SCL: LD HL,ONE_FILE
|
||||||
ld bc,0008
|
LD DE,SCL_Buffer
|
||||||
ld de,SYS_SECTOR.DiskName
|
LD BC,#0300+Dss.EX_Path
|
||||||
|
RST ToDSS
|
||||||
|
JR C,.skip
|
||||||
|
|
||||||
|
LD HL,SCL_Buffer
|
||||||
|
LD A,'.'
|
||||||
|
LD BC,0008
|
||||||
|
LD DE,SYS_SECTOR.DiskName
|
||||||
.loop:
|
.loop:
|
||||||
cp (hl)
|
CP (HL)
|
||||||
jr z,.skip
|
JR Z,.skip
|
||||||
ldi
|
LDI
|
||||||
jp pe,.loop
|
JP PE,.loop
|
||||||
|
|
||||||
.skip:
|
.skip:
|
||||||
;-------[¯à®¢¥àª 奤íà SINCLAIR]------
|
;-------[¯à®¢¥àª 奤íà SINCLAIR]------
|
||||||
|
|
||||||
ld a,(IMAGE_HANDLER)
|
LD A,(IMAGE_HANDLER)
|
||||||
ld hl,SCL_Buffer
|
LD HL,SCL_Buffer
|
||||||
ld de,8
|
LD DE,8 ; ¡ ©â®¢
|
||||||
ld c,Dss.Read
|
LD C,Dss.Read
|
||||||
rst ToDSS
|
RST ToDSS
|
||||||
ret c ; ®¡à ¡®â稪 ®è¨¡ª¨
|
RET C ; ®¡à ¡®â稪 ®è¨¡ª¨
|
||||||
|
|
||||||
ld hl,SCL_Buffer
|
LD HL,SCL_Buffer
|
||||||
ld de,SCL_HEADER
|
LD DE,SCL_HEADER
|
||||||
ld b,8
|
LD B,8
|
||||||
.check_header:
|
.check_header: LD A,(DE)
|
||||||
ld a,(de)
|
CP (HL)
|
||||||
cp (hl)
|
JR NZ,.error_header
|
||||||
jr nz,.error_header
|
INC HL
|
||||||
inc hl
|
INC DE
|
||||||
inc de
|
DJNZ .check_header
|
||||||
djnz .check_header
|
JR .get_size
|
||||||
jr .get_size
|
.error_header: SCF
|
||||||
.error_header:
|
RET
|
||||||
scf
|
|
||||||
ret
|
|
||||||
|
|
||||||
;------[¢ëç¨á«¥¨¥ à §¬¥à ¤«ï TRD]-----
|
;------[¢ëç¨á«¥¨¥ à §¬¥à ¤«ï TRD]-----
|
||||||
.get_size:
|
.get_size:
|
||||||
/* ld a,(IMAGE_HANDLER)
|
; LD A,(IMAGE_HANDLER)
|
||||||
ld hl,0
|
; LD HL,0
|
||||||
ld ix,SclOffsets.Files
|
; LD IX,SclOffsets.Files
|
||||||
ld b,l
|
; LD B,L
|
||||||
ld c,Dss.Move_FP
|
; LD C,Dss.Move_FP
|
||||||
rst ToDSS ; 㪠§ â¥«ì ¡ ©â ª®«¨ç¥á⢠¡«®ª®¢ (ä ©«®¢)
|
; RST ToDSS ; 㪠§ â¥«ì ¡ ©â ª®«¨ç¥á⢠¡«®ª®¢ (ä ©«®¢)
|
||||||
ret c ; ®¡à ¡®â稪 ®è¨¡ª¨!!!!!
|
; RET C ; ®¡à ¡®â稪 ®è¨¡ª¨!!!!!
|
||||||
;*/
|
|
||||||
ld a,(IMAGE_HANDLER)
|
LD A,(IMAGE_HANDLER)
|
||||||
ld hl,SCL_Buffer
|
LD HL,SCL_Buffer
|
||||||
ld de,#701
|
LD DE,#701
|
||||||
ld c,Dss.Read
|
LD C,Dss.Read
|
||||||
rst ToDSS ; !FIXIT ᤥ« âì ª®âà®«ì ®è¨¡ª¨? ; ç¨â ¥¬ ¡ ©â ª®«¨ç¥á⢠¡«®ª®¢ (ä ©«®¢)
|
RST ToDSS ; !FIXIT ᤥ« âì ª®âà®«ì ®è¨¡ª¨? ; ç¨â ¥¬ ¡ ©â ª®«¨ç¥á⢠¡«®ª®¢ (ä ©«®¢)
|
||||||
;
|
;
|
||||||
ld a,(SCL_Buffer)
|
LD A,(SCL_Buffer)
|
||||||
ld l,a
|
LD L,A
|
||||||
xor a
|
XOR A
|
||||||
ld h,a
|
LD H,A
|
||||||
;
|
;
|
||||||
add hl,hl ;*2
|
ADD HL,HL ;*2
|
||||||
push hl
|
PUSH HL
|
||||||
add hl,hl ;*4
|
ADD HL,HL ;*4
|
||||||
ld d,h
|
LD D,H
|
||||||
ld e,l
|
LD E,L
|
||||||
add hl,hl ;*8
|
ADD HL,HL ;*8
|
||||||
add hl,de ;*12
|
ADD HL,DE ;*12
|
||||||
pop de
|
POP DE
|
||||||
add hl,de ; ¢ HL § 票¥ A*14
|
ADD HL,DE ; ¢ HL § 票¥ A*14
|
||||||
|
|
||||||
add hl,bc
|
ADD HL,BC
|
||||||
|
|
||||||
ld de,SclOffsets.FileBlock
|
LD DE,SclOffsets.FileBlock
|
||||||
add hl,de ; ¢ HL à §¬¥à ®â ç « SCL ¤® ç « ¡«®ª ¤ ëå (header_length)
|
ADD HL,DE ; ¢ HL à §¬¥à ®â ç « SCL ¤® ç « ¡«®ª ¤ ëå (header_length)
|
||||||
push hl
|
PUSH HL
|
||||||
;
|
;
|
||||||
ld a,(IMAGE_HANDLER)
|
LD A,(IMAGE_HANDLER)
|
||||||
ld hl,0
|
LD HL,0
|
||||||
ld ix,4 ; ¨£®à¨¬ ª®â஫ìãî á㬬ã scl ä ©«
|
LD IX,4 ; ¨£®à¨¬ ª®â஫ìãî á㬬ã scl ä ©«
|
||||||
ld b,2
|
LD B,2
|
||||||
ld c,Dss.Move_FP
|
LD C,Dss.Move_FP
|
||||||
rst ToDSS ; 㪠§ â¥«ì ª®¥æ ä ©«
|
RST ToDSS ; 㪠§ â¥«ì ª®¥æ ä ©«
|
||||||
jr nc,1F ; ®¡à ¡®â稪 ®è¨¡ª¨!!!!!
|
JR NC,1F ;!FIXIT ®¡à ¡®â稪 ®è¨¡ª¨!!!!!
|
||||||
|
|
||||||
pop hl
|
POP HL
|
||||||
ret
|
RET
|
||||||
|
|
||||||
1: push ix
|
1: PUSH IX
|
||||||
pop de ; § 票¥ ¬« ¤è¨å 16 ¡¨â à §¬¥à ä ©«
|
POP DE ; § 票¥ ¬« ¤è¨å 16 ¡¨â à §¬¥à ä ©«
|
||||||
ex (sp),hl ; § 票¥ header_length ¢ HL, áâ àè ï ç áâì à §¬¥à ä ©« á⥪¥
|
EX (SP),HL ; § 票¥ header_length ¢ HL, áâ àè ï ç áâì à §¬¥à ä ©« á⥪¥
|
||||||
ex de,hl ; ¢ HL § 票¥ ¬« ¤è¨å 16 ¡¨â à §¬¥à ä ©« , ¢ DE - header_length
|
EX DE,HL ; ¢ HL § 票¥ ¬« ¤è¨å 16 ¡¨â à §¬¥à ä ©« , ¢ DE - header_length
|
||||||
|
|
||||||
sbc hl,de
|
SBC HL,DE
|
||||||
ld de,0
|
LD DE,0
|
||||||
ex (sp),hl ; ¬« ¤è ï ç áâì à §¬¥à ä ©« á⥪¥
|
EX (SP),HL ; ¬« ¤è ï ç áâì à §¬¥à ä ©« á⥪¥
|
||||||
sbc hl,de ; ¢ HL áâ àè ï ç áâì à §¬¥à ä ©«
|
SBC HL,DE ; ¢ HL áâ àè ï ç áâì à §¬¥à ä ©«
|
||||||
|
|
||||||
ex (sp),hl ; áâ àè ï ç áâì à §¬¥à ä ©« á⥪¥
|
EX (SP),HL ; áâ àè ï ç áâì à §¬¥à ä ©« á⥪¥
|
||||||
ld de,#1000
|
LD DE,#1000
|
||||||
add hl,de
|
ADD HL,DE
|
||||||
|
|
||||||
ex (sp),hl ; ¬« ¤è ï ç áâì à §¬¥à ä ©« á⥪¥
|
EX (SP),HL ; ¬« ¤è ï ç áâì à §¬¥à ä ©« á⥪¥
|
||||||
ld de,0
|
LD DE,0
|
||||||
adc hl,de
|
ADC HL,DE
|
||||||
pop de ; âãâ ¢ hl:de à §¬¥à ¤«ï trd
|
POP DE ; âãâ ¢ hl:de à §¬¥à ¤«ï trd
|
||||||
|
|
||||||
;---------------------------------------
|
;---------------------------------------
|
||||||
|
CALL Get_RAM_Disk_E
|
||||||
call Get_RAM_Disk_E
|
RET C ;!FIXIT ®¡à ¡®â稪 ®è¨¡ª¨!!!!!
|
||||||
ret c ; ®¡à ¡®â稪 ®è¨¡ª¨!!!!!
|
|
||||||
|
|
||||||
Convert_SCLtoTRD:
|
Convert_SCLtoTRD:
|
||||||
|
LD A,(Load_IMAGE_File.MEM_BLK)
|
||||||
|
OUT (SLOT3),A ; ¢áâ ¢«ï¥¬ ¯¥à¢ãî áâà ¨æã RAM-¤¨áª
|
||||||
|
|
||||||
LD A,(MEM_BLK)
|
LD HL,SCL_Buffer
|
||||||
out (SLOT3),a ; ¢áâ ¢«ï¥¬ ¯¥à¢ãî áâà ¨æã RAM-¤¨áª
|
LD B,(HL) ; CAT_Elements
|
||||||
|
INC HL
|
||||||
ld hl,SCL_Buffer
|
LD DE,#C000 ; RAM-drive's track 0
|
||||||
ld b,(hl) ; CAT_Elements
|
LD IX,SYS_SECTOR
|
||||||
inc hl
|
LD (ix+SEEK.AllFilesNum),B
|
||||||
ld de,#C000 ; RAM-drive's track 0
|
.cat_loop: PUSH BC
|
||||||
ld ix,SYS_SECTOR
|
LD A,(HL)
|
||||||
ld (ix+SEEK.AllFilesNum),b
|
|
||||||
.cat_loop:
|
|
||||||
push bc
|
|
||||||
ld a,(hl)
|
|
||||||
CP 1
|
CP 1
|
||||||
jr nz,1F ; this file is not deleted
|
JR NZ,1F ; this file is not deleted
|
||||||
inc (ix+SEEK.DelFilesNum)
|
INC (ix+SEEK.DelFilesNum)
|
||||||
1: ld bc,CAT_Elements-2 ; ld bc,#0D
|
1: LD BC,CAT_Elements-2 ; ld bc,#0D
|
||||||
ldir ; copy 14 bites of scl files table to trd image catalog
|
LDIR ; copy 14 bites of scl files table to trd image catalog
|
||||||
|
|
||||||
ld a,(SYS_SECTOR.FirstFreeSec)
|
LD A,(SYS_SECTOR.FirstFreeSec)
|
||||||
ld (de),a
|
LD (DE),A
|
||||||
ld c,a ;!---[v 1]
|
LD C,A ;!---[v 1]
|
||||||
inc de
|
INC DE
|
||||||
ld a,(SYS_SECTOR.FirstFreeTrk)
|
LD A,(SYS_SECTOR.FirstFreeTrk)
|
||||||
ld (de),a
|
LD (DE),A
|
||||||
inc de ; Pointer on next filename in RAM drive
|
INC DE ; Pointer on next filename in RAM drive
|
||||||
|
|
||||||
dec hl ; set to number of sectors
|
DEC HL ; set to number of sectors
|
||||||
ld a,(hl) ; get file length in sectors from scl-table
|
LD A,(HL) ; get file length in sectors from scl-table
|
||||||
and #0F
|
AND #0F
|
||||||
add a,c ;!---[^ 1]
|
ADD A,C ;!---[^ 1]
|
||||||
ld c,a ;!---[v 2]
|
LD C,A ;!---[v 2]
|
||||||
and #0F
|
AND #0F
|
||||||
ld (SYS_SECTOR.FirstFreeSec),a
|
LD (SYS_SECTOR.FirstFreeSec),A
|
||||||
ld a,#F0
|
LD A,#F0
|
||||||
and c ;!---[^ 2]
|
AND C ;!---[^ 2]
|
||||||
jr z,1F
|
JR Z,1F
|
||||||
inc (ix+SEEK.FirstFreeTrk)
|
INC (ix+SEEK.FirstFreeTrk)
|
||||||
1: ld a,(hl)
|
1: LD A,(HL)
|
||||||
srl a
|
SRL A
|
||||||
srl a
|
SRL A
|
||||||
srl a
|
SRL A
|
||||||
srl a
|
SRL A
|
||||||
add a,(ix+SEEK.FirstFreeTrk)
|
ADD A,(ix+SEEK.FirstFreeTrk)
|
||||||
ld (SYS_SECTOR.FirstFreeTrk),a
|
LD (SYS_SECTOR.FirstFreeTrk),A
|
||||||
|
|
||||||
inc hl ; Pointer on next filename in SCL_Buffer
|
INC HL ; Pointer on next filename in SCL_Buffer
|
||||||
pop bc
|
POP BC
|
||||||
djnz .cat_loop
|
DJNZ .cat_loop
|
||||||
|
|
||||||
xor a
|
XOR A
|
||||||
ld (de),a ; file table end marker
|
LD (DE),A ; file table end marker
|
||||||
;---------------------------------------
|
;---------------------------------------
|
||||||
|
|
||||||
; „®¤¥« âì!!!!!
|
;!TODO „®¤¥« âì!!!!!
|
||||||
; SYS_SECTOR.FreeSectors
|
; SYS_SECTOR.FreeSectors
|
||||||
|
|
||||||
; push hl ; ¡ ©â ¢ ¡ãä¥à¥ ®âªã¤ ¢ SCL ç¨ îâáï ¤ ë¥ (HL-SCL_Buffer)
|
; push hl ; ¡ ©â ¢ ¡ãä¥à¥ ®âªã¤ ¢ SCL ç¨ îâáï ¤ ë¥ (HL-SCL_Buffer)
|
||||||
; push de ; ¡ ©â ¢ ram ¤¨áª¥ trd £¤¥ § ª 稢 ¥âáï â ¡«¨æ ¯®á«¥¤¥£® ä ©«
|
; push de ; ¡ ©â ¢ ram ¤¨áª¥ trd £¤¥ § ª 稢 ¥âáï â ¡«¨æ ¯®á«¥¤¥£® ä ©«
|
||||||
|
|
||||||
xor a
|
XOR A
|
||||||
ld de,SCL_Buffer-8 ; ¢ëç¨á«ï¥¬ § 票¥ á¬¥é¥¨ï ¢ ä ©«¥ ¨§ § 票ï á¬¥é¥¨ï ¢ ¡ãä¥à¥
|
LD DE,SCL_Buffer-8 ; ¢ëç¨á«ï¥¬ § 票¥ á¬¥é¥¨ï ¢ ä ©«¥ ¨§ § 票ï á¬¥é¥¨ï ¢ ¡ãä¥à¥
|
||||||
sbc hl,de
|
SBC HL,DE
|
||||||
push hl
|
PUSH HL
|
||||||
pop ix
|
POP IX
|
||||||
|
|
||||||
ld a,(IMAGE_HANDLER)
|
LD A,(IMAGE_HANDLER)
|
||||||
ld hl,0
|
LD HL,0
|
||||||
ld B,L ; b=0 - ®â ç « ä ©«
|
LD B,L ; b=0 - ®â ç « ä ©«
|
||||||
ld c,Dss.Move_FP
|
LD C,Dss.Move_FP
|
||||||
rst ToDSS ; 㪠§ â¥«ì ¯¥à¢ë© ¡ ©â ¤ ëå
|
RST ToDSS ; 㪠§ â¥«ì ¯¥à¢ë© ¡ ©â ¤ ëå
|
||||||
jr nc,1F ; ®¡à ¡®â稪 ®è¨¡ª¨!!!!!
|
JR NC,1F ; ®¡à ¡®â稪 ®è¨¡ª¨!!!!!
|
||||||
|
|
||||||
pop de
|
POP DE
|
||||||
ret
|
RET
|
||||||
|
|
||||||
1: di
|
1: DI
|
||||||
ld hl,SYS_SECTOR_START
|
LD HL,SYS_SECTOR_START
|
||||||
ld de,#C800 ; sys sector of tr-dos disk in bank3 of ram-disk
|
LD DE,#C800 ; sys sector of tr-dos disk in bank3 of ram-disk
|
||||||
ACC_SetBlockSize
|
ACC_SetBlockSize
|
||||||
ld a,0
|
LD A,0
|
||||||
ACC_CopyBlock
|
ACC_CopyBlock
|
||||||
ld a,(HL)
|
LD A,(HL)
|
||||||
ld (DE),a
|
LD (DE),A
|
||||||
ACC_Off
|
ACC_Off
|
||||||
; ei
|
;EI
|
||||||
|
|
||||||
LD A,(IMAGE_HANDLER)
|
LD A,(IMAGE_HANDLER)
|
||||||
LD HL,#D000 ; ¤®£à㧨âì ¤® ª®æ áâà ¨æë
|
LD HL,#D000 ; ¤®£à㧨âì ¤® ª®æ áâà ¨æë
|
||||||
LD DE,#3000
|
LD DE,#3000
|
||||||
LD C,Dss.Read
|
LD C,Dss.Read
|
||||||
RST ToDSS
|
RST ToDSS
|
||||||
JP C,ERROR_IN_READ ; ®¡à ¡®â稪 ®è¨¡ª¨!!!!!
|
JP C,ERROR_IN_READ ;!FIXIT ®¡à ¡®â稪 ®è¨¡ª¨!!!!!
|
||||||
|
|
||||||
LD HL,MSG_LOAD_IMAGE ; loading image
|
LD HL,MSG_LOAD_IMAGE ; loading image
|
||||||
LD C,Dss.PChars
|
LD C,Dss.PChars
|
||||||
@ -314,8 +306,8 @@ Convert_SCLtoTRD:
|
|||||||
RST ToDSS
|
RST ToDSS
|
||||||
|
|
||||||
DI
|
DI
|
||||||
LD A,(MEM_BLK)
|
LD A,(Load_IMAGE_File.MEM_BLK)
|
||||||
jp Load_IMAGE_File.scl_read_next
|
JP Load_IMAGE_File.scl_read_next
|
||||||
|
|
||||||
;-----------[]
|
;-----------[]
|
||||||
|
|
||||||
@ -328,9 +320,6 @@ SYS_SECTOR SEEK
|
|||||||
SYS_SECTOR_END: BLOCK 3,0
|
SYS_SECTOR_END: BLOCK 3,0
|
||||||
|
|
||||||
SCL_FILE_ID: DB 0
|
SCL_FILE_ID: DB 0
|
||||||
;-----------[¢ á ¬ë© ª®¥æ]-------------
|
; ;-----------[¢ á ¬ë© ª®¥æ]-------------
|
||||||
SCL_Buffer EQU $
|
; SCL_Buffer EQU $
|
||||||
assert SCL_Buffer+#701 < #C000, "Buffer out of mem bank 2"
|
; ASSERT SCL_Buffer+#701<#A000,"Buffer out of mem bank 2"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -4,5 +4,11 @@
|
|||||||
sj.insert_define("BUILD_DATE", "'" .. date .. "." .. month .. "." .. year .. "'")
|
sj.insert_define("BUILD_DATE", "'" .. date .. "." .. month .. "." .. year .. "'")
|
||||||
ENDLUA
|
ENDLUA
|
||||||
|
|
||||||
DEFINE SP_VERSION "2.01 beta build"
|
DEFINE SP_VERSION "2.03 beta build"
|
||||||
|
;
|
||||||
|
DEFINE NEED_MIN_DSS_VERSION '1.71.36'
|
||||||
|
DSS_MIN_VERS:
|
||||||
|
.vers EQU 1
|
||||||
|
.modf EQU 71
|
||||||
|
.build EQU 36
|
||||||
;
|
;
|
||||||
Loading…
Reference in New Issue
Block a user