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: ;
|
||||
2580
spectrum.asm
2580
spectrum.asm
File diff suppressed because it is too large
Load Diff
471
trdscl.a80
471
trdscl.a80
@ -19,38 +19,36 @@
|
||||
; º #F5 ³ 8 ³ H §¢ ¨¥ ¤¨cª¥âë º
|
||||
; º #FD ³ 3 ³ H¥ ¨c¯®«ì§ã¥âcï (§ ¯®«¥® ¡ ©â®¬ 0) º
|
||||
; ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
|
||||
STRUCT SEEK
|
||||
STRUCT SEEK
|
||||
FirstFreeSec BYTE 0
|
||||
FirstFreeTrk BYTE 1
|
||||
DiskType BYTE #16
|
||||
AllFilesNum BYTE 0
|
||||
FreeSectors WORD 0 ; beta version
|
||||
TRDOS_ID BYTE #10
|
||||
notuse1 WORD 0
|
||||
notuse2 BLOCK 9,32
|
||||
notuse3 BYTE 0
|
||||
DelFilesNum BYTE 0
|
||||
DiskName TEXT 8, {" "} ; beta version
|
||||
ENDS
|
||||
DiskType BYTE #16
|
||||
AllFilesNum BYTE 0
|
||||
FreeSectors WORD 0 ; beta version
|
||||
TRDOS_ID BYTE #10
|
||||
notuse1 WORD 0
|
||||
notuse2 BLOCK 9,32
|
||||
notuse3 BYTE 0
|
||||
DelFilesNum BYTE 0
|
||||
DiskName TEXT 8,{" "} ; beta version
|
||||
ENDS
|
||||
|
||||
/*
|
||||
SYS_SECTOR:
|
||||
DB 0
|
||||
BLOCK 224,0
|
||||
.FirstFreeSec: DB 0
|
||||
.FirstFreeTrk: DB 1
|
||||
.DiskType DB #16 ; #16 = 80-2, #17 = 40-2, #18 = 80-1, #19 = 40-1
|
||||
.AllFilesNum: DB 0
|
||||
.FreeSectors: DW 2544
|
||||
DB #10
|
||||
DW 0000
|
||||
BLOCK 9,32
|
||||
DB 0
|
||||
.DelFilesNum: DB 0
|
||||
.DiskName: BLOCK 8,32
|
||||
BLOCK 3,0
|
||||
; SYS_SECTOR:
|
||||
; DB 0
|
||||
; BLOCK 224,0
|
||||
; .FirstFreeSec: DB 0
|
||||
; .FirstFreeTrk: DB 1
|
||||
; .DiskType DB #16 ; #16 = 80-2, #17 = 40-2, #18 = 80-1, #19 = 40-1
|
||||
; .AllFilesNum: DB 0
|
||||
; .FreeSectors: DW 2544
|
||||
; DB #10
|
||||
; DW 0000
|
||||
; BLOCK 9,32
|
||||
; DB 0
|
||||
; .DelFilesNum: DB 0
|
||||
; .DiskName: BLOCK 8,32
|
||||
; BLOCK 3,0
|
||||
;
|
||||
*/
|
||||
|
||||
; ÉÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
|
||||
; ºC¬¥é¥¨¥ ³„«¨ ³ H § 票¥ º
|
||||
@ -64,273 +62,264 @@ SYS_SECTOR:
|
||||
; º #0E ³ 1 ³ H®¬¥p 1£® c¥ªâ®p º
|
||||
; º #0F ³ 1 ³ H®¬¥p ¤®p®¦ª¨ º
|
||||
; ÈÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
|
||||
/*
|
||||
CAT_ELEMENT:
|
||||
.Name BLOCK 8,32
|
||||
.Type DB 0
|
||||
.Start DW 0000
|
||||
.Length DW 0000
|
||||
.Sectors DB 0
|
||||
.FirstSector DB 0
|
||||
.FirstTrack DB 0
|
||||
*/
|
||||
|
||||
STRUCT CAT_Elements
|
||||
Name block 8
|
||||
Type BYTE
|
||||
Start WORD
|
||||
Length WORD
|
||||
Sectors BYTE
|
||||
FirstSector BYTE
|
||||
FirstTrack BYTE
|
||||
ENDS
|
||||
; CAT_ELEMENT:
|
||||
; .Name BLOCK 8,32
|
||||
; .Type DB 0
|
||||
; .Start DW 0000
|
||||
; .Length DW 0000
|
||||
; .Sectors DB 0
|
||||
; .FirstSector DB 0
|
||||
; .FirstTrack DB 0
|
||||
|
||||
STRUCT SclOffsets
|
||||
ID BLOCK 8
|
||||
Files BYTE
|
||||
FileBlock CAT_Elements
|
||||
ENDS
|
||||
STRUCT CAT_Elements
|
||||
Name BLOCK 8
|
||||
Type BYTE
|
||||
Start WORD
|
||||
Length WORD
|
||||
Sectors BYTE
|
||||
FirstSector BYTE
|
||||
FirstTrack BYTE
|
||||
ENDS
|
||||
|
||||
STRUCT SclOffsets
|
||||
ID BLOCK 8
|
||||
Files BYTE
|
||||
FileBlock CAT_Elements
|
||||
ENDS
|
||||
; 655360 kb = 160 tracks * 16 sectors * 256 bites
|
||||
; 80 tracks * 2 heads * 16 sectors * 256 bites = 655360 kb
|
||||
; 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,'.'
|
||||
ld bc,0008
|
||||
ld de,SYS_SECTOR.DiskName
|
||||
;-------[Œ¥âª ¤¨áª - ¨¬ï ä ©« ]-------
|
||||
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,'.'
|
||||
LD BC,0008
|
||||
LD DE,SYS_SECTOR.DiskName
|
||||
.loop:
|
||||
cp (hl)
|
||||
jr z,.skip
|
||||
ldi
|
||||
jp pe,.loop
|
||||
CP (HL)
|
||||
JR Z,.skip
|
||||
LDI
|
||||
JP PE,.loop
|
||||
|
||||
.skip:
|
||||
;-------[¯à®¢¥àª 奤íà SINCLAIR]------
|
||||
|
||||
ld a,(IMAGE_HANDLER)
|
||||
ld hl,SCL_Buffer
|
||||
ld de,8
|
||||
ld c,Dss.Read
|
||||
rst ToDSS
|
||||
ret c ; ®¡à ¡®â稪 ®è¨¡ª¨
|
||||
LD A,(IMAGE_HANDLER)
|
||||
LD HL,SCL_Buffer
|
||||
LD DE,8 ; ¡ ©â®¢
|
||||
LD C,Dss.Read
|
||||
RST ToDSS
|
||||
RET C ; ®¡à ¡®â稪 ®è¨¡ª¨
|
||||
|
||||
ld hl,SCL_Buffer
|
||||
ld de,SCL_HEADER
|
||||
ld b,8
|
||||
.check_header:
|
||||
ld a,(de)
|
||||
cp (hl)
|
||||
jr nz,.error_header
|
||||
inc hl
|
||||
inc de
|
||||
djnz .check_header
|
||||
jr .get_size
|
||||
.error_header:
|
||||
scf
|
||||
ret
|
||||
LD HL,SCL_Buffer
|
||||
LD DE,SCL_HEADER
|
||||
LD B,8
|
||||
.check_header: LD A,(DE)
|
||||
CP (HL)
|
||||
JR NZ,.error_header
|
||||
INC HL
|
||||
INC DE
|
||||
DJNZ .check_header
|
||||
JR .get_size
|
||||
.error_header: SCF
|
||||
RET
|
||||
|
||||
;------[¢ëç¨á«¥¨¥ à §¬¥à ¤«ï TRD]-----
|
||||
.get_size:
|
||||
/* ld a,(IMAGE_HANDLER)
|
||||
ld hl,0
|
||||
ld ix,SclOffsets.Files
|
||||
ld b,l
|
||||
ld c,Dss.Move_FP
|
||||
rst ToDSS ; 㪠§ â¥«ì ¡ ©â ª®«¨ç¥á⢠¡«®ª®¢ (ä ©«®¢)
|
||||
ret c ; ®¡à ¡®â稪 ®è¨¡ª¨!!!!!
|
||||
;*/
|
||||
ld a,(IMAGE_HANDLER)
|
||||
ld hl,SCL_Buffer
|
||||
ld de,#701
|
||||
ld c,Dss.Read
|
||||
rst ToDSS ; !FIXIT ᤥ« âì ª®âà®«ì ®è¨¡ª¨? ; ç¨â ¥¬ ¡ ©â ª®«¨ç¥á⢠¡«®ª®¢ (ä ©«®¢)
|
||||
; LD A,(IMAGE_HANDLER)
|
||||
; LD HL,0
|
||||
; LD IX,SclOffsets.Files
|
||||
; LD B,L
|
||||
; LD C,Dss.Move_FP
|
||||
; RST ToDSS ; 㪠§ â¥«ì ¡ ©â ª®«¨ç¥á⢠¡«®ª®¢ (ä ©«®¢)
|
||||
; RET C ; ®¡à ¡®â稪 ®è¨¡ª¨!!!!!
|
||||
|
||||
LD A,(IMAGE_HANDLER)
|
||||
LD HL,SCL_Buffer
|
||||
LD DE,#701
|
||||
LD C,Dss.Read
|
||||
RST ToDSS ; !FIXIT ᤥ« âì ª®âà®«ì ®è¨¡ª¨? ; ç¨â ¥¬ ¡ ©â ª®«¨ç¥á⢠¡«®ª®¢ (ä ©«®¢)
|
||||
;
|
||||
ld a,(SCL_Buffer)
|
||||
ld l,a
|
||||
xor a
|
||||
ld h,a
|
||||
LD A,(SCL_Buffer)
|
||||
LD L,A
|
||||
XOR A
|
||||
LD H,A
|
||||
;
|
||||
add hl,hl ;*2
|
||||
push hl
|
||||
add hl,hl ;*4
|
||||
ld d,h
|
||||
ld e,l
|
||||
add hl,hl ;*8
|
||||
add hl,de ;*12
|
||||
pop de
|
||||
add hl,de ; ¢ HL § 票¥ A*14
|
||||
ADD HL,HL ;*2
|
||||
PUSH HL
|
||||
ADD HL,HL ;*4
|
||||
LD D,H
|
||||
LD E,L
|
||||
ADD HL,HL ;*8
|
||||
ADD HL,DE ;*12
|
||||
POP DE
|
||||
ADD HL,DE ; ¢ HL § 票¥ A*14
|
||||
|
||||
add hl,bc
|
||||
ADD HL,BC
|
||||
|
||||
ld de,SclOffsets.FileBlock
|
||||
add hl,de ; ¢ HL à §¬¥à ®â ç « SCL ¤® ç « ¡«®ª ¤ ëå (header_length)
|
||||
push hl
|
||||
LD DE,SclOffsets.FileBlock
|
||||
ADD HL,DE ; ¢ HL à §¬¥à ®â ç « SCL ¤® ç « ¡«®ª ¤ ëå (header_length)
|
||||
PUSH HL
|
||||
;
|
||||
ld a,(IMAGE_HANDLER)
|
||||
ld hl,0
|
||||
ld ix,4 ; ¨£®à¨¬ ª®â஫ìãî á㬬ã scl ä ©«
|
||||
ld b,2
|
||||
ld c,Dss.Move_FP
|
||||
rst ToDSS ; 㪠§ â¥«ì ª®¥æ ä ©«
|
||||
jr nc,1F ; ®¡à ¡®â稪 ®è¨¡ª¨!!!!!
|
||||
LD A,(IMAGE_HANDLER)
|
||||
LD HL,0
|
||||
LD IX,4 ; ¨£®à¨¬ ª®â஫ìãî á㬬ã scl ä ©«
|
||||
LD B,2
|
||||
LD C,Dss.Move_FP
|
||||
RST ToDSS ; 㪠§ â¥«ì ª®¥æ ä ©«
|
||||
JR NC,1F ;!FIXIT ®¡à ¡®â稪 ®è¨¡ª¨!!!!!
|
||||
|
||||
pop hl
|
||||
ret
|
||||
POP HL
|
||||
RET
|
||||
|
||||
1: push ix
|
||||
pop de ; § 票¥ ¬« ¤è¨å 16 ¡¨â à §¬¥à ä ©«
|
||||
ex (sp),hl ; § 票¥ header_length ¢ HL, áâ àè ï ç áâì à §¬¥à ä ©« á⥪¥
|
||||
ex de,hl ; ¢ HL § 票¥ ¬« ¤è¨å 16 ¡¨â à §¬¥à ä ©« , ¢ DE - header_length
|
||||
1: PUSH IX
|
||||
POP DE ; § 票¥ ¬« ¤è¨å 16 ¡¨â à §¬¥à ä ©«
|
||||
EX (SP),HL ; § 票¥ header_length ¢ HL, áâ àè ï ç áâì à §¬¥à ä ©« á⥪¥
|
||||
EX DE,HL ; ¢ HL § 票¥ ¬« ¤è¨å 16 ¡¨â à §¬¥à ä ©« , ¢ DE - header_length
|
||||
|
||||
sbc hl,de
|
||||
ld de,0
|
||||
ex (sp),hl ; ¬« ¤è ï ç áâì à §¬¥à ä ©« á⥪¥
|
||||
sbc hl,de ; ¢ HL áâ àè ï ç áâì à §¬¥à ä ©«
|
||||
SBC HL,DE
|
||||
LD DE,0
|
||||
EX (SP),HL ; ¬« ¤è ï ç áâì à §¬¥à ä ©« á⥪¥
|
||||
SBC HL,DE ; ¢ HL áâ àè ï ç áâì à §¬¥à ä ©«
|
||||
|
||||
ex (sp),hl ; áâ àè ï ç áâì à §¬¥à ä ©« á⥪¥
|
||||
ld de,#1000
|
||||
add hl,de
|
||||
EX (SP),HL ; áâ àè ï ç áâì à §¬¥à ä ©« á⥪¥
|
||||
LD DE,#1000
|
||||
ADD HL,DE
|
||||
|
||||
ex (sp),hl ; ¬« ¤è ï ç áâì à §¬¥à ä ©« á⥪¥
|
||||
ld de,0
|
||||
adc hl,de
|
||||
pop de ; âãâ ¢ hl:de à §¬¥à ¤«ï trd
|
||||
EX (SP),HL ; ¬« ¤è ï ç áâì à §¬¥à ä ©« á⥪¥
|
||||
LD DE,0
|
||||
ADC HL,DE
|
||||
POP DE ; âãâ ¢ hl:de à §¬¥à ¤«ï trd
|
||||
|
||||
;---------------------------------------
|
||||
|
||||
call Get_RAM_Disk_E
|
||||
ret c ; ®¡à ¡®â稪 ®è¨¡ª¨!!!!!
|
||||
CALL Get_RAM_Disk_E
|
||||
RET C ;!FIXIT ®¡à ¡®â稪 ®è¨¡ª¨!!!!!
|
||||
|
||||
Convert_SCLtoTRD:
|
||||
LD A,(Load_IMAGE_File.MEM_BLK)
|
||||
OUT (SLOT3),A ; ¢áâ ¢«ï¥¬ ¯¥à¢ãî áâà ¨æã RAM-¤¨áª
|
||||
|
||||
LD A,(MEM_BLK)
|
||||
out (SLOT3),a ; ¢áâ ¢«ï¥¬ ¯¥à¢ãî áâà ¨æã RAM-¤¨áª
|
||||
LD HL,SCL_Buffer
|
||||
LD B,(HL) ; CAT_Elements
|
||||
INC HL
|
||||
LD DE,#C000 ; RAM-drive's track 0
|
||||
LD IX,SYS_SECTOR
|
||||
LD (ix+SEEK.AllFilesNum),B
|
||||
.cat_loop: PUSH BC
|
||||
LD A,(HL)
|
||||
CP 1
|
||||
JR NZ,1F ; this file is not deleted
|
||||
INC (ix+SEEK.DelFilesNum)
|
||||
1: LD BC,CAT_Elements-2 ; ld bc,#0D
|
||||
LDIR ; copy 14 bites of scl files table to trd image catalog
|
||||
|
||||
ld hl,SCL_Buffer
|
||||
ld b,(hl) ; CAT_Elements
|
||||
inc hl
|
||||
ld de,#C000 ; RAM-drive's track 0
|
||||
ld ix,SYS_SECTOR
|
||||
ld (ix+SEEK.AllFilesNum),b
|
||||
.cat_loop:
|
||||
push bc
|
||||
ld a,(hl)
|
||||
CP 1
|
||||
jr nz,1F ; this file is not deleted
|
||||
inc (ix+SEEK.DelFilesNum)
|
||||
1: ld bc,CAT_Elements-2 ; ld bc,#0D
|
||||
ldir ; copy 14 bites of scl files table to trd image catalog
|
||||
LD A,(SYS_SECTOR.FirstFreeSec)
|
||||
LD (DE),A
|
||||
LD C,A ;!---[v 1]
|
||||
INC DE
|
||||
LD A,(SYS_SECTOR.FirstFreeTrk)
|
||||
LD (DE),A
|
||||
INC DE ; Pointer on next filename in RAM drive
|
||||
|
||||
ld a,(SYS_SECTOR.FirstFreeSec)
|
||||
ld (de),a
|
||||
ld c,a ;!---[v 1]
|
||||
inc de
|
||||
ld a,(SYS_SECTOR.FirstFreeTrk)
|
||||
ld (de),a
|
||||
inc de ; Pointer on next filename in RAM drive
|
||||
DEC HL ; set to number of sectors
|
||||
LD A,(HL) ; get file length in sectors from scl-table
|
||||
AND #0F
|
||||
ADD A,C ;!---[^ 1]
|
||||
LD C,A ;!---[v 2]
|
||||
AND #0F
|
||||
LD (SYS_SECTOR.FirstFreeSec),A
|
||||
LD A,#F0
|
||||
AND C ;!---[^ 2]
|
||||
JR Z,1F
|
||||
INC (ix+SEEK.FirstFreeTrk)
|
||||
1: LD A,(HL)
|
||||
SRL A
|
||||
SRL A
|
||||
SRL A
|
||||
SRL A
|
||||
ADD A,(ix+SEEK.FirstFreeTrk)
|
||||
LD (SYS_SECTOR.FirstFreeTrk),A
|
||||
|
||||
dec hl ; set to number of sectors
|
||||
ld a,(hl) ; get file length in sectors from scl-table
|
||||
and #0F
|
||||
add a,c ;!---[^ 1]
|
||||
ld c,a ;!---[v 2]
|
||||
and #0F
|
||||
ld (SYS_SECTOR.FirstFreeSec),a
|
||||
ld a,#F0
|
||||
and c ;!---[^ 2]
|
||||
jr z,1F
|
||||
inc (ix+SEEK.FirstFreeTrk)
|
||||
1: ld a,(hl)
|
||||
srl a
|
||||
srl a
|
||||
srl a
|
||||
srl a
|
||||
add a,(ix+SEEK.FirstFreeTrk)
|
||||
ld (SYS_SECTOR.FirstFreeTrk),a
|
||||
|
||||
inc hl ; Pointer on next filename in SCL_Buffer
|
||||
pop bc
|
||||
djnz .cat_loop
|
||||
INC HL ; Pointer on next filename in SCL_Buffer
|
||||
POP BC
|
||||
DJNZ .cat_loop
|
||||
|
||||
xor a
|
||||
ld (de),a ; file table end marker
|
||||
XOR A
|
||||
LD (DE),A ; file table end marker
|
||||
;---------------------------------------
|
||||
|
||||
; „®¤¥« âì!!!!!
|
||||
;!TODO „®¤¥« âì!!!!!
|
||||
; SYS_SECTOR.FreeSectors
|
||||
|
||||
; push hl ; ¡ ©â ¢ ¡ãä¥à¥ ®âªã¤ ¢ SCL ç¨ îâáï ¤ ë¥ (HL-SCL_Buffer)
|
||||
; push de ; ¡ ©â ¢ ram ¤¨áª¥ trd £¤¥ § ª 稢 ¥âáï â ¡«¨æ ¯®á«¥¤¥£® ä ©«
|
||||
|
||||
xor a
|
||||
ld de,SCL_Buffer-8 ; ¢ëç¨á«ï¥¬ § 票¥ á¬¥é¥¨ï ¢ ä ©«¥ ¨§ § 票ï á¬¥é¥¨ï ¢ ¡ãä¥à¥
|
||||
sbc hl,de
|
||||
push hl
|
||||
pop ix
|
||||
XOR A
|
||||
LD DE,SCL_Buffer-8 ; ¢ëç¨á«ï¥¬ § 票¥ á¬¥é¥¨ï ¢ ä ©«¥ ¨§ § 票ï á¬¥é¥¨ï ¢ ¡ãä¥à¥
|
||||
SBC HL,DE
|
||||
PUSH HL
|
||||
POP IX
|
||||
|
||||
ld a,(IMAGE_HANDLER)
|
||||
ld hl,0
|
||||
ld B,L ; b=0 - ®â ç « ä ©«
|
||||
ld c,Dss.Move_FP
|
||||
rst ToDSS ; 㪠§ â¥«ì ¯¥à¢ë© ¡ ©â ¤ ëå
|
||||
jr nc,1F ; ®¡à ¡®â稪 ®è¨¡ª¨!!!!!
|
||||
|
||||
pop de
|
||||
ret
|
||||
LD A,(IMAGE_HANDLER)
|
||||
LD HL,0
|
||||
LD B,L ; b=0 - ®â ç « ä ©«
|
||||
LD C,Dss.Move_FP
|
||||
RST ToDSS ; 㪠§ â¥«ì ¯¥à¢ë© ¡ ©â ¤ ëå
|
||||
JR NC,1F ; ®¡à ¡®â稪 ®è¨¡ª¨!!!!!
|
||||
|
||||
1: di
|
||||
ld hl,SYS_SECTOR_START
|
||||
ld de,#C800 ; sys sector of tr-dos disk in bank3 of ram-disk
|
||||
ACC_SetBlockSize
|
||||
ld a,0
|
||||
ACC_CopyBlock
|
||||
ld a,(HL)
|
||||
ld (DE),a
|
||||
ACC_Off
|
||||
; ei
|
||||
POP DE
|
||||
RET
|
||||
|
||||
LD A,(IMAGE_HANDLER)
|
||||
LD HL,#D000 ; ¤®£à㧨âì ¤® ª®æ áâà ¨æë
|
||||
LD DE,#3000
|
||||
LD C,Dss.Read
|
||||
RST ToDSS
|
||||
JP C,ERROR_IN_READ ; ®¡à ¡®â稪 ®è¨¡ª¨!!!!!
|
||||
1: DI
|
||||
LD HL,SYS_SECTOR_START
|
||||
LD DE,#C800 ; sys sector of tr-dos disk in bank3 of ram-disk
|
||||
ACC_SetBlockSize
|
||||
LD A,0
|
||||
ACC_CopyBlock
|
||||
LD A,(HL)
|
||||
LD (DE),A
|
||||
ACC_Off
|
||||
;EI
|
||||
|
||||
LD HL,MSG_LOAD_IMAGE ; loading image
|
||||
LD C,Dss.PChars
|
||||
RST ToDSS
|
||||
LD A,(IMAGE_HANDLER)
|
||||
LD HL,#D000 ; ¤®£à㧨âì ¤® ª®æ áâà ¨æë
|
||||
LD DE,#3000
|
||||
LD C,Dss.Read
|
||||
RST ToDSS
|
||||
JP C,ERROR_IN_READ ;!FIXIT ®¡à ¡®â稪 ®è¨¡ª¨!!!!!
|
||||
|
||||
LD HL,PROGRES_IND ; loading TRD
|
||||
LD C,Dss.PChars
|
||||
RST ToDSS
|
||||
LD HL,MSG_LOAD_IMAGE ; loading image
|
||||
LD C,Dss.PChars
|
||||
RST ToDSS
|
||||
|
||||
DI
|
||||
LD A,(MEM_BLK)
|
||||
jp Load_IMAGE_File.scl_read_next
|
||||
LD HL,PROGRES_IND ; loading TRD
|
||||
LD C,Dss.PChars
|
||||
RST ToDSS
|
||||
|
||||
DI
|
||||
LD A,(Load_IMAGE_File.MEM_BLK)
|
||||
JP Load_IMAGE_File.scl_read_next
|
||||
|
||||
;-----------[]
|
||||
|
||||
SCL_HEADER: DB 'SINCLAIR'
|
||||
SCL_HEADER: DB 'SINCLAIR'
|
||||
;------------[¯¥à¥¬¥ë¥]---------------
|
||||
SYS_SECTOR_START:
|
||||
DB 0
|
||||
BLOCK 224,0
|
||||
SYS_SECTOR SEEK
|
||||
DB 0
|
||||
BLOCK 224,0
|
||||
SYS_SECTOR SEEK
|
||||
SYS_SECTOR_END: BLOCK 3,0
|
||||
|
||||
SCL_FILE_ID: DB 0
|
||||
;-----------[¢ á ¬ë© ª®¥æ]-------------
|
||||
SCL_Buffer EQU $
|
||||
assert SCL_Buffer+#701 < #C000, "Buffer out of mem bank 2"
|
||||
|
||||
|
||||
|
||||
; ;-----------[¢ á ¬ë© ª®¥æ]-------------
|
||||
; SCL_Buffer EQU $
|
||||
; ASSERT SCL_Buffer+#701<#A000,"Buffer out of mem bank 2"
|
||||
@ -4,5 +4,11 @@
|
||||
sj.insert_define("BUILD_DATE", "'" .. date .. "." .. month .. "." .. year .. "'")
|
||||
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