Shared_Includes/constants/SP2000.inc
2023-06-19 04:28:29 +10:00

1879 lines
67 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
IFNDEF _includedSP2000 : DEFINE _includedSP2000 : ENDIF
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; <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 ; bit4=1 --> bit7=1 § ¯à®á ­  § ¯®«­¥­¨¥ ¯®«ã¡ãä¥à  ¤ ­­ë¬¨
.SYS_PORT EQU #004E ; ¯®àâ ã¯à ¢«¥­¨ï COVOX-Blaster (CBL_DIR). 16-bit port!!!, ¯¨á âì ç¥à¥§ OUT (c),reg ¨«¨ ®ç¥­ì ®áâ®à®¦­®))
.COVOX_OUT EQU #FB ; <20>®àâ ¤«ï ¢ë¢®¤  §¢ãª  = #4F
; #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;
;---------------------------------------;
;=======================================
; § ¬ ¯«¥­ ç¥à¥§ ª àâã ¯®à⮢ ­  #7C/#3C ¨ #74/#24
CNF_PORT:
.ON EQU #74
.OFF EQU #24
.TURBO.ON EQU 3 ; ¤ ­­ë¥ ¤«ï ¢ª«î祭¨ï TURBO
.TURBO.OFF 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
; ¯à¨¡¨â ¢ ª®­ä¥ £¢®§¤ï¬¨ ­  #7C/#3C
SYS_PORT:
.ON EQU #7C
.OFF EQU #3C
.RAM EQU .OFF
.ROM EQU .ON
.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
.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: on/off ¨«¨ vROM:
; #24 - áâà ­¨æ  ¨§ ¢­.¯®àâ  (#E0..#E3)/(#E4..#E7)
; #74 - áâà ­¨æ  ¨§ ¢­.¯®àâ  #EB/#EF
bit1 - 1 - TURBO ena, 0 - ¯¥à¥ª«î祭¨¥ 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 ;/
<EFBFBD>¥à¥ª«î祭¨¥ áâà ­¨æ vROM:
___________________________________________________________________________
| ‡­ ç¥­¨¥ | ‡ ¯¨áì ¢® ¢­¥è­¨© ¯®àâ: |
| ¨§ ¢­ãâà. |___________________________________________________________|
| ¯®àâ  | | | | #7C (­® rom | | |
| €«ìâ¥àë | #24 | #74 | #3C | ¢ ¯à¨®à¨â¥â¥) | 1FFD | 7FFD |
| ||| | bit1..0 | bit1..0 | bit1..0 | bit1..0 | bit1 | bit4 |
|_____\|/_____|_________|_________|_________|_______________|______|______|
|E0 | 00 | | 00 | | 1 | ... |
|E1 (+dos_on) | 00 | | 00 | 00 | 0 | ... |
|E2 | 00 | | 00 | 00 | 0 | 0 |
|E3 | 00 | | 00 | | 0 | 1 |
|E4 | 01 | | 01 | | 1 | ... |
|E5 (+dos_on) | 01 | | 01 | 01 | 0 | ... |
|E6 | 01 | | 01 | 01 | 0 | 0 |
|E7 | 01 | | 01 | | 0 | 1 |
|EB | | 00 | | | ... | ... |
|EF | | 01 | | | ... | ... |
|_____________|_________|_________|_________|_______________|______|______|
... - §­ ç¥­¨¥ ஫¨ ­¥ ¨£à ¥â
‘â ­¤ àâ­ë¥ áâà ­¨æë އ“ ¤«ï ®¡à §®¢ <20>‡“ ᯥªâà㬠:
#42 BASIC 128
#43 BASIC 48
#44 TR-DOS
#45 BIOS (ZX_EXP)
#46 BIOS (ZX_EXP)
#47 BIOS (ZX_EXP2)
SYS_PORT:
bit0 - TURBO: on/off ¨«¨ BIOS: Part1/Part0
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 ®âª«îç ¥â
<20>‡“ ®â ®ª­  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
----------------------------------------------------
*/
;=======================================
; ¯®àâë ã¯à ¢«¥­¨ï áâà ­¨æ ¬¨ ä áâà ¬
FastRAM:
.ON EQU #FB ; ‚ª«î祭¨¥ ªíè  IN A,(FastRAM.ON) - ¯à¨¡¨â® £¢®§¤ï¬¨ ¢ ª®­ä¥
.OFF EQU #7B ; Žâª«î祭¨¥ ªíè  IN A,(FastRAM.OFF) - ¯à¨¡¨â® £¢®§¤ï¬¨ ¢ ª®­ä¥
.SLOT0 EQU #5C ; <20>¥à¥ª«î祭¨¥ áâà ­¨æ ªíè  ¯à¨ FastRAM.ON ¢ ­ã«¥¢®¬ ®ª­¥ (bit0..1) - ¯à¨¡¨â® £¢®§¤ï¬¨ ¢ ª®­ä¥
; <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
; ‡­ ç¥­¨ï:
; ­®¬¥à áâà ­¨æë 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 ;!FIXIT § ¬¥­¨âì
P_KBD_IN EQU #FE ;!FIXIT § ¬¥­¨âì
KEMPSTON:
.JOYSTICK EQU 7
; —⥭¨¥: ¯®àâ ¤¦®©á⨪  ¨ ᨣ­ «ë DRQ, INTRQ ª®­â஫«¥à  ¤¨áª®¢®¤ .
; ‡ ¯¨áì: § ¯¨áì ¢ ¬¨ªà®á奬㠌9 - á¨á⥬­ë© ¯®àâ TR-DOS
; ª¥¬¯áâ®­ ¨§ DOS_ON ¤«ï ᯥ樠«ì­®£® è­ãઠ LPT+JOY ç⮡ ¯® PC Link ª®­­¥ªâ¨âìáï ª PC
.PC_Link EQU #FF ;JOY_DOS
.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
; bit 2..0:
; bit 0 - ᨭ¨©
; bit 1 - ªà á­ë©
; bit 2 - §¥«ñ­ë©
; 0 - çñà­ë©
; 1 - ᨭ¨©
; 2 - ªà á­ë©
; 3 - ¯ãà¯ãà­ë©
; 4 - §¥«ñ­ë©
; 5 - £®«ã¡®©
; 6 - ¦ñ«âë©
; 7 - ¡¥«ë©
;
; 梥⠡®à¤îà  ¢ ०¨¬¥ á¯à¨­â¥à  ¡¥àñâáï ¨§ 4 ¯ «¨âàë.
; 梥⠢ ¯ «¨âॠ¢ëç¨á«ï¥âáï ¤ã¡«¨à®¢ ­¨¥¬ ¢ ¡ ©â¥ æ¢¥â  bit2..0 ¢ bit5..3
; ¬®¦­® ¢ëç¨á«ïâì ¨â®£®¢ë© ¨­¤¥ªá ¢ ¯ «¨âॠ㬭®¦¥­¨¥¬ æ¢¥â  ­  9, «¨¡®
; âਠᤢ¨£  æ¢¥â  ¢«¥¢® ¯«îá ¨á室­ë© æ¢¥â æ¢¥â
; 0 - BLACK color index #00
; 1 - BRIGHT BLUE color index #09
; 2 - GREEN color index #12
; 3 - BRIGHT CYAN color index #1B
; 4 - RED color index #24
; 5 - BRIGHT MAGENTA color index #2D
; 6 - BROWN color index #36
; 7 - WHITE color index #3F
;---------------------------------------
;-------------[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
SLOT1 EQU #A2 ; ­®¬¥à ¡ ­ª¨ 1
SLOT2 EQU #C2 ; ­®¬¥à ¡ ­ª¨ 2
SLOT3 EQU #E2 ; ­®¬¥à ¡ ­ª¨ 3
PORT_Y EQU #89 ; ¢¥à⨪ «ì­ ï ª®®à¤¨­ â  â®çª¨ ­  £à ä¨ç¥áª®¬ íªà ­
RGADR EQU #89 ; áâà ­¨æ  VIDEO-RAM ¤«ï ᯥªâà㬮¢áª®£® ०¨¬ 
;RGSCR EQU #E9 = RGMOD
RGMOD EQU #C9 ; ¯®àâ ०¨¬  íªà ­ . <20>¥à¥ª«îç ¥â áâà ­¨æë ०¨¬  íªà ­ .
SCREEN_SWITCH EQU #C9 ; ¯®àâ ०¨¬  íªà ­ . <20>¥à¥ª«îç ¥â áâà ­¨æë ०¨¬  íªà ­ .
;RGACC EQU #A9
PGACC EQU #FC ; <20>®àâ ¬ áèâ ¡¨à®¢ ­¨ï
Port_All_Mode EQU #204E
; bit0 - 0: ¢ëª«  ªá¥«¥à â®à  ¨ ¯à¥à뢠­¨© ®â ª« ¢¨ âãàë, ¢ª«î祭¨¥ ᯥª®¢áª®©  ¤à¥á æ¨¨ íªà ­ .
; bit1 -
; bit2 - ¢ª«/¢ëª« original zx spectrum waits
; bit3 - ¢ª«/¢ëª« ®â¤¥«ì­®¥ ®â  ªá¥«¥à â®à  ¯à¥à뢠­¨ï ®â ª« ¢¨ âãàë
; bit4 -
; bit5 -
; bit6 -
; bit7 -
Port_VSYNC EQU #BD ; #41 - 320Lines/49Hz, #61 - 312Lines/50Hz
.SET_320L EQU #41
.SET_312L EQU #61
;
;----------------------------------------------------------------------;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; €¤à¥á  áâà ­¨æ ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;SCR_PAGE EQU 0FDH
;PAL_PAGE EQU 0FDH
PAL_V_PAGE EQU #9E ;?????
PAL_SCP EQU #1E ;?????
; áâà ­¨æ  ¯®à⮢
DCP_PAGE EQU #40
; áâà ­¨æ  ¨á¯®«ì§ã¥¬ ï DSS
DSS_PAGE EQU #FF
ZERO_PAGE EQU 0
; áâà ­¨æ  ¤«ï ¯¥à¥å¢ â  à¥á¥â  ¨ ¥éñ 祣®-â®
Spec_Page EQU #41
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
;
; áâà ­¨æ  á á¨á⥬­ë¬¨ ¯¥à¥¬¥­­ë¬¨ BIOS
SYS_PAGE EQU #FE
.ID_FLAG EQU #C000 ; ª®¯¨ï ID_SPRINTER ¤«ï ¤¥â¥ªâ  ¯®«­®© ¨­¨æ¨ «¨§ æ¨¨. 32 bytes max
; 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 ; ¯¥à¥ ¤à¥á æ¨ï ¤¨áª®¢
.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 ; ª®¯¨ï ᮤ¥à¦¨¬®£® ï祩ª¨ ª¬®á ;!TODO
.INT_ADRESS EQU #C124 ;  ¤à¥á ®¡à ¡®â稪  ¯à¥à뢠­¨ï
.INT_PAGE EQU #C126 ; áâà ­¨æ  á ®¡à ¡®â稪®¬ ¯à¥à뢠­¨ï
.INT_ID EQU #C127 ; ¥á«¨ = #AA - §­ ç¨âì ®¡à ¡®â稪 ãáâ ­®¢«¥­
.DS_1440 EQU #C128 ; ä« £¨ ¯¥à¥ª«î祭¨ï 720/1440
.F_P_S EQU #C129 ; ç¨á«® ä ©«®¢ëå § ¯¨á¥© ¢ ᥪâ®à¥
.S_P_C EQU #C12A ; ç¨á«® ᥪâ®à®¢ ª â «®£ 
.COUNT_FL EQU #C12B ; áç¥â稪 ä ©«®¢ ¢ ᥪâ®à¥
.COUNT_SEC EQU #C12C ; áç¥â稪 ᥪâ®à®¢ ¢ ª â «®£¥
.C_P_B EQU #C12D ; ç¨á«® ª« áâ¥à®¢ ­  ¡«®ª އ“
;!TODO EQU #C12E
.FAT_FLAG EQU #C130 ; FAT ä« £ + FAT sector
.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.
; ¢â®à®© ¡ ©â ¤«ï ¢ë¡®à  ०¨¬ 
; ᯥªâà㬠 ¯à¨ § ¯ã᪥ äã­ªæ¨ï¬¨ <20>‡“.
.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
.WIN_SAV_HL EQU #C144
.WIN_SAV_DE EQU #C146
.WIN_SAV_BC EQU #C148
.WIN_ZG EQU #C14A
.WIN_PLACE_WIN EQU #C14C
.WIN_GR_MAP EQU #C14E
.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
;!TODO EQU #C170 - #C17F
.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 ; RAMD_KEY_NUM
;!TODO EQU #C190 - #C19F
.LIB_TABLE EQU #C1A0; - #C1BF ; â ¡«¨æë librares 32 ¡ ©â 
; +0 ¡¨¡«¨®â¥ª  DOS
;
.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_2 EQU #C1F0
;.FDD_3 EQU #C1F8
;
.RAMD_FAT EQU #C200 ; à á¯®«®¦¥­¨¥ ¡«®ª®¢ RAM-Disk-®¢
.MS_BPB EQU #C400 ; ¡ãä¥à BPB
.HD_IDF_ADR EQU #C600 ; !FIXIT áâàãªâãன ᤥ« âì!!!
.HD_IDF_ADR.heads EQU .HD_IDF_ADR+6
.HD_IDF_ADR.sectors EQU .HD_IDF_ADR+12
.HD_IDF_ADR.sec_cyl EQU .HD_IDF_ADR+4
.MS_DIR EQU #C800 ; ¡ãä¥à DIR sector
.MS_FAT EQU #CC00 ; ¡ãä¥à FAT sector
.MS_BUF EQU #D000 ; ¡ãä¥à DAT sector
.WIN_MAP_IX EQU #E000 ; ¤ ­­ë¥ ª àâ ®ª®­
.TASK_DATA EQU #EC00 ; ¤ ­­ë¥ ¤«ï § ¤ ç
.RESTART_ID EQU #F000 ; db "RESTART",0 ;First start identificator
.PowerOnTime EQU #F008 ; ¢à¥¬ï ¢ª«î祭¨ï ¨ ¯¥à¥§ £à㧪¨ #F008 - #F017
.USER_VARS EQU #F018 ; ¯¥à¥¬¥­­ë¥ ¯®«ì§®¢ â¥«¥©
;------------[ OLD ]-------------;
;.SYSTEM_ID EQU #C020 ; ¨á¯®«ì§®¢ « áì ¤«ï ¯®¤¬¥­ë ¡¨®á "NEW_BIOS"
;.MSD_FAT_SEC EQU #C122 ; ­ ç «ì­ë© ᥪâ®à FAT
;.INT_ADRESS EQU #C124 ; ­ ç «ì­ë© ᥪâ®à CAT
;.INT_PAGE EQU #C126 ; ­ ç «ì­ë© ᥪâ®à DAT
;.CLASTER_LEN EQU #C12E ; ¤«¨­  ª« áâ¥à  ¢ ¡ ©â å
;.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
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
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
;!TODO § ¯¨á âì â ª ¢á¥ ¯ à ¬¥âàë ¢ ª¬®á
CMOS.Cell.ScreenSET EQU #1A
; %0000 1111 - COLOR STYLE For Setup
; %0011 0000 - Frame Int (Default/Pentagon/Scorpion/Original)
; %1100 0000 - Screen V-Sinc (Default/312 lines 50 HZ/320 Lines 49 Hz)
.Mask.Sinc EQU #C0 ; SCREEN_HZ
.Mask.Int EQU #30 ; SCREEN_INT
;
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
;
;????????????????????????????????????????
;SPRINTER EQU 4 ; <EFBFBD>ˆŸ !!!
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
*/
;***************************************
ISA_PORT EQU #9FBD
;***************************************
; !FIXIT ¨á¯®«ì§®¢ âì áâàãªâãàã _sBOOT_SEC
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
;***************************************
; ***** - Žª®­­ë¥ ¯¥à¥¬¥­­ë¥ - *****
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
;!FIXIT ----------------------------------------------------------------;
;<EFBFBD>¥à¥¬¥­­ë¥ ᯥªâà㬠
ZX_VARS EQU #5C00
;
.SWAP_ROM EQU #5B00
.PRINTER_BUFFER EQU #5B00
.AUTO_5B08 EQU #5B08
.AUTO_5B5C EQU #5B5C
.COPY_P128 EQU #5B5C
.AUTO_5BFF EQU #5BFF
;
.K_STATE EQU #5C00
.KEY_TIME EQU #5C09
.REP_K_TYME EQU #5C10
.ZG EQU #5C36
.ERR_BEEP EQU #5C38
.KEY_BEEP EQU #5C39
.ERR_NR EQU #5C3A
.FLAGS EQU #5C3B
.TV_FLAG EQU #5C3C
.ERR_SP EQU #5C3D
.LIST_SP EQU #5C3F
.MODE EQU #5C41
.NEW_PPC EQU #5C42
.NEW_S_PPC EQU #5C44
.PPC EQU #5C45
.SUB_PPC EQU #5C47
.BORDER EQU #5C48
.EDIT_PPC EQU #5C49
.BAS_VARS EQU #5C4B
.WORK_VAR EQU #5C4D
.CHANS EQU #5C4F
.CUR_CHL EQU #5C51
.BAS_PROG EQU #5C53
.NEXT_LINE EQU #5C55
.DATA_ADR EQU #5C57
.E_LINE EQU #5C59
.K_CUR EQU #5C5B
.CH_ADR EQU #5C5D
.SINT_ER_AD EQU #5C5F
.WORK_SP EQU #5C61
.STK_BOT EQU #5C63
.STK_END EQU #5C65
.B_REG EQU #5C67
.MEM_CALC EQU #5C68
.FLAGS_2 EQU #5C6A
.L_SCR_SIZE EQU #5C6B
.AUTO_LST_L EQU #5C6C
.OLD_PPC EQU #5C6E
.OLD_S_PPC EQU #5C70
.FLG_INPUT EQU #5C71
.S_VAR_LEN EQU #5C72
.SINT_TB_ADR EQU #5C74
.RAND_SEED EQU #5C76
.FRAMES EQU #5C78
.UDG EQU #5C7B
.X_Y_COORD EQU #5C7D
.PRN_POS EQU #5C7F
.ADR_PR_BUF EQU #5C80
.ECHO_E EQU #5C82
.SCR_PL_M EQU #5C84
.SCR_PL_L EQU #5C86
.SCR_POS_M EQU #5C88
.SCR_POS_L EQU #5C8A
.SCROLL_ST EQU #5C8C
.ATTR_P EQU #5C8D
.MASK_P EQU #5C8E
.ATTR_T EQU #5C8F
.MASK_E EQU #5C90
.FLAGS_ATR EQU #5C91
.MEM_BOT EQU #5C92
.AUTO_5C9A EQU #5C9A
.NMI_ADR EQU #5CB0
.TOP_CLEAR EQU #5CB2
.P_RAMTOP EQU #5CB4
.BEG_ADRESS EQU #5CB6
.RET_INS EQU #5CC2
.AUTO_5CC3 EQU #5CC3
.DISK_A EQU #5CC8
.DISK_B EQU #5CC9
.DISK_C EQU #5CCA
.DISK_D EQU #5CCB
.CAT_SEC EQU #5CCC
.DRV_READY EQU #5CCD
.RD_WR_COM EQU #5CCE
.VAR_1 EQU #5CCF
.AUTO_5CD1 EQU #5CD1
.AUTO_5CD2 EQU #5CD2
.AUTO_5CD3 EQU #5CD3
.AUTO_5CD5 EQU #5CD5
.DOS_ERROR EQU #5CD6
.MED_START EQU #5CD7
.DOS_CH_ADR EQU #5CD9
.MED_LEN EQU #5CDB
.FL_NAME EQU #5CDD
.FL_N_2 EQU #5CDF
.FL_N_4 EQU #5CE1
.FL_N_6 EQU #5CE3
.FL_N_7 EQU #5CE4
.FL_TYPE EQU #5CE5
.FL_START EQU #5CE6
.FL_LEN EQU #5CE8
.START_CLASTER EQU .FL_LEN
.FL_SIZE EQU #5CEA
.FL_PLACE EQU #5CEB
.VAR_2 EQU #5CED
.INTERF_I EQU #5CEF
.VAR_2_0 EQU #5CF1
.VAR_2_1 EQU #5CF2
.CONT_SEC EQU #5CF4
.CONT_TRK EQU #5CF5
.OPER_DISK EQU #5CF6
.DOS_FLAG EQU #5CF7
.DISK_1_FLG EQU #5CF8
.DISK_2_FLG EQU #5CF9
.TIME_A EQU #5CFA
.TIME_B EQU #5CFB
.TIME_C EQU #5CFC
.TIME_D EQU #5CFD
.COMAND_WG EQU #5CFE
.SEC_NUM EQU #5CFF
.CONT_BUF_ADR EQU #5D00
.WORK_2 EQU #5D02
.WORK_4 EQU #5D04
.S_NAME_NUM EQU #5D06
.N_DEL_FLS EQU #5D07
.FST_SYM_NAME EQU #5D08
.VAR_3 EQU #5D09
.BUF_FLAG EQU #5D0C
.BAS_DOS_FLG EQU #5D0E
.DOS_ERR_2 EQU #5D0F
.ERR_3D00 EQU #5D10
.ADR_DOS_COM EQU #5D11
.ERR_SP_COPY EQU #5D13
.MSG_FLAG EQU #5D15
.PDOS_COPY EQU #5D16
.FLAG_BOOT EQU #5D17
.INT_1_VAR EQU #5D18
.CONT_DISK EQU #5D19
.ADR_RET EQU #5D1A
.DOS_SP EQU #5D1C
.FL_NUMBER EQU #5D1E
.COM_LN_COPY EQU #5D20
.L_5D23 EQU #5D23
.BUFER EQU #5D25
.AUTO_5D33 EQU #5D33
.CLEAR_SEC EQU #5E06
.CLEAR_TRK EQU #5E07
.TYPE_DISK EQU #5E08
.N_FILES EQU #5E09
.FREE_SEC EQU #5E0A
.CODE_10H EQU #5E0C
.DISK_MRK_1 EQU #5E0F
.DISK_ALT_NM EQU #5E10
.N_DEL_FL EQU #5E19
.DISK_NAME EQU #5E1A
;
.BUFER_RD EQU #5D25 ; tr-dos buffer
;-----------------------------------------------------------------------;
MACRO RET_SLOT0
LD A,0
OUT (SLOT0),A
ENDM
MACRO RET_SLOT1
LD A,5
OUT (SLOT1),A
ENDM
MACRO RET_SLOT2
LD A,2
OUT (SLOT2),A
ENDM
;
MACRO RET_SLOT3
LD A, 0
OUT (SLOT3), A
ENDM
;
MACRO CALL_48 adr
PUSH HL
LD HL, .ADR_R
PUSH HL
LD HL,SW_ROM
PUSH HL
LD HL,adr
JP JP_HL_48
.ADR_R:
POP HL
ENDM
MACRO CALL_48X adr
PUSH HL
LD HL,.ADR_R
EX (SP),HL
PUSH HL
LD HL,SW_ROM
EX (SP),HL
PUSH HL
LD HL,adr
EX (SP),HL
JP SW_ROM
.ADR_R:
ENDM
MACRO RAMD_KEY
SUB 4
DI
LD B,SYS_PAGE
LD C,SLOT3
OUT (C),B
LD HL,RAMD_KEYS
ADD A,L
LD L,A
DEC L
LD (A_RAMD_VARS),HL
INC L
LD L, (HL)
RET_SLOT3
EI
LD A, L
ENDM
; MACRO DSS adr, dt
; IF (adr >= $)
; DUP ((adr - $) / 16)
; DB dt,dt,dt,dt,dt,dt,dt,dt,dt,dt,dt,dt,dt,dt,dt,dt
; EDUP
; DUP (adr - $)
; DB dt
; EDUP
; ELSE
; ASSERT 0, "Error memory relocation."
; ENDIF
; ENDM
;
;
MODULE Conf_port
; ¢­ãâ७­¨¥ Altera (Sp97)
;00 - <EFBFBD>¥â ¯®àâ 
;#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
;#1B - ISA_PORT ; #9FBD
;#1C - CMOS_DRD ; #FFBD
;#1D - CMOS_AWR ; #DFBD
;#1E - CMOS_DWR ; #BFBD
;#1F reserved
;#20 - HDD - ॣ¨áâà ¤ ­­ëå ; #0050
;#21 - HDD - ॣ¨áâà á®áâ®ï­¨ï/®è¨¡®ª ; #0051
;#22 - HDD - ॣ. ª®«-¢  ᥪ-®¢ ¤«ï R/W ; #0052
;#23 - HDD - ॣ¨áâà ᥪâ®à  ; #0053
;#24 - HDD - ॣ¨áâà ¤®à®¦ª¨-low ; #0054
;#25 - HDD - ॣ¨áâà ¤®à®¦ª¨-high ; #0055
;#26 - HDD - ॣ. heads/¢ë¡®à  mas-slave ; #4052
;#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-8910-port (FFFD) ç⥭¨¥ ¤ ­­ëå; ?????
;#53 reserved
;#54 reserved
;#55 reserved
;#56 reserved
;#57 reserved
Kempston_Mouse EQU #58
;#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
;#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
;#8D reserved
;#8E reserved
ROM_RG EQU #8F ; !FIXIT ¯®àâ ¯¥à¥ª«î祭¨ï áâà ­¨æ 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 - ª®¯¨ï C0 ¨«¨ C2??? (not used!)
;#C9 - ª®¯¨ï C1 (not used!)
;#CA - ª®¯¨ï C2 (not used!)
HOLD EQU #CB ; ‡ ¤ ñâ §­ ç¥­¨ï áçñâ稪®¢ ᨭåà®­¨§ â®à  ᨭåந¬¯ã«ìᮢ. €ªâ¨¢¨àã¥âáï ¢ âã­¤¥à¥, ¯¨è¥âáï ¢ ­¥£® #95. xxxx yyyy - ¯®§¨æ¨ï íªà ­ 
;#CC - ª®¯¨ï C4 (not used!)
;#CD - ª®¯¨ï C5 (not used!)
;#CE - ª®¯¨ï C6 (not used!)
;#CF - ª®¯¨ï C7 (not used!)
;#D0 - vRAM page for 512 kb (®ª­® C000-FFFF)
;#D1 - vRAM page for 512 kb (®ª­® C000-FFFF)
;#D2 - vRAM page for 512 kb (®ª­® C000-FFFF)
;#D3 - vRAM page for 512 kb (®ª­® C000-FFFF)
;#D4 - vRAM page for 512 kb (®ª­® C000-FFFF)
;#D5 - vRAM page for 512 kb (®ª­® C000-FFFF)
;#D6 - vRAM page for 512 kb (®ª­® C000-FFFF)
;#D7 - vRAM page for 512 kb (®ª­® C000-FFFF)
;#D8 - vRAM page for 512 kb (®ª­® C000-FFFF)
;#D9 - vRAM page for 512 kb (®ª­® C000-FFFF)
;#DA - vRAM page for 512 kb (®ª­® C000-FFFF)
;#DB - vRAM page for 512 kb (®ª­® C000-FFFF)
;#DC - vRAM page for 512 kb (®ª­® C000-FFFF)
;#DD - vRAM page for 512 kb (®ª­® C000-FFFF)
;#DE - vRAM page for 512 kb (®ª­® C000-FFFF)
;#DF - vRAM page for 512 kb (®ª­® C000-FFFF)
;#E0 - vROM page EXPANSION ; Port #1FFD bit1=1 (#24 bit6=0, bit0=0)
;#E1 - vROM page TR-DOS ; PC = #3D00..#3DFF and #1FFD bit1=0 (#24 bit0=0)
;#E2 - vROM page BASIC-128 ; #7FFD bit4=0 and #1FFD bit1=0 (#24 bit0=0)
;#E3 - vROM page BASIC-48 ; #7FFD bit4=1 and #1FFD bit1=0 (#24 bit0=0)
;#E4 - vROM page EXPANSION 2 ; Port #1FFD bit1=1 (#24 bit6=0, bit0=1)
;#E5 - vROM page TR-DOS 2 ; PC = #3D00..#3DFF and #1FFD bit1=0 (#24 bit0=1)
;#E6 - vROM page BASIC-128 2 ; #7FFD bit4=0 and #1FFD bit1=0 (#24 bit0=1)
;#E7 - vROM page BASIC-48 2 ; #7FFD bit4=1 and #1FFD bit1=0 (#24 bit0=1)
;#E8 - vRAM page (®ª­® 0000-3FFF) ;
;#E9 - vRAM page (®ª­® 4000-7FFF) ;
;#EA - vRAM page (®ª­® 8000-BFFF) ;
;#EB - vROM page BIOS-1 ; Port #74 = 0
;#EC - vRAM page CASHE ;
;#ED reserved ;
RET_PORT EQU #EE ; Page set after Soft RESET. ‹î¡®¥, ªà®¬¥ 0, §­ ç¥­¨¥ - áâà ­¨æ  ªã¤  ¯¥à¥¤ áâáï ã¯à ¢«¥­¨¥ ¯®á«¥ Soft reset
;#EF - vROM page BIOS-2 ; Port #74 = 1
; “áâ ­®¢ª  ¢ ª ª®© «¨¡® ¯®àâ §­ ç¥­¨ï ®â F0h ¤® FFh ¯à¨¢¥¤¥â ª ®¤­®¬ã ¨ ⮬㠦¥ १ã«ìâ âã, çâ® ¨ ¯à®áâ® ãáâ ­®¢ª  ¢ íâ®â ¯®àâ §­ ç¥­¨ï F0h. á奬¥ ᤥ« ­ 
; ¯¥à¥ ¤à¥á æ¨ï ­®¬¥à  ¯®àâ  â ª, çâ® ¯à¨ §­ ç¥­¨¨ FXh ­®¬¥à ¯®àâ  ¡¥à¥âáï ª ª F0h+SpectrumPAGE, £¤¥
; SpectrumPAGE - ­®¬¥à ᯥªâà㬮¢áª®© áâà ­¨æë,  ¤à¥á㥬®© ¯® ¯®àâ ¬ 7FFD ¨ 1FFD. ’ ª¨¬ ®¡à §®¬
; ¤®á⨣ ¥âáï ᮢ¬¥á⨬®áâì á <EFBFBD>¥­â £®­®¬ ¨ ‘ª®à¯¨®­®¬ ¯® à á¯à¥¤¥«¥­¨î ¯ ¬ï⨠¨ ¤¥« ¥âáï ¢®§¬®¦­ë¬
; ãáâ ­®¢ª  «î¡®£® ­®¬¥à  áâà ­¨æë á¯à¨­â¥à®¢áª®© ¯ ¬ï⨠¤«ï «î¡®© áâà ­¨æë ‘¯¥ªâà㬠.
;
;F0h - 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)
ENDMODULE
;
; à á¯à¥¤¥«¥­¨¥¬ ¯ ¬ï⨠á¨âã æ¨ï â ª ï. <EFBFBD>®àâë áâà ­¨æ - ¯¥à¥ª«îç îâ  ¤à¥á 
; "¢¨àâã «ì­ëå" áâà ­¨æ ᪮௨®­  ­¥§ ¢¨á¨¬® ®â ⮣®, çâ® ¢ íâ®â ¬®¬¥­â
; ¯®¤ª«î祭® ¢ ­ã«¥¢ãî ¡ ­ªã. âà¥â쥩 ¡ ­ª®© ­ ®¡®à®â - § ¯¨áì ¢ ¯®àâ
; áâà ­¨æë ¬¥­ï¥â  ¤à¥á ⮩ áâà ­¨æë, ª ª ï ãáâ ­®¢«¥­  ¯®àâ ¬¨ 7FFD,1FFD,
; â.¥. § ¯¨á ¢ çâ®-â® ¢ ¯®àâ PAGE3 ­ã¦­® ¯®¬­¨âì, ª ª ï áâà ­¨æ  áâ®ï«  á
;  ¤à¥á  #C000. <20> ¯à¨¬¥à, ¥á«¨ ­ã«¥¢ ï, â® ¯®¬¥­ï¥âáï áâà ­¨æ  ¨ ¢  ¤à¥á¥
; #0000, ¥á«¨ â ¬ ¡ë«® ãáâ ­®¢«¥­® އ“.
;
/*
¢­ãâ७­¨¥ ¯®àâë 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)
;---------------------------------------
;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
;-----------[HDD SECONDARY]------------
;REGISTER #37 - CYLINDERS (MASTER)
;REGISTER #38 - -----//------
;REGISTER #39 - HEADS (MASTER)
;REGISTER #3A - SECTORS (MASTER)
;
;REGISTER #3B - CYLINDERS (SLAVE)
;REGISTER #3 - -----//------
;REGISTER #3D - HEADS (SLAVE)
;REGISTER #3E - SECTORS (SLAVE)
;---------------------------------------
;REGISTER #3F - CHECKSUM SETTING
;=======================================
;
;-------------------------------[ TEST ]--------------------------------
MODULE IDE
;
; 0 - ª®¯¨ï DRV_HEAD
; 1 - ᥪâ®à®¢ ­  ¤®à®¦ª¥
; 2 - ç¨á«® £®«®¢®ª
; 3 - ª®«¨ç¥á⢮ 樫¨­¤à®¢ ¬«.
; 4 - ª®«¨ç¥á⢮ 樫¨­¤à®¢ áâ à訩.
; 5 - ᥪâ®à®¢ ­  樫¨­¤à ¬«.
; 6 - ᥪâ®à®¢ ­  樫¨­¤à áâ àè.
; 7 - reserv - type
STRUCT HDD_INIT_TABLE
Chanel 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
Write:
.DriveCtrl EQU #4152 ; HDW_DRV P_HD_CS ; #1F6 Drive Control
.Command EQU #4153 ; HDW_COM P_CMD ; #1F7 Command
.Data EQU #0150 ; HDW_DAT W170 ; #1F0 Data
.Error EQU #0151 ; HDW_ERR W171 ; #1F1 Error
.Counter EQU #0152 ; HDW_CNT P_S_CNT W172 ; #1F2 Counter
.Sector EQU #0153 ; HDW_SEC P_S_NUM W173 ; #1F3 Sector
.CylinderLow EQU #0154 ; HDW_CLL P_C_LOW W174 ; #1F4 Cylinder Low
.CylinderHigh EQU #0155 ; HDW_CLH P_C_HIG W175 ; #1F5 Cylinder High
Read:
.Control EQU #4052 ; HDR_DRV R176 ; #1F6 Drive Control
.Status EQU #4053 ; HDR_CTL P_HDST R177 ; #1F7 Status (Control)
.Data EQU #0050 ; HDR_DAT P_DATS R170 ; #1F0 Data
.Error EQU #0051 ; HDR_ERR P_ERR R171 ; #1F1 Error
.Counter EQU #0052 ; HDR_CNT R172 ; #1F2 Counter
.Sector EQU #0053 ; HDR_SEC R173 ; #1F3 Sector
.CylinderLow EQU #0054 ; HDR_CLL R174 ; #1F4 Cylinder Low
.CylinderHigh EQU #0055 ; HDR_CLH R175 ; #1F5 Cylinder High
ControlBit: ; Bits for HardDrive.Read.Status
.Busy EQU 7 ; BSY
.Ready EQU 6 ; RDY
.Fault EQU 5
.StreamErrror EQU .Fault
.DeferredWriteError EQU 4
.DataRequest EQU 3 ; DRQ
.AlignmentError EQU 2
.SenseDataAvailable EQU 1
.Error EQU 0 ; ERR
.CheckCondition EQU .Error
Chanel:
.Set_0: EQU #00BC ; ¤«ï ¨á¯®«ì§®¢ ­¨ï á ¯®«­®©  ¤à¥á æ¨¥© (ॣ BC), § á« âì '1'
.Set_1: EQU #20BC ; ¤«ï ¨á¯®«ì§®¢ ­¨ï á ¯®«­®©  ¤à¥á æ¨¥© (ॣ BC), § á« âì '1'
.Choose: EQU #BC ; ¤«ï ¨á¯®«ì§®¢ ­¨ï á ­¥¯®«­®©  ¤à¥á æ¨¥© out (#bc),a. § á« âì '1'
Device:
.HDD EQU 1
.CDROM EQU 2
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]
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
SIO:
.Ch_A.Data EQU #18 ; Data register COM
.Ch_A.Ctrl EQU #19 ; Control register COM
.Ch_B.Data EQU #1A ; Data register keyboard & mouse
.Ch_B.Ctrl EQU #1B ; Control register keyboard & mouse
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
.Port_B.Command EQU #1F ; Command register LPT 2
WDT: ; Watch-Dog timer
.Master_Reg EQU #F0 ; Master register WDTMR
.Control_Reg EQU #F1 ; Control register WDTCR
IntPrior_Reg EQU #F4 ; Interrupt Priority Register
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
; TRDOS
; REDIR_3D13:
; BIT 7,C
; JP NZ,EXP_FNS ;#3FF8 EXP
; BIT 6,C
; JP Z,AUTO_283C
; RES 6,C
; JP HD_CMD ;#3FF0 ROM. DI
;_______________________________________________________________________________________________#
;
; DW #FEFF ; Sprinter-2000
;
; DW 0FFFEH ; Sprinter-1
; DB 0 ;  ªá¥«¥à â®à
; DB 1 ; íªà ­
; DB 2 ; ª« ¢¨ âãà 
; DB 1 ; ª®¢®ªá;
;
; DW 0FFFDH
; DB 2 ;  ªá¥«¥à â®à
; DB 1 ; íªà ­
; DB 0 ; ª« ¢¨ âãà 
; DB 1 ; ª®¢®ªá;
;
; DW 0FFFCH ; AY
; DB 0 ;  ccselerator
; DB 0 ; Screen
; DB 2 ; ª« ¢¨ âãà 
; DB 0 ; ª®¢®ªá;
;
; DW 0FFF9H ; ¨¤¥­â¨ä¨ª â®à ª®­ä¨£ãà æ¨¨ 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 #154
;HDW_SEC EQU #0153 ; #1F3 Sector
;P_S_NUM EQU #0153
;HDW_CNT EQU #0152 ; #1F2 Counter
;P_S_CNT EQU #152
;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 #051 ; READ
;HDR_DAT EQU #0050 ; #1F0 Data
;P_DATS EQU #50 ; 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
;=================================================================================
; <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â - ®âª«î祭­®¥ á®áâ®ï­¨¥.<<
;=================================================================================