mirror of
https://github.com/Tolik-Trek/Shared_Includes.git
synced 2026-06-15 09:01:33 +03:00
2249 lines
81 KiB
PHP
2249 lines
81 KiB
PHP
;
|
||
DEFDEVICE SPRINTER, #4000, 256
|
||
|
||
DEFINE SLOT? +(SLOT0 | ((#C0 & high $)>>>1))
|
||
DEFINE OFFSET? +(SLOT3 ^ SLOT?)*512
|
||
|
||
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 ; .SYS_PORT:bit4=1 --> .INT_PORT:bit7=1 § ¯à®á § ¯®«¥¨¥ ¯®«ã¡ãä¥à ¤ 묨
|
||
.SYS_PORT EQU #004E ; ¯®àâ ã¯à ¢«¥¨ï COVOX-Blaster (CBL_DIR). 16-bit port!!!, ¯¨á âì ç¥à¥§ OUT (c),reg ¨«¨ ®ç¥ì ®áâ®à®¦®))
|
||
.COVOX_OUT EQU #FB ; <20>®àâ ¤«ï ¢ë¢®¤ §¢ãª = #4F
|
||
|
||
; #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
|
||
.PENT_RESET EQU #20
|
||
.SCORP_RESET EQU #40
|
||
.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
|
||
.PENT_RESET EQU CNF_PORT.PENT_RESET
|
||
.SCORP_RESET EQU CNF_PORT.SCORP_RESET
|
||
.CNF_512 EQU CNF_PORT.CNF_512
|
||
/*
|
||
---------------------------------------------------
|
||
CNF_PORT ¢¨á¨â 4 ¢¥è¨å ¯®àâ å (#7C/#3C ¨ #74/#24) ç¥à¥§ ª àâã ¯®à⮢.
|
||
SYS_PORT £¢®§¤ï¬¨ ¢ ª®ä¥ #7C/#C
|
||
|
||
SYS_PORT ⮫쪮 ¯¥à¥ª«îç ¥â RAM/ROM
|
||
CNF_PORT ¬¥ï¥â ¢áñ ®á⠫쮥, ¯à¨ ¡¨â1=0 ¬¥ïîâáï áâà ¨æë í¬ã«ïâ®à <20>‡“ ç¥à¥§ ¡¨â0
|
||
|
||
CNF_PORT
|
||
bit0 - TURBO: 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 ®âª«îç ¥â
|
||
<EFBFBD>‡“ ®â ®ª 0, ¯®í⮬㠯®àâ 7‘/3C §ë¢ ¥âáï System/User.
|
||
<EFBFBD>¥à¥ª«î票¥ áâà ¨æ <20>‡“ à ¡®â ¥â ¢ í⮬ ¢ ਠ⥠⠪:
|
||
¢ <20>‡“ 16 áâà ¨æ ®â 0 ¤® 15, ¯®àâ #5C ¨å ¯¥à¥ª«îç ¥â á bit3 xor /SYS (SYS_PORT bit[1..0] = b"0X" (BIOS: Part1/Part0))
|
||
¥á«¨ ᤥ« âì ld a,1 : out (sys_port_on),a - â® ã¬¥à æ¨ï áâà ¨æ <20>‡“ ¡ã¤¥â ¯à ¢¨«ì ï ®â 0 ¤® 15,
|
||
¥á«¨ ᤥ« âì ld a,0 : out (sys_port_on),a - â® ã¬¥à æ¨ï áâà ¨æ <20>‡“ ¡ã¤¥â á ¨¢¥àâ¨à®¢ ë¬ bit3:
|
||
áâà ¨æë <20>‡“ 0-7 ¡ã¤ãâ 㬥஢ âìáï ª ª 8-15
|
||
áâà ¨æë <20>‡“ 8-15 ¡ã¤ãâ 㬥஢ âìáï ª ª 0-7
|
||
¯¥à¥ª«î票¥ áâà ¨æ <20>‡“ ¯®à⮬ #5C ¯à®¨á室¨â ⮫쪮 ¯à¨ ¢®âªã⮩ <20>‡“ ç¥à¥§ sys_port.
|
||
Œ®¦® ¯¥à¥ª«îç âì áâà ¨æë ç¥à¥§ ¢ãâ२© ¯®àâ #8F, ⮣¤ bit4 í⮣® ¯®àâ ¢ª«îç ¥â ᨣ « § ¯¨á¨ ¤«ï <20>‡“.
|
||
’ ª ¦¥ íâ®â ¯®àâ ¤ ñâ ¯àï¬ãî ã¬¥à æ¨î áâà ¨æ ¯à¨ ãáâ ®¢«¥®¬ bit4.
|
||
----------------------------------------------------
|
||
*/
|
||
;=======================================
|
||
|
||
; ¯®àâë ã¯à ¢«¥¨ï áâà ¨æ ¬¨ ä áâà ¬
|
||
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
|
||
; 梥⠡®à¤îà ¢ ०¨¬¥ á¯à¨â¥à ¡¥àñâáï ¨§ 4 ¯ «¨âàë.
|
||
; 梥⠢ ¯ «¨âॠ¢ëç¨á«ï¥âáï ¤ã¡«¨à®¢ ¨¥¬ ¢ ®¬¥à¥ 梥⠡®à¤îà bit2..0 ¢ bit5..3
|
||
; ¬®¦® ¢ëç¨á«ïâì ¨â®£®¢ë© ¨¤¥ªá ¢ ¯ «¨âॠ㬮¦¥¨¥¬ 梥â 9, «¨¡®
|
||
; âਠᤢ¨£ 梥⠢«¥¢® ¯«îá ¨áå®¤ë© æ¢¥â. Š ¦¤ë© 梥⠢ ¤¥ä®«â®© ¯ «¨âà¥
|
||
; ¯®¢â®àï¥âáï 16 à §:
|
||
; 0 - BLACK color index #00 #00/#10 = 0
|
||
; 1 - BLACK color index #00 #00/#10 = 0
|
||
; 2 - BLUE color index #12 #12/#10 = 1
|
||
; 3 - BLUE color index #1B #1B/#10 = 1
|
||
; 4 - GREEN color index #24 #24/#10 = 2
|
||
; 5 - GREEN color index #2D #2D/#10 = 2
|
||
; 6 - CYAN color index #36 #36/#10 = 3
|
||
; 7 - CYAN color index #3F #3F/#10 = 3
|
||
;---------------------------------------
|
||
|
||
;-------------[ZX keyboard]-------------
|
||
; ü ÉÍÍËÍÍËÍÍËÍÍËÍÍËÍÍËÍÍËÍÍËÍÍËÍÍ»
|
||
; <EFBFBD>ˆ’A º 0º 1º 2º 3º 4º 4º 3º 2º 1º 0º
|
||
; ÈÍÍÊÍÍÊÍÍÊÍÍÊÍÍÊÍÍÊÍÍÊÍÍÊÍÍÊÍͼ
|
||
; ü ÚÄÄÂÄÄÂÄÄÂÄÄÂÄÄÒÄÄÂÄÄÂÄÄÂÄÄÂÄÄ¿ ü
|
||
; <EFBFBD> 3³ 1³ 2³ 3³ 4³ 5º 6³ 7³ 8³ 9³ 0³ 4 <EFBFBD>
|
||
; Ž ÃÄÄÅÄÄÅÄÄÅÄÄÅÄĺÄÄÅÄÄÅÄÄÅÄÄÅÄÄ´ Ž
|
||
; ‹ 2³ Q³ W³ E³ R³ Tº Y³ U³ I³ O³ P³ 5 ‹
|
||
; “ ÃÄÄÅÄÄÅÄÄÅÄÄÅÄĺÄÄÅÄÄÅÄÄÅÄÄÅÄÄ´ “
|
||
; <EFBFBD> 1³ A³ S³ D³ F³ Gº H³ J³ K³ L³EN³ 6 <EFBFBD>
|
||
; Ÿ ÃÄÄÅÄÄÅÄÄÅÄÄÅÄĺÄÄÅÄÄÅÄÄÅÄÄÅÄÄ´ Ÿ
|
||
; „ 0³CS³ Z³ X³ C³ Vº B³ N³ M³SS³SP³ 7 „
|
||
; € ÀÄÄÁÄÄÁÄÄÁÄÄÁÄÄÁÄÄÁÄÄÁÄÄÁÄÄÁÄÄÙ €
|
||
; Š« ¢¨è ¦ â : ¡¨â = 0
|
||
; 3 - #F7 7 - #7F
|
||
; 2 - #FB 6 - #BF
|
||
; 1 - #FD 5 - #DF
|
||
; 0 - #FE 4 - #EF
|
||
|
||
; ‚®§¬®¦® ®¤®¢à¥¬¥®¥ ç⥨¥
|
||
; ¥áª®«ìª¨å ¯®«ãà冷¢ ¯à¨ á¡à®á¥
|
||
; ¥áª®«ìª¨å ¡¨â ¢ áâ à襬 ¡ ©â¥
|
||
; ¤à¥á ¯®àâ
|
||
ZXKeys EQU #FE
|
||
.Line_0 EQU #FEFE
|
||
.Line_1 EQU #FDFE
|
||
.Line_2 EQU #FBFE
|
||
.Line_3 EQU #F7FE
|
||
.Line_4 EQU #EFFE
|
||
.Line_5 EQU #DFFE
|
||
.Line_6 EQU #BFFE
|
||
.Line_7 EQU #7FFE
|
||
|
||
|
||
; ????? —â®-â® ¯à® à áè¨à¥ë© ¡¨â ª« ¢ë ¢ #FE
|
||
|
||
; CS - caps shift
|
||
; SS - symbol shift
|
||
; FS - function shift
|
||
|
||
; Left Shift => CS
|
||
; Right SHIFT => CS
|
||
; Ctrl => SS
|
||
; Alt => SS+CS
|
||
; left WIN => ENTER+CS
|
||
; ESC => SPACE+CS
|
||
; Right WIN => ENTER+SS
|
||
; Right Mouse => SPACE+SS
|
||
|
||
; Back => 0+CS
|
||
; Tab => 1+CS
|
||
; Caps Lock => 2+CS
|
||
; PUp => 3+CS
|
||
; PDn => 4+CS
|
||
; <- => 5+CS
|
||
; Dn => 6+CS
|
||
; Up => 7+CS
|
||
; -> => 8+CS
|
||
; DEL => 9+CS
|
||
|
||
; ~ => A+SS
|
||
; '' => D+SS
|
||
|
||
; / => V+SS
|
||
; Grey * => B+SS
|
||
; , => N+SS
|
||
; . => M+SS
|
||
|
||
; [ => Y+SS
|
||
; ] => U+SS
|
||
; Grey 5 => I+SS
|
||
; ; => O+SS
|
||
; ' => P+SS
|
||
|
||
; Home => Q+SS
|
||
; Ins => W+SS
|
||
; End => E+SS
|
||
|
||
; - => J+SS
|
||
; Grey - => J+SS
|
||
; Grey + => K+SS
|
||
; = => L+SS
|
||
|
||
; F1 => 1+FS
|
||
; F2 => 2+FS
|
||
; F3 => 3+FS
|
||
; F4 => 4+FS
|
||
; F5 => 5+FS
|
||
; F6 => 6+FS
|
||
; F7 => 7+FS
|
||
; F8 => 8+FS
|
||
; F9 => 9+FS
|
||
; F10 => 0+FS
|
||
; Scroll Lock => CS+FS
|
||
;---------------------------------------
|
||
;
|
||
;--------[á¨åந§ æ¨ï íªà ]---------
|
||
SCR_SyncPort EQU #FE
|
||
; bit 5 - á¨åந§ æ¨ï íªà
|
||
; ª ¤à®¢ë© ¨¬¯ã«ìá
|
||
; ¤«¨ - 4 ¬á
|
||
; ¯¥à¨®¤ - 20 ¬á
|
||
|
||
;---------------------------------------
|
||
;
|
||
|
||
SLOT0 EQU #82 ; ®¬¥à ¡ ª¨ 0
|
||
.MEM_ADDR EQU #00
|
||
SLOT1 EQU #A2 ; ®¬¥à ¡ ª¨ 1
|
||
.MEM_ADDR EQU #4000
|
||
SLOT2 EQU #C2 ; ®¬¥à ¡ ª¨ 2
|
||
.MEM_ADDR EQU #8000
|
||
SLOT3 EQU #E2 ; ®¬¥à ¡ ª¨ 3
|
||
.MEM_ADDR EQU #C000
|
||
|
||
RGADR EQU #89 ; áâà ¨æ VIDEO-RAM ¤«ï ᯥªâà㬮¢áª®£® ०¨¬
|
||
PORT_Y EQU RGADR ; ¢¥à⨪ «ì ï ª®®à¤¨ â â®çª¨ £à ä¨ç¥áª®¬ íªà
|
||
;RGSCR EQU #E9 = RGMOD
|
||
RGMOD EQU #C9 ; ¯®àâ ०¨¬ íªà . <20>¥à¥ª«îç ¥â áâà ¨æë ०¨¬ íªà .
|
||
SCREEN_SWITCH EQU RGMOD
|
||
;RGACC EQU #A9
|
||
PGACC EQU #FC ; <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
|
||
|
||
Port_HardReset EQU #AC
|
||
.Step1 EQU #41
|
||
.Step2 EQU #40
|
||
;
|
||
;----------------------------------------------------------------------;
|
||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||
; €¤à¥á áâà ¨æ ;
|
||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||
|
||
;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
|
||
.page_0 EQU #FFF0
|
||
.page_1 EQU #FFF1
|
||
.page_2 EQU #FFF2
|
||
.page_3 EQU #FFF3
|
||
.RET_addr EQU #FFF4
|
||
.flag_Z EQU #FFFE ;
|
||
.flag_X EQU #FFFF ; ®¡®§ ç îâ, çâ® § £à㦥ë ROM ᯥªâàã¬
|
||
;LD (#FFF3),A ; á®åà 塞 ¢ ᯥæáâà ¨æã ®¬¥à Spec_Page
|
||
|
||
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
|
||
.TMP_BUFFER.Size EQU #10
|
||
|
||
.RAMD_KEYS EQU #C180 ; RAM-Disks ID's - ¤à¥á ¢ SYS_PAGE ¤«ï ª ¦¤®© ¡ãª¢ë à ¬¤¨áª
|
||
.RAMD_KEYS.E EQU #C180 ; ¯® ª®â®à®¬ã åà ¨âáï ¥£® ç «ìë© ¡«®ª ¯ ¬ïâ¨
|
||
.RAMD_KEYS.F EQU #C181
|
||
.RAMD_KEYS.G EQU #C182
|
||
.RAMD_KEYS.H EQU #C183
|
||
.RAMD_KEYS.I EQU #C184
|
||
.RAMD_KEYS.J EQU #C185
|
||
.RAMD_KEYS.K EQU #C186
|
||
.RAMD_KEYS.L EQU #C187
|
||
.RAMD_KEYS.M EQU #C188
|
||
.RAMD_KEYS.N EQU #C189
|
||
.RAMD_KEYS.O EQU #C18A
|
||
.RAMD_KEYS.P EQU #C18B
|
||
.RAMD_KEYS.Q EQU #C18C
|
||
.RAMD_KEYS.R EQU #C18D
|
||
.RAMD_KEYS.S EQU #C18E
|
||
.RAMD_KEYS.T EQU #C18F
|
||
.RAMD_KEYS.NUM EQU 16 ; 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
|
||
.Mask.ColorStyle EQU %0000'1111 ; COLOR STYLE For Setup
|
||
.Mask.Int EQU %0011'0000 ; Frame Int (Default/Pentagon/Scorpion/Original)
|
||
.Mask.Sinc EQU %1100'0000 ; Screen V-Sinc (Default/312 lines 50 HZ/320 Lines 49 Hz)
|
||
;
|
||
CMOS.USED_MIN_ADDRESS EQU #0E
|
||
CMOS.USED_MAX_ADDRESS EQU #3F
|
||
CMOS.MAX_ADDRESS EQU #7F
|
||
CMOS.TEST_CELL EQU CMOS.MAX_ADDRESS
|
||
|
||
CMOS.Cell.CheckSum EQU CMOS.USED_MAX_ADDRESS
|
||
/*
|
||
MODULE CMOS_CELL
|
||
|
||
BootUpParams EQU #0E
|
||
.Mask.MemTest EQU %1000'0000 ; MEMORY TEST
|
||
.Mask.SaveRAMdisks EQU %0100'0000 ; SAVE RAM DISKS
|
||
;.Mask.Reserved EQU %0010'0000 ; UPDATE BIOS
|
||
.Mask.StartDelay EQU %0001'1000 ; START DELAY
|
||
.Mask.Language EQU %0000'0100 ; LANGUAGE
|
||
;.Mask.Reserved EQU %0000'0010 ; NOT USED
|
||
.Mask.QuickStart EQU %0000'0001 ; QUICK START
|
||
|
||
Typematic EQU #0F
|
||
.Mask.Enabled EQU %1000'0000 ; ON/OFF
|
||
.Mask.Delay EQU %0110'0000 ; DELAY 00-250, 01-500, 10-750, 11-1000
|
||
.Mask.Rate EQU %0001'1111 ; RATE 0-6, 1-8, 2-10, 3-12, 4-15, 5-20, 6-24, 7-30
|
||
|
||
;FDD-1, FDD-2, IDE-1, IDE-2, IDE-3, IDE-4, Ram Dsk, Recovery
|
||
BootDrives EQU #10
|
||
.Mask.SysDisk EQU %0000'0111
|
||
.Mask.AltSysDisk EQU %0111'0000
|
||
|
||
|
||
DrivesSetup_1 EQU #11
|
||
.Mask.FirstFDD EQU %0000'0011 ; FDD First 720/1.44/NONE
|
||
.Mask.SecondFDD EQU %0000'1100 ; FDD Second 720/1.44/NONE
|
||
.Mask.PriIDEmaster EQU %0011'0000 ; IDE Pri Master Auto/Setup/Disabled
|
||
.Mask.PriIDEslave EQU %1100'0000 ; IDE Pri Slave Auto/Setup/Disabled
|
||
|
||
DrivesSetup_2 EQU #20
|
||
.Mask.SecIDEmaster EQU %0011'0000 ; IDE Sec Master Auto/Setup/Disabled
|
||
.Mask.SecIDEslave EQU %1100'0000 ; IDE Sec Slave Auto/Setup/Disabled
|
||
|
||
IDE_Setup.PriMaster:
|
||
.CylindersLow EQU #12
|
||
.CylindersHigh EQU #13
|
||
.Heads EQU #14
|
||
.Sectros EQU #15
|
||
IDE_Setup.PriSlave:
|
||
.CylindersLow EQU #16
|
||
.CylindersHigh EQU #17
|
||
.Heads EQU #18
|
||
.Sectros EQU #19
|
||
IDE_Setup.SecMaster:
|
||
.CylindersLow EQU #37
|
||
.CylindersHigh EQU #38
|
||
.Heads EQU #39
|
||
.Sectros EQU #3A
|
||
IDE_Setup.SecSlave:
|
||
.CylindersLow EQU #3B
|
||
.CylindersHigh EQU #3C
|
||
.Heads EQU #3D
|
||
.Sectros EQU #3E
|
||
|
||
ScreenSET EQU #1A
|
||
.Mask.ColorStyle EQU %0000'1111 ; COLOR STYLE For Setup
|
||
.Mask.Int EQU %0011'0000 ; Frame Int (Default/Pentagon/Scorpion/Original)
|
||
.Mask.Sinc EQU %1100'0000 ; Screen V-Sinc (Default/312 lines 50 HZ/320 Lines 49 Hz)
|
||
|
||
;!FIXIT <EFBFBD>… ˆ‘<EFBFBD>Ž‹œ‡“…’‘Ÿ
|
||
HardwareConfiguration EQU #1B ; !!!!! or #36
|
||
,Mask.TurboMode EQU %0000'0001 ; TURBO MODE (D0..D3 - 6 OR 7)
|
||
,Mask.TurboExchange EQU %0000'0010 ; TURBO EXCHANGE ON/OFF - 1
|
||
,Mask.PortExchange EQU %0000'0100 ; PORT EXCHANGE ON/OFF - 1
|
||
,Mask.Computer EQU %0001'1000 ; COMPUTER: 0-SPRINTER, 1-SPECTRUM 256, 2-PENTAGON 128, 3-OTHER
|
||
;!FIXIT <EFBFBD>… ˆ‘<EFBFBD>Ž‹œ‡“…’‘Ÿ
|
||
ResetMode EQU #1C ; !!!!! or #35
|
||
; 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#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
|
||
|
||
Options EQU #1D
|
||
.Mask.RebootMSG EQU %00000010
|
||
.Mask.HDDwriteProtect EQU %00000001 ;!!!!! Disabled
|
||
|
||
TRDOSmount EQU #1E
|
||
.Mask.A EQU %0000'0011 ;Default / FDD / HDD / RMD
|
||
.Mask.B EQU %0000'1100
|
||
.Mask.C EQU %0011'0000
|
||
.Mask.D EQU %1100'0000
|
||
|
||
ScreenPosition EQU #1F
|
||
.Mask.X EQU %1111'0000
|
||
.Mask.Y EQU %0000'1111
|
||
|
||
CheckSum EQU #3F
|
||
;-----------------------------------------
|
||
ENDMODULE
|
||
*/
|
||
|
||
|
||
|
||
GR_BIT_END EQU 7
|
||
|
||
S_BIT_END EQU 7
|
||
S_BIT_LIN EQU 6
|
||
S_BIT_MOD EQU 5
|
||
|
||
BIT_1440 EQU 1
|
||
BIT_MASK_1440 EQU %00000010
|
||
;---------------------------------------
|
||
|
||
|
||
; <20>®àâë Š<>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 ; ‚…<E2809A>‘ˆŸ !!!
|
||
ISD_WARM EQU 3
|
||
ISD_COLD EQU 0
|
||
IS_KEY EQU #40 ; „€<E2809E><E282AC>›… „‹Ÿ ‚›‚Ž„€ ‚ <20>Ž<EFBFBD>’ <20><>ˆ ‚Š‹ž—…<E28094>ˆˆ IS-DOS
|
||
IS_RAM_ADR EQU #5BC0 ; €„<E282AC>…‘ ‡€ƒ<E282AC>“‡Šˆ <20><>Žƒ<C5BD>€ŒŒ› <20>…<EFBFBD>…•Ž„€ ‚ IS-DOS
|
||
TB_WAITES EQU #00 ; WAITë ¤«ï TURBO-MODE
|
||
NTB_WAITES EQU #00 ; WAITë ¤«ï neTURBO-MODE
|
||
IS_WAITES EQU #00 ; WAITë ¤«ï IS-DOS
|
||
;****************************************
|
||
;SYS_PORT_ON EQU #7D
|
||
;SYS_PORT_OFF EQU #3D
|
||
|
||
RAMD_LET EQU ('R' - 'A')
|
||
|
||
|
||
;***************************************
|
||
/*
|
||
;HD_HEADS EQU 5
|
||
HD_CS EQU #A0
|
||
|
||
;HD_S_P_T EQU 17
|
||
;HD_S_X_H EQU (HD_S_P_T * HD_HEADS) ; ??? ç¨á«® ᥪâ®à®¢ 樫¨¤à¥
|
||
|
||
P_DATS EQU #50 ; READ/WRITE INIR/OTIR
|
||
|
||
P_ERR EQU #051 ; READ
|
||
P_PREC EQU #151 ; WRITE
|
||
|
||
P_S_CNT EQU #152
|
||
P_S_NUM EQU #153
|
||
P_C_LOW EQU #154
|
||
P_C_HIG EQU #155 ;<-\
|
||
P_HD_CS EQU #4152 ;<-/
|
||
|
||
P_HDST EQU #4053 ; READ
|
||
P_CMD EQU #4153 ; WRITE
|
||
|
||
P_HD3F6 EQU #4154 ; WRITE 3F6
|
||
P_HD3F7 EQU #4055 ; READ 3F7
|
||
*/
|
||
;***************************************
|
||
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 ----------------------------------------------------------------;
|
||
;<3B>¥à¥¬¥ë¥ ᯥªâàã¬
|
||
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 <20>¥â ¯®àâ
|
||
;#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
|
||
|
||
; <20>®àâ FDD 720 ; #00BD - ¯¥à¥ª«î票¥ ¢ 720 - § á« âì 1. ¬®¦® LD A,#01 : OUT (#BD),A. <20> ¡®â ¥â c DOS ON «¨¡® ¢ CNF_3 á DOS OFF
|
||
FDD720 EQU #16
|
||
; <20>®àâ 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. ¢¥è¨© #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 ; #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 ; ¯®àâ ¯¥à¥ª«î票ï áâà ¨æ 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)
|
||
|
||
vROM:
|
||
.BIOS: EQU #E0 ;vROM page EXPANSION. Port #1FFD bit1=1 (#24 bit6=0, bit0=0)
|
||
.TR_DOS: EQU #E1 ;vROM page TR-DOS. PC = #3D00..#3DFF and #1FFD bit1=0 (#24 bit0=0)
|
||
.BASIC_128: EQU #E2 ;vROM page BASIC-128. #7FFD bit4=0 and #1FFD bit1=0 (#24 bit0=0)
|
||
.BASIC_48: EQU #E3 ;vROM page BASIC-48. #7FFD bit4=1 and #1FFD bit1=0 (#24 bit0=0)
|
||
|
||
.BIOS_2: EQU #E4 ;vROM page EXPANSION 2. Port #1FFD bit1=1 (#24 bit6=0, bit0=1)
|
||
.TR_DOS_2: EQU #E5 ;vROM page TR-DOS 2. PC = #3D00..#3DFF and #1FFD bit1=0 (#24 bit0=1)
|
||
.BASIC_128_2: EQU #E6 ;vROM page BASIC-128 2. #7FFD bit4=0 and #1FFD bit1=0 (#24 bit0=1)
|
||
.BASIC_48_2: EQU #E7 ;vROM page BASIC-48 2. #7FFD bit4=1 and #1FFD bit1=0 (#24 bit0=1)
|
||
|
||
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)
|
||
;----------------------------------------
|
||
;------------[HDD Secondary]-------------
|
||
;REGISTER #37 - CYLINDERS (MASTER) L
|
||
;REGISTER #38 - -----//------ H
|
||
;REGISTER #39 - HEADS (MASTER)
|
||
;REGISTER #3A - SECTORS (MASTER)
|
||
;
|
||
;REGISTER #3B - CYLINDERS (SLAVE) L
|
||
;REGISTER #3C - -----//------ H
|
||
;REGISTER #3D - HEADS (SLAVE)
|
||
;REGISTER #3E - SECTORS (SLAVE)
|
||
;----------------------------------------
|
||
;REGISTER #1A
|
||
; %00001111 - COLOR STYLE
|
||
; %00110000 - Frame Int (Default/Pentagon/Scorpion/Original)
|
||
; %11000000 - Screen V-Sinc (Default/312 lines 50 HZ/320 Lines 49 Hz)
|
||
|
||
;!FIXIT <EFBFBD>… ˆ‘<EFBFBD>Ž‹œ‡“…’‘Ÿ
|
||
;REGISTER #1B - HARDWARE CONFIGURATION
|
||
; %00000001 - TURBO MODE (D0..D3 - 6 OR 7)
|
||
; %00000010 - TURBO EXCHANGE ON/OFF - 1
|
||
; %00000100 - PORT EXCHANGE ON/OFF - 1
|
||
; %00011000 - COMPUTER:
|
||
; 0-SPRINTER
|
||
; 1-SPECTRUM 256
|
||
; 2-PENTAGON 128
|
||
; 3-OTHER
|
||
; %11100000 - RESERVED ;!TODO
|
||
;!FIXIT <EFBFBD>… ˆ‘<EFBFBD>Ž‹œ‡“…’‘Ÿ
|
||
;REGISTER #1C - RESET MODE
|
||
; 0-RESET 128 Basic
|
||
; 1-RESET 48 Basic & 128 mem
|
||
; 2-RESET TR-DOS & 128 mem
|
||
; 3-RESET EXPANSION (Disabled)
|
||
; 4-RESET TR-DOS & 48 mem
|
||
; 5-RESET 48 Basic
|
||
|
||
;REGISTER #1D
|
||
; %00000010 - Reboot message
|
||
; %00000001 - HDD Write protect
|
||
|
||
;REGISTER #1E
|
||
; %00000011 - TR DOS A: Default / FDD / HDD / RMD
|
||
; %00001100 - TR DOS B: Default / FDD / HDD / RMD
|
||
; %00110000 - TR DOS C: Default / FDD / HDD / RMD
|
||
; %11000000 - TR DOS D: Default / FDD / HDD / RMD
|
||
|
||
;REGISTER #1F ;R06
|
||
; %11110000 - X-Screen position
|
||
; %00001111 - Y-Screen position
|
||
|
||
;REGISTER #20
|
||
; %00110000 - IDE Secondary MASTER AUTO / SETUP / DISABLED
|
||
; %11000000 - IDE Secondary SLAVE -----//------
|
||
; .
|
||
; .
|
||
;REGISTER#35 - BASIC SETTING 1 (SYS_PAGE.CONFIG_DE+1 = #C13B on PAGE #FE)
|
||
; 0 - RESET TO BASIC 128
|
||
; 1 - RESET TO BASIC 48 (RAM128)
|
||
; 2 - RESET TO TRDOS
|
||
; 3 - RESET TO EXPANSION (DON'T USE)
|
||
; 4 - RESET TO 48 TRDOS
|
||
; 5 - RESET TO 48 BASIC (RAM48)
|
||
|
||
;REGISTER#36 - BASIC SETTING 2 ; áâ àë¥ § ç¥¨ï ¥¨§¢¥áâë
|
||
; %0000 0111
|
||
; ®¢ë¥ § 票ï:
|
||
; 0 - ZX-Sprinter
|
||
; 1 - Pentagon 48
|
||
; 2 - Pentagon 128
|
||
; 3 - Pentagon 512
|
||
; 4 - Scorpion 256
|
||
; 5 - ZX Spectrum 48
|
||
; 6 - ZX Spectrum 128
|
||
|
||
;REGISTER #3F - CHECKSUM SETTING
|
||
;=======================================
|
||
|
||
;
|
||
;-------------------------------[ TEST ]--------------------------------
|
||
MODULE IDE
|
||
;
|
||
; 0 - ª®¯¨ï DRV_HEAD. bit6 - LBA/CHS, bit4 - MASTER/SLAVE, bit0 - Primary/Secondary Chanel
|
||
; 1 - ᥪâ®à®¢ ¤®à®¦ª¥
|
||
; 2 - ç¨á«® £®«®¢®ª
|
||
; 3 - ª®«¨ç¥á⢮ 樫¨¤à®¢ ¬«.
|
||
; 4 - ª®«¨ç¥á⢮ 樫¨¤à®¢ áâ à訩.
|
||
; 5 - ᥪâ®à®¢ 樫¨¤à ¬«.
|
||
; 6 - ᥪâ®à®¢ 樫¨¤à áâ àè.
|
||
; 7 - ⨯ ¤à ©¢ HDD - 1, CD-ROM - 2, NONE - #FF
|
||
STRUCT HDD_INIT_TABLE
|
||
DRV_Flags BYTE ; 0 DRVHD_H
|
||
SectorsPerTrack BYTE ; 1 SC_PT_H
|
||
HeadsNumber BYTE ; 2 HEADS_H
|
||
CylinderNumberLow BYTE ; 3 CYL_L_H
|
||
CylinderNumberHigh BYTE ; 4 CYL_H_H
|
||
SectorsPerCylinderLow BYTE ; 5 SPCLL_H
|
||
SectorsPerCylinderHigh BYTE ; 6 SPCLH_H
|
||
DriveType BYTE ; 7 DTYPE_H
|
||
ENDS
|
||
;
|
||
|
||
INIT_TBL_IDE0 HDD_INIT_TABLE = SYS_PAGE.IDE_0 ; !HARDCODE table in SYS_PAGE
|
||
INIT_TBL_IDE1 HDD_INIT_TABLE = SYS_PAGE.IDE_1 ; !HARDCODE table in SYS_PAGE
|
||
INIT_TBL_IDE2 HDD_INIT_TABLE = SYS_PAGE.IDE_2 ; !HARDCODE table in SYS_PAGE
|
||
INIT_TBL_IDE3 HDD_INIT_TABLE = SYS_PAGE.IDE_3 ; !HARDCODE table in SYS_PAGE
|
||
|
||
|
||
|
||
; <20>¥£¨áâà ¤à¥á ª®¯¨â¥«ï (#3F7 ç⥨¥) ᮤ¥à¦¨â ®¬¥à £®«®¢ª¨ ¨ HDD, ¢ë¡à ë¥ ¢ ¯à¥¤ë¤ã饩 ®¯¥à 樨.
|
||
; <20>¨âë 0, 1 - /DSO, /DS1 - ¡¨âë ¢ë¡®à ᮮ⢥âáâ¢ãî饣® ª®¯¨â¥«ï 0 ¨«¨ 1.
|
||
; <20>¨âë 2...5 - /HSO../HS3 - ᮤ¥à¦ â ¤¢®¨çë© ª®¤ ¢ë¡à ®© £®«®¢ª¨.
|
||
; <20>¨â 6 - Write Gate - ¡¨â ¢ë¯®«¥¨ï § ¯¨á¨, ªâ¨¢¥ ¢® ¢à¥¬ï ®¯¥à 樨 § ¯¨á¨
|
||
|
||
Write:
|
||
.Data EQU #0150 ; cnf 20 ; HDW_DAT W170 ; #1F0 Data register
|
||
.Features EQU #0151 ; cnf 21 ; HDW_ERR W171 ; #1F1 Features register
|
||
.Counter EQU #0152 ; cnf 22 ; HDW_CNT P_S_CNT W172 ; #1F2 Counter register
|
||
.Sector EQU #0153 ; cnf 23 ; HDW_SEC P_S_NUM W173 ; #1F3 Sector register
|
||
.CylinderLow EQU #0154 ; cnf 24 ; HDW_CLL P_C_LOW W174 ; #1F4 Cylinder Low register
|
||
.CylinderHigh EQU #0155 ; cnf 25 ; HDW_CLH P_C_HIG W175 ; #1F5 Cylinder High register
|
||
.DeviceHead EQU #4152 ; cnf 26 ; HDW_DRV P_HD_CS ; #1F6 Device/Head register
|
||
.Command EQU #4153 ; cnf 27 ; HDW_COM P_CMD ; #1F7 Command register
|
||
.DeviceControl EQU #4154 ; cnf 28 ; ; #3F6 Device Control register
|
||
|
||
Read:
|
||
.Data EQU #0050 ; cnf 20 ; HDR_DAT P_DATS R170 ; #1F0 Data register
|
||
.Error EQU #0051 ; cnf 21 ; HDR_ERR P_ERR R171 ; #1F1 Error register
|
||
.Counter EQU #0052 ; cnf 22 ; HDR_CNT R172 ; #1F2 Counter register
|
||
.Sector EQU #0053 ; cnf 23 ; HDR_SEC R173 ; #1F3 Sector register
|
||
.CylinderLow EQU #0054 ; cnf 24 ; HDR_CLL R174 ; #1F4 Cylinder Low register
|
||
.CylinderHigh EQU #0055 ; cnf 25 ; HDR_CLH R175 ; #1F5 Cylinder High register
|
||
.Control EQU #4052 ; cnf 26 ; HDR_DRV R176 ; #1F6 Device/Head register
|
||
.Status EQU #4053 ; cnf 27 ; HDR_CTL P_HDST R177 ; #1F7 Status (Control) register
|
||
.AltStatus EQU #4054 ; cnf 28 ; ; #3F6 Alternate Status register
|
||
.DrvAddress EQU #4055 ; cnf 29 ; ; #3F7
|
||
|
||
ErrorBit:
|
||
.Abort EQU 2
|
||
|
||
ErrorByte:
|
||
.Abort EQU #04
|
||
|
||
ControlBit: ; 0000 0000 ; Bits for IDE.Read.Status
|
||
.Busy EQU 7;ÄÄÄÄÄÄÄÄÙ³³³ ³³³³ ; BSY
|
||
.Ready EQU 6;ÄÄÄÄÄÄÄÄÄÙ³³ ³³³³ ; RDY
|
||
.Fault EQU 5;ÄÄÄÄÄÄÄÄÄÄÙ³ ³³³³ ; DMA ready for ATAPI
|
||
.SeekComplete EQU 4;ÄÄÄÄÄÄÄÄÄÄÄÙ ³³³³ ; Service for ATAPI
|
||
.DataRequest EQU 3;ÄÄÄÄÄÄÄÄÄÄÄÄÄÙ³³³ ; DRQ
|
||
.CorrectedData EQU 2;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ³³ obsolete
|
||
.Index EQU 1;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ³ obsolete .SenseDataAvailable
|
||
.Error EQU 0;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ; Indicates an error occurred. Send a new command to clear it (or nuke it with a Software Reset).
|
||
.CheckCondition EQU .Error
|
||
.StreamError EQU .Fault
|
||
.ATAPI_DMAReady EQU .Fault
|
||
.ATAPI_Service EQU .SeekComplete
|
||
|
||
ControlByte: ; Bytes for IDE.Read.Status
|
||
.Busy EQU #80 ; BSY
|
||
.Ready EQU #40 ; RDY
|
||
.Fault EQU #20
|
||
.SeekComplete EQU #10
|
||
.DataRequest EQU #08 ; DRQ
|
||
.CorrectedData EQU #04 ; obsolete
|
||
.Index EQU #02 ; obsolete
|
||
.Error EQU #01 ; Indicates an error occurred. Send a new command to clear it (or nuke it with a Software Reset).
|
||
.CheckCondition EQU .Error
|
||
.StreamErrror EQU .Fault
|
||
.ATAPI_DMAReady EQU .Fault
|
||
.ATAPI_Service EQU .SeekComplete
|
||
/*
|
||
Bit Abbreviation Function
|
||
0 ERR Indicates an error occurred. Send a new command to clear it (or nuke it with a Software Reset).
|
||
1 IDX Index. Always set to zero.
|
||
2 CORR Corrected data. Always set to zero.
|
||
3 DRQ Set when the drive has PIO data to transfer, or is ready to accept PIO data.
|
||
4 SRV Overlapped Mode Service Request.
|
||
5 DF Drive Fault Error (does not set ERR).
|
||
6 RDY Bit is clear when drive is spun down, or after an error. Set otherwise.
|
||
7 BSY Indicates the drive is preparing to send/receive data (wait for it to clear). In case of 'hang' (it never clears), do a software reset.
|
||
*/
|
||
Chanel:
|
||
.Set_0: EQU #20BC ; ¤«ï ¨á¯®«ì§®¢ ¨ï á ¯®«®© ¤à¥á 樥© (ॣ BC), § á« âì '1'
|
||
.Set_1: EQU #00BC ; ¤«ï ¨á¯®«ì§®¢ ¨ï á ¯®«®© ¤à¥á 樥© (ॣ BC), § á« âì '1'
|
||
.Set: EQU #BC ; ¤«ï ¨á¯®«ì§®¢ ¨ï á ¥¯®«®© ¤à¥á 樥© out (#bc),a. § á« âì '1'
|
||
.Primary EQU #21 ; ¤«ï ¨á¯®«ì§®¢ ¨ï á ¥¯®«®© ¤à¥á 樥© out (#bc),a. ‚ë¡®à ª « 0
|
||
.Secondary EQU #01 ; ¤«ï ¨á¯®«ì§®¢ ¨ï á ¥¯®«®© ¤à¥á 樥© out (#bc),a. ‚ë¡®à ª « 1
|
||
|
||
Device:
|
||
.HDD EQU 1
|
||
.CDROM EQU 2
|
||
.NONE EQU #FF
|
||
|
||
Drive:
|
||
.Master EQU %1010'0000
|
||
.Slave EQU %1011'0000
|
||
|
||
ATAPI:
|
||
.Packet EQU #A0
|
||
.IdentifyPackedDevice EQU #A1
|
||
.Reset EQU #08
|
||
;
|
||
ATA:
|
||
; ATA-2 commands ************************
|
||
.ExecuteDeviceDiagnostic EQU #90
|
||
.IdentifyDevice EQU #EC
|
||
.InitializeDeviceParameters EQU #91
|
||
.ReadSectorsWithRetry EQU #20
|
||
.ReadSectors EQU #21
|
||
.ReadVerifySectorsWithRetry EQU #40
|
||
.ReadVerifySectors EQU #41
|
||
.Seek EQU #70
|
||
.WriteSectorsWithRetry EQU #30
|
||
.WriteSectors EQU #31
|
||
; ****** additional commands ************
|
||
.AcknowledgeMediaChange EQU #db
|
||
.PostBoot EQU #dc
|
||
.PreBoot EQU #dd
|
||
.DoorLock EQU #de
|
||
.DoorUnlock EQU #df
|
||
.DownloadMicrocode EQU #92
|
||
; Power Mode
|
||
.CheckPowerMode EQU #98
|
||
.CheckPowerMode2 EQU #e5
|
||
.Idle EQU #97
|
||
.Idle2 EQU #e3
|
||
.IdleImmediate EQU #95
|
||
.IdleImmediate2 EQU #e1
|
||
.Sleep EQU #99
|
||
.Sleep2 EQU #e6
|
||
.Standby EQU #96
|
||
.Standby2 EQU #e2
|
||
.StandbyImmediate EQU #94
|
||
.StandbyImmediate2 EQU #e0
|
||
;
|
||
.MediaEject EQU #ed
|
||
.Nop EQU #00
|
||
.ReadBuffer EQU #e4
|
||
.ReadDMA EQU #c8
|
||
.ReadLong EQU #22
|
||
.ReadMultiple EQU #c4
|
||
.Recalibrate EQU #10
|
||
.SetFeatures EQU #ef
|
||
.SetFeatures.Disable8bit EQU #81 ; Disable 8-bit data transfers (¯¨á âì ¢ .Features)
|
||
.SetFeatures.DisableWriteCache EQU #82 ; Disable write cache (¯¨á âì ¢ .Features)
|
||
.SetMultipleMode EQU #c6
|
||
.WriteBuffer EQU #e8
|
||
.WriteDMA EQU #ca
|
||
.WriteLong EQU #32
|
||
.WriteMultiple EQU #c5
|
||
.WriteSame EQU #e9
|
||
.WriteVerify EQU #3c
|
||
; **** device specific commands *************
|
||
.FormatTrack EQU #50
|
||
; command modificators:
|
||
; for ReadSectors, WriteSectors, ReadVerifySectors,
|
||
; ReadDMA, WriteDMA, ReadLong, WriteLong
|
||
.WithoutRetry EQU #01
|
||
; ATA
|
||
; .Master EQU #A0
|
||
; .Slave EQU #B0
|
||
;
|
||
ENDMODULE
|
||
;-----------------------------------------------------------------------
|
||
|
||
;
|
||
/*
|
||
KBD_COM EQU #1B
|
||
KBD_DAT EQU #1A
|
||
COM_B EQU #1B
|
||
DAT_B EQU #1A
|
||
|
||
COM_A EQU #19
|
||
DAT_A EQU #18
|
||
|
||
LPT1_D EQU #1C
|
||
LPT1_C EQU #1D
|
||
LPT2_D EQU #1E
|
||
LPT2_C EQU #1F
|
||
|
||
STC0_C EQU #10
|
||
STC1_C EQU #11
|
||
STC2_C EQU #12
|
||
STC3_C EQU #13
|
||
*/
|
||
; !TODO ¯à¨¤ã¬ âì ª ª ®¡®§¢ âì, ç⮡ ¡ë«® ¯®ïâ® ª®£¤ ¯¨èãâ ¤«ï ¬ë誨, ª®£¤ ¤«ï ª« ¢ë ¨ â.¤.
|
||
MODULE Z84
|
||
;-------------------[Ports]
|
||
; Counter Timer Control
|
||
CTC:
|
||
.Ch_0 EQU #10 ; Control Register
|
||
.Ch_1 EQU #11 ; Control Register
|
||
.Ch_2 EQU #12 ; Control Register
|
||
.Ch_3 EQU #13 ; Control Register
|
||
; Serial I/O
|
||
SIO:
|
||
.Ch_A.Data EQU #18 ; Data register 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
|
||
; Parallel I/O
|
||
PIO:
|
||
.Port_A.Data EQU #1C ; Data register LPT 1
|
||
.Port_A.Command EQU #1D ; Command register LPT 1
|
||
.Port_B.Data EQU #1E ; Data register LPT 2
|
||
;⮫쪮 ç¥à¥§ ॣ¨áâà BC, ¨ ç¥ €«ìâ¥à ¯¥à¥å¢ â¨â
|
||
.Port_B.Command EQU #1F ; Command register LPT 2
|
||
; Watch Dog timer
|
||
WDT:
|
||
.Master_Reg EQU #F0 ; Master register WDTMR
|
||
.Control_Reg EQU #F1 ; Control register WDTCR
|
||
; Interrupt Priority Register
|
||
IntPrior_Reg EQU #F4
|
||
;System Control
|
||
SYS:
|
||
.Control EQU #EE ; System Control Register Pointer SCRP
|
||
.Data EQU #EF ; System Control Data Port SCDP
|
||
;------------------------[]
|
||
|
||
;-------------------[Regs ]
|
||
REG:
|
||
.WaitState_Ctrl EQU 00 ; Wait state control register WCR
|
||
.WaitState_MemBound EQU 01 ; Memory Wait state Boundary Register MWBR
|
||
.CS_Boundary EQU 02 ; Chip Select Boundary Register CSBR
|
||
.Misc_Ctrl EQU 03 ; Misc.Control Register MCR
|
||
;------------------------[]
|
||
ENDMODULE
|
||
;
|
||
|
||
;INIT_TIMER:
|
||
; LD A,#D5 ; 7-© ¡¨â à §à¥è¥¨¥ ¯à¥àë¢ ¨ï
|
||
; OUT (#12),A
|
||
; LD A,20
|
||
; OUT (C),A
|
||
; LD A,#55 ; 7-© ¡¨â à §à¥è¥¨¥ ¯à¥àë¢ ¨ï
|
||
; OUT (#13),A
|
||
; LD A,0
|
||
; OUT (C),A
|
||
; LD A,0 ; ¢¥ªâ®à ¯à¥àë¢ ¨ï
|
||
; OUT (#10),A
|
||
|
||
; LD A,TABLE/256
|
||
; LD I,A
|
||
; IM 2
|
||
|
||
;Disable:
|
||
; DI
|
||
; LD BC,#12 ; 2-nd timer
|
||
; LD A,#55 ; 7-© ¡¨â à §à¥è¥¨¥ ¯à¥àë¢ ¨ï
|
||
; OUT (C),A
|
||
; IM 1
|
||
; EI
|
||
; RET
|
||
|
||
|
||
; 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>’€ ;
|
||
;=======================================================================;
|
||
|
||
;__________________________________________________________________________________________________________#
|
||
; MACRO _mGET_FAT_START slot_num
|
||
; .correct EQU (SLOT3 and slot_num)*2
|
||
|
||
; IN A,(slot_num)
|
||
; LD B,A
|
||
; LD A,SYS_PAGE
|
||
; OUT (slot_num),A
|
||
; LD HL,SYS_PAGE.RAMD_FAT - .correct
|
||
|
||
; DISPLAY "CORRECT = ",/h,.correct
|
||
; ENDM
|
||
|
||
; MACRO _mGET_FAT_END slot_num
|
||
; OUT (slot_num),A
|
||
; ENDM
|
||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||
;
|
||
; DW #FEFF ; Sprinter-2000
|
||
;
|
||
; DW #FFFE ; Sprinter-1
|
||
; DB 0 ; ªá¥«¥à â®à
|
||
; DB 1 ; íªà
|
||
; DB 2 ; ª« ¢¨ âãà
|
||
; DB 1 ; ª®¢®ªá;
|
||
;
|
||
; DW #FFFD ; Sprinter-2
|
||
; DB 2 ; ªá¥«¥à â®à
|
||
; DB 1 ; íªà
|
||
; DB 0 ; ª« ¢¨ âãà
|
||
; DB 1 ; ª®¢®ªá;
|
||
;
|
||
; DW #FFFC ; AY
|
||
; DB 0 ; ccselerator
|
||
; DB 0 ; Screen
|
||
; DB 2 ; ª« ¢¨ âãà
|
||
; DB 0 ; ª®¢®ªá;
|
||
;
|
||
; DW #FFF9 ; ¨¤¥â¨ä¨ª â®à ª®ä¨£ãà æ¨¨ DooM
|
||
; DB 3 ; accelerator type
|
||
; DB 1 ; íªà
|
||
; DB 0 ; ª« ¢¨ âãà
|
||
; DB 2 ; ª®¢®ªá (¡« áâ¥à)
|
||
;
|
||
|
||
;ELCOM256 EQU 1 ; ०¨¬ ELCOM-256
|
||
;IF ELCOM256 EQ 1
|
||
;ELSE
|
||
;D_TBON EQU 03h ; ¤ ë¥ ¤«ï ¢ª«î票ï TURBO
|
||
;D_TBOFF EQU 02h ; ¤ ë¥ ¤«ï ¢ª«î票ï TURBO
|
||
;D_ROM16ON EQU 40h
|
||
;D_ROM16OFF EQU 00h
|
||
;CNF_0 EQU 04h
|
||
;CNF_1 EQU 0Ch
|
||
;CNF_2 EQU 14h
|
||
;CNF_3 EQU 1Ch
|
||
;ENDIF
|
||
|
||
;TTTT_EEEE EQU 100
|
||
|
||
|
||
;R170 EQU #0050 ;Data
|
||
;R171 EQU #0051 ;Error
|
||
;R172 EQU #0052 ;Direct
|
||
;R173 EQU #0053 ;Reserve
|
||
;R174 EQU #0054 ;Lenght block low
|
||
;R175 EQU #0055 ;Lenght block high
|
||
;R176 EQU #4052 ;Drive device
|
||
;R177 EQU #4053 ;Status
|
||
;W170 EQU #0150 ;Data
|
||
;W171 EQU #0151 ;????
|
||
;W172 EQU #0152 ;????
|
||
;W173 EQU #0153 ;Reserve
|
||
;W174 EQU #0154 ;Lenght block low
|
||
;W175 EQU #0155 ;Lenght block high
|
||
;W176 EQU #4152 ;Drive device
|
||
;W177 EQU #4153 ;Command
|
||
;HDW_COM EQU #4153 ; #1F7 Command
|
||
;P_CMD EQU #4153 ; WRITE
|
||
;HDW_DRV EQU #4152 ; #1F6 Drive Control
|
||
;P_HD_CS EQU #4152
|
||
;HDW_CLH EQU #0155 ; #1F5 Cylinder High
|
||
;P_C_HIG EQU #0155
|
||
;HDW_CLL EQU #0154 ; #1F4 Cylinder Low
|
||
;P_C_LOW EQU #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â - ®âª«î祮¥ á®áâ®ï¨¥.<<
|
||
;================================================================================= |