Shared_Includes/constants/SP2000.inc
Anatoliy Belyanskiy 517e3de074 ...
2023-08-16 20:59:58 +10:00

2007 lines
74 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 -/
<20>¥à¥ª«î祭¨¥ áâà ­¨æ 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 (ZX_EXP) #EB
#47 BIOS (ZX_EXP2) #EF
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) - ¯à¨¡¨â® £¢®§¤ï¬¨ ¢ ª®­ä¥
;!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
; ‡­ ç¥­¨ï:
; ­®¬¥à áâà ­¨æë 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 ]------------------------------;
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
; 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
.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
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
SHARED_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
;
;---------------------------------------------------------------------[]
; Câà ­¨æ  á á¨á⥬­ë¬¨ ¯¥à¥¬¥­­ë¬¨ 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 ;!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
.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
.ZX_PAGES EQU #C190 ; ¨«¨ ⮫쪮 ®¤¨­ ¡ ©â - BlockID? ; vROM(10) + vRAM(32-1) + End_Byte(0); ®¤­  áâà ­¨æ  <20>€Œ ­¥ áç¨â ¥âáï - íâ® áâà ­¨æ  0.
;!TODO EQU #C1BA..#C1BF - 6 bytes
;
.IDE_0 EQU #C1C0
.IDE_1 EQU #C1C8
.IDE_2 EQU #C1D0
.IDE_3 EQU #C1D8
;
.FDD_0 EQU #C1E0
.FDD_1 EQU #C1E8
;!TODO EQU #C1F0..#C1FF
;.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 ; ¤ ­­ë¥ ª àâ ®ª®­ (96 ®¯¨á â¥«¥© ¯® 32 ¡ ©â )
.TASK_DATA EQU #EC00 ; ¤ ­­ë¥ ¤«ï § ¤ ç
.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
;.CLASTER_LEN EQU #C12E ; ¤«¨­  ª« áâ¥à  ¢ ¡ ©â å
;.CMOS_FLAG_1 EQU #C170
;.LIB_TABLE EQU #C1A0..#C1BF ; â ¡«¨æë librares 32 ¡ ©â 
;---------------------------------------------------------------------[]
;
/*
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
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
;
CMOS.USED_MAX_ADDRESS EQU #3F
CMOS.MAX_ADDRESS EQU #7F
CMOS.TEST_CELL EQU CMOS.MAX_ADDRESS
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
;***************************************
; ***** - Žª®­­ë¥ ¯¥à¥¬¥­­ë¥ - *****
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
;!FIXIT ----------------------------------------------------------------;
;<EFBFBD>¥à¥¬¥­­ë¥ ᯥªâà㬠
MODULE ZX_VARS
;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_SPACE 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 ZX_VARS.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 ZX_VARS.BUFER ; tr-dos buffer
;
MENU_TBL:
.JUMP EQU #F6EA
.TEXT EQU #F6EC
ENDMODULE
;-----------------------------------------------------------------------;
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 ACEX
; ¢­ãâ७­¨¥ ¯®àâë 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
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
;#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. ¢­¥è­¨© #4154
IDE_STATUS_3F7 EQU #29 ; HDD - ¤®¯. ॣ¨áâà á®áâ®ï­¨ï 3F7. ¢­¥è­¨© #4155
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 ; #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
;#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
;#8D reserved 2000 -- AY_A WRITE
;#8E reserved 2000 -- AY_D WRITE
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 (not used!)
;#C9 - ª®¯¨ï C1 (not used!)
;#CA - ª®¯¨ï C2 (not used!)
HOLD EQU #CB ; ‡ ¤ ñâ §­ ç¥­¨ï áçñâ稪®¢ ᨭåà®­¨§ â®à  ᨭåந¬¯ã«ìᮢ. %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)
SLOT0 EQU #E8 ; RAM page (®ª­® 0000-3FFF)
SLOT1 EQU #E9 ; RAM page (®ª­® 4000-7FFF)
SLOT2 EQU #EA ; RAM page (®ª­® 8000-BFFF)
;#EB - vROM page BIOS-1 ; Port #74 = 0
;#EC - user's memory cell ; á ¬®¦­® á®åà ­¨âì ­ã¦­®¥ §­ ç¥­¨¥
;#ED - user's memory cell ; á ¬®¦­® á®åà ­¨âì ­ã¦­®¥ §­ ç¥­¨¥
RET_PORT EQU #EE ; Page set after Soft RESET. ‹î¡®¥, ªà®¬¥ 0, §­ ç¥­¨¥ - áâà ­¨æ  ªã¤  ¯¥à¥¤ áâáï ã¯à ¢«¥­¨¥ ¯®á«¥ Soft reset
;#EF - vROM page BIOS-2 ; Port #74 = 1
; “áâ ­®¢ª  §­ ç¥­¨ï ¢ ª ª®© «¨¡® ¯®àâ ®â #F0 ¤® #FF ¯à¨¢¥¤¥â ª ®¤­®¬ã ¨ ⮬㠦¥ १ã«ìâ âã, çâ® ¨ ¯à®áâ® ãáâ ­®¢ª  §­ ç¥­¨ï ¢ ¯®àâ #F0. á奬¥ ᤥ« ­ 
; ¯¥à¥ ¤à¥á æ¨ï ­®¬¥à  ¯®àâ  â ª, çâ® ¯à¨ §­ ç¥­¨¨ #Fx ­®¬¥à ¯®àâ  ¡¥à¥âáï ª ª #F0+Spectrum_PAGE, £¤¥ Spectrum_PAGE - ­®¬¥à ᯥªâà㬮¢áª®© áâà ­¨æë,  ¤à¥á㥬®©
; ¯® ¯®àâ ¬ #7FFD ¨ #1FFD. ’ ª¨¬ ®¡à §®¬ ¤®á⨣ ¥âáï ᮢ¬¥á⨬®áâì á <20>¥­â £®­®¬ ¨ ‘ª®à¯¨®­®¬ ¯® à á¯à¥¤¥«¥­¨î ¯ ¬ï⨠¨ ¤¥« ¥âáï ¢®§¬®¦­ë¬ ãáâ ­®¢ª  «î¡®£®
; ­®¬¥à  áâà ­¨æë á¯à¨­â¥à®¢áª®© ¯ ¬ï⨠¤«ï «î¡®© áâà ­¨æë ‘¯¥ªâà㬠.
;
; à á¯à¥¤¥«¥­¨¥¬ ¯ ¬ï⨠á¨âã æ¨ï â ª ï. <EFBFBD>®àâë áâà ­¨æ - ¯¥à¥ª«îç îâ  ¤à¥á  "¢¨àâã «ì­ëå" áâà ­¨æ ᪮௨®­  ­¥§ ¢¨á¨¬® ®â ⮣®, çâ® ¢ íâ®â ¬®¬¥­â
; ¯®¤ª«î祭® ¢ ­ã«¥¢ãî ¡ ­ªã. âà¥â쥩 ¡ ­ª®© ­ ®¡®à®â - § ¯¨áì ¢ ¯®àâ áâà ­¨æë ¬¥­ï¥â  ¤à¥á ⮩ áâà ­¨æë, ª ª ï ãáâ ­®¢«¥­  ¯®àâ ¬¨ 7FFD,1FFD,
; â.¥. § ¯¨á ¢ çâ®-â® ¢ ¯®àâ PAGE3 ­ã¦­® ¯®¬­¨âì, ª ª ï áâà ­¨æ  áâ®ï«  á  ¤à¥á  #C000. <20> ¯à¨¬¥à, ¥á«¨ ­ã«¥¢ ï, â® ¯®¬¥­ï¥âáï áâà ­¨æ  ¨ ¢  ¤à¥á¥
; #0000, ¥á«¨ â ¬ ¡ë«® ãáâ ­®¢«¥­® އ“.
;
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)
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)
;---------------------------------------
;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. 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
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 ; Indicates an error occurred. Send a new command to clear it (or nuke it with a Software Reset).
.CheckCondition EQU .Error
/*
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
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
;=======================================================================;
; <EFBFBD><EFBFBD>Ž Š€„<EFBFBD> ˆ<EFBFBD> ;
;=======================================================================;
;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 =
;<EFBFBD> §à¥è¥­¨¥ íªà ­  56 ª¢ ¤à â®¢ ¯® £®à¨§®­â «¨ ¨ 39(40) ¯® ¢¥à⨪ «¨ (᪮௠¨«¨ ¯¥­ì)
;
; - <EFBFBD>  ª ªãî ­®£ã âਣ£¥à  ᨣ­ « ¨¤¥â?
; - ­  ª«®ª, ¯® äà®­âã ­  ¢ë室 ª®¯¨àã¥âáï §­ ç¥­¨¥ á ¤ âë
; - ª®£¤  íâ® äà®­â ¢®§­¨ª ¥â?
; - ¯® ¨­â㠮⠢¨¤¥®/ª« ¢ë
;
;‚ᥠ¦¥ ¯à®áâ®. <EFBFBD>  ª¢ ¤à â¨ª å á ¨­â®¬ INTT = 0, ­  ®áâ «ì­ëå INTT = 1
;¯®«ãç ¥âáï, çâ® äà®­â ¢®§­¨ª ¥â ¯à¨ ¯¥à¥å®¤¥ á ª¢ ¤à â¨ª  á ¨­â®¬ ­  ª¢ ¤à â¨ª ¡¥§ ¨­â 
;Žâ ª®«¨ç¥á⢠ ª¢ ¤à â®¢ ¤«¨­  ¨­â  ­¥ § ¢¨á¨â
; Š®à®ç¥, ¯®£­ «¨ ®â M1 ¨ IO. Ž­¨ ¢¬¥á⥠¢ ­ã«¥ ª®£¤  ¯à¥à뢠­¨¥ ¯®¤â¢¥à¤¨«®áì. <EFBFBD>®«ì ­  ¨å OR ¡ã¤¥â ⮫쪮
; ¯à¨ ¯®¤â¢¥à¦¤¥­¨¨ ¯à¥à뢠­¨ï. <EFBFBD>®«ì ã室¨â ⥫¥§à¨â¥«ï¬ ¤ «ìè¥ ­  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?, ª®â®à®¥ ᬥ­¨âáï ⮫쪮 ¯®á«¥ ⮣® ª ª
; ¯à®â¨ª îâ «¥¢ë¥ áçñâ稪¨.
;=======================================================================;
; <EFBFBD><EFBFBD>Ž Š€„<EFBFBD> ˆ<EFBFBD> ;
;=======================================================================;
;__________________________________________________________________________________________________________#
;
; 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 #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â - ®âª«î祭­®¥ á®áâ®ï­¨¥.<<
;=================================================================================