Shared_Includes/constants/SP2000.inc
2024-08-18 07:03:44 +10:00

2450 lines
82 KiB
PHP
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
DEFDEVICE SPRINTER, #4000, 256
DEFINE SLOT? +(SLOT0 | ((#C0 & high $)>>>1))
DEFINE OFFSET? +(SLOT3 ^ SLOT?)*512
IFNDEF _includedSP2000 : DEFINE _includedSP2000 : ENDIF
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
STRUCT ZX_TASK_DATA
.STATE BYTE 0 ; +0 ; b0 - á®åà ­¥­ , b1 - ¢ à ¡®â¥
.SLOT3_PAGE BYTE 0 ; +1 ; âà¥âìï áâà ­¨æ  § ¤ ç¨
.SP WORD 0 ; +2 ; 㪠§ â¥«ì ­  áâíª
.RESERVED BLOCK 16-4,0 ; +4 ;!TODO reserved
ENDS
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
; <EFBFBD>à¥à뢠­¨ï ;
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
; ‚¥ªâ®à #FF:
; ª« ¢¨ âãà  - ¢¨á¨â 32 â ªâ . ¬®¦­® ¯à®¢¥à¨âì ¯® ¡ãä¥àã ¢ ¯à®æ¥, ¬®¦¥â ­ «®¦¨âìáï á ®áâ «ì­ë¬¨.
; ª ¤à®¢®¥ - ¢¨á¨â 32 â ªâ . Œ®¦¥â ­ «®¦¨âìáï á ®áâ «ì­ë¬¨.
; CBL - ¢¨á¨â ¤® § å¢ â  ¯à®æ¥¬, ¬®¦¥â ­ «®¦¨âìáï á ®áâ «ì­ë¬¨.
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
; €¤à¥á  ¯®à⮢ ;
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
; <EFBFBD>Ž<EFBFBD> #FE
; Read:
; bit0 - keyboard
; bit1 - keyboard
; bit2 - keyboard
; bit3 - keyboard
; bit4 - keyboard
; bit5 - display sync: 1 - «ãç>256, 0 - «ãç<256. •®¤ «ãç  0..319 / 0..311, ¢ § ¢¨á¨¬®á⨠®â à §¢ñà⪨. <EFBFBD> ¡®â ¥â ⮫쪮 ¯à¨  ªâ¨¢¨à®¢ ­­®¬ CBL, ¨­ ç¥ ¢á¥£¤  0
; bit6 - Tape in
; bit7 - ¥á«¨  ªâ¨¢¨à®¢ ­ë ¯à¥à뢠­¨ï CBL: 1 - CBL interrupt, ¨­ ç¥ à áè¨à¥­­ë© ¡¨â ᯥªâà㬮¢áª®© ª« ¢¨ âãàë
;
; Write:
; bit0 - Border Color
; bit1 - Border Color
; bit2 - Border Color
; bit3 - Tape out
; bit4 - Beeper out
; bit5 -
; bit6 -
; bit7 -
ZX_Beeper EQU #FE ; bit 4
ZX_Tape_Ou EQU #FE ; bit 3
ZX_Tape_In EQU #FE ; bit 6
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
;
; Covox Blaster
CBL:
.OUT EQU #4F ; <20>®àâ ¤«ï ¢ë¢®¤  §¢ãª  = #FB
.BUFFER_PAGE EQU #FD ; áâà ­¨æ -¡ãä¥à ¤«ï ª¨¤ ­¨ï ¬ã§«   ªá¥«¥¬ (¯à¥à뢠­¨ï CBL ¤®«¦­ë ¡ëâì ¢ª«î祭ë)
.INT_PORT EQU #FE ; .SYS_PORT:bit4=1 --> .INT_PORT:bit7=1 § ¯à®á ­  § ¯®«­¥­¨¥ ¯®«ã¡ãä¥à  ¤ ­­ë¬¨
.SYS_PORT EQU #004E ; ¯®àâ ã¯à ¢«¥­¨ï COVOX-Blaster (CBL_DIR). 16-bit port!!!, ¯¨á âì ç¥à¥§ OUT (c),reg ¨«¨ ®ç¥­ì ®áâ®à®¦­®))
.COVOX_OUT EQU #FB ; <20>®àâ ¤«ï ¢ë¢®¤  §¢ãª  = #4F
; Data for .SYS_PORT
;Bit 7
.Covox EQU #00
.Blaster EQU #80
;Bit 6
.Mono EQU #00
.Stereo EQU #40
;Bit 5
.is8bit EQU #00
.is16bit EQU #20
;Bit 4
.Int_off EQU #00
.Int_on EQU #10
;Bit 3..0
.KHz_16old EQU #00
.KHz_22old EQU #01
.KHz_8 EQU #08
.KHz_11 EQU #09
.KHz_16 EQU #0A
.KHz_22 EQU #0B
.KHz_31 EQU #0C
.KHz_44 EQU #0D
.KHz_55 EQU #0E
.KHz_109 EQU #0F
;
; #00 - COVOX on, standart Pentagon mode
; #80 - CBL on, 15 kHz mono
; #81 - CBL on, 22 kHz mono
; Bits:
; 7 - covox/CBL
; 6 - ¬®­®/áâ¥à¥®
; 5 - 8/16 ¡¨â
; 4 - ¢ëª«/¢ª« ¯à¥à뢠­¨© (¢¥ªâ®à #FF, ¯à¨§­ ª - ¯®àâ #FE.bit7 ¨ ¢¥á¨â ¤® § å¢ â  ¯à®æ¥¬)
; 3..0 - ç áâ®â  ; ¤®¯®«­¨âì
; — áâ®âë:
; Žâ 8 ¤® 15
; ‡­ ç¥­¨ï 0..7 ¤«ï ᮢ¬¥á⨬®á⨠ᮠáâ àë¬ ¡« áâ¥à®¬: 0 - 16, 1 - 22 ªƒæ
;
; ¡ãä¥à - 256/512 ¡ ©â (8/16 bit mode)
; (2 ¡ ­ª¨ ¯® 128/256)
; ¯à¥à뢠­¨¥ ¯à¨«¥â ¥â ¯®á«¥ ª ¦¤®©
; ¡ ­ª¨
;
; <EFBFBD>¥¦¨¬ 8 ¡¨â:
; ã஢¥­ì ­ã«ï ¢ ᥬ¯« å - #80
; <EFBFBD>¥¦¨¬ 16 ¡¨â:
; ã஢¥­ì ­ã«ï ¢ ᥬ¯« å - #0000
; Stereo-áí¬¯«ë:
; ç¥à¥¤ãî騥áï ®âáç¥âë L ¨ R ª ­ «®¢.
;
; mono_8bit:
; DB 80h,81h,7Fh....
; mono_16bit:
; DW 0,1000,-1000...
; stereo_8bit:
; DB 80h,80h,81h,80h,7Fh,80h... ; §¤¥áì ®¤¨­ ª ­ « ¨£à ¥â, ¢â®à®© ¬®«ç¨â
; stereo_16bit:
; DW 0,0,1000,0,-1000,0... ;  ­ «®£¨ç­®, ®¤¨­ ª ­ « ¨£à ¥â, ¢â®à®© ¬®«ç¨â
;
; CASE CBL_XX[3..0] IS
; WHEN 0 => CBL_TAB[] = 13; -- 15.625 KHz -- mono/stereo
; WHEN 1 => CBL_TAB[] = 9; -- 21.875 KHz -- mono/stereo
; WHEN 2 => CBL_TAB[] = 0; -- reserved
; WHEN 3 => CBL_TAB[] = 0; -- reserved
; WHEN 4 => CBL_TAB[] = 0; -- reserved
; WHEN 5 => CBL_TAB[] = 0; -- reserved
; WHEN 6 => CBL_TAB[] = 0; -- reserved
; WHEN 7 => CBL_TAB[] = 0; -- reserved
;
; WHEN 8 => CBL_TAB[] = 27; -- 7.8125 KHz -- mono/stereo 8/16 bit
; WHEN 9 => CBL_TAB[] = 19; -- 10.9375 KHz -- mono/stereo 8/16 bit
; WHEN 10=> CBL_TAB[] = 13; -- 15.625 KHz -- mono/stereo 8/16 bit
; WHEN 11=> CBL_TAB[] = 9; -- 21.875 KHz -- mono/stereo 8/16 bit
; WHEN 12=> CBL_TAB[] = 6; -- 31.25 KHz -- mono/stereo 8/16 bit
; WHEN 13=> CBL_TAB[] = 4; -- 43.75 KHz -- mono/stereo 8/16 bit
; WHEN 14=> CBL_TAB[] = 3; -- 54.6875 KHz -- mono/stereo 8/16 bit
; WHEN 15=> CBL_TAB[] = 1; -- 109.375 KHz -- mono/stereo 8/16 bit
; END CASE;
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
;
; SYS_PORT / CNF_PORT
;
; § ¬ ¯«¥­ ç¥à¥§ ª àâã ¯®à⮢ ­  #7C/#3C ¨ #74/#24
CNF_PORT:
.ON EQU #74
.OFF EQU #24
.vBIOS EQU .ON
.vZX_ROM EQU .OFF
; Data:
.BIOS EQU 0
.EXTENSION EQU 1
.TURBO.OFF EQU 2 ; ¤ ­­ë¥ ¤«ï ¢ëª«î祭¨ï TURBO
.TURBO.ON EQU 3 ; ¤ ­­ë¥ ¤«ï ¢ª«î祭¨ï TURBO
.CNF_0 EQU #04 ; ª àâ  ¯®à⮢ 0
.CNF_1 EQU #0C ; ª àâ  ¯®à⮢ 1 (¤«ï ०¨¬  ¯®ç⨠ç¨á⮣® zx spectrum)
.CNF_2 EQU #14 ; ª àâ  ¯®à⮢ 2
.CNF_3 EQU #1C ; ª àâ  ¯®à⮢ 3 (०¨¬ ¤®áâ㯠 ª ¯®àâ ¬ ƒ93 ¡¥§ ᨣ­ «  TR-DOS)
.PENT_RESET EQU #20
.SCORP_RESET EQU #40
.CNF_512 EQU #80 ; ¢ª«î祭¨¥ Pentagon 128
.ZX_BIOS EQU #00
.ZX_EXTENSION EQU #01
; ¯à¨¡¨â ¢ ª®­ä¥ £¢®§¤ï¬¨ ­  #7C/#3C
SYS_PORT:
.ON EQU #7C
.OFF EQU #3C
.RAM EQU .OFF
.ROM EQU .ON
; Data:
.PAGE0 EQU 1
.PAGE8 EQU 0
.EXTENSION EQU .PAGE0
.BIOS EQU .PAGE8
.TURBO.ON EQU CNF_PORT.TURBO.ON
.TURBO.OFF EQU CNF_PORT.TURBO.OFF
.CNF_0 EQU CNF_PORT.CNF_0
.CNF_1 EQU CNF_PORT.CNF_1
.CNF_2 EQU CNF_PORT.CNF_2
.CNF_3 EQU CNF_PORT.CNF_3
.PENT_RESET EQU CNF_PORT.PENT_RESET
.SCORP_RESET EQU CNF_PORT.SCORP_RESET
.CNF_512 EQU CNF_PORT.CNF_512
/*
---------------------------------------------------
CNF_PORT ¢¨á¨â ­  4 ¢­¥è­¨å ¯®àâ å (#7C/#3C ¨ #74/#24) ç¥à¥§ ª àâã ¯®à⮢.
SYS_PORT £¢®§¤ï¬¨ ¢ ª®­ä¥ ­  #7C/#C
SYS_PORT ⮫쪮 ¯¥à¥ª«îç ¥â RAM/ROM
CNF_PORT ¬¥­ï¥â ¢áñ ®áâ «ì­®¥, ¯à¨ ¡¨â1=0 ¬¥­ïîâáï áâà ­¨æë í¬ã«ïâ®à  <20>‡“ ç¥à¥§ ¡¨â0
CNF_PORT
bit0 - TURBO: off/on ¨«¨ vROM:
#24 - áâà ­¨æ  ¨§ ¢­.¯®àâ  (#E0..#E3)/(#E4..#E7)
#74 - áâà ­¨æ  ¨§ ¢­.¯®àâ  #EB/#EF
bit1 - 1 - Set TURBO, 0 - Set vROM page
bit2 - 1 - CNF ena
bit3 - \_ cnf0..cnf3 -\
bit4 - / - \
bit5 - CNF_PN[5..0]_RESET by 1 - á¡à®á <20>¥­â. ¯®àâ  - -|---> ¤¥©áâ¢ãîâ ⮫쪮 ¯à¨ bit2=1
bit6 - CNF_SC_RESET by 1 - á¡à®á ‘ª®à¯. ¯®àâ  - /
bit7 - CNF_PN[7..6]_RESET by 0 - á¡à®á <20>¥­â-512 -/
<09>¥à¥ª«î祭¨¥ áâà ­¨æ vROM:
____________________________________________________
| ‡­ ç¥­¨¥ | ‡ ¯¨áì ¢® ¢­¥è­¨© ¯®àâ: |
| ¨§ ¢­ãâà. |____________________________________|
| ¯®àâ  | #24 ---- | | | |
| €«ìâ¥àë | #3C (-rom) | | | |
| ||| | #7C (+rom) | #74 | 1FFD | 7FFD |
| \|/ | bit1..0 | bit1..0 | bit1 | bit4 |
|_____________|____________|_________|______|______|
|E0 | 00 | | 1 | ... |
|E1 (+dos_on) | 00 | | 0 | ... |
|E2 | 00 | | 0 | 0 |
|E3 | 00 | | 0 | 1 |
|E4 | 01 | | 1 | ... |
|E5 (+dos_on) | 01 | | 0 | ... |
|E6 | 01 | | 0 | 0 |
|E7 | 01 | | 0 | 1 |
|EB | | 00 | ... | ... |
|EF | | 01 | ... | ... |
|_____________|____________|_________|______|______|
... - §­ ç¥­¨¥ ஫¨ ­¥ ¨£à ¥â
‘â ­¤ àâ­ë¥ áâà ­¨æë އ“ ¤«ï ®¡à §®¢ <20>‡“ ᯥªâà㬠:
Page Name Int.Port Page Name Int.Port
#42 BASIC 128 #E2 | ??? ??? ??? ??? #E6
#43 BASIC 48 #E3 | ??? ??? ??? ??? #E7
#44 TR-DOS #E1 | ??? ??? ??? ??? #E5
#45 BIOS (ZX_EXP) #E0 | ??? ??? ??? ??? #E4
#46 BIOS_3 (ZX_EXP) #EB |
#47 BIOS_4 (ZX_EXP2) #EF |
SYS_PORT:
bit0 - TURBO: on/off ¨«¨ BIOS:
0 - ROM 8
1 - ROM 0
bit1 - 1 - TURBO ena, 0 - ¯¥à¥ª«î祭¨¥ BIOS-PAGE
bit2 - 1 - CNF ena
bit3 - \_ cnf0..cnf3 -\
bit4 - / - \
bit5 - CNF_PN[5..0]_RESET by 1 - á¡à®á <20>¥­â. ¯®àâ  - -|---> ¤¥©áâ¢ãîâ ⮫쪮 ¯à¨ bit2=1
bit6 - CNF_SC_RESET by 1 - á¡à®á ‘ª®à¯. ¯®àâ  - /
bit7 - CNF_PN[7..6]_RESET by 0 - á¡à®á <20>¥­â-512 -/
”ã­ªæ¨ï bit0 ®¯à¥¤¥«ï¥âáï ç¥à¥§ bit1
bit7..bit3 áà ¡ â뢠î⠯ਠbit2 = 1
‡ ¯¨áì ¢ ¯®àâ #7C ¯®¤ª«îç ¥â <20>‡“ ¢ ®ª­® 0, § ¯¨áì ¢ ¯®àâ #3C ®âª«îç ¥â
<EFBFBD>‡“ ®â ®ª­  0, ¯®í⮬㠯®àâ 7/3C ­ §ë¢ ¥âáï System/User.
<EFBFBD>¥à¥ª«î祭¨¥ áâà ­¨æ <20>‡“ à ¡®â ¥â ¢ í⮬ ¢ à¨ ­â¥ â ª:
¢ <20>‡“ 16 áâà ­¨æ ®â 0 ¤® 15, ¯®àâ #5C ¨å ¯¥à¥ª«îç ¥â á bit3 xor /SYS (SYS_PORT bit[1..0] = b"0X" (BIOS: Part1/Part0))
¥á«¨ ᤥ« âì ld a,1 : out (sys_port_on),a - â® ­ã¬¥à æ¨ï áâà ­¨æ <20>‡“ ¡ã¤¥â ¯à ¢¨«ì­ ï ®â 0 ¤® 15,
¥á«¨ ᤥ« âì ld a,0 : out (sys_port_on),a - â® ­ã¬¥à æ¨ï áâà ­¨æ <20>‡“ ¡ã¤¥â á ¨­¢¥àâ¨à®¢ ­­ë¬ bit3:
áâà ­¨æë <20>‡“ 0-7 ¡ã¤ã⠭㬥஢ âìáï ª ª 8-15
áâà ­¨æë <20>‡“ 8-15 ¡ã¤ã⠭㬥஢ âìáï ª ª 0-7
¯¥à¥ª«î祭¨¥ áâà ­¨æ <20>‡“ ¯®à⮬ #5C ¯à®¨á室¨â ⮫쪮 ¯à¨ ¢®âª­ã⮩ <20>‡“ ç¥à¥§ sys_port.
Œ®¦­® ¯¥à¥ª«îç âì áâà ­¨æë ç¥à¥§ ¢­ãâ७­¨© ¯®àâ #8F, ⮣¤  bit4 í⮣® ¯®àâ  ¢ª«îç ¥â ᨣ­ « § ¯¨á¨ ¤«ï <20>‡“.
’ ª ¦¥ íâ®â ¯®àâ ¤ ñâ ¯àï¬ãî ­ã¬¥à æ¨î áâà ­¨æ ¯à¨ ãáâ ­®¢«¥­­®¬ bit4.
;-------------------------------------------------------------------------------------------------------------------------------
„«ï vROM ¬®¦­® ¨á¯®«ì§®¢ âì «î¡ë¥ ᢮¡®¤­ë¥ áâà ­¨æë އ“.
„«ï vRAM ­¥«ì§ï ¨á¯®«ì§®¢ âì:
#1FFD b4=1: #A0,#D0..#DF
*/
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
;
; ¯®àâë ã¯à ¢«¥­¨ï áâà ­¨æ ¬¨ ä áâà ¬
FastRAM:
.ON EQU #FB ; ‚ª«î祭¨¥ ªíè  IN A,(FastRAM.ON) - ¯à¨¡¨â® £¢®§¤ï¬¨ ¢ ª®­ä¥
.OFF EQU #7B ; Žâª«î祭¨¥ ªíè  IN A,(FastRAM.OFF) - ¯à¨¡¨â® £¢®§¤ï¬¨ ¢ ª®­ä¥
.SLOT0 EQU #5C ; <20>¥à¥ª«î祭¨¥ áâà ­¨æ ªíè  ¯à¨ FastRAM.ON ¢ ­ã«¥¢®¬ ®ª­¥ (bit0..1) - ¯à¨¡¨â® £¢®§¤ï¬¨ ¢ ª®­ä¥
;!TODO ¯®áâ ¢¨âì ¢ ª à⥠¯®à⮢ ­  ç⥭¨¥ ¯®àâ  #FB ¢­ãâ७­¨© ¯®àâ SLOT0
; ç⮡ ¯à¨ ¢ª«î祭¨¨ ªíè ¢ ॣ¨áâà á®åà ­ï« áì áâà ­¨æ  ¢ ¡ ­ª¥ 0 (¯®«¥§­® ¯à¨ ¢ª«î祭¨¨ ªíè ¨§ ¡ ­ª¨ ­®«ì)
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
;
; <EFBFBD>®àâ ã¯à ¢«¥­¨ï áâà ­¨æ ¬¨ <EFBFBD>‡“
; <EFBFBD>¥à¥ª«î祭¨¥ áâà ­¨æ <EFBFBD>‡“ ¯à¨ FastRAM.OFF ¢ ­ã«¥¢®¬ ®ª­¥.
ROM:
.SLOT0 EQU #5C ; <20>ਡ¨â® £¢®§¤ï¬¨ ¢ ª®­ä¥
.BIOS EQU SYS_PORT.BIOS ; ¤«ï sys_port.on D_ROM16OFF
.EXTENSION EQU SYS_PORT.EXTENSION ; ¤«ï sys_port.on D_ROM16ON
vROM:
.BIOS EQU CNF_PORT.BIOS ; ¤«ï sys_port.on D_ROM16OFF
.EXTENSION EQU CNF_PORT.EXTENSION ; ¤«ï sys_port.on D_ROM16ON
; ‡­ ç¥­¨ï:
; ­®¬¥à áâà ­¨æë bit3..0
; à §à¥è¥­¨¥ § ¯¨á¨ bit4 (0 - no Write; 1 - Write)
; ¯à¨ bit4 == 1 ¯à¨­ã¤¨â¥«ì­® ¢ëáâ ¢«ï¥âáï ¨ ¡«®ª¨àã¥âáï sys_pg ¢ 1 (ld a,1 : out (sys_port_on),a)
; ¯®ª  bit4 ­¥ á¡à®è¥­ ¯¥à¥ª«îç âì áâà ­¨æë <EFBFBD>‡“ system/user ç¥à¥§ ¯®àâ
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
;P_KBD_OUT EQU #F8 ;!TODO
;P_KBD_IN EQU #FE
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
; KEMPSTON
KEMPSTON:
.JOYSTICK EQU 7
; —⥭¨¥: ¯®àâ ¤¦®©á⨪  ¨ ᨣ­ «ë DRQ, INTRQ ª®­â஫«¥à  ¤¨áª®¢®¤ .
; ‡ ¯¨áì: § ¯¨áì ¢ ¬¨ªà®á奬㠌9 - á¨á⥬­ë© ¯®àâ TR-DOS
; Š¥¬¯áâ®­ ¨§ DOS_ON ¤«ï ᯥ樠«ì­®£® è­ãઠ LPT+JOY ç⮡ ¯®
; PC Link ª®­­¥ªâ¨âìáï ª PC
.PC_Link EQU #FF ;JOY_DOS
; <EFBFBD>  ª ¦¤ë© ¢­¥è­¨© ¯®àâ ¬ë誨 ¯à®¯¨á ­ ®¤¨­ ¢­¥è­¨©, §­ ç¨â
; ª®­ä  ¬®­¨â®à¨â áâ à訩  ¤à¥á, DCP+Conf ®¡à ¡®âª .
.MOUSE.X EQU #FBDF
.MOUSE.Y EQU #FFDF
; bit0: «¥¢ ï ª­®¯ª  (0=­ ¦ â )
; bit1: ¯à ¢ ï ª­®¯ª  (0=­ ¦ â )
; bit2: á।­ïï ª­®¯ª  (0=­ ¦ â )
; bit3: § à¥§¥à¢¨à®¢ ­® ¯®¤ ¥éñ ®¤­ã ª­®¯ªã (0=­ ¦ â )
; bit4..7: ª®®à¤¨­ â  ª®«ñᨪ 
.MOUSE.Buttons EQU #FADF
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
;
; Border
BorderColor EQU #FE
; 梥⠡®à¤îà  ¢ ०¨¬¥ á¯à¨­â¥à  ¡¥àñâáï ¨§ 4 ¯ «¨âàë.
; 梥⠢ ¯ «¨âॠ¢ëç¨á«ï¥âáï ¤ã¡«¨à®¢ ­¨¥¬ ¢ ­®¬¥à¥ æ¢¥â  ¡®à¤îà  bit2..0 ¢ bit5..3
; ¬®¦­® ¢ëç¨á«ïâì ¨â®£®¢ë© ¨­¤¥ªá ¢ ¯ «¨âॠ㬭®¦¥­¨¥¬ æ¢¥â  ­  9, «¨¡®
; âਠᤢ¨£  æ¢¥â  ¢«¥¢® ¯«îá ¨á室­ë© 梥â. Š ¦¤ë© 梥⠢ ¤¥ä®«â­®© ¯ «¨âà¥
; ¯®¢â®àï¥âáï 16 à §:
; 0 - BLACK color index #00 #00/#10 = 0
; 1 - BLACK color index #00 #00/#10 = 0
; 2 - BLUE color index #12 #12/#10 = 1
; 3 - BLUE color index #1B #1B/#10 = 1
; 4 - GREEN color index #24 #24/#10 = 2
; 5 - GREEN color index #2D #2D/#10 = 2
; 6 - CYAN color index #36 #36/#10 = 3
; 7 - CYAN color index #3F #3F/#10 = 3
;---------------------------------------
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
; ZX keyboard
;
; ü ÉÍÍËÍÍËÍÍËÍÍËÍÍËÍÍËÍÍËÍÍËÍÍËÍÍ»
; <EFBFBD>ˆA º 0º 1º 2º 3º 4º 4º 3º 2º 1º 0º
; ÈÍÍÊÍÍÊÍÍÊÍÍÊÍÍÊÍÍÊÍÍÊÍÍÊÍÍÊÍͼ
; ü ÚÄÄÂÄÄÂÄÄÂÄÄÂÄÄÒÄÄÂÄÄÂÄÄÂÄÄÂÄÄ¿ ü
; <EFBFBD> 3³ 1³ 2³ 3³ 4³ 5º 6³ 7³ 8³ 9³ 0³ 4 <EFBFBD>
; Ž ÃÄÄÅÄÄÅÄÄÅÄÄÅÄĺÄÄÅÄÄÅÄÄÅÄÄÅÄÄ´ Ž
; 2³ 5
; ÃÄÄÅÄÄÅÄÄÅÄÄÅÄĺÄÄÅÄÄÅÄÄÅÄÄÅÄÄ´
; <EFBFBD> 1³ L³EN³ 6 <EFBFBD>
; Ÿ ÃÄÄÅÄÄÅÄÄÅÄÄÅÄĺÄÄÅÄÄÅÄÄÅÄÄÅÄÄ´ Ÿ
; 0³CS³ M³SS³SP³ 7
; ÀÄÄÁÄÄÁÄÄÁÄÄÁÄÄÁÄÄÁÄÄÁÄÄÁÄÄÁÄÄÙ
; Š« ¢¨è  ­ ¦ â : ¡¨â = 0
; 3 - #F7 7 - #7F
; 2 - #FB 6 - #BF
; 1 - #FD 5 - #DF
; 0 - #FE 4 - #EF
; ‚®§¬®¦­® ®¤­®¢à¥¬¥­­®¥ ç⥭¨¥
; ­¥áª®«ìª¨å ¯®«ãà冷¢ ¯à¨ á¡à®á¥
; ­¥áª®«ìª¨å ¡¨â ¢ áâ à襬 ¡ ©â¥
;  ¤à¥á  ¯®àâ 
ZXKeys EQU #FE
.Line_0 EQU #FEFE
.Line_1 EQU #FDFE
.Line_2 EQU #FBFE
.Line_3 EQU #F7FE
.Line_4 EQU #EFFE
.Line_5 EQU #DFFE
.Line_6 EQU #BFFE
.Line_7 EQU #7FFE
; ????? —â®-â® ¯à® à áè¨à¥­­ë© ¡¨â ª« ¢ë ¢ #FE
; CS - caps shift
; SS - symbol shift
; FS - function shift
; Left Shift => CS
; Right SHIFT => CS
; Ctrl => SS
; Alt => SS+CS
; left WIN => ENTER+CS
; ESC => SPACE+CS
; Right WIN => ENTER+SS
; Right Mouse => SPACE+SS
; Back => 0+CS
; Tab => 1+CS
; Caps Lock => 2+CS
; PUp => 3+CS
; PDn => 4+CS
; <- => 5+CS
; Dn => 6+CS
; Up => 7+CS
; -> => 8+CS
; DEL => 9+CS
; ~ => A+SS
; '' => D+SS
; / => V+SS
; Grey * => B+SS
; , => N+SS
; . => M+SS
; [ => Y+SS
; ] => U+SS
; Grey 5 => I+SS
; ; => O+SS
; ' => P+SS
; Home => Q+SS
; Ins => W+SS
; End => E+SS
; - => J+SS
; Grey - => J+SS
; Grey + => K+SS
; = => L+SS
; F1 => 1+FS
; F2 => 2+FS
; F3 => 3+FS
; F4 => 4+FS
; F5 => 5+FS
; F6 => 6+FS
; F7 => 7+FS
; F8 => 8+FS
; F9 => 9+FS
; F10 => 0+FS
; Scroll Lock => CS+FS
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
; ᨭåà®­¨§ æ¨ï íªà ­ 
SCR_SyncPort EQU #FE
; bit 5 - ᨭåà®­¨§ æ¨ï íªà ­ 
; ª ¤à®¢ë© ¨¬¯ã«ìá
; ¤«¨­  - 4 ¬á
; ¯¥à¨®¤ - 20 ¬á
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ;
;
SLOT0 EQU #82 ; ­®¬¥à ¡ ­ª¨ 0
.MEM_ADDR EQU #00
SLOT1 EQU #A2 ; ­®¬¥à ¡ ­ª¨ 1
.MEM_ADDR EQU #4000
SLOT2 EQU #C2 ; ­®¬¥à ¡ ­ª¨ 2
.MEM_ADDR EQU #8000
SLOT3 EQU #E2 ; ­®¬¥à ¡ ­ª¨ 3
.MEM_ADDR EQU #C000
RGADR EQU #89 ; áâà ­¨æ  VIDEO-RAM ¤«ï ᯥªâà㬮¢áª®£® ०¨¬ 
PORT_Y EQU RGADR ; ¢¥à⨪ «ì­ ï ª®®à¤¨­ â  â®çª¨ ­  £à ä¨ç¥áª®¬ íªà ­
;RGSCR EQU #E9 = RGMOD
RGMOD EQU #C9 ; ¯®àâ ०¨¬  íªà ­ . <20>¥à¥ª«îç ¥â áâà ­¨æë ०¨¬  íªà ­ .
SCREEN_SWITCH EQU RGMOD
;RGACC EQU #A9
;PGACC EQU #FC
PORT_SCALE EQU #FC ; <20>®àâ ¬ áèâ ¡¨à®¢ ­¨ï
;VIDEO_PAGE EQU #50
Port_All_Mode EQU #204E
; bit0 - 0: ¢ëª«  ªá¥«¥à â®à  ¨ ¯à¥à뢠­¨© ®â ª« ¢¨ âãàë, ¢ª«î祭¨¥ ᯥª®¢áª®©  ¤à¥á æ¨¨ íªà ­ .
; bit1 -
; bit2 - ¢ª«/¢ëª« original zx spectrum waits
; bit3 - ¢ª«/¢ëª« ®â¤¥«ì­®¥ ®â  ªá¥«¥à â®à  ¯à¥à뢠­¨ï ®â ª« ¢¨ âãàë
; bit4 -
; bit5 -
; bit6 -
; bit7 -
PORT_ISA EQU #9FBD
Port_VSYNC EQU #BD ; #41 - 320Lines/49Hz, #61 - 312Lines/50Hz
.SET_320L EQU #41
.SET_312L EQU #61
FDD_Density EQU #BD
.SET_720 EQU #01
.SET_1440 EQU #21
Port_HardReset EQU #AC
.Step1 EQU #41
.Step2 EQU #40
;
;----------------------------------------------------------------------;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; €¤à¥á  áâà ­¨æ ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; SCR_PAGE EQU #FD
; PAL_PAGE EQU #FD
PAL_V_PAGE EQU #9E ;?????
PAL_SCP EQU #1E ;?????
; áâà ­¨æ  ¯®à⮢
DCP_PAGE EQU #40
; áâà ­¨æ  ¨á¯®«ì§ã¥¬ ï DSS
;DSS_PAGE EQU #FF
SHARED_PAGE EQU #FF
ZERO_PAGE EQU 0
; áâà ­¨æ  ¤«ï ¯¥à¥å¢ â  à¥á¥â  ¨ ¥éñ 祣®-â®
Spec_Page EQU #41
.page_0 EQU #FFF0
.page_1 EQU #FFF1
.page_2 EQU #FFF2
.page_3 EQU #FFF3
.RET_addr EQU #FFF4 ; word
.Reload_Version EQU #FFF6
.Stack_Point EQU #FFF7 ; word
; RST ®¡®§­ ç îâ, çâ® íâ® à¥á¥â ¯®á«¥ ¯¥à¥§ «¨¢ª¨ ª®­äë
.flag_R EQU #FFFB
.flag_S EQU #FFFC
.flag_T EQU #FFFD
; ZX ®¡®§­ ç îâ, çâ® § £à㦥­ë ROM ᯥªâà㬠
.flag_Z EQU #FFFE
.flag_X EQU #FFFF
;
.no_zx_rom EQU #38
.to_bios EQU 8
.init_acex EQU #E000 ;!TEST
.bitstream_pages EQU .init_acex-(4+1) ;!TEST ;!HARDCODE ª®«¨ç¥á⢮ áâà ­¨æ ¢ ªíè ¤«ï ¡¨áâਬ  ¯«îá ®¤­ 
;LD (#FFF3),A ; á®å࠭塞 ¢ ᯥæáâà ­¨æã ­®¬¥à Spec_Page
ZX_RAM_ID EQU 1 ; à ¬¡«®ª á® áâà ­¨æ ¬¨ ¤«ï ०¨¬  ᯥªâà㬠
MODE_PAGE EQU #FC ;????? ¥á«¨ à㤨¬¥­â, â® ã¡à âì ¨§ १¥à¢¨à®¢ ­¨ï ¢ â ¡«¨æ¥ áâà ­¨æ
RESET_PAGE EQU #A0
; ‘¡à®á ¬®¦¥â ¡ëâì ®áãé¥á⢫¥­ § ¯¨áìî ¢ áâà ­¨æã #A0, ãáâ ­®¢«¥­­ãî ¢ à áè¨à¥­­ãî
; áâà ­¨æã Scorpion-®¢áª®£® à á¯à¥¤¥«¥­¨ï ¯®à⮢, â.¥. á«¥¤ãî饩 ¯à®£à ¬¬®©:
; DI
; LD A,16
; LD BC,#1FFD
; OUT (C),A
; LD A,RESET_PAGE
; OUT (PAGE3),A
; LD (#C000),A ; ¢ íâ®â ¬®¬¥­â ¯®¤ ¥âáï RESET
;
MODULE DRIVE_CODES
SPRINTER:
.FDD EQU #00
.RAM EQU #60
.HDD EQU #80
.CDROM EQU #C0
TRDOS:
.FDD EQU #00
.RAM EQU #04
.HDD EQU #40
ENDMODULE
;---------------------------------------------------------------------[]
; Câà ­¨æ  á á¨á⥬­ë¬¨ ¯¥à¥¬¥­­ë¬¨ BIOS
;---------------------------------------------------------------------[]
SYS_PAGE EQU #FE
.ID_FLAG EQU #C000 ; ª®¯¨ï ID_SPRINTER ¤«ï ¤¥â¥ªâ  ¯®«­®© ¨­¨æ¨ «¨§ æ¨¨. 32 bytes max
.ID_FLAG.Size EQU #20
; vsync:
; bit0 1 - 320L, 0 - 312L
; bit1 1 - no waits, 0 - original waits
.VSyncAndWaits EQU #C020
;!TODO EQU #C021 - #C027
; STACK for FN_LIB end EQU #C028
.SYS_SP EQU #C0FE ; „Ž<E2809E>Ž<C5BD>ˆœ<E280B9>‰ ‘’…Š ¤«ï FN_LIB ¨ ¥éñ 祣®-â®
.DISK_TYPE EQU #C100 ; ¯¥à¥ ¤à¥á æ¨ï ¤¨áª®¢ (¯à®æ¥¤ãà ¬¨ ¤¨áª ¢ë¡¨à ¥âáï ¡¥§ ãçñâ  áâ à襣® ¡ ©â   ¤à¥á  ¨ ¯¥à¥¯®«­¥­¨ï)
.DISK_TYPE.A EQU #C100 ; ¯¥à¥ ¤à¥á æ¨ï ¤¨áªa A
.DISK_TYPE.B EQU #C101 ; ¯¥à¥ ¤à¥á æ¨ï ¤¨áªa B
.DISK_TYPE.C EQU #C102 ; ¯¥à¥ ¤à¥á æ¨ï ¤¨áªa C
.DISK_TYPE.D EQU #C103 ; ¯¥à¥ ¤à¥á æ¨ï ¤¨áªa D
.COPY_SLOT0 EQU #C104 ; ª®¯¨¨ §­ ç¥­¨© ¯®à⮢ áâà ­¨æ
.COPY_SLOT1 EQU #C105
.COPY_SLOT2 EQU #C106
.COPY_SLOT3 EQU #C107
.RAMD_VARS EQU #C108 ; ¯¥à¥¬¥­­ë¥ RAM-¤¨áª®¢ ;!TODO á®åà ­ïâì âã⠯ਧ­ ª ᬥ­ë à ¬¤¨áª  ¨«¨ ¥£® ¡«®ª  ¯ ¬ï⨠¤«ï ¤à ©¢¥à  DSS
.A_RAMD_VARS EQU #C118 ; ⥪ã騩 RAM-Disk
.SP_SAVE EQU #C11A ; ¬¥áâ® ¤«ï á®åà ­¥­¨ï  ¤à¥á  á⥪ 
.ERR_SAVE EQU #C11C
.COPY_RGADR EQU #C11D
.RAM_MSD EQU #C11E ; áâà ­¨æ  ¤«ï à ¡®âë ¢ MS-DOS
.MSD_SECS EQU #C11F ; —¨á«® ᥪâ®à®¢ ¢ MS-DOS
.MSD_NAME EQU #C120 ; €¤à¥á ¨¬¥­¨ ­ ©¤¥­­®£® ä ©« 
;.HDD_WRITE_PROTECT EQU #C122 ; ª®¯¨ï ᮤ¥à¦¨¬®£® ï祩ª¨ ª¬®á
.CURRENT_RAM_DRV EQU #C122 ; ⥪ã騩 ­ ¡®à à ¬¤¨áª®¢ ¤«ï ä㭪樨 SWAP_RAM_DRIVES
.INT_ADRESS EQU #C124 ;  ¤à¥á ®¡à ¡®â稪  ¯à¥à뢠­¨ï
.INT_PAGE EQU #C126 ; áâà ­¨æ  á ®¡à ¡®â稪®¬ ¯à¥à뢠­¨ï
.INT_ID EQU #C127 ; ¥á«¨ = #AA - §­ ç¨âì ®¡à ¡®â稪 ãáâ ­®¢«¥­
.DS_1440 EQU #C128 ; ä« £¨ ¯¥à¥ª«î祭¨ï 720/1440
.FilesPerSector EQU #C129 ;.F_P_S ; ç¨á«® ä ©«®¢ëå § ¯¨á¥© ¢ ᥪâ®à¥
.SectorsPerCluster EQU #C12A ;.S_P_C ; ç¨á«® ᥪâ®à®¢ ä ©«®¢ëå § ¯¨á¥© ¢ ª« áâ¥à¥ Root Dir
.COUNT_FL EQU #C12B ; áç¥â稪 ä ©«®¢ ¢ ᥪâ®à¥
.COUNT_SEC EQU #C12C ; áç¥â稪 ᥪâ®à®¢ ¢ ª â «®£¥
.CURRENT_HDD EQU #C12D ; [x] bit0 - master/slave, bit1: Primary/Secondary, bit2..3: ¨á¯®«ì§ãî騩áï à §¤¥« ¢ MBR
;!TODO EQU #C12E
;!TODO EQU #C12F
.FAT_FLAG EQU #C130 ; FAT ä« £ + FAT sector??? #81FF - FAT16, #01FF - FAT12
.MSD_CONT_SEC EQU #C132 ; ⥪ã騩 ᥪâ®à ¤«ï MS-DOS
.MSD_CONT_SEC2 EQU #C134
.S_X_H EQU #C136 ; ª®«¨ç¥á⢮ ᥪâ®à®¢ ­  樫¨­¤à¥
; âãâ åà ­¨âáï 㪠§ â¥«ì ­  â ¡«¨æã ¨­â 
; ¨á¯®«ì§ã¥¬ãî ä㭪樥© #F2 BIOS
.CONFIG_ALL EQU #C138 ; ®¯¨á â¥«ì ª®­ä¨£ãà æ¨¨ - 2 ¡ ©â 
;
;…áâì â ª®© ª®¤, ­ ¯à¨¬¥à:
; LD DE,CNF_0+D_TBOFF
; LD (SYS_PAGE.CONFIG_DE),DE
; ¯¥à¢ë© ¡ ©â ¤«ï SYS_PORT_ON/OFF (०¨¬ âãà¡® ¨ CNF).
; ¢â®à®© ¡ ©â ¤«ï ¢ë¡®à  ०¨¬  ᯥªâà㬠 ¯à¨ § ¯ã᪥ äã­ªæ¨ï¬¨ <20>‡“:
; 0 - ‚•Ž„ BASIC 128
; 1 - ‚•Ž„ BASIC 48
; 2 - ‚•Ž„ TR-DOS 128
; 3 - ‚•Ž„ EXPANSION
; 4 - ‚•Ž„ TR-DOS 48
; 5 - ‚•Ž„ BASIC 48 á § ªàëâ묨 128-¬¨ ¯®àâ ¬¨
.CONFIG_DE EQU #C13A ; ®¯¨á â¥«ì ª®­ä¨£ãà æ¨¨ - 2 ¡ ©â 
;
; 2 ¡ ©â  ª®­ä¨£ãà æ¨¨ - ­ á«¥¤¨¥ Sp97.
; Œ« ¤è¨© ¡ ©â ⥪ãé ï ª®­ä  (⨯  PG_SP1)
; ‘â à訩 ¡ ©â ¥á«¨ 0, â® íâ  ª®­ä   ªâ¨¢¨à®¢ ­ .
; Sp2000 â㤠 ¯¨å ¥âáï §­ ç¥­¨¥ ⨯  #FEFF
.CONFIG_BYTE EQU #C13E
;
;;;;
.WIN_MAP_SC EQU #C140
.WIN_TAB_SC EQU #C142 ;!FIXIT ­ ©â¨ £¤¥ ¨á¯®«ì§ãîâáï
.WIN_SAV_HL EQU #C144 ;!FIXIT ­ ©â¨ £¤¥ ¨á¯®«ì§ãîâáï
.WIN_SAV_DE EQU #C146 ;!FIXIT ­ ©â¨ £¤¥ ¨á¯®«ì§ãîâáï
.WIN_SAV_BC EQU #C148 ;!FIXIT ­ ©â¨ £¤¥ ¨á¯®«ì§ãîâáï
.WIN_ZG EQU #C14A
.WIN_PLACE_WIN EQU #C14C ;!FIXIT ­ ©â¨ £¤¥ ¨á¯®«ì§ãîâáï
.WIN_GR_MAP EQU #C14E ;!FIXIT ­ ©â¨ £¤¥ ¨á¯®«ì§ãîâáï
;;;;
.SYS_WORK1 EQU #C150
.SYS_WORK2 EQU #C152
.SYS_WORK3 EQU #C154
.SYS_WORK4 EQU #C156
.WIN_MAP_LAB1 EQU #C158
.WIN_MODE_SH EQU #C15C ; ¬¥áâ® ¯® ¢¥à⨪ «¨ á  ¤à¥á®¬
.WIN_MODE_SC EQU #C15E ; ¬¥áâ® ¯® £®à¨§®­â «¨ ¨ áâà ­¨æ  ¬®¤ë
.MSD_FAT_SEC EQU #C160 ; ­ ç «ì­ë© ᥪâ®à FAT
.MSD_FAT_SEC2 EQU #C162 ; ­ ç «ì­ë© ᥪâ®à FAT
.MSD_CAT_SEC EQU #C164 ; ­ ç «ì­ë© ᥪâ®à CAT
.MSD_CAT_SEC2 EQU #C166 ; ­ ç «ì­ë© ᥪâ®à CAT
.MSD_DAT_SEC EQU #C168 ; ­ ç «ì­ë© ᥪâ®à DAT
.MSD_DAT_SEC2 EQU #C16A ; ­ ç «ì­ë© ᥪâ®à DAT
.CLASTER_LEN EQU #C16C ; ¤«¨­  ª« áâ¥à  ¢ ¡ ©â å
.CLASTER_LEN2 EQU #C16E ; ¤«¨­  ª« áâ¥à  ¢ ¡ ©â å
; vsync:
; bit0 1 - 320L, 0 - 312L
; bit1 1 - no waits, 0 - original waits
;.VSyncAndWaits EQU #C170
.TMP_BUFFER EQU #C170; - #C17F
.TMP_BUFFER.Size EQU #10
.RAMD_KEYS EQU #C180 ; RAM-Disks ID's -  ¤à¥á ¢ SYS_PAGE ¤«ï ª ¦¤®© ¡ãª¢ë à ¬¤¨áª 
.RAMD_KEYS.E EQU #C180 ; ¯® ª®â®à®¬ã åà ­¨âáï ¥£® ­ ç «ì­ë© ¡«®ª ¯ ¬ïâ¨
.RAMD_KEYS.F EQU #C181
.RAMD_KEYS.G EQU #C182
.RAMD_KEYS.H EQU #C183
.RAMD_KEYS.I EQU #C184
.RAMD_KEYS.J EQU #C185
.RAMD_KEYS.K EQU #C186
.RAMD_KEYS.L EQU #C187
.RAMD_KEYS.M EQU #C188
.RAMD_KEYS.N EQU #C189
.RAMD_KEYS.O EQU #C18A
.RAMD_KEYS.P EQU #C18B
.RAMD_KEYS.Q EQU #C18C
.RAMD_KEYS.R EQU #C18D
.RAMD_KEYS.S EQU #C18E
.RAMD_KEYS.T EQU #C18F
.RAMD_KEYS.NUM EQU 16
.ZX_RAM_PAGES EQU #C190 ; ¨«¨ ⮫쪮 ®¤¨­ ¡ ©â - BlockID? ; vROM(10) + vRAM(32-1) + End_Byte(0); ®¤­  áâà ­¨æ  <20>€Œ ­¥ áç¨â ¥âáï - íâ® áâà ­¨æ  0.
.ZX_ROM_PAGES EQU #C191 ; block ID
.HDD_PARTITION_OFFSET EQU #C192 ; - #C195 ; [x] à ¡®â  á à §¤¥« ¬¨ ¤«ï ä㭪権 4x ¢ BIOS
;[ ] current dir ¤«ï TR-DOS HDD
.CURRENT_DIR_SEC_L EQU #C196 ; word
.CURRENT_DIR_SEC_H EQU #C198 ; word
.CURRENT_DIR_DRIVE EQU #C19A
.CURRENT_DIR_DRIVE_COPY EQU #C19B
;
;!TODO EQU #C19C..#C19F
;.LIB_TABLE EQU #C1A0..#C1BF ; â ¡«¨æë Library 32 ¡ ©â 
.IDE_0 EQU #C1C0
.IDE_1 EQU #C1C8
.IDE_2 EQU #C1D0
.IDE_3 EQU #C1D8
;
.FDD_0 EQU #C1E0
.FDD_1 EQU #C1E8
.FDD_TBL.Size EQU #10
;
; ª®¯¨¨ à ¬¤¨áª®¢ ¤«ï ¯¥à¥ª«î祭¨ï ¬¥¦¤ã ०¨¬ ¬¨ Spectrum / Sprinter
.Sp_RAMD_KEYS EQU #C1F0
.Sp_RAMD_KEYS.E EQU #C1F0
.Sp_RAMD_KEYS.F EQU #C1F1
.Sp_RAMD_KEYS.G EQU #C1F2
.Sp_RAMD_KEYS.H EQU #C1F3
.Sp_RAMD_KEYS.I EQU #C1F4
.Sp_RAMD_KEYS.J EQU #C1F5
.Sp_RAMD_KEYS.K EQU #C1F6
.Sp_RAMD_KEYS.L EQU #C1F7
.Sp_RAMD_KEYS.M EQU #C1F8
.Sp_RAMD_KEYS.N EQU #C1F9
.Sp_RAMD_KEYS.O EQU #C1FA
.Sp_RAMD_KEYS.P EQU #C1FB
.Sp_RAMD_KEYS.Q EQU #C1FC
.Sp_RAMD_KEYS.R EQU #C1FD
.Sp_RAMD_KEYS.S EQU #C1FE
.Sp_RAMD_KEYS.T EQU #C1FF
.Sp_RAMD_KEYS.NUM EQU .RAMD_KEYS.NUM
;
//°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
.RAMD_FAT EQU #C200 ; ALIGN 256 ; RAM Table
.RAMD_FAT.Size EQU 256
//°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
.MS_BPB EQU #C400 ; ¡ãä¥à BPB
//°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
; IDENTIFY ATA buffer
.HD_IDF_ADR EQU #C600 ; !FIXIT áâàãªâãன ᤥ« âì!!!
.HD_IDF_ADR.sec_cyl EQU .HD_IDF_ADR+4
.HD_IDF_ADR.heads EQU .HD_IDF_ADR+6 ; Number of heads
.HD_IDF_ADR.sectors EQU .HD_IDF_ADR+12 ; Number of sectors per track
.HD_IDF_ADR.LBA_CHS EQU .HD_IDF_ADR+99 ; LBA/CHS
.HD_IDF_ADR.ModelNum EQU .HD_IDF_ADR+54
//°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
.MS_DIR EQU #C800 ; ¡ãä¥à DIR sector
//°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
.MS_FAT EQU #CC00 ; ¡ãä¥à FAT sector
//°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
.MS_BUF EQU #D000 ; ¡ãä¥à DAT sector
//°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
//°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
.WIN_MAP_IX EQU #E000 ; ¤ ­­ë¥ ª àâ ®ª®­ (96 ®¯¨á â¥«¥© ¯® 32 ¡ ©â )
//°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
//°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
.CURRENT_TASK EQU #EC00 ; ’¥ªãé ï § ¤ ç 
.CURRENT_TASK.Size EQU #10
.CURRENT_TASK.MAX EQU 4 ; 4 = 0..3
;.CURRENT_TASK.RESERVED EQU #EC01 - #EC0F ; !TODO reserved
; „€<EFBFBD><EFBFBD> ‡€„€—
.TASK_0_DATA ZX_TASK_DATA = #EC10
.TASK_1_DATA ZX_TASK_DATA = #EC20
.TASK_2_DATA ZX_TASK_DATA = #EC30
.TASK_3_DATA ZX_TASK_DATA = #EC40
//°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
.SHARED_BUFFER_256b EQU #EC50 - #EFFF ; 256 ¡ ©â
//°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
;!TODO EQU #ED50 - #EFFF
.RESTART_ID EQU #F000 ; db "RESTART",0 ;First start identificator
.PowerOnTime EQU #F008 ; ¢à¥¬ï ¢ª«î祭¨ï ¨ ¯¥à¥§ £à㧪¨ #F008 - #F017
.USER_VARS EQU #F018 ; ¯¥à¥¬¥­­ë¥ ¯®«ì§®¢ â¥«ï
.SHARED_BUFFER_32b EQU #FEE0; - #FEFF
.CMOS_EMULATOR EQU #FF00
.USER_VARS_2 EQU .CMOS_EMULATOR + CMOS.MAX_ADDRESS + 1
;------------[ OLD ]-------------;
;.SYSTEM_ID EQU #C020 ; ¨á¯®«ì§®¢ « áì ¤«ï ¯®¤¬¥­ë ¡¨®á "NEW_BIOS"
;.MSD_FAT_SEC EQU #C122 ; ­ ç «ì­ë© ᥪâ®à FAT
;.INT_ADRESS EQU #C124 ; ­ ç «ì­ë© ᥪâ®à CAT
;.INT_PAGE EQU #C126 ; ­ ç «ì­ë© ᥪâ®à DAT
;.ClusterPerBank EQU #C12D ;.C_P_B ; <20>ˆ<CB86>Žœ‡“…Ÿ ç¨á«® ª« áâ¥à®¢ ­  ¡«®ª އ“
;.CLASTER_LEN EQU #C12E ; WORD ¤«¨­  ª« áâ¥à  ¢ ¡ ©â å
;.CMOS_FLAG_1 EQU #C170
;---------------------------------------------------------------------[]
;
; STRUCT FDD_INIT_TABLE
; DISK BYTE 0
; F144 EQU FDD_0+0
; SECTORS EQU FDD_0+1
; MS_SECS EQU .SECTORS
; HEADS EQU FDD_0+2
; CYLINDL EQU FDD_0+3
; CYLINDH EQU FDD_0+4
; B_P_S EQU FDD_0+5
; ENDS
;
MODULE FDD_INI_TABLE ; !FIXIT â ¡«¨æë ¤«ï FDD ãáâனá⢠32 ¡ ©â . ¯à¨¢ï§ âìáï ª áâàãªâãॠ¢ëè¥
FDD EQU 3 ; ????? å¥à ¥£® §­ ¥â, çâ® §  ¯ à ¬¥âà, à §®¡à âìáï
FDD_0 EQU SYS_PAGE.FDD_0
.DISK EQU FDD_0+0
.F144 EQU .DISK
.SECTORS EQU FDD_0+1
.MS_SECS EQU .SECTORS
.HEADS EQU FDD_0+2
.CYLINDL EQU FDD_0+3
.CYLINDH EQU FDD_0+4
;.B_P_S EQU FDD_0+5 ;WORD
.BytesPerSector EQU FDD_0+5 ;WORD
FDD_1 EQU SYS_PAGE.FDD_1
.DISK EQU FDD_1+0
.F144 EQU .DISK
.SECTORS EQU FDD_1+1
.MS_SECS EQU .SECTORS
.HEADS EQU FDD_1+2
.CYLINDL EQU FDD_1+3
.CYLINDH EQU FDD_1+4
;.B_P_S EQU FDD_1+5 ;WORD
.BytesPerSector EQU FDD_1+5
ENDMODULE
;
;
STRUCT BIOS_DATE_FORMAT ; !FIXIT ¯¥à¥¤¥« âì ¯®¤ áâàãªâãà㠢ᥠ¯¥à¥¬¥­­ë¥ #FE
hour BYTE
minute BYTE
second BYTE
day BYTE
month BYTE
year_high BYTE
year_low BYTE
reserved BYTE
ENDS
PowerOnDate BIOS_DATE_FORMAT = SYS_PAGE.PowerOnTime
RebootDate BIOS_DATE_FORMAT = PowerOnDate + BIOS_DATE_FORMAT
;#F008-#F00F : db hour,min,sec,day,month,century-1,year-century,reserved ; PowerOn date
;#F010-#F017 : db hour,min,sec,day,mouth,century-1,year-century,reserved ; Reboot date
;
;----------[CMOS Registers]-------------
CMOS.Port.Data:
.Read EQU #FFBD
.Write EQU #BFBD
CMOS.Port.Address:
.Write EQU #DFBD
CMOS.Register:
.seconds EQU #00
.alarmSeconds EQU #01
.minutes EQU #02
.alarmMinutes EQU #03
.hours EQU #04
.alarmHours EQU #05
.dayOfWeek EQU #06
.date EQU #07
.month EQU #08
.year EQU #09
.century EQU #32
; bit7 - Update-In-Progress. read-only
; bit6..4 - %010: to turn the oscillator on and allow the RTC to keep time.
; %11x: enables the oscillator but holds the countdown chain in reset.
; The next update occurs at 500ms after a pattern of 010 is written.
; bit3..0 - Rate Selector. These four rate-selection bits select one of
; the 13 taps on the 15-stage divider or disable the divider output.
; The tap selected can be used to generate an output square wave (SQW pin)
; and/or a periodic interrupt. The user can do one of the following:
; 1) Enable the interrupt with the PIE bit;
; 2) Enable the SQW output pin with the SQWE bit;
; 3) Enable both at the same time and the same rate; or
; 4) Enable neither.
.CTRLregA EQU #0A
; bit7 - SET. ¢ëáâ ¢«ïâì ¢ 1 ¯¥à¥¤ ãáâ ­®¢ª®© ¢à¥¬¥­¨/¤ âë, ¯®á«¥ ®¡à â­® ¢ 0.
; bit6 - Periodic Interrupt Enable (PIE)
; bit5 - Alarm Interrupt Enable (AIE)
; bit4 - Update-Ended Interrupt Enable (UIE)
; bit3 - Square-Wave Enable (SQWE)
; bit2 - Data Mode (DM). ä®à¬ â ¤ âë ¨ ¢à¥¬¥­¨: BCD/HEX
; bit1 - time format: 12/24
; bit0 - Daylight Saving Enable (DSE)
.CTRLregB EQU #0B
; bit7 - Interrupt Request Flag (IRQF)
; bit6 - Periodic Interrupt Flag (PF), read-only
; bit5 - Alarm Interrupt Flag (AF)
; bit4 - Update-Ended Interrupt Flag (UF)
; bit3..0 - Unused, read-only == 0
.CTRLregC EQU #0C ; read-only
; bit7 - Valid RAM and Time (VRT). …᫨ 1, â® ¡ â à¥ï ¢ ­®à¬¥, ¥á«¨ 0, â® ¡ â à¥ï ᤮嫠.
; bit6..0 - Unused, read-only == 0
.CTRLregD EQU #0D ; read-only
CMOS.USED_MIN_ADDRESS EQU #0E
CMOS.USED_MAX_ADDRESS EQU #3F
CMOS.MAX_ADDRESS EQU #7F
CMOS.TEST_CELL EQU CMOS.MAX_ADDRESS
CMOS.Cell.CheckSum EQU CMOS.USED_MAX_ADDRESS
MODULE CMOS_CELL
BootUpParams EQU #0E
.Mask.MemTest EQU %1000'0000 * 256 + BootUpParams ;!TODO ; MEMORY TEST
.Mask.SaveRAMdisks EQU %0100'0000 * 256 + BootUpParams ; SAVE RAM DISKS
.Mask.UpdBios EQU %0010'0000 * 256 + BootUpParams ;!TODO ; UPDATE BIOS
.Mask.StartDelay EQU %0001'1000 * 256 + BootUpParams ; START DELAY
.Mask.Language EQU %0000'0100 * 256 + BootUpParams ; LANGUAGE
;.Mask.Reserved EQU %0000'0010 * 256 + BootUpParams ; NOT USED
.Mask.QuickStartROM EQU %0000'0001 * 256 + BootUpParams ; QUICK START
Typematic EQU #0F
.Mask.Enabled EQU %1000'0000 * 256 + Typematic ; ON/OFF
.Mask.Delay EQU %0110'0000 * 256 + Typematic ; DELAY 00-250, 01-500, 10-750, 11-1000
;.Mask.Reserved EQU %0001'1000 * 256 + Typematic
.Mask.Rate EQU %0000'0111 * 256 + Typematic ; RATE 0-6, 1-8, 2-10, 3-12, 4-15, 5-20, 6-24, 7-30
;FDD-1, FDD-2, IDE-1, IDE-2, IDE-3, IDE-4, Ram Dsk, Recovery
BootDrives EQU #10
.Mask.SysDisk EQU %0000'0111 * 256 + BootDrives
.Mask.AltSysDisk EQU %0111'0000 * 256 + BootDrives
DrivesSetup_1 EQU #11
.Mask.FirstFDD EQU %0000'0011 * 256 + DrivesSetup_1 ; FDD First 720/1.44/NONE
.Mask.SecondFDD EQU %0000'1100 * 256 + DrivesSetup_1 ; FDD Second 720/1.44/NONE
.Mask.PriIDEmaster EQU %0011'0000 * 256 + DrivesSetup_1 ; IDE Pri Master Auto/Setup/Disabled
.Mask.PriIDEslave EQU %1100'0000 * 256 + DrivesSetup_1 ; IDE Pri Slave Auto/Setup/Disabled
DrivesSetup_2 EQU #20
.Mask.SecIDEmaster EQU %0011'0000 * 256 + DrivesSetup_2 ; IDE Sec Master Auto/Setup/Disabled
.Mask.SecIDEslave EQU %1100'0000 * 256 + DrivesSetup_2 ; IDE Sec Slave Auto/Setup/Disabled
IDE_Setup.PriMaster:
.CylindersLow EQU #12
.CylindersHigh EQU #13
.Heads EQU #14
.Sectros EQU #15
IDE_Setup.PriSlave:
.CylindersLow EQU #16
.CylindersHigh EQU #17
.Heads EQU #18
.Sectros EQU #19
IDE_Setup.SecMaster:
.CylindersLow EQU #37
.CylindersHigh EQU #38
.Heads EQU #39
.Sectros EQU #3A
IDE_Setup.SecSlave:
.CylindersLow EQU #3B
.CylindersHigh EQU #3C
.Heads EQU #3D
.Sectros EQU #3E
ScreenSET EQU #1A
.Mask.ColorStyle EQU %0000'1111 * 256 + ScreenSET ; COLOR STYLE For Setup
.Mask.Int EQU %0011'0000 * 256 + ScreenSET ; Frame Int (Default/Pentagon/Scorpion/Original)
.Mask.Sinc EQU %1100'0000 * 256 + ScreenSET ; Screen V-Sinc (Default/312 lines 50 HZ/320 Lines 49 Hz)
;!FIXIT <EFBFBD> ˆ<EFBFBD>Žœ‡“…Ÿ
HardwareConfiguration EQU #1B ; !!!!! or #36
.Mask.TurboMode EQU %0000'0001 ; TURBO MODE (D0..D3 - 6 OR 7)
.Mask.TurboExchange EQU %0000'0010 ; TURBO EXCHANGE ON/OFF - 1
.Mask.PortExchange EQU %0000'0100 ; PORT EXCHANGE ON/OFF - 1
.Mask.Computer EQU %0001'1000 ; COMPUTER: 0-SPRINTER, 1-SPECTRUM 256, 2-PENTAGON 128, 3-OTHER
;!FIXIT <EFBFBD> ˆ<EFBFBD>Žœ‡“…Ÿ
;REGISTER #35 - BASIC SETTING 1 (SYS_PAGE.CONFIG_DE+1 = #C13B on PAGE #FE)
;ZX_RST_TO EQU #1C - old variant
ZX_RST_TO EQU #35
.BASIC_128 EQU 0
.BASIC_48_RAM128 EQU 1
.TRDOS EQU 2
.EXPANSION EQU 3 ; (DON'T USE)
.TRDOS_48 EQU 4
.BASIC_48 EQU 5
;!FIXIT <20>ˆ<CB86>Žœ‡“…Ÿ
;REGISTER #36 - BASIC SETTING 2 ; áâ àë¥ §­ ç¥­¨ï ­¥¨§¢¥áâ­ë
; %0000 0111
ZX_CONFIG EQU #36
; ­®¢ë¥ §­ ç¥­¨ï:
.ZX_Sprinter EQU 0
.Pentagon_48 EQU 1
.Pentagon_128 EQU 2
.Pentagon_512 EQU 3
.Scorpion_256 EQU 4
.ZX_Spectrum_48 EQU 5
.ZX_Spectrum_128 EQU 6
Options EQU #1D
.Mask.HDDwriteProtect EQU %0000'0001 * 256 + Options ; [x] ã¡à ­®. à ¡®â «® ⮫쪮 á äã­ªæ¨ï¬¨ 5å ¨ ¯®áâ®ï­­® ¤ñ࣠«® CMOS ¯à¨ § ¯¨á¨
.Mask.RebootMSG EQU %0000'0010 * 256 + Options
.Mask.LoadZXroms EQU %0000'1100 * 256 + Options
TRDOSmount EQU #1E
.Mask.A EQU %0000'0011 * 256 + TRDOSmount ;Default - 0/ FDD - 1/ HDD - 2/ RMD - 3
.Mask.B EQU %0000'1100 * 256 + TRDOSmount
.Mask.C EQU %0011'0000 * 256 + TRDOSmount
.Mask.D EQU %1100'0000 * 256 + TRDOSmount
ScreenPosition EQU #1F
.Mask.X EQU %1111'0000 * 256 + ScreenPosition
.Mask.Y EQU %0000'1111 * 256 + ScreenPosition
CheckSum EQU CMOS.Cell.CheckSum
ENDMODULE
;-----------------------------------------------------------------------
GR_BIT_END EQU 7
S_BIT_END EQU 7
S_BIT_LIN EQU 6
S_BIT_MOD EQU 5
BIT_1440 EQU 1
BIT_MASK_1440 EQU %00000010
;---------------------------------------
; <EFBFBD>®àâë Š<EFBFBD>1818ƒ93 ¨ â.¯.
FDC_93:
.Command EQU #0F ; WG_COM R_COM ;Command/Status
.Track EQU #3F ; WG_TRK R_TRK ;Track
.Sector EQU #5F ; WG_SEC R_SEC ;Sector
.Data EQU #7F ; WG_DATA R_DAT ;Data
.DrvCTRL EQU #FF ; P_DOS_FF R_DSK ;Drive Control
;
;***************************************
; !FIXIT ¨á¯®«ì§®¢ âì áâàãªâãàã _sBOOT_SECTOR
SEC_SIZE EQU 11
CLAST_SIZE EQU 13
RESERV_SECS EQU 14
FATS_NUM EQU 16
FLS_NUM EQU 17
S_P_D EQU 19
FORM_CODE EQU 21
S_P_F EQU 22
S_P_T EQU 24
H_P_S EQU 26
SPECIAL_SECS EQU 28
FAT_ID EQU #36
;***************************************
; ***** - Žª®­­ë¥ ¯¥à¥¬¥­­ë¥ - *****
STRUCT Window_UserVars
SIZE_H BYTE 0 ; +00 £®à¨§®­â «ì­ë© à §¬¥à ¢ §­ ª®¬¥áâ å
SIZE_V BYTE 0 ; +01 ¢¥à⨪ «ì­ë© à §¬¥à ¢ §­ ª®¬¥áâ å
PLACE_H BYTE 0 ; +02 ¯®«®¦¥­¨¥ ¯® £®à¨§®­â «¨, ¢ §­ ª®¬¥áâ å
PLACE_V BYTE 0 ; +03 ¯®«®¦¥­¨¥ ¯® ¢¥à⨪ «¨ ¢ §­ ª®¬¥áâ å
MODE BYTE 0 ; +04 ०¨¬ §­ ª®¬¥áâ 
MODE_S BYTE 0 ; +05 ¤®¯®«­¨â¥«ì­ë© ०¨¬: ¡¨â 0 - Sp-SCR
GR_X BYTE 0 ; +06 ¯®«®¦¥­¨¥ ¯® X ¢ ¯®«¥ £à ä¨ª¨ (¯® §­ ª®¬¥áâ)
GR_Y BYTE 0 ; +07 ¯®«®¦¥­¨¥ ¯® Y ¢ ¯®«¥ £à ä¨ª¨ (¯® §­ ª®¬¥áâ)
ENDS
;
STRUCT Window_Variables
USER Window_UserVars 0,0,0,0,0,0,0,0
; ; Work vars
reg_HL WORD 0 ; +08 á®åà ­¥­¨¥ HL
reg_BC WORD 0 ; +10 á®åà ­¥­¨¥ BC
reg_DE WORD 0 ; +12 á®åà ­¥­¨¥ DE
V_BEG BYTE 0 ; +14 ­ ç «® ®ª­  ¯® ¢¥à⨪ «¨
V_END BYTE 0 ; +15 ª®­¥æ ®ª­  ¯® ¢¥à⨪ «¨
H_BEG BYTE 0 ; +16 ­ ç «® ®ª­  ¯® £®à¨§®­â «¨
H_END BYTE 0 ; +17 ª®­¥æ ®ª­  ¯® £®à¨§®­â «¨
SIZE_REL BYTE 0 ; +18 ॠ«ì­ë© à §¬¥à ¢ ᨬ¢®« å
MODE_E BYTE 0 ; +19 ¤®¯®«­¨â¥«ì­ë© ०¨¬ íªà ­ 
WORK_1 BYTE 0 ; +20 à ¡®ç ï ¯¥à¥¬¥­­ ï 1
WORK_2 BYTE 0 ; +21 à ¡®ç ï ¯¥à¥¬¥­­ ï 2
WORK_3 WORD 0 ; +22 à ¡®ç ï ¯¥à¥¬¥­­ ï 3
GRAF_X WORD 0 ; +24 ­ ç «ì­ ï ª®®à¤¨­ â  ¯® X
GRAF_Y WORD 0 ; +26 ­ ç «ì­ ï ª®®à¤¨­ â  ¯® Y
RESERVED BLOCK 4,0 ; +28 § à¥§¥à¢¨à®¢ ­® ¤® 32-å ¡ ©â®¢
ENDS
;-------------[]
; default window
WIN_ID_0 Window_Variables = SYS_PAGE.WIN_MAP_IX + Window_Variables * 0
;WIN_ID_1 Window_Variables = SYS_PAGE.WIN_MAP_IX + Window_Variables * 1
;WIN_ID_2 Window_Variables = SYS_PAGE.WIN_MAP_IX + Window_Variables * 2
; ...
;WIN_ID_95 Window_Variables = SYS_PAGE.WIN_MAP_IX + Window_Variables * 95
;-------------[]
; ; ***** - Žª®­­ë¥ ¯¥à¥¬¥­­ë¥ - *****
; WIN_SIZE_H EQU 0 ; £®à¨§®­â «ì­ë© à §¬¥à ¢ §­ ª®¬¥áâ å
; WIN_SIZE_V EQU 1 ; ¢¥à⨪ «ì­ë© à §¬¥à ¢ §­ ª®¬¥áâ å
; WIN_PLACE_H EQU 2 ; ¯®«®¦¥­¨¥ ¯® £®à¨§®­à «¨, ¢ §­ ª®¬¥áâ å
; WIN_PLACE_V EQU 3 ; ¯®«®¦¥­¨¥ ¯® ¢¥à⨪ «¨ ¢ §­ ª®¬¥áâ å
; WIN_MODE EQU 4 ; ०¨¬ §­ ª®¬¥áâ 
; WIN_MODE_S EQU 5 ; ¤®¯®«­¨â¥«ì­ë© ०¨¬
; ; ¡¨â 0 - Sp-SCR,
; WIN_GR_X EQU 6 ; ¯®«®¦¥­¨¥ ¯® X ¢ ¯®«¥ £à ä¨ª¨ (¯® §­ ª®¬¥áâ)
; WIN_GR_Y EQU 7 ; ¯®«®¦¥­¨¥ ¯® Y ¢ ¯®«¥ £à ä¨ª¨ (¯® §­ ª®¬¥áâ)
; WIN_HL EQU 8 ; á®åà ­¥­¨¥ HL
; WIN_BC EQU 10 ; á®åà ­¥­¨¥ BC
; WIN_DE EQU 12 ; á®åà ­¥­¨¥ DE
; WIN_V_BEG EQU 14 ; ­ ç «® ®ª­  ¯® ¢¥à⨪ «¨
; WIN_V_END EQU 15 ; ª®­¥æ ®ª­  ¯® ¢¥à⨪ «¨
; WIN_H_BEG EQU 16 ; ­ ç «® ®ª­  ¯® £®à¨§®­â «¨
; WIN_H_END EQU 17 ; ª®­¥æ ®ª­  ¯® £®à¨§®­â «¨
; WIN_SIZE_REL EQU 18 ; ॠ«ì­ë© à §¬¥à ¢ ᨬ¢®« å
; WIN_MODE_E EQU 19 ; ¤®¯®«­¨â¥«ì­ë© ०¨¬ íªà ­ 
; WIN_WORK_1 EQU 20 ; à ¡®ç ï ¯¥à¥¬¥­­ ï 1
; WIN_WORK_2 EQU 21 ; à ¡®ç ï ¯¥à¥¬¥­­ ï 2
; WIN_GRAF_X EQU 24 ; ­ ç «ì­ ï ª®®à¤¨­ â  ¯® X
; WIN_GRAF_Y EQU 26 ; ­ ç «ì­ ï ª®®à¤¨­ â  ¯® Y
;
;
;SW_ROM EQU #3CF9 ;!HARDCODE from zx roms
; IF .PROJ4
;RGADR EQU 0D0H
;RGSCR EQU 0D1H
;RGMOD EQU 0D2H
;RGACC EQU 0D3H
;PGACC EQU 0FCH
;PAGE0 EQU 0C0H
;PAGE1 EQU 0C5H
;PAGE2 EQU 0C2H
;PAGE3 EQU 0C0H
; ELSE
; ENDIF
;ALTERA EQU #1400 ; ¤à¥á ¢ <20>‡“ ᦠ⮩ áâà ­¨æë DCP
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
MODULE ACEX
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
DEFINE ACEX.RELOAD_STRING 'ACEX_30K_LOADING'
LOADER:
.String_Address EQU #FEF0
.Reload_Flag_Address EQU #FEE0
.Reload_Flag EQU 'MI'
Chip_ID:
.K30 EQU #397B
.K50 EQU #3C7B
;
; ¢­ãâ७­¨¥ ¯®àâë Altera (ç áâ¨ç­® ­¥à §®¡à ­® ®â Sp97)
;#00 <09>¥â ¯®àâ 
;#01 reserved
;#02 reserved
;#03 reserved
;#04 reserved
;#05 reserved
;#06 reserved
;#07 reserved
;#08 reserved
;#09 reserved
;#0A reserved
;#0B reserved
;#0C reserved
;#0D reserved
;#0E reserved
;#0F reserved
VG93_1F EQU #10 ; ¯®àâ ƒ93 (1F)
VG93_3F EQU #11 ; ¯®àâ ƒ93 (3F)
VG93_5F EQU #12 ; ¯®àâ ƒ93 (5F)
VG93_7F EQU #13 ; ¯®àâ ƒ93 (7F)
VG93_State EQU #14 ; ¯®àâ ­  § ¯¨áì - á®áâ®ï­¨¥ ª®­â஫«¥à  ¤¨áª®¢®¤  (¢­¥è­¨© ¯®àâ #FF)
JOY_VG93 EQU #15 ; ¯®àâ ­  ç⥭¨¥ - ¤¦®©á⨪ ¨ IRQ/INTRQ ª®­â஫«¥à  ƒ93
; <EFBFBD>®àâ FDD 720 ; #00BD - ¯¥à¥ª«î祭¨¥ ¢ 720 - § á« âì 1. ¬®¦­® LD A,#01 : OUT (#BD),A. <20> ¡®â ¥â c DOS ON «¨¡® ¢ CNF_3 á DOS OFF
FDD720 EQU #16
; <EFBFBD>®àâ FDD 1.44 ; #20BD - ¯¥à¥ª«î祭¨¥ ¢ 1.44 - § á« âì 1. ¬®¦­® LD A,#21 : OUT (#BD),A. <20> ¡®â ¥â c DOS ON «¨¡® ¢ CNF_3 á DOS OFF
FDD144 EQU #17
;#18 reserved
;#19 reserved
;#1A reserved
ISA_CTRL EQU #1B ; #9FBD
CMOS_DATA.READ EQU #1C ; #FFBD
CMOS_ADDR.WRITE EQU #1D ; #DFBD
CMOS_DATA.WRITE EQU #1E ; #BFBD
;#1F reserved
IDE_DATA_1F0 EQU #20 ; HDD - ॣ¨áâà ¤ ­­ëå. ¢­¥è­¨© #0050
IDE_ERROR_1F1 EQU #21 ; HDD - ॣ¨áâà á®áâ®ï­¨ï/®è¨¡®ª. ¢­¥è­¨© #0051
IDE_COUNTER_1F2 EQU #22 ; HDD - ॣ. ª®«-¢  ᥪ-®¢ ¤«ï R/W. ¢­¥è­¨© #0052
IDE_SECTOR_1F3 EQU #23 ; HDD - ॣ¨áâà ᥪâ®à . ¢­¥è­¨© #0053
IDE_CYLINDER_L_1F4 EQU #24 ; HDD - ॣ¨áâà ¤®à®¦ª¨-low. ¢­¥è­¨© #0054
IDE_CYLINDER_H_1F5 EQU #25 ; HDD - ॣ¨áâà ¤®à®¦ª¨-high. ¢­¥è­¨© #0055
IDE_DEVICE_HEAD_1F6 EQU #26 ; HDD - ॣ. heads/¢ë¡®à  mas-slave. ¢­¥è­¨© #4052
IDE_STATUS_CMD_1F7 EQU #27 ; HDD - ॣ¨áâà ª®¬ ­¤. ¢­¥è­¨© #4053
IDE_CONTROL_3F6 EQU #28 ; HDD - ¤®¯. ॣ¨áâà ã¯à ¢«¥­¨ï 3F6. ¢­¥è­¨© #4054
IDE_STATUS_3F7 EQU #29 ; HDD - ¤®¯. ॣ¨áâà á®áâ®ï­¨ï 3F7. ¢­¥è­¨© #4055
IDE_CHANEL_1 EQU #2A ; HDD - ¢ë¡¨à ¥â Secondary IDE, ¢­¥è­¨© #BC
IDE_CHANEL_2 EQU #2B ; HDD - ¢ë¡¨à ¥â Primary IDE, ¢­¥è­¨© #BC
VSYNC320 EQU #2C ; #40BD
VSYNC312 EQU #2D ; #60BD
RESET EQU #2E ; S_RESET - #40A4 - Reset port
UNKNOWN EQU #2F ; ????? ; #60BC - çâ®-â® ­  § ¯¨áì
;#30 - ????? ISA-SLOT 1 - ports R/W
;#31 - ????? ISA-SLOT 2 - ports R/W
ISA_Control EQU #32 ; ISA-signals such as RESET, AEN, A19...A14. ‚­¥è­¨© #9FBD
;#33 - ????? ISA-SLOT 2 - memory R/W
;#34 reserved
;#35 reserved
;#36 reserved
;#37 reserved
;#38 reserved
;#39 reserved
;#3A reserved
;#3B reserved
;#3C reserved
;#3D reserved
;#3E reserved
;#3F reserved
ZX_Keyboard EQU #40 ; ZX-Keyboard (¯®àâ FE)
;#41 reserved
;#42 reserved
;#43 reserved
;#44 reserved
;#45 reserved
;#46 reserved
;#47 reserved
;#48 reserved
;#49 reserved
;#4A reserved
;#4B reserved
;#4C reserved
;#4D reserved
;#4E reserved
;#4F reserved
;#50 reserved
;#51 reserved
AY_FFFD_READ EQU #52 ; AY_D READ ; AY-8910-port (FFFD) ç⥭¨¥ ¤ ­­ëå
;#53 reserved
;#54 reserved
;#55 reserved
;#56 reserved
;#57 reserved
Kempston_Mouse EQU #58 ; #FADF ¢­¥è­¨©
;#59 reserved
;#5A reserved
;#5B reserved
;#5C reserved
;#5D reserved
;#5E reserved
;#5F reserved
;#60 reserved
;#61 reserved
;#62 reserved
;#63 reserved
;#64 reserved
;#65 reserved
;#66 reserved
;#67 reserved
;#68 reserved
;#69 reserved
;#6A reserved
;#6B reserved
;#6C reserved
;#6D reserved
;#6E reserved
;#6F reserved
;#70 reserved
;#71 reserved
;#72 reserved
;#73 reserved
;#74 reserved
;#75 reserved
;#76 reserved
;#77 reserved
;#78 reserved
;#79 reserved
;#7A reserved
;#7B reserved
;#7C reserved
;#7D reserved
;#7E reserved
;#7F reserved
;- - - - - - - - - - - - - - - [RAM CELLS] - - - - - - - - - - - - - - -;
;#80 reserved
;#81 reserved
;#82 reserved
;#83 reserved
;#84 reserved
;#85 reserved
;#86 reserved
;#87 reserved
CBL_OUT EQU #88 ; Write to COVOX/COVOX-Blaster
CBL_SYS_PORT EQU #89 ; CBL_DIR
;#8A reserved
;#8B reserved
;#8C reserved 3000 -- AY_D READ ; !TEST
;#8D reserved 2000 -- AY_A WRITE ; ¢ ª®­ä¥ å à¤ª®¤ ­  #90
;#8E reserved 2000 -- AY_D WRITE ; ¢ ª®­ä¥ å à¤ª®¤ ­  #91
ROM_RG EQU #8F ; ¯®àâ ¯¥à¥ª«î祭¨ï áâà ­¨æ ROM ¨ FastRam, ¤ã¡«¨àã¥âáï ¢­¥è­¨¬ ¯®à⮬ #5C
AY_FFFD_WRITE EQU #90 ; AY-8910-port (FFFD) ;!!!!! § ¯¨áì  ¤à¥á ??????
AY_BFFD EQU #91 ; AY-8910-port (BFFD)
;#92 reserved
;#93 reserved
;#94 reserved
;#95 reserved
;#96 reserved
;#97 reserved
;#98 reserved
;#99 reserved
;#9A reserved
;#9B reserved
;#9C reserved
;#9D reserved
;#9E reserved
;#9F reserved
;#A0 reserved
;#A1 reserved
;#A2 reserved
;#A3 reserved
;#A4 reserved
;#A5 reserved
;#A6 reserved
;#A7 reserved
;#A8 reserved
;#A9 reserved
;#AA reserved
;#AB reserved
;#AC reserved
;#AD reserved
;#AE reserved
;#AF reserved
;#B0 reserved
;#B1 reserved
;#B2 reserved
;#B3 reserved
;#B4 reserved
;#B5 reserved
;#B6 reserved
;#B7 reserved
;#B8 reserved
;#B9 reserved
;#BA reserved
;#BB reserved
;#BC reserved
;#BD reserved
;#BE reserved
;#BF reserved
Scorp_1FFD EQU #C0
Pent_7FFD EQU #C1
Border_FE EQU #C2 ; #FE, write only
ALL_MODE EQU #C3 ; ‚­¥è­¨© - #204E
PORT_Y EQU #C4 ; #89
RGMOD EQU #C5 ; #C9
CNF_PORT EQU #C6 ; #3C / #7C, #24 / #74
SCALE EQU #C7 ;PGACC - SCALE_PORT (#FC)
;#C8 - ª®¯¨ï Scorp_1FFD
;#C9 - ª®¯¨ï Pent_7FFD
;#CA - ª®¯¨ï Border_FE
HOLD EQU #CB ; ‡ ¤ ñâ §­ ç¥­¨ï áçñâ稪®¢ ᨭåà®­¨§ â®à  ᨭåந¬¯ã«ìᮢ. %xxxx'yyyy - ¯®§¨æ¨ï íªà ­ 
;#CC - ª®¯¨ï PORT_Y
;#CD - ª®¯¨ï RGMOD
;#CE - ª®¯¨ï CNF_PORT
;#CF - ª®¯¨ï SCALE
;#D0 - vRAM page 0 for 512 kb (®ª­® C000-FFFF)
;#D1 - vRAM page 1 for 512 kb (®ª­® C000-FFFF)
;#D2 - vRAM page 2 for 512 kb (®ª­® C000-FFFF)
;#D3 - vRAM page 3 for 512 kb (®ª­® C000-FFFF)
;#D4 - vRAM page 4 for 512 kb (®ª­® C000-FFFF)
;#D5 - vRAM page 5 for 512 kb (®ª­® C000-FFFF)
;#D6 - vRAM page 6 for 512 kb (®ª­® C000-FFFF)
;#D7 - vRAM page 7 for 512 kb (®ª­® C000-FFFF)
;#D8 - vRAM page 8 for 512 kb (®ª­® C000-FFFF)
;#D9 - vRAM page 9 for 512 kb (®ª­® C000-FFFF)
;#DA - vRAM page A for 512 kb (®ª­® C000-FFFF)
;#DB - vRAM page B for 512 kb (®ª­® C000-FFFF)
;#DC - vRAM page C for 512 kb (®ª­® C000-FFFF)
;#DD - vRAM page D for 512 kb (®ª­® C000-FFFF)
;#DE - vRAM page E for 512 kb (®ª­® C000-FFFF)
;#DF - vRAM page F for 512 kb (®ª­® C000-FFFF)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
vROM: ;
.BIOS: EQU #E0 ; vROM page EXPANSION. Port #1FFD bit1=1 (#24 bit6=0, bit0=0)
.TR_DOS: EQU #E1 ; vROM page TR-DOS. PC = #3D00..#3DFF and #1FFD bit1=0 (#24 bit0=0)
.BASIC_128: EQU #E2 ; vROM page BASIC-128. #7FFD bit4=0 and #1FFD bit1=0 (#24 bit0=0)
.BASIC_48: EQU #E3 ; vROM page BASIC-48. #7FFD bit4=1 and #1FFD bit1=0 (#24 bit0=0)
; ;
.BIOS_2: EQU #E4 ; vROM page EXPANSION 2. Port #1FFD bit1=1 (#24 bit6=0, bit0=1)
.TR_DOS_2: EQU #E5 ; vROM page TR-DOS 2. PC = #3D00..#3DFF and #1FFD bit1=0 (#24 bit0=1)
.BASIC_128_2: EQU #E6 ; vROM page BASIC-128 2. #7FFD bit4=0 and #1FFD bit1=0 (#24 bit0=1)
.BASIC_48_2: EQU #E7 ; vROM page BASIC-48 2. #7FFD bit4=1 and #1FFD bit1=0 (#24 bit0=1)
.BIOS_3 EQU #EB ; vROM page BIOS-3 Port #74 = 0
;#EC - user's memory cell = FF ; á ¬®¦­® á®åà ­¨âì ­ã¦­®¥ §­ ç¥­¨¥ ;?????
;#ED - user's memory cell = 00 ; á ¬®¦­® á®åà ­¨âì ­ã¦­®¥ §­ ç¥­¨¥ ;?????
.BIOS_4 EQU #EF ; vROM page BIOS-4 Port #74 = 1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SLOT0 EQU #E8 ; RAM page (®ª­® 0000-3FFF)
SLOT1 EQU #E9 ; RAM page (®ª­® 4000-7FFF)
SLOT2 EQU #EA ; RAM page (®ª­® 8000-BFFF)
RET_PORT EQU #EE ; Page set after Soft RESET. ‹î¡®¥, ªà®¬¥ 0, §­ ç¥­¨¥ - áâà ­¨æ  ªã¤  ¯¥à¥¤ áâáï ã¯à ¢«¥­¨¥ ¯®á«¥ Soft reset
; “áâ ­®¢ª  §­ ç¥­¨ï ¢ ª ª®© «¨¡® ¯®àâ ®â #F0 ¤® #FF ¯à¨¢¥¤¥â ª ®¤­®¬ã ¨ ⮬㠦¥ १ã«ìâ âã, çâ® ¨ ¯à®áâ® ãáâ ­®¢ª  §­ ç¥­¨ï ¢ ¯®àâ #F0. á奬¥ ᤥ« ­ 
; ¯¥à¥ ¤à¥á æ¨ï ­®¬¥à  ¯®àâ  â ª, çâ® ¯à¨ §­ ç¥­¨¨ #Fx ­®¬¥à ¯®àâ  ¡¥à¥âáï ª ª #F0+Spectrum_PAGE, £¤¥ Spectrum_PAGE - ­®¬¥à ᯥªâà㬮¢áª®© áâà ­¨æë,  ¤à¥á㥬®©
; ¯® ¯®àâ ¬ #7FFD ¨ #1FFD. ’ ª¨¬ ®¡à §®¬ ¤®á⨣ ¥âáï ᮢ¬¥á⨬®áâì á <20>¥­â £®­®¬ ¨ ‘ª®à¯¨®­®¬ ¯® à á¯à¥¤¥«¥­¨î ¯ ¬ï⨠¨ ¤¥« ¥âáï ¢®§¬®¦­ë¬ ãáâ ­®¢ª  «î¡®£®
; ­®¬¥à  áâà ­¨æë á¯à¨­â¥à®¢áª®© ¯ ¬ï⨠¤«ï «î¡®© áâà ­¨æë ‘¯¥ªâà㬠.
;
SLOT3 EQU #F0 ; RAM page for 128/256 kb (®ª­® C000-FFFF)
;F1h - RAM page for 128/256 kb (®ª­® C000-FFFF)
;F2h - RAM page for 128/256 kb (®ª­® C000-FFFF)
;F3h - RAM page for 128/256 kb (®ª­® C000-FFFF)
;F4h - RAM page for 128/256 kb (®ª­® C000-FFFF)
;F5h - RAM page for 128/256 kb (®ª­® C000-FFFF)
;F6h - RAM page for 128/256 kb (®ª­® C000-FFFF)
;F7h - RAM page for 128/256 kb (®ª­® C000-FFFF)
;F8h - RAM page for 256 kb (®ª­® C000-FFFF)
;F9h - RAM page for 256 kb (®ª­® C000-FFFF)
;FAh - RAM page for 256 kb (®ª­® C000-FFFF)
;FBh - RAM page for 256 kb (®ª­® C000-FFFF)
;FCh - RAM page for 256 kb (®ª­® C000-FFFF)
;FDh - RAM page for 256 kb (®ª­® C000-FFFF)
;FEh - RAM page for 256 kb (®ª­® C000-FFFF)
;FFh - RAM page for 256 kb (®ª­® C000-FFFF)
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -;
;------------------------;
Config_ID:
.Sp2000 EQU #FEFF
; OLD:
.Sp97_DOOM EQU #FFF9
.Sp97_Video EQU #FFFA
.Sp97_Game EQU #FFFB
.Sp97_AY EQU #FFFC
.Sp97_2 EQU #FFFD
.Sp97_1 EQU #FFFE
;
Config_PG:
.Sp2000 EQU #FE ; [x] २­¨â ( ªá¥«ï, ­ ¯à¨¬¥à)
.Sp2000_SetUp EQU #FD ; [x] ¯¥à¥å¢ â à¥á¥â  á ¯¥à¥§ «¨¢ª®© ª®­äë
.Sp2000_SoftSetUp EQU #FC ; [x] ¯¥à¥å¢ â soft-à¥á¥â 
; áâà ­¨æë á ª®­ä®© ¤«ï Sp97, ¤«ï ᮢ¬¥á⨬®áâ¨ á ¤à¥¢­¨¬¨ ¯à®£ ¬¨
.Sp97_AY EQU #EA
.Sp97_1 EQU #EC
.Sp97_2 EQU #EE
;------------------------;
; DW #FEFF ; Sprinter-2000
;
; DW #FFFE ; Sprinter-1
; DB 0 ; ⨯  ªá¥«¥à â®à 
; DB 1 ; íªà ­
; DB 2 ; ª« ¢¨ âãà 
; DB 1 ; ª®¢®ªá;
;
; DW #FFFD ; Sprinter-2
; DB 2 ; ⨯  ªá¥«¥à â®à 
; DB 1 ; íªà ­
; DB 0 ; ª« ¢¨ âãà 
; DB 1 ; ª®¢®ªá;
;
; DW #FFFC ; AY
; DB 0 ; ⨯  ªá¥«¥à â®à 
; DB 0 ; íªà ­
; DB 2 ; ª« ¢¨ âãà 
; DB 0 ; ª®¢®ªá;
;
; DW #FFF9 ; ¨¤¥­â¨ä¨ª â®à ª®­ä¨£ãà æ¨¨ DooM
; DB 3 ; ⨯  ªá¥«¥à â®à 
; DB 1 ; íªà ­
; DB 0 ; ª« ¢¨ âãà 
; DB 2 ; ª®¢®ªá (¡« áâ¥à)
;------------------------;
;;;;;;;
ENDMODULE
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
;
/*
¢­ãâ७­¨¥ ¯®àâë Z84C15:
#10
#11
#12
#13
#14
#15
#16
#17
#18
#19
#1A
#1B
#1C
#1D
#1E
#1F
#EE
#EF
#F0
#F1
#F4
*/
;=======================================
;===============[ CMOS ]================ ; !TODO
;REGISTER #0E
; %10000000 - MEMORY TEST
; %01000000 - SAVE RAM DISKS
; %00100000 - UPDATE BIOS
; %00011000 - START DELAY
; %00000100 - LANGUAGE
; %00000010 - NOT USED ;!TODO
; %00000001 - QUICK START
;REGISTER #0F
; %10000000 - TYPEMATIC ON/OFF
; %01100000 - TYPEMATIC DELAY 00-250, 01-500, 10-750, 11-1000
; %00011111 - TYPEMATIC RATE 0-6, 1-8, 2-10, 3-12, 4-15, 5-20, 6-24, 7-30
;REGISTER #10
; %00000111 - SYSTEM DISK
; 1st FDD
; 2nd FDD
; 1st IDE
; 2nd IDE
; 3rd IDE
; 4th IDE
; Ram Dsk
; Recovery
; %01110000 - ALT SYSTEM DISK
;REGISTER #11
; %00000011 - FDD FIRST 720 / 1.44 / NONE
; %00001100 - FDD SECOND
; %00110000 - IDE Primary MASTER AUTO / SETUP / DISABLED
; %11000000 - IDE Primary SLAVE -----//------
;-------------[HDD PRIMARY]-------------
;REGISTER #12 - CYLINDERS (MASTER) L
;REGISTER #13 - -----//------ H
;REGISTER #14 - HEADS (MASTER)
;REGISTER #15 - SECTORS (MASTER)
;
;REGISTER #16 - CYLINDERS (SLAVE) L
;REGISTER #17 - -----//------ H
;REGISTER #18 - HEADS (SLAVE)
;REGISTER #19 - SECTORS (SLAVE)
;----------------------------------------
;------------[HDD Secondary]-------------
;REGISTER #37 - CYLINDERS (MASTER) L
;REGISTER #38 - -----//------ H
;REGISTER #39 - HEADS (MASTER)
;REGISTER #3A - SECTORS (MASTER)
;
;REGISTER #3B - CYLINDERS (SLAVE) L
;REGISTER #3C - -----//------ H
;REGISTER #3D - HEADS (SLAVE)
;REGISTER #3E - SECTORS (SLAVE)
;----------------------------------------
;REGISTER #1A
; %00001111 - COLOR STYLE
; %00110000 - Frame Int (Default/Pentagon/Scorpion/Original)
; %11000000 - Screen V-Sinc (Default/312 lines 50 HZ/320 Lines 49 Hz)
;!FIXIT <EFBFBD> ˆ<EFBFBD>Žœ‡“…Ÿ
;REGISTER #1B - HARDWARE CONFIGURATION
; %00000001 - TURBO MODE (D0..D3 - 6 OR 7)
; %00000010 - TURBO EXCHANGE ON/OFF - 1
; %00000100 - PORT EXCHANGE ON/OFF - 1
; %00011000 - COMPUTER:
; 0-SPRINTER
; 1-SPECTRUM 256
; 2-PENTAGON 128
; 3-OTHER
; %11100000 - RESERVED ;!TODO
;!FIXIT <EFBFBD> ˆ<EFBFBD>Žœ‡“…Ÿ
;REGISTER #1C - RESET MODE
; 0-RESET 128 Basic
; 1-RESET 48 Basic & 128 mem
; 2-RESET TR-DOS & 128 mem
; 3-RESET EXPANSION (Disabled)
; 4-RESET TR-DOS & 48 mem
; 5-RESET 48 Basic
;REGISTER #1D
; %00000010 - Reboot message
; %00000001 - HDD Write protect
;REGISTER #1E
; %00000011 - TR DOS A: Default / FDD / HDD / RMD
; %00001100 - TR DOS B: Default / FDD / HDD / RMD
; %00110000 - TR DOS C: Default / FDD / HDD / RMD
; %11000000 - TR DOS D: Default / FDD / HDD / RMD
;REGISTER #1F ;R06
; %11110000 - X-Screen position
; %00001111 - Y-Screen position
;REGISTER #20
; %00110000 - IDE Secondary MASTER AUTO / SETUP / DISABLED
; %11000000 - IDE Secondary SLAVE -----//------
; .
; .
;REGISTER#35 - BASIC SETTING 1 (SYS_PAGE.CONFIG_DE+1 = #C13B on PAGE #FE)
; 0 - RESET TO BASIC 128
; 1 - RESET TO BASIC 48 (RAM128)
; 2 - RESET TO TRDOS
; 3 - RESET TO EXPANSION (DON'T USE)
; 4 - RESET TO 48 TRDOS
; 5 - RESET TO 48 BASIC (RAM48)
;REGISTER#36 - BASIC SETTING 2 ; áâ àë¥ §­ ç¥­¨ï ­¥¨§¢¥áâ­ë
; %0000 0111
; ­®¢ë¥ §­ ç¥­¨ï:
; 0 - ZX-Sprinter
; 1 - Pentagon 48
; 2 - Pentagon 128
; 3 - Pentagon 512
; 4 - Scorpion 256
; 5 - ZX Spectrum 48
; 6 - ZX Spectrum 128
;REGISTER #3F - CHECKSUM SETTING
;=======================================
;
;-------------------------------[ TEST ]--------------------------------
MODULE IDE
;
; 0 - ª®¯¨ï DRV_HEAD. bit6 - LBA/CHS, bit4 - MASTER/SLAVE, bit0 - Primary/Secondary Chanel
; 1 - ᥪâ®à®¢ ­  ¤®à®¦ª¥
; 2 - ç¨á«® £®«®¢®ª
; 3 - ª®«¨ç¥á⢮ 樫¨­¤à®¢ ¬«.
; 4 - ª®«¨ç¥á⢮ 樫¨­¤à®¢ áâ à訩.
; 5 - ᥪâ®à®¢ ­  樫¨­¤à ¬«.
; 6 - ᥪâ®à®¢ ­  樫¨­¤à áâ àè.
; 7 - ⨯ ¤à ©¢  HDD - 1, CD-ROM - 2, NONE - #FF
STRUCT HDD_INIT_TABLE
DRV_Flags BYTE ; 0 DRVHD_H
SectorsPerTrack BYTE ; 1 SC_PT_H
HeadsNumber BYTE ; 2 HEADS_H
CylinderNumberLow BYTE ; 3 CYL_L_H
CylinderNumberHigh BYTE ; 4 CYL_H_H
SectorsPerCylinderLow BYTE ; 5 SPCLL_H
SectorsPerCylinderHigh BYTE ; 6 SPCLH_H
DriveType BYTE ; 7 DTYPE_H
ENDS
;
INIT_TBL_IDE0 HDD_INIT_TABLE = SYS_PAGE.IDE_0 ; !HARDCODE table in SYS_PAGE
INIT_TBL_IDE1 HDD_INIT_TABLE = SYS_PAGE.IDE_1 ; !HARDCODE table in SYS_PAGE
INIT_TBL_IDE2 HDD_INIT_TABLE = SYS_PAGE.IDE_2 ; !HARDCODE table in SYS_PAGE
INIT_TBL_IDE3 HDD_INIT_TABLE = SYS_PAGE.IDE_3 ; !HARDCODE table in SYS_PAGE
; <20>¥£¨áâà  ¤à¥á  ­ ª®¯¨â¥«ï (#3F7 ç⥭¨¥) ᮤ¥à¦¨â ­®¬¥à £®«®¢ª¨ ¨ HDD, ¢ë¡à ­­ë¥ ¢ ¯à¥¤ë¤ã饩 ®¯¥à æ¨¨.
; <20>¨âë 0, 1 - /DSO, /DS1 - ¡¨âë ¢ë¡®à  á®®â¢¥âáâ¢ãî饣® ­ ª®¯¨â¥«ï 0 ¨«¨ 1.
; <20>¨âë 2...5 - /HSO../HS3 - ᮤ¥à¦ â ¤¢®¨ç­ë© ª®¤ ¢ë¡à ­­®© £®«®¢ª¨.
; <20>¨â 6 - Write Gate - ¡¨â ¢ë¯®«­¥­¨ï § ¯¨á¨,  ªâ¨¢¥­ ¢® ¢à¥¬ï ®¯¥à æ¨¨ § ¯¨á¨
Write:
.Data EQU #0150 ; cnf 20 ; HDW_DAT W170 ; #1F0 Data register
.Features EQU #0151 ; cnf 21 ; HDW_ERR W171 ; #1F1 Features register
.Counter EQU #0152 ; cnf 22 ; HDW_CNT P_S_CNT W172; #1F2 Counter register
.Sector EQU #0153 ; cnf 23 ; HDW_SEC P_S_NUM W173; #1F3 Sector register
.CylinderLow EQU #0154 ; cnf 24 ; HDW_CLL P_C_LOW W174; #1F4 Cylinder Low register
.CylinderHigh EQU #0155 ; cnf 25 ; HDW_CLH P_C_HIG W175; #1F5 Cylinder High register
.DeviceHead EQU #4152 ; cnf 26 ; HDW_DRV P_HD_CS ; #1F6 Device/Head register
.Command EQU #4153 ; cnf 27 ; HDW_COM P_CMD ; #1F7 Command register
.DeviceControl EQU #4154 ; cnf 28 ; ; #3F6 Device Control register
Read:
.Data EQU #0050 ; cnf 20 ; HDR_DAT P_DATS R170; #1F0 Data register
.Error EQU #0051 ; cnf 21 ; HDR_ERR P_ERR R171; #1F1 Error register
.Counter EQU #0052 ; cnf 22 ; HDR_CNT R172; #1F2 Counter register
.Sector EQU #0053 ; cnf 23 ; HDR_SEC R173; #1F3 Sector register
.CylinderLow EQU #0054 ; cnf 24 ; HDR_CLL R174; #1F4 Cylinder Low register
.CylinderHigh EQU #0055 ; cnf 25 ; HDR_CLH R175; #1F5 Cylinder High register
.Control EQU #4052 ; cnf 26 ; HDR_DRV R176; #1F6 Device/Head register
.Status EQU #4053 ; cnf 27 ; HDR_CTL P_HDST R177; #1F7 Status (Control) register
.AltStatus EQU #4054 ; cnf 28 ; ; #3F6 Alternate Status register
.DrvAddress EQU #4055 ; cnf 29 ; ; #3F7
ErrorBit:
.Abort EQU 2
ErrorByte:
.Abort EQU #04
ControlBit: ; 0000 0000 ; Bits for IDE.Read.Status
.Busy EQU 7;ÄÄÄÄÄÄÄÄÙ³³³ ³³³³ ; BSY
.Ready EQU 6;ÄÄÄÄÄÄÄÄÄÙ³³ ³³³³ ; RDY
.Fault EQU 5;ÄÄÄÄÄÄÄÄÄÄÙ³ ³³³³ ; DMA ready for ATAPI
.SeekComplete EQU 4;ÄÄÄÄÄÄÄÄÄÄÄÙ ³³³³ ; Service for ATAPI
.DataRequest EQU 3;ÄÄÄÄÄÄÄÄÄÄÄÄÄÙ³³³ ; DRQ
.CorrectedData EQU 2;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ³³ obsolete
.Index EQU 1;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ³ obsolete ; .SenseDataAvailable
.Error EQU 0;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ; Indicates an error occurred. Send a new command to clear it (or nuke it with a Software Reset).
.CheckCondition EQU .Error
.StreamError EQU .Fault
.ATAPI_DMAReady EQU .Fault
.ATAPI_Service EQU .SeekComplete
ControlByte: ; Bytes for IDE.Read.Status
.Busy EQU #80 ; BSY
.Ready EQU #40 ; RDY
.Fault EQU #20
.SeekComplete EQU #10
.DataRequest EQU #08 ; DRQ
.CorrectedData EQU #04 ; obsolete
.Index EQU #02 ; obsolete
.Error EQU #01 ; Indicates an error occurred. Send a new command to clear it (or nuke it with a Software Reset).
.CheckCondition EQU .Error
.StreamErrror EQU .Fault
.ATAPI_DMAReady EQU .Fault
.ATAPI_Service EQU .SeekComplete
/*
Bit Abbreviation Function
0 ERR Indicates an error occurred. Send a new command to clear it (or nuke it with a Software Reset).
1 IDX Index. Always set to zero.
2 CORR Corrected data. Always set to zero.
3 DRQ Set when the drive has PIO data to transfer, or is ready to accept PIO data.
4 SRV Overlapped Mode Service Request.
5 DF Drive Fault Error (does not set ERR).
6 RDY Bit is clear when drive is spun down, or after an error. Set otherwise.
7 BSY Indicates the drive is preparing to send/receive data (wait for it to clear). In case of 'hang' (it never clears), do a software reset.
*/
Chanel:
.Set_0: EQU #20BC ; ¤«ï ¨á¯®«ì§®¢ ­¨ï á ¯®«­®©  ¤à¥á æ¨¥© (ॣ BC), § á« âì '1'
.Set_1: EQU #00BC ; ¤«ï ¨á¯®«ì§®¢ ­¨ï á ¯®«­®©  ¤à¥á æ¨¥© (ॣ BC), § á« âì '1'
.Set: EQU #BC ; ¤«ï ¨á¯®«ì§®¢ ­¨ï á ­¥¯®«­®©  ¤à¥á æ¨¥© out (#bc),a. § á« âì '1'
.Primary EQU #21 ; ¤«ï ¨á¯®«ì§®¢ ­¨ï á ­¥¯®«­®©  ¤à¥á æ¨¥© out (#bc),a. ‚ë¡®à ª ­ «  0
.Secondary EQU #01 ; ¤«ï ¨á¯®«ì§®¢ ­¨ï á ­¥¯®«­®©  ¤à¥á æ¨¥© out (#bc),a. ‚ë¡®à ª ­ «  1
Device:
.HDD EQU 1
.CDROM EQU 2
.NONE EQU #FF
Drive:
.Master EQU %1010'0000
.Slave EQU %1011'0000
ATAPI:
.Nop EQU #00
.Reset EQU #08
.Packet EQU #A0
.IdentifyPackedDevice EQU #A1
;
ATA:
; ATA-2 commands ************************
.ExecuteDeviceDiagnostic EQU #90
.IdentifyDevice EQU #EC
.InitializeDeviceParameters EQU #91
.ReadSectorsWithRetry EQU #20
.ReadSectors EQU #21
.ReadVerifySectorsWithRetry EQU #40
.ReadVerifySectors EQU #41
.Seek EQU #70
.WriteSectorsWithRetry EQU #30
.WriteSectors EQU #31
; ****** additional commands ************
.AcknowledgeMediaChange EQU #db
.PostBoot EQU #dc
.PreBoot EQU #dd
.DoorLock EQU #de
.DoorUnlock EQU #df
.DownloadMicrocode EQU #92
; Power Mode
.CheckPowerMode EQU #98
.CheckPowerMode2 EQU #e5
.Idle EQU #97
.Idle2 EQU #e3
.IdleImmediate EQU #95
.IdleImmediate2 EQU #e1
.Sleep EQU #99
.Sleep2 EQU #e6
.Standby EQU #96
.Standby2 EQU #e2
.StandbyImmediate EQU #94
.StandbyImmediate2 EQU #e0
;
.MediaEject EQU #ed
.Nop EQU #00
.ReadBuffer EQU #e4
.ReadDMA EQU #c8
.ReadLong EQU #22
.ReadMultiple EQU #c4
.Recalibrate EQU #10
.SetFeatures EQU #ef
.SetFeatures.Disable8bit EQU #81 ; Disable 8-bit data transfers (¯¨á âì ¢ .Features)
.SetFeatures.DisableWriteCache EQU #82 ; Disable write cache (¯¨á âì ¢ .Features)
.SetMultipleMode EQU #c6
.WriteBuffer EQU #e8
.WriteDMA EQU #ca
.WriteLong EQU #32
.WriteMultiple EQU #c5
.WriteSame EQU #e9
.WriteVerify EQU #3c
; **** device specific commands *************
.FormatTrack EQU #50
; command modificators:
; for ReadSectors, WriteSectors, ReadVerifySectors,
; ReadDMA, WriteDMA, ReadLong, WriteLong
.WithoutRetry EQU #01
; ATA
; .Master EQU #A0
; .Slave EQU #B0
;
; ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
; º Š ª à ¡®â ¥â á奬  ç⥭¨ï/§ ¯¨á¨? º
; º º
; º Z80 ÚÄÄÄ¿ º
; º bus ³Buf³ º
; º ÄÄÂÄÄ´<Ä>ÃÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄ<Ä> Low Byte º
; º ³ ³ 1 ³ ³ º
; º ³ ÃÄÄÄ´ ÚÄÄÄ¿ ³ º
; º ³ ³Buf³ ³Reg³ ³ º
; º ÀÄÄ´ÄÄ>ÃÄÄÂÄÄ´ÄÄ>ÃÄÄÙ HDD bus º
; º ³ 2 ³ ³ ³ 3 ³ º
; º ÀÄÄÄÙ ³ ÀÄÄÄÙ º
; º ³ º
; º ÀÄÄÄÄÄÄÄÄÄÄÄÄ<Ä> High Byte º
; º º
; º 1. —⥭¨¥ ¢á¥å ॣ¨áâ஢, ªà®¬¥ ॣ¨áâà  ¤ ­­ëå, A8 = 0 º
; º „ ­­ë¥ á 設ë HDD ç¥à¥§ ¡ãä¥à 1 ¯¥à¥¤ îâáï ¢ ¯à®æ¥áá®à. º
; º ’®«ìª® ¬« ¤è¨© ¡ ©â, áâ à訩 ­¥ ­ã¦¥­. º
; º º
; º 2.1 —⥭¨¥ ॣ¨áâà  ¤ ­­ëå, A8 = 0 º
; º „ ­­ë¥ á 設ë HDD ç¥à¥§ ¡ãä¥à 1 ¯¥à¥¤ îâáï ¢ ¯à®æ¥áá®à. º
; º ’®«ìª® ¬« ¤è¨© ¡ ©â, áâ à訩 ­ã¦¥­ ¨ ®­ § é¥«ª¨¢ ¥âáï ¢ º
; º ॣ¨áâॠ3 º
; º º
; º 2.2 —⥭¨¥ ॣ¨áâà  ¤ ­­ëå, A8 = 1 º
; º „ ­­ë¥ ¨§ ॣ¨áâà  3 ç¥à¥§ ¡ãä¥à 1 ¯¥à¥¤ îâáï ¢ ¯à®æ¥áá®à. º
; º - áâ à訩 ¡ ©â - HDD ¢ íâ®â ¬®¬¥­â ­¥ ¢ë¡¨à ¥âáï º
; º º
; º 3. ‡ ¯¨áì ¢á¥å ॣ¨áâ஢, ªà®¬¥ ॣ¨áâà  ¤ ­­ëå, A8 = 1 º
; º „ ­­ë¥ á 設ë Z80 ç¥à¥§ ¡ãä¥à 1 ¯¥à¥¤ îâáï ­  設ã HDD. º
; º ’®«ìª® ¬« ¤è¨© ¡ ©â, áâ à訩 ­¥ ­ã¦¥­. º
; º º
; º 4.1 ‡ ¯¨áì ॣ¨áâà  ¤ ­­ëå, A8 = 0 º
; º „ ­­ë¥ á 設ë Z80 ç¥à¥§ ¡ãä¥à 2 ¯¥à¥¤ îâáï ¢ ॣ¨áâà 3. º
; º ’®«ìª® ¬« ¤è¨© ¡ ©â, áâ à訩 ­ã¦¥­ ¨ ®­ ®¦¨¤ ¥âáï ¢ á«¥¤ãî饬 º
; º 横«¥. HDD ¢ íâ®â ¬®¬¥­â ­¥ ¢ë¡¨à ¥âáï. º
; º º
; º 4.2 ‡ ¯¨áì ॣ¨áâà  ¤ ­­ëå, A8 = 1 º
; º „ ­­ë¥ ¨§ ॣ¨áâà  3 ¯¥à¥¤ îâáï ­  設ã HDD - ¬« ¤è¨© ¡ ©â. º
; º - áâ à訩 ¡ ©â - ç¥à¥§ ¡ãä¥à 2 ¯¥à¥¤ ¥âáï á ¯à®æ¥áá®à  º
; º º
; º <20>®ç¥¬ã ¯ã­ªâ 4.2 ®â«¨ç ¥âáï ®â 3, å®âï ®¯¥à æ¨¨ ¯® ¢¨¤ã º
; º ®¤¨­ ª®¢ë? º
; º <20>®â®¬ã çâ® ¯¥à¥¤ 4.2 ¢á¥£¤  ¨¤¥â 4.1, ª®â®àë© ãáâ ­ ¢«¨¢ ¥â º
; º âਣ¥à WRH ¢ ¥¤¨­¨æã ¨, â ª¨¬ ®¡à §®¬ ¯¥à¥ª«î砥⠯ãâì º
; º ¯à®å®¦¤¥­¨ï ¡ ©â®¢. <20>â® ¨ ¯®§¢®«ï¥â ¨á¯®«ì§®¢ âì ª®¬ ­¤ë OUTI º
; º ¤«ï § ¯¨á¨ ᥪâ®à  ¢ HDD º
; º º
; ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
; ŠŽ„› Ž˜ˆ<CB9C>ŽŠ, އ<E280A1>€™€…Œ… „ˆ‘ŠŽ‚މ ‘ˆ‘’…ŒŽ‰
; #08 ;Ž˜ˆ<CB9C>Š€ €„<E282AC>ˆˆ
; #09 ;Š€<C5A0> <20><20><>ˆŽ…„ˆ<E2809E><EFBFBD>
; #40 ;Ž˜ˆ<CB9C>Š€ €<><E282AC><EFBFBD><E28099>
; #41 ;<3B>ŽŽˆ… „<>€‰<E2809A>€ €<><E282AC><EFBFBD><E28099>
; #50 ;<3B>…„Ž<E2809E>ˆŒ<20>ŽŒ…<C592><>€‰<E2809A> Š€<C5A0>
; #51 ;„<>€‰<E2809A> Ž’‘“’‘’‚“…’
; #52 ;‡€<E280A1><E282AC>…™…<E284A2><E280A6>€Ÿ ŠŽŒ€<C592>„€
; #53 ;Ž˜ˆ<CB9C>Š€ ‚‚Ž„€/‚›‚Ž„€
; #54 ;‡€™ˆ’€ Ž’ ‡€<E280A1>ˆˆ
; #56 ;<3B>… Ž<><C5BD><EFBFBD>Ž<E28099><E282AC>€Ÿ ”€œ<E280B9>€Ÿ Ž˜ˆ<CB9C>Š€
; #59 ;<3B> ƒŽŽ<C5BD>Žˆ<><E282AC><EFBFBD><E28099> (TIMEOUT)
; #81 ;…ŠŽ<E28099> <20><20>€‰„…<E2809E>
; #82 ;€„<E282AC><E280A6>‰ Œ€<C592>Š…<C5A0> <20><20>€‰„…<E2809E>
; #83 ;OVERRUN
; #84 ;Ž˜ˆ<CB9C>Š€ CRC
ENDMODULE
;-----------------------------------------------------------------------
;
/*
KBD_COM EQU #1B
KBD_DAT EQU #1A
COM_B EQU #1B
DAT_B EQU #1A
COM_A EQU #19
DAT_A EQU #18
LPT1_D EQU #1C
LPT1_C EQU #1D
LPT2_D EQU #1E
LPT2_C EQU #1F
STC0_C EQU #10
STC1_C EQU #11
STC2_C EQU #12
STC3_C EQU #13
*/
; !TODO ¯à¨¤ã¬ âì ª ª ®¡®§¢ âì, ç⮡ ¡ë«® ¯®­ïâ­® ª®£¤  ¯¨èãâ ¤«ï ¬ë誨, ª®£¤  ¤«ï ª« ¢ë ¨ â.¤.
MODULE Z84
;-------------------[Ports]
; Counter Timer Control
CTC:
.Ch_0 EQU #10 ; Control Register
.Ch_1 EQU #11 ; Control Register
.Ch_2 EQU #12 ; Control Register
.Ch_3 EQU #13 ; Control Register
; Serial I/O
SIO:
.Ch_A.Data EQU #18 ; Data register keyboard DAT_A
.Ch_A.Ctrl EQU #19 ; Control register keyboard COM_A
.Ch_B.Data EQU #1A ; Data register mouse DMOUSE
.Ch_B.Ctrl EQU #1B ; Control register mouse CMOUSE
; Parallel I/O
PIO:
.Port_A.Data EQU #1C ; Data register LPT 1
.Port_A.Command EQU #1D ; Command register LPT 1
.Port_B.Data EQU #1E ; Data register LPT 2
;⮫쪮 ç¥à¥§ ॣ¨áâà BC, ¨­ ç¥ €«ìâ¥à  ¯¥à¥å¢ â¨â
.Port_B.Command EQU #1F ; Command register LPT 2
; Watch Dog timer
WDT:
.Master_Reg EQU #F0 ; Master register WDTMR
.Control_Reg EQU #F1 ; Control register WDTCR
; Interrupt Priority Register
IntPrior_Reg EQU #F4
;System Control
SYS:
.Control EQU #EE ; System Control Register Pointer SCRP
.Data EQU #EF ; System Control Data Port SCDP
;------------------------[]
;-------------------[Regs ]
REG:
.WaitState_Ctrl EQU 00 ; Wait state control register WCR
.WaitState_MemBound EQU 01 ; Memory Wait state Boundary Register MWBR
.CS_Boundary EQU 02 ; Chip Select Boundary Register CSBR
.Misc_Ctrl EQU 03 ; Misc.Control Register MCR
;------------------------[]
ENDMODULE
;
;INIT_TIMER:
; LD A,#D5 ; 7-© ¡¨â à §à¥è¥­¨¥ ¯à¥à뢠­¨ï
; OUT (#12),A
; LD A,20
; OUT (C),A
; LD A,#55 ; 7-© ¡¨â à §à¥è¥­¨¥ ¯à¥à뢠­¨ï
; OUT (#13),A
; LD A,0
; OUT (C),A
; LD A,0 ; ¢¥ªâ®à ¯à¥à뢠­¨ï
; OUT (#10),A
; LD A,TABLE/256
; LD I,A
; IM 2
;Disable:
; DI
; LD BC,#12 ; 2-nd timer
; LD A,#55 ; 7-© ¡¨â à §à¥è¥­¨¥ ¯à¥à뢠­¨ï
; OUT (C),A
; IM 1
; EI
; RET
;=======================================================================;
; <09><>Ž <20><>ˆŠŽ ˆ<E2809A>€ ;
;=======================================================================;
; ¥á«¨ ª ­ « ¯ãá⮩, â® ç¨â ¥âáï ¨§ ¯®àâ  â®, çâ® ¡ë«® ¢ëáâ ¢«¥­®
; ¯®á«¥¤­¨¬ ­  設ã c çñâ­®£®  ¤à¥á  ¢ ¯ ¬ï⨠  íâ® ¯¥à¢ë© ¨«¨ ¢â®à®©
; ¡ ©â ª®¤  ª®¬ ­¤ë
; ALIGN 2 ; âã⠭㦭® ¢ëà ¢­¨¢ ­¨¥ ¯® § ¤ã¬ ­­ë¬  ¤à¥á ¬ ¤«ï ª®¬ ­¤ ç⥭¨ï ¨§ ¯®à⮢
; .CheckChanel: LD BC,IDE.Read.Status
; IN A,(C) ;#ED78 A=#78
; IN L,(C) ;#ED68 L=#68
; LD D,A
; IN A,(C) ;#ED60 A=#ED
; LD E,L
; ; ¥á«¨ ¯ãá⮩: DE=#7868, A=#ED
; ;
; LD HL,#7868 + #ED
; AND A
; SBC HL,DE
; XOR L
; RET NZ ; not absent
; SCF
; RET ; absent
;==============================================================================================================;
;=======================================================================;
; <09><>Ž Š€„<E282AC> ˆ<>€ ;
;=======================================================================;
;INT_X = !DFF(GND,(SVIDEO.INTT & KEYS.int),,((/IO or /M1) & DFF(DFF(!INT_X,CTH2,,),CTH2,,))) or !CBL_INT;
;BORD = DFF( (MODE0[7..4] == 15), LWR_COL,,);
;INTTX = DFF( (BORD & MODE03 & MODE02 & MODE00), LWR_COL,,);
;
;INTT = DFF( !(INTTX & (CTV[2..0] == 7)), CT5,,);
;CTV - áçñâ稪 áâப, CT - áçñâ稪 ¯¨ªá¥«¥© ¢ ª¢ ¤à â¨ª¥ (0-7), CTH - áçñâ稪 §­ ª®¬¥áâ
;
; | --- | --- | ---- | --- | --- | ---- |
; | S | R | C | D | Q+1 | !Q+1 |
; | --- | --- | ---- | --- | --- | ---- |
; | 1 | 0 | - | - | 1 | 0 |
; | 0 | 1 | - | - | 0 | 1 |
; | 1 | 1 | - | - | 1* | 1* |
; | 0 | 0 | 0->1 | 1 | 1 | 0 |
; | 0 | 0 | 0->1 | 0 | 0 | 1 |
; | 0 | 0 | 0 | - | Q | !Q |
; | --- | --- | ---- | --- | --- | ---- |
;384 448*320*6=860160 20966400 ⠪⮢ 41932800 448*312=139776 *6 =
;<3B> §à¥è¥­¨¥ íªà ­  56 ª¢ ¤à â®¢ ¯® £®à¨§®­â «¨ ¨ 39(40) ¯® ¢¥à⨪ «¨ (᪮௠¨«¨ ¯¥­ì)
;
; - <20>  ª ªãî ­®£ã âਣ£¥à  ᨣ­ « ¨¤¥â?
; - ­  ª«®ª, ¯® äà®­âã ­  ¢ë室 ª®¯¨àã¥âáï §­ ç¥­¨¥ á ¤ âë
; - € ª®£¤  íâ® äà®­â ¢®§­¨ª ¥â?
; - ¯® ¨­â㠮⠢¨¤¥®/ª« ¢ë
;
;‚ᥠ¦¥ ¯à®áâ®. <20>  ª¢ ¤à â¨ª å á ¨­â®¬ INTT = 0, ­  ®áâ «ì­ëå INTT = 1
;¯®«ãç ¥âáï, çâ® äà®­â ¢®§­¨ª ¥â ¯à¨ ¯¥à¥å®¤¥ á ª¢ ¤à â¨ª  á ¨­â®¬ ­  ª¢ ¤à â¨ª ¡¥§ ¨­â 
;Žâ ª®«¨ç¥á⢠ ª¢ ¤à â®¢ ¤«¨­  ¨­â  ­¥ § ¢¨á¨â
; Š®à®ç¥, ¯®£­ «¨ ®â M1 ¨ IO. Ž­¨ ¢¬¥á⥠¢ ­ã«¥ ª®£¤  ¯à¥à뢠­¨¥ ¯®¤â¢¥à¤¨«®áì. <20>®«ì ­  ¨å OR ¡ã¤¥â ⮫쪮
; ¯à¨ ¯®¤â¢¥à¦¤¥­¨¨ ¯à¥à뢠­¨ï. <20>®«ì ã室¨â ¤ «ìè¥ ­  AND ¨ ®ââ㤠 ­  S, ¯®á«¥ 祣® ­  !Q ã
; ­ á ⮦¥ ­®«ì - ¨­â á­ï«áï. …᫨ ¨­â á­ï«áï ¨ à ¢¥­ 0, â® 1 ¨¤ñâ ­  á ¬ë© «¥¢ë© âਣ£¥à ¢ D, ­®
; ¯¥à¥å®¤¨â ­  á।­¨© âਣ£¥à ⮫쪮 ¯® CTH2 - áçñâ稪 ¤«¨­ë ¨­â  ª®â®àë© â¨ª ¥â ­¥§ ¢¨á¨¬® ®â ⮣®, ¥áâì
; ®­ ¨«¨ ­¥â. Š®£¤  ⨪­¥â, ¥¤¨­¨æ  ¯¥à¥å®¤¨â ¤ «ìè¥ ­  D ¨ ¦¤¥â ®¯ïâì ⨪ , ¯®á«¥ 祣® ¯®¯ ¤ ¥â ­  AND,  
; â ¬ ­  ¢â®à®¬ ¢ë¢®¤¥ ⮦¥ 1, ¯®â®¬ã ç⮠ᨣ­ «ë M1 ¨ IO ¨­¢¥àá­ë¥ ¨ ç¥à¥§ OR,   ¢¬¥á⥠¢ ­ã«¥ ®­¨ ⮫쪮
; ¯à¨ ¯®¤â¢¥à¦¤¥­¨¨ ¨­â . …¤¨­¨æ  ®ââ㤠 ¢â몠¥âáï ¢ S, çâ® ¤ ñâ ¢®§¬®¦­®áâì ¯¥à¥¤ âì ªã᮪ !§¥¬«¨ á D ­  !Q
; ¯à¨ ¯¥à¥å®¤¥ ª«®ª  á 0 ¢ 1. € â ª®© ¯¥à¥å®¤ ¡ã¤¥â ⮫쪮 ¢ áâப¥ á«¥¤ãî饣® ¯®á«¥ ¨­â®¢®£® ­¥¨­â®¢®£®
; ª¢ ¤à â¨ª  á 3 ­  4 ¯¨ªá¥«. € á«¥¤ãî騩 ª¢ ¤à â¨ª á ¨­â®¬ ¯®á«¥ ª¢ ¤à â¨ª  ¨­â  ®ââ¢ ¥â £¥­¥à æ¨î ¨­â 
; ­  ᥡï. Š®à®ç¥, ¨­â £¥­¥à¨àã¥âáï ¯®á«¥ ¯¥à¥å®¤  á ª¢ ¤à â  ¨­â  ­  ª¢ ¤à â ¡¥§ ¨­â . …᫨ â®ç­¥¥, â® ¢®
; ¢à¥¬ï ¯à®à¨á®¢ª¨ ¯®á«¥¤­¥© «¨­¨¨ §­ ª®¬¥áâ  ­  á«¥¤ãî饬 §­ ª®¬¥áâ¥. „¢  ª¢ ¤à â  ¨­â  ç¥à¥§ ®¡ëç­ë©
; ª¢ ¤à â ­¥ ᬮ£ãâ ¯®¢«¨ïâì ¯®â®¬ã çâ® ¨­â «¨¡® ¡ã¤¥â ¢áñ ¥éñ ¢¨á¥âì ¨ íâ® ¡ã¤¥â § ¬¥­  1 ­  1))) «¨¡® ¨­â
; á­¨¬¥âáï ç¥à¥§ IO ¨ M1 ãáâ ­®¢¨¢ S ¢ ¯®«®¦¥­¨¥ ?¯®å¥à ­  D ¨ C?, ª®â®à®¥ ᬥ­¨âáï ⮫쪮 ¯®á«¥ ⮣® ª ª
; ¯à®â¨ª îâ «¥¢ë¥ áçñâ稪¨.
;==============================================================================================================;
;ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
<20>«®ª-‘奬  ‚¨¤¥®ª®­â஫«¥à  ³ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³
;³ Š®¬¯ìîâ¥à  Sprinter ³ ³ RGB Registers ÃÄÄÄ> RED ³
;³ (ᨫ쭮 ã¯à®é¥­­ ï) ³ ³ & Video DACs ÃÄÄÄ> GREEN ³
;³ ³ ³ ÃÄÄÄ> BLUE ³
;ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ÀÄÄÄÄÄÄÂÂÄÄÄÄÄÄÄÙ ³
;³ ÚÄÂÄÄÄ¿ ÚÄÄÄÄÄÄÄ¿ ³³ ÚÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄ¿ ³
;³ CPU ÄÄÄ´ ³MXAÃÄÄÄ´ Video ÃÄÅÅÄ´MODE³Pixel³PAL ÃÄÄÄ· ³
;³ Adress ÄÄÄ´ ³ ÃÄÄÄ´ MEM ÃÄÅÅÄ´Reg ³Atrib³Reg ÃÄÄĶ ³
;³ ÃÄ´ ÃÄÄÄ´ ÃÄÅÅÄ´ ³ Reg ³ ÃÄÄĶ ³
;³ Y-port ÄÄÄ´ ³ ÃÄÄÄ´ ÃÄÅÅÄ´ ³ ³ ³.. º ³
;³ Graf Reg ÄÄÄ´ ³ ÃÄÄÄ´ ³ ³³ ³ ³ ³ ³.. º ³
;³ ÚÄÄÄÄÄÄÄÄÄÄÄÄ¿ ÃÄ´ ÃÄÄÄ´ ³ ³³ ³ ³ ³ ³.. º ³
;³ ³ Mode ÃÄÄÄ´ ³ ÃÄÄÄ´ ÃÄÅÅÄ´ ³ ³ ÃÄÄĶ ³
;³ ³ Counter ÃÄÄÄ´ ³ ÃÄÄÄ´ ÃÄÁÁÄ´ ³ ³ ÃÄÄĶ ³
;³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÙ ÃÄ´ ÃÄÄÄ´ ³ ÀÄÂÂÄÁÄÄÄÂÄÁÄÄÄÄÙ º ³
;³ ÖÄÄ Adress ÄÄÄ´ ³ ÃÄÄÄ´ ³ ³³ ÀÄÄÄÄÄÄÄÄ>Ķ ³
;³ ÇÄÄ From MODE ÄÄÄ´ ³ ÃÄÄÄ´ ³ ³ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄ>Ķ ³
;³ º ÚÄÄÄÄÄÄÄÄÄÄ¿ ÃÄ´ ÃÄÄÄ´ ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ>Ķ ³
;³ º ³ Line/Pix ÃÄÄÄ´ ³ ÃÄÄÄ´ ³ º ³
;³ º ³ Counters ÃÄÄÄ´ ³ ÃÄÄÄ´ ³ º ³
;³ º ÀÄÄÄÄÄÄÄÄÄÄÙ ÃÄ´ ÃÄÄÄ´ ³ º ³
;³ ÇÄÄ Pixel/PAL ÄÄÄ´ ³ ÃÄÄÄ´ ³ º ³
;³ ÇÄÄ Registers ÄÄÄ´ ³ ÃÄÄÄ´ ³ º ³
;³ º ÀÄÁÄÄÄÙ ÀÄÄÄÄÄÄÄÙ º ³
;³ º º ³
;³ ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ ³
;ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
;³ Š ª à ¡®â ¥â ¢¨¤¥®ª®­â஫«¥à? ³
;³ ³
;³ €¤à¥á ¢¨¤¥®¤ ­­ëå á®áâ ¢«ï¥â 16 ¡¨â ³
;³ ˜¨à¨­  è¨­ë ¤ ­­ëå ¢¨¤¥®-އ“ - 32 ¡¨â. ³
;³ ޤ­®¢à¥¬¥­­® ¨á¯®«ì§ãîâáï ¤® 3 ¡ ©â. ³
<20>ਠ£à ä¨ç¥áª®©  ¤à¥á æ¨¨ ¢¨¤¥®-އ“ ¯à¥¤áâ ¢«ï¥â ᮡ®© 256 ³
;³ «¨­¨© ¯® 1024 ¡ ©â . ‹¨­¨¨  ¤à¥áãîâáï ç¥à¥§ Y-port,   ¡ ©âë ¢ ³
;³ «¨­¨¨ 10 ¬« ¤è¨¬¨ ¡¨â ¬¨  ¤à¥á  ¯à®æ¥áá®à . ³
⥪á⮢®¬ ०¨¬¥ ¢¨¤¥®-އ“ ¯à¥¤áâ ¢«ï¥â ᮡ®© ­ ¡®à ¨§ ³
;³ 32-å 8Kb áâà ­¨æ, ª®â®àë¥ ¯®¤ª«îç îâáï ª ¯¥à¢®© ¯®«®¢¨­¥ ³
;³ 5-© ¨ 7-© áâà ­¨æë ¯ ¬ï⨠ZX-Spectrum. <20>®¬¥à áâà ­¨æë § ¤ ¥âáï³
;³ ⥬ ¦¥ Y-port-®¬. <20>¥à¥ª«î祭¨¥ ०¨¬   ¤à¥á æ¨¨ ¯à®¨§¢®¤¨âáï ³
;³ ¯® ­®¬¥àã áâà ­¨æë އ“. ’ ª, ¤ ¦¥ ¥á«¨ ¢ 5-© ᯥªâà㬮¢áª®© ³
;³ áâà ­¨æ¥ ®ª ¦¥âáï ãáâ ­®¢«¥­  áâà ­¨æ  50h އ“, â® ¢¨¤¥®¯ ¬ïâì³
;³ ¡ã¤¥â  ¤à¥á®¢ âìáï ª ª £à ä¨ç¥áª ï. ³
;³ ’¥ªá⮢ ï  ¤à¥á æ¨ï ï¥âáï â ª ¦¥ ¨ ᯥªâà㬮¢áª®©. ³
;³ ” ªâ¨ç¥áª¨ ¢ ¢¨¤¥®-އ“ ¨¬¥¥âáï 32 ᯥªâà㬮¢áª¨å íªà ­ , ¨§ ³
;³ ª®â®àëå ॠ«ì­® ¬®¦­® ¨á¯®«ì§®¢ âì 24, ¯®â®¬ã çâ® ³
;³ ®áâ «ì­ë¥ áâà ­¨æë ¨á¯®«ì§ãîâáï ¤«ï ¯ «¨âàë ¨ ¤ ­­ëå ०¨¬®¢ ³
;³ íªà ­ . ³
;³ ³
<20>ªà ­ ¯à¥¤áâ ¢«ï¥â ᮡ®© ­ ¡®à §­ ª®¬¥áâ, ¢ ª®â®àëå ¬®¦­® ³
;³ ­¥§ ¢¨á¨¬® ãáâ ­ ¢«¨¢ âì ०¨¬ ®â®¡à ¦¥­¨ï ¨­ä®à¬ æ¨¨. ³
;³ Š ¦¤®¥ §­ ª®¬¥áâ® ¯® à §¬¥àã ᮮ⢥âáâ¢ã¥â ª¢ ¤à âã 8x8 ०¨¬ ³
;³ 320 â®ç¥ª ¢ «¨­¨¨. ‚ᥣ® ­  íªà ­¥ 40x32 §­ ª®¬¥áâ. ”¨§¨ç¥áª¨ ³
;³ ¨¬¥¥âáï 64x64 §­ ª®¬¥áâ, ­® ç áâì ¨§ ­¨å ­¨ª®£¤  ­¥ ¯®¯ ¤ ¥â ³
­  íªà ­,   ç áâì ­ å®¤¨âáï ¢ ®¡« á⨠¨¬¯ã«ìᮢ 樭åà®­¨§ æ¨¨ ³
;³ ¨ £ è¥­¨ï «ãç . ª ¦¤®¬ §­ ª®¬¥á⥠¬®¦­® ãáâ ­®¢¨âì ᢮© ³
;³ ०¨¬, ¢¯«®âì ¤® ãáâ ­®¢ª¨ ०¨¬®¢ ¡®à¤¥à  ¨ £ è¥­¨ï «ãç . ³
;³ Žá­®¢­ë¥ ०¨¬ë, ãáâ ­ ¢«¨¢ ¥¬ë¥ ¢ §­ ª®¬¥áâ å: ³
;³ ZX-40 ⥪áâ®¢ë© à¥¦¨¬ 40 ᨬ¢®«®¢ ¢ áâப¥ ¨«¨ 1 ᨬ¢®« ­  ³
;³ §­ ª®¬¥áâ®. Ž­ ¦¥ ᯥªâà㬮¢áª¨©. ³
;³ ZX-80 ⥪áâ®¢ë© à¥¦¨¬ 80 ᨬ¢®«®¢ ¢ áâப¥ ¨«¨ 2 ᨬ¢®«  ­  ³
;³ §­ ª®¬¥áâ®. ³
;³ GR-256-8 £à ä¨ç¥áª¨© ०¨¬ 320x256 â®ç¥ª, 256 梥⮢. Ž­ ¦¥ ³
;³ 8x8 â®ç¥ª 256 梥⮢ ­  ®¤­® §­ ª®¬¥áâ® ³
;³ GR-16-16 £à ä¨ç¥áª¨© ०¨¬ 640x256 â®ç¥ª, 16 梥⮢. Ž­ ¦¥ ³
;³ 16x8 â®ç¥ª 16 梥⮢ ­  ®¤­® §­ ª®¬¥áâ® ³
;³ „®¯®«­¨â¥«ì­ë¥ ०¨¬ë: ³
;³ BORDER §­ ª®¬¥áâ® ¢ëᢥ稢 ¥âáï æ¢¥â®¬ ¡®à¤¥à  ³
;³ BLANK §­ ª®¬¥áâ® § â¥¬­¥­® ³
;³ INT-Mode ०¨¬ £¥­¥à æ¨¨ ᨣ­ «  INT ¤¥©áâ¢ã¥â ⮫쪮 ­  ³
;³ §­ ª®¬¥áâ å á ०¨¬®¬ BLANK ¨ ¯®§¢®«ï¥â ãáâ ­ ¢«¨¢ âì INT ³
;³ ¢ ­ã¦­®¥ ¬¥áâ®, ¢¯«®âì ¤® ãáâ ­®¢ª¨ 40 ¨¬¯ã«ìᮢ INT ­  ª ¤à ³
;³ ³
;³ ’ ªâ®¢ ï ç áâ®â  - 42MHz <20>¥à¨®¤ - 6 ®¤­®â ªâ®¢ëå æ¨ª«®¢ ³
;³ ³
;³ –¨ª«ë à á¯à¥¤¥«ïîâáï á«¥¤ãî騬 ®¡à §®¬: ³
;³ ³
;³ ’ ªâ 1 - ¢ë¡®àª  ¡ ©â  ¯¨ªá¥«¥© ⥪á⮢®£® ०¨¬  ³
;³ ¢ £à ä¨ç¥áª®¬ ०¨¬¥ - 宫®á⮩ 室 ³
;³ ’ ªâ 2 - ¢ë¡®àª  ¡ ©â   âਡã⮢ ⥪á⮢®£® ०¨¬  ³
;³ ®­ ¦¥ ¢ë¡®àª  ¡ ©â  ¯¨ªá¥«ï £à ä¨ç¥áª®£® ०¨¬  ³
;³ ’ ªâ 3 - ¢ë¡®àª  3-å ¡ ©â ¯ «¨âàë á § ¯¨áìî ¢ RGB ॣ¨áâàë ³
;³ ¤«ï ०¨¬®¢ 640 â®ç¥ª, ¢ ०¨¬¥ 320 宫®á⮩ 室 ³
;³ ’ ªâ 4 - ¢ë¡®àª  á«®¢  ०¨¬  íªà ­  ³
;³ ¢ë¡®àª  ¯à®¨§¢®¤¨âáï ®¤¨­ à § ¢ ç¥âëॠ¯¥à¨®¤  ³
;³ ’ ªâ 5 - 横« § ¯¨á¨ ¤ ­­ëå ®â ¯à®æ¥áá®à  ³
;³ ¥áâ¥á⢥­­®, ¤ ­­ë¥ ¯¨èãâáï ⮫쪮 ª®£¤  ­ã¦­® ³
;³ ’ ªâ 6 - ¢ë¡®àª  3-å ¡ ©â ¯ «¨âàë á § ¯¨áìî ¢ RGB ॣ¨áâàë ³
;³ ³
;³ ‚ᥠ­ ç¨­ ¥âáï á â ªâ  4. €¤à¥á ¤«ï ०¨¬  ®¯à¥¤¥«ï¥âáï ³
;³ áç¥â稪®¬ ¢¥à⨪ «¨ ¨ £®à¨§®­â «¨. ‘ç¨â îâáï 8 â®ç¥ª 320-£® ³
;³ ०¨¬  ¯® ¢¥à⨪ «¨ ¨ 8 áâப ¯® £®à¨§®­â «¨. ³
<20>¥¦¨¬ § ¤ ¥âáï 16 ¡¨â ¬¨, ¨§ ª®â®àëå 12 § ¤ îâ  ¤à¥á ª¢ ¤à â  ³
;³ 8x8 ¡ ©â £à ä¨ç¥áª®£® ०¨¬ . ⥪á⮢®¬ ०¨¬¥ í⨠¦¥ ¡¨âë ³
;³ § ¤ îâ  ¤à¥á ¤ ­­ëå íªà ­ , ­® ­¥áª®«ìª® ¨­ ç¥. ³
;³ Žá⠢訥áï 4 ¡¨â  ०¨¬  § ¤ îâ ᮡá⢥­­® ०¨¬. ޤ¨­ ¡¨â ³
;³ § ¤ ¥â £à ä¨ç¥áª¨© ¨«¨ ⥪áâ®¢ë© à¥¦¨¬ §­ ª®¬¥áâ . …é¥ ®¤¨­ ³
;³ ¡¨â § ¤ ¥â ०¨¬ 320 ¨«¨ 640 â®ç¥ª. „¢  ®áâ ¢è¨åáï ¡¨â  ¢ ³
;³ ⥪á⮢®¬ ०¨¬¥ ïîâáï ¤®¯®«­¥­¨¥¬  ¤à¥á  ¤ ­­ëå,   ¢ ³
;³ £à ä¨ç¥áª®¬ § ¤ îâ ®¤­ã ¨§ 4-å 256-â¨æ¢¥â­ëå ¯ «¨âà ³
;³ ³
¯ïâë¬ â ªâ®¬ ¢á¥ ïá­®. ‡  ¨áª«î祭¨¥¬ ⮣®, çâ® ¤«ï ³
;³ £à ä¨ç¥áª®£® ¨ ⥪á⮢®£® ०¨¬®¢ ¨§¬¥­ï¥âáï  ¤à¥á æ¨ï އ“ ³
;³ ˆ§¬¥­¥­¨¥ § ¤ ¥âáï ­®¬¥à®¬ áâà ­¨æë ‘âà ­¨æë 50..5F áç¨â îâáï ³
;³ £à ä¨ç¥áª¨¬ އ“. ‘«¥¤ã¥â ®â¬¥â¨âì, çâ® ¯®­ï⨥ £à ä¨ç¥áª®£® ¨ ³
;³ ⥪á⮢®£® ०¨¬   ¤à¥á æ¨¨ ­¥ ᮢᥬ ¢¥à­® ®âà ¦ ¥â áãâì. ³
;³ ‚뢮¤ ¤ ­­ëå ¢ íªà ­­®¥ އ“ ¬®¦¥â ®áãé¥á⢫ïâìáï ¢ ®¡®¨å ³
;³ ०¨¬ å ­¥§ ¢¨á¨¬® ®â ¤¥©á⢨⥫쭮£® ०¨¬  íªà ­ . ³
;³ ³
;³ 6-© â ªâ. —⥭¨¥ ¯ «¨âàë. ⥪á⮢®¬ ०¨¬¥  ¤à¥á ¯ «¨âàë ³
;³ á®áâ ¢«ï¥â 10 ¡¨â. 8 ¡¨â - ¡ ©â  âਡãâ . 1 ¡¨â - ¯¨ªá¥«ì. ³
;³ 1 ¡¨â - FLASH. <20>â®â ¡¨â ä ªâ¨ç¥áª¨ ¯¥à¥ª«î砥⠤¢¥ ¯ «¨âàë ³
;³ á ç áâ®â®© FLASH. …᫨ ¯ «¨âàë ¤«ï ¤ ­­®£®  âਡãâ  á®¢¯ ¤ îâ ³
;³ â® FLASH ­¥ ­ ¡«î¤ ¥âáï. ³
£à ä¨ç¥áª®¬ ०¨¬¥  ¤à¥á ¯ «¨âàë á®áâ ¢«ï¥â 8 ¡¨â ¡ ©â  ³
;³ ¯¨ªá¥«ï ¨ 2 ¡¨â  ­®¬¥à  ¯ «¨âàë, áç¨â ­­®£® ¢ 4-¬ â ªâ¥, ­® ³
;³ § ¤¥à¦ ­­®£® ­  1 ¯¥à¨®¤ ¤«ï ᨭåà®­­®£® ¨§¬¥­¥­¨ï ०¨¬  ³
;³ ¨ ¯ «¨âàë ¢ §­ ª®¬¥áâ¥. ³
;³ …é¥ ®¤¨­ ¡¨â  ¤à¥á  ¨á¯®«ì§ã¥âáï ¤«ï à §¤¥«¥­¨ï ¯ «¨âà ³
;³ ⥪á⮢®£® ¨ £à ä¨ç¥áª®£® ०¨¬®¢. Žá⠢訥áï  ¤à¥á  އ“ ³
;³ ãáâ ­ ¢«¨¢ îâáï ¢ "1" ¨ ¢áï ¯ «¨âà  ®ª §ë¢ ¥âáï ­  ª®­æ å ³
;³ 1024-å ¡ ©â®¢ëå «¨­¨© £à ä¨ç¥áª®£® ०¨¬ . ³
;³ ³
;³ ’ ªâ 1. ‡¤¥áì ­ ç¨­ ¥â ¤¥©á⢮¢ âì ­®¢ë© ०¨¬, áç¨â ­­ë© ¢ ³
;³ ⠪⥠4. €¤à¥á އ“ ï¥âáï  ¤à¥á®¬ ¡ ©â  ¯¨ªá¥«¥© ⥪á⮢®£® ³
;³ ०¨¬ . <20> ©â ¯¨ªá¥«¥© § ¯¨á뢠¥âáï ¢ ᤢ¨£®¢ë© ॣ¨áâà ¨ ³
;³ ¯¥à¢ë© ¢ë¤¢¨­ãâë© ¡¨â ­ ç¨­ ¥â ¤¥©á⢮¢ âì ¢ 6-¬ â ªâ¥. ³
;³ ³
;³ ’ ªâ 2. ‚롨ࠥâáï ¡ ©â  âਡãâ . €¤à¥á ®â«¨ç ¥âáï ®â  ¤à¥á  ³
;³ ¡ ©â  ¯¨ªá¥«¥© ¯® ¨§¢¥áâ­®¬ã ‘¯¥ªâà㬮¢áª®¬ã § ª®­ã. ³
;³ …᫨ ¯¥à¥¤ í⨬ ¢ 4-¬ ⠪⥠¡ë« áç¨â ­ £à ä¨ç¥áª¨© ०¨¬, â® ³
;³ €¤à¥á  âਡãâ  áâ ­®¢¨âáï ¤à㣨¬ ¨ ᮮ⢥âáâ¢ã¥â ¡ ©âã ¯¨ªá¥«ï³
;³ £à ä¨ç¥áª®£® ०¨¬ . <20>¥£¨áâà  âਡãâ  ¢ £à ä¨ç¥áª®¬ ०¨¬¥ ³
;³ ï¥âáï ॣ¨áâ஬ ¡ ©â  ¯¨ªá¥«ï. ³
;³ ³
;³ ’ ªâ 3. —⥭¨¥ ¯ «¨âàë ¤«ï ०¨¬  640 â®ç¥ª. ‘«¥¤ã¥â § ¬¥â¨âì ³
;³ çâ® ¢ £à ä¨ç¥áª®¬ ०¨¬ 640 â®ç¥ª, 4 áâ àè¨å ¡¨â  ॣ¨áâà  ³
;³ ¯¨ªá¥«ï ¬ áª¨àãîâáï ­ã«ï¬¨ ¨ ¢ í⮬ ⠪⥠¢ ¬« ¤è¨å ¡¨â å ³
;³  ¤à¥á  ®ª §ë¢ îâáï ⥠ç¥âëॠ¡¨â , ª®â®àë¥ ¡ë«¨ § ¬ áª¨à®¢ ­ë ³
;³ ¢ 6-¬ â ªâ¥. ’ ª ®à£ ­¨§ã¥âáï 16 梥⮢ ­  â®çªã. ³
;³ ³
;ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
<20>ணࠬ¬¨à®¢ ­¨¥. ³
;³ 1. ’¥ªáâ®¢ë© à¥¦¨¬  ¤à¥á æ¨¨ ®¡êï¥âáï ®â¬¨à î騬 ¨ ¥£® ³
;³ ¨á¯®«ì§®¢ ­¨¥ à §à¥è¥­® ⮫쪮 ¤«ï ª®­ä¨£ãà æ¨© ᮢ¬¥á⨬ëå á ³
;³ ZX-Spectrum. .¥. Sprinter-1 ¨ AY. (¢ AY ¤à㣮£® ¨ ­¥â) ³
;³ 2. ‚ª«î祭¨¥ £à ä¨ç¥áª®£® ०¨¬   ¤à¥á æ¨¨. ³
;³ „«ï í⮣® ¤®áâ â®ç­® ¢ª«îç¨âì áâà ­¨æã 50..5F ¢ ª ª®¥ «¨¡® ¨§ ³
;³ ®ª®­ ¯à®æ¥áá®à . ³
<20>ਬ¥à: ³
;³ LD A,50h ³
;³ OUT (PAGE3),A ³
<20>®á«¥ ¨á¯®«­¥­¨ï íâ¨å ª®¬ ­¤ ®ª­® C000..FFFF ¡ã¤¥â ᮤ¥à¦ âì ³
;³ ¤ ­­ë¥ £à ä¨ç¥áª®© ¯ ¬ï⨠(¢¥à­¥¥, ¥¥ ª®¯¨¨ ¢ ®á­®¢­®¬ އ“) ³
;³ 3. “áâ ­®¢ª  ­®¬¥à  «¨­¨¨. ³
;³ ƒà ä¨ç¥áª®¥ އ“, ª ª 㦥 ¡ë«® ᪠§ ­®, á®á⮨⠨§ 256-⨠«¨­¨©³
;³ ¯® 1024 ¡ ©â. ®ª­¥ ¡ã¤¥â ¢¨¤­  ⮫쪮 ®¤­  «¨­¨ï. €¤à¥á  ³
;³ ®â«¨ç î騥áï ­  ç¨á«® ªà â­®¥ 400h 䨧¨ç¥áª¨  ¤à¥áãîâ ®¤­¨ ¨ ³
;³ ⥠¦¥ ï祩ª¨ ¯ ¬ïâ¨. ³
;³ „«ï ¨§¬¥­¥­¨ï ­®¬¥à  «¨­¨¨ ­ ¤® ¢ë¢¥á⨠­®¬¥à «¨­¨¨ ¢ ¯®àâ. ³
;³ LD A,40h ³
;³ OUT (Y_port),A ³
<20>®á«¥ ¨á¯®«­¥­¨ï íâ¨å ª®¬ ­¤ á  ¤à¥á  ¢ ®ª­¥ ¢¨¤¥®-އ“ ¡ã¤¥â ³
;³ ­ å®¤¨âìáï 64-ï «¨­¨ï íªà ­  (­ ç¨­ ï ᢥàåã, á 0-©) ³
;³ 4. Š ¦¤ë© ª¢ ¤à â ¢¨¤¥®-އ“ à §¬¥à®¬ 8x8 ¡ ©â ¬®¦¥â ¡ëâì ³
;³ ãáâ ­®¢«¥­ ¢ «î¡®¥ §­ ª®¬¥áâ®. €¤à¥á ¢­ãâਠª¢ ¤à â  ¥áâì ³
;³ ¬« ¤è¨¥ âਠ¡¨â   ¤à¥á  «¨­¨¨ ¨ ¬« ¤è¨¥ âਠ¡¨â  ­®¬¥à  «¨­¨¨.³
<20> ©âë 000..2FFh ­  «¨­¨ïå ïîâáï ¯à®áâ묨 ¤ ­­ë¬¨, ª®â®àë¥ ³
;³ ¬®¦­® ¨á¯®«ì§®¢ âì ¤«ï ¢ë¢®¤  ­  íªà ­. ³
<20> ©âë 300h..3A0h ïîâáï ¡ ©â ¬¨ ०¨¬  íªà ­ . ³
<20> ©âë 3E0h..3FFh - ¡ ©âë ¯ «¨âà. ³
;³ €¤à¥á ª¢ ¤à â  ¤ ­­ëå, ª®â®à®¥ ¢ë¢®¤¨âáï ¢ §­ ª®¬¥áâ® § ¤ ¥âáï³
;³ ¢ ¡ ©â å ०¨¬  íªà ­ . ³
;ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
;__________________________________________________________________________________________________________#
; MACRO _mGET_FAT_START slot_num
; .correct EQU (SLOT3 and slot_num)*2
; IN A,(slot_num)
; LD B,A
; LD A,SYS_PAGE
; OUT (slot_num),A
; LD HL,SYS_PAGE.RAMD_FAT - .correct
; DISPLAY "CORRECT = ",/h,.correct
; ENDM
; MACRO _mGET_FAT_END slot_num
; OUT (slot_num),A
; ENDM
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; DW #FEFF ; Sprinter-2000
;
; DW #FFFE ; Sprinter-1
; DB 0 ;  ªá¥«¥à â®à
; DB 1 ; íªà ­
; DB 2 ; ª« ¢¨ âãà 
; DB 1 ; ª®¢®ªá;
;
; DW #FFFD ; Sprinter-2
; DB 2 ;  ªá¥«¥à â®à
; DB 1 ; íªà ­
; DB 0 ; ª« ¢¨ âãà 
; DB 1 ; ª®¢®ªá;
;
; DW #FFFC ; AY
; DB 0 ;  ccselerator
; DB 0 ; Screen
; DB 2 ; ª« ¢¨ âãà 
; DB 0 ; ª®¢®ªá;
;
; DW #FFF9 ; ¨¤¥­â¨ä¨ª â®à ª®­ä¨£ãà æ¨¨ DooM
; DB 3 ; accelerator type
; DB 1 ; íªà ­
; DB 0 ; ª« ¢¨ âãà 
; DB 2 ; ª®¢®ªá (¡« áâ¥à)
;
;ELCOM256 EQU 1 ; ०¨¬ ELCOM-256
;IF ELCOM256 EQ 1
;ELSE
;D_TBON EQU 03h ; ¤ ­­ë¥ ¤«ï ¢ª«î祭¨ï TURBO
;D_TBOFF EQU 02h ; ¤ ­­ë¥ ¤«ï ¢ª«î祭¨ï TURBO
;D_ROM16ON EQU 40h
;D_ROM16OFF EQU 00h
;CNF_0 EQU 04h
;CNF_1 EQU 0Ch
;CNF_2 EQU 14h
;CNF_3 EQU 1Ch
;ENDIF
;TTTT_EEEE EQU 100
;R170 EQU #0050 ;Data
;R171 EQU #0051 ;Error
;R172 EQU #0052 ;Direct
;R173 EQU #0053 ;Reserve
;R174 EQU #0054 ;Lenght block low
;R175 EQU #0055 ;Lenght block high
;R176 EQU #4052 ;Drive device
;R177 EQU #4053 ;Status
;W170 EQU #0150 ;Data
;W171 EQU #0151 ;????
;W172 EQU #0152 ;????
;W173 EQU #0153 ;Reserve
;W174 EQU #0154 ;Lenght block low
;W175 EQU #0155 ;Lenght block high
;W176 EQU #4152 ;Drive device
;W177 EQU #4153 ;Command
;HDW_COM EQU #4153 ; #1F7 Command
;P_CMD EQU #4153 ; WRITE
;HDW_DRV EQU #4152 ; #1F6 Drive Control
;P_HD_CS EQU #4152
;HDW_CLH EQU #0155 ; #1F5 Cylinder High
;P_C_HIG EQU #0155
;HDW_CLL EQU #0154 ; #1F4 Cylinder Low
;P_C_LOW EQU #0154
;HDW_SEC EQU #0153 ; #1F3 Sector
;P_S_NUM EQU #0153
;HDW_CNT EQU #0152 ; #1F2 Counter
;P_S_CNT EQU #0152
;HDW_ERR EQU #0151 ; #1F1 Error
;HDW_DAT EQU #0150 ; #1F0 Data
;HDR_CTL EQU #4053 ; #1F7 Status (Control)
;P_HDST EQU #4053 ; READ
;HDR_DRV EQU #4052 ; #1F6 Drive Control
;HDR_CLH EQU #0055 ; #1F5 Cylinder High
;HDR_CLL EQU #0054 ; #1F4 Cylinder Low
;HDR_SEC EQU #0053 ; #1F3 Sector
;HDR_CNT EQU #0052 ; #1F2 Counter
;HDR_ERR EQU #0051 ; #1F1 Error
;P_ERR EQU #0051 ; READ
;HDR_DAT EQU #0050 ; #1F0 Data
;P_DATS EQU #0050 ; READ/WRITE INIR/OTIR
;;Bits for HDR_CTL
;;---[]
;BSY EQU 7
;RDY EQU 6
;DRQ EQU 3
;ERR EQU 0
;;---[]
;HDD EQU 1
;CDROM EQU 2
;;EQU FOR IY+
;DRVHD_H EQU 0
;SC_PT_H EQU 1
;HEADS_H EQU 2
;CYL_L_H EQU 3
;CYL_H_H EQU 4
;SPCLL_H EQU 5
;SPCLH_H EQU 6
;DTYPE_H EQU 7
;IDE0 EQU #C1C0
;IDE1 EQU #C1C8
;IDE2 EQU #C1D0
;IDE3 EQU #C1D8
;HDD_INI_TABLE EQU #C1C0
; D_TBON EQU 3 ; ¤ ­­ë¥ ¤«ï ¢ª«î祭¨ï TURBO
; D_TBOFF EQU 2 ; ¤ ­­ë¥ ¤«ï ¢ëª«î祭¨ï TURBO
; CNF_0 EQU #04 ; ª àâ  ¯®à⮢ 0
; CNF_1 EQU #0C ; ª àâ  ¯®à⮢ 1
; CNF_2 EQU #14 ; ª àâ  ¯®à⮢ 2
; CNF_3 EQU #1C ; ª àâ  ¯®à⮢ 3
; CNF_512 EQU #80 ; ¢ª«î祭¨¥ Pentagon 128
; áâà ­¨æë á ª®­ä®© ¤«ï Sp97, ¤«ï ᮢ¬¥á⨬®áâ¨ á ¤à¥¢­¨¬¨ ¯à®£ ¬¨
; PG_SP1 equ #EC
; PG_SP2 equ #EE
; PG_AY equ #EA
; SPRINTER EQU 4 ; <E2809A>ˆŸ !!!
; ISD_WARM EQU 3
; ISD_COLD EQU 0
; IS_KEY EQU #40 ; „€<E2809E><E282AC>… „‹Ÿ ‚›‚Ž„€ <20>Ž<EFBFBD> <20><>ˆ Šž—…<E28094>ˆˆ IS-DOS
; IS_RAM_ADR EQU #5BC0 ; €„<E282AC> ‡€ƒ<E282AC>“‡Šˆ <20><>Žƒ<C5BD>€ŒŒ <20><EFBFBD>…•Ž„€ IS-DOS
; TB_WAITES EQU #00 ; WAITë ¤«ï TURBO-MODE
; NTB_WAITES EQU #00 ; WAITë ¤«ï neTURBO-MODE
; IS_WAITES EQU #00 ; WAITë ¤«ï IS-DOS
; SYS_PORT_ON EQU #7D
; SYS_PORT_OFF EQU #3D
; RAMD_LET EQU ('R' - 'A')
; HD_HEADS EQU 5
; HD_CS EQU #A0
; HD_S_P_T EQU 17
; HD_S_X_H EQU (HD_S_P_T * HD_HEADS) ; ??? ç¨á«® ᥪâ®à®¢ ­  樫¨­¤à¥
; P_DATS EQU #50 ; READ/WRITE INIR/OTIR
; P_ERR EQU #051 ; READ
; P_PREC EQU #151 ; WRITE
; P_S_CNT EQU #152
; P_S_NUM EQU #153
; P_C_LOW EQU #154
; P_C_HIG EQU #155 ;<-\
; P_HD_CS EQU #4152 ;<-/
; P_HDST EQU #4053 ; READ
; P_CMD EQU #4153 ; WRITE
; P_HD3F6 EQU #4154 ; WRITE 3F6
; P_HD3F7 EQU #4055 ; READ 3F7
;=================================================================================
; <EFBFBD>®pâë Sprinter. (¡ ©âë PORT_X)<<
; 0 - port FF<<
; 1 - port keyboard<<
; 2 - port BORDER<<
; 3 - port 1FFDh<<
; 4 - port 7FFDh<<
; 5 - port 3FFDh<<
; 6 - port Start-ROM<<
; 7 - port Start-ROM-ALT<<
; 8 - port ROM-BASIC48<<
; 9 - port ROM-BASIC128<<
; 10 - port ROM-TR-DOS<<
; 11 - port ROM-EXPANSION<<
; 12 - port ROM-BASIC48-ALT<<
; 13 - port ROM-BASIC128-ALT<<
; 14 - port ROM-TR-DOS-ALT<<
; 15 - port ROM-EXPANSION-ALT<<
; 16 ??<<
; .. ??<<
; 31 ???ports RAM-PAGES - ¯®pâë 㪠§ë¢ î騥, ª ª ï áâp ­¨æ  އ“<<
; ¯®¤ª«î祭  ¢ ª ç¥á⢥ áâp ­¨æë 0..F ¢ ª®­ä¨£ãp æ¨¨ Scorpion.<<
; 33 - port RAM-0 áâp ­¨æ  އ“ ¯®¤ª«îç ¥¬ ï ¢ ­ã«¥¢®¥ ®ª­® ¯p®æ¥áá®p <<
; 34 - port RAM-5 áâp ­¨æ  އ“ ¯®¤ª«îç ¥¬ ï ¢ ¯¥p¢®¥ ®ª­® ¯p®æ¥áá®p <<
; 35 - port RAM-2 áâp ­¨æ  އ“ ¯®¤ª«îç ¥¬ ï ¢® ¢â®p®¥ ®ª­® ¯p®æ¥áá®p <<
; 36 - port CONFIG<<
; 37 - port COVOX-1<<
; 38 - port COVOX-2<<
; 39 - port AY-3-8910-adr<<
; 40 - port AY-3-8910-dat<<
; 41 - port KEMPSTON<<
; 42 - port ISA-interface<<
; 43 ??reserv<<
; .. ??<<
; 47 ??<<
; 48 - 51 ¯®pâë ƒ93<<
; 52 - ¯®pâ DOS-1<<
; 53 - ¯®pâ DOS-2<<
; 54 ?? á«ã¦¥¡­ë¥ ¯®pâë<<
; .. ??<<
; 63 ??<<
; 64 ?? ¯®pâë IDE interface<<
; .. ??<<
; 79 ??<<
; 80..127 - p¥§¥p¢.<<
; 128..143 - ¯®pâë ¨¤¥­â¨ä¨ª â®p  ¬ è¨­ë ( ⮫쪮 ¤«ï ç⥭¨ï.)<<
; 144..254 - p¥§¥p¢<<
; 255 - ­ã«ì-¯®pâ - ®âª«î祭­®¥ á®áâ®ï­¨¥.<<
;=================================================================================