ZX-EXP to BIOS adaptation

This commit is contained in:
Anatoliy Belyanskiy 2023-06-20 01:27:50 +10:00
parent 2c91a523fa
commit 6a170dff30
30 changed files with 710 additions and 7205 deletions

@ -1 +1 @@
Subproject commit 6e27011b6259b0256ce65d91a53ef1185223eafa
Subproject commit 80b60f7294ce3eee958a0c4e9a6f29577cee496f

View File

@ -67,6 +67,7 @@
;-----------------[EXP]-----------------
MMU 0 e, 8 ; áâà ­¨æ  8 ¢ ¡ ­ªã 0 ¨ ¯à®¢¥àª  ­  £à ­¨æë
ORG COMPILE_ADDR.EXP
DEFINE+ IsInBIOS 1
OUTPUT 'Build/Bin/EXP.BIN'
ShowInfo 'EXP block Start', 0 ; !!!!! test
INCLUDE 'src/bios/EXP/EXP.asm'
@ -80,11 +81,13 @@
;-----------------[ROM]-----------------
MMU 0 e, 0 ; áâà ­¨æ  0 ¢ ¡ ­ªã 0 ¨ ¯à®¢¥àª  ­  £à ­¨æë.
ORG ROM_MAP.ROM
DEFINE+ IsInBIOS 0
OUTPUT 'Build/Bin/ROM.BIN'
ShowInfo 'ROM block Start', 0 ; !!!!! test
INCLUDE 'src/bios/ROM/ROM.asm'
ShowInfo 'ROM block End', 0 ; !!!!! test
OUTEND
UNDEFINE IsInBIOS
;---------------------------------------
;

View File

@ -1,346 +0,0 @@
;========================================================
;55H READH LOAD SECTORS
;56H WRITEH SAVE SECTORS
;57H VERIFYH VERIFY SECTORS
Y_PORT EQU 089H
;Write
HDW_COM EQU 4153H ;1F7H Command
HDW_DRV EQU 4152H ;1F6H Drive Control
HDW_CLH EQU 0155H ;1F5H Cylinder High
HDW_CLL EQU 0154H ;1F4H Cylinder Low
HDW_SEC EQU 0153H ;1F3H Sector
HDW_CNT EQU 0152H ;1F2H Counter
HDW_ERR EQU 0151H ;1F1H Error
HDW_DAT EQU 0150H ;1F0H Data
;Read
HDR_CTL EQU 4053H ;1F7H Status (Control)
HDR_DRV EQU 4052H ;1F6H Drive Control
HDR_CLH EQU 0055H ;1F5H Cylinder High
HDR_CLL EQU 0054H ;1F4H Cylinder Low
HDR_SEC EQU 0053H ;1F3H Sector
HDR_CNT EQU 0052H ;1F2H Counter
HDR_ERR EQU 0051H ;1F1H Error
HDR_DAT EQU 0050H ;1F0H Data
BSY EQU 7
RDY EQU 6
DRQ EQU 3
ERR EQU 0
;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
IDE0 EQU 0C1C0H
IDE1 EQU 0C1C8H
;IDE0 DEFB #FF ;DRIVE/HEAD REGISTER ;00
; DEFB #FF ;SECTORS PER TRACK ;01
; DEFB #FF ;HEADS ;02
; DEFB #FF ;CYLINDERS LOW ;03
; DEFB #FF ;CYLINDERS HIGH ;04
; DEFB #FF ;SECTOR PER CYLINDER LOW ;05
; DEFB #FF ;SECTOR PER CYLINDER HIGH ;06
; DEFB #FF ;RESERVED ;07
;IDE1 DEFB #FF ;DRIVE/HEAD REGISTER ;00
; DEFB #FF ;SECTORS PER TRACK ;01
; DEFB #FF ;HEADS ;02
; DEFB #FF ;CYLINDERS LOW ;03
; DEFB #FF ;CYLINDERS HIGH ;04
; DEFB #FF ;SECTOR PER CYLINDER LOW ;05
; DEFB #FF ;SECTOR PER CYLINDER HIGH ;06
; DEFB #FF ;RESERVED ;07
;HL:IX - SECTOR
; DE - ADDRESS
; B - SECTORS
;READ SECTOR(S)
READH: PUSH IY
EXX
LD C,Y_PORT
IN B,(C)
PUSH BC
LD E,0C0H
OUT (C),E
EXX
CALL RDS000
EXX
POP BC
OUT (C),B
EXX
POP IY
RET NC
LD A,4 ;NOT READY
RET
;READ SECTOR(S)
RDS000: AND 1
LD IY,IDE0
JR Z,RDS001
LD IY,IDE1
RDS001: EXX
LD DE,0C040H
LD BC,HDR_CTL
CALL WAITPRT
EXX
RET C
PUSH DE
CALL PRESET
POP HL
LD BC,HDW_COM
LD A,020H ;READ WITH RETRY
OUT (C),A
;SAVE HL!
RDS002: EXX
LD DE,08908H ;WAIT BUSY=0 & DRQ=1 & ERR=0
LD BC,HDR_CTL
CALL WAITPRT
EXX
RET C
LD BC,HDR_DAT
INIR
INIR
;
LD A,H
OR L
JR NZ,W44
LD HL,0C000H
W44
;
LD BC,HDR_CTL
IN A,(C)
BIT DRQ,A
JR NZ,RDS002
XOR A
RET
;HL:IX - SECTOR
; DE - ADDRESS
; B - SECTORS
;WRITE SECTOR(S)
WRITEH: PUSH IY
EXX
LD C,Y_PORT
IN B,(C)
PUSH BC
LD E,0C0H
OUT (C),E
EXX
CALL WRS000
EXX
POP BC
OUT (C),B
EXX
POP IY
RET NC
LD A,4 ;NOT READY
RET
;WRITE SECTOR(S)
WRS000: AND 1
LD IY,IDE0
JR Z,WRS001
LD IY,IDE1
WRS001: EXX
LD DE,0C040H
LD BC,HDR_CTL
CALL WAITPRT
EXX
RET C
PUSH DE
CALL PRESET
POP HL
LD BC,HDW_COM
LD A,030H ;WRITE WITH RETRY
OUT (C),A
;SAVE HL!
WRS002: EXX
LD DE,08908H ;WAIT BUSY=0 & DRQ=1 & ERR=0
LD BC,HDR_CTL
CALL WAITPRT
EXX
RET C
LD BC,HDW_DAT
OTIR
OTIR
;
LD A,H
OR L
JR NZ,W33
LD HL,0C000H
W33:
;
LD BC,HDR_CTL
IN A,(C)
BIT DRQ,A
JR NZ,WRS002
XOR A
RET
;HL:IX - SECTOR
; B - SECTORS
;VERIFY SECTOR(S)
VERIFYH:
PUSH IY
EXX
LD C,Y_PORT
IN B,(C)
PUSH BC
LD E,0C0H
OUT (C),E
EXX
CALL VRS000
EXX
POP BC
OUT (C),B
EXX
POP IY
RET NC
LD A,4 ;NOT READY
RET
;VERIFY SECTOR(S)
VRS000: AND 1
LD IY,IDE0
JR Z,VRS001
LD IY,IDE1
VRS001: EXX
LD DE,0C040H
LD BC,HDR_CTL
CALL WAITPRT
EXX
RET C
PUSH DE
CALL PRESET
POP HL
LD BC,HDW_COM
LD A,040H ;VERIFY WITH RETRY
OUT (C),A
VRS002: LD BC,HDR_CTL
IN A,(C)
BIT ERR,A
JR Z,VRS003
SCF
RET
VRS003: LD DE,08100H ;WAIT BUSY=0 & ERR=0
LD BC,HDR_CTL
CALL WAITPRT
RET C
XOR A
RET
; HL:IX - LBA SECTOR
; B - SECTOR COUNTER
PRESET: LD A,B
LD BC,HDW_CNT
OUT (C),A
IN A,(0E2H)
EX AF,AF'
LD A,0FEH
OUT (0E2H),A
LD A,(IY+DRVHD_H)
LD BC,HDW_DRV
OUT (C),A
BIT 6,A
LD E,LX
LD D,HX
CALL Z,LBA_CHS
LD BC,HDW_SEC
OUT (C),E ;LBA 0..7
LD BC,HDW_CLL
OUT (C),D ;LBA 8..15
LD BC,HDW_CLH
OUT (C),L ;LBA 16..23
LD BC,HDW_DRV
DEC B
IN A,(C)
AND 0F0H
OR H ;LBA 24..27
INC B
OUT (C),A
EX AF,AF'
OUT (0E2H),A
AND A
RET
; HL:DE - SECTOR OFFSET
LBA_CHS:
LD C,(IY+SPCLL_H)
LD B,(IY+SPCLH_H)
; HL:DE / BC => DE:IX HL-OSTATOK
DIV32X: LD HX,D
LD LX,E
EX DE,HL
LD HL,0
LD A,020H
DIV011: ADD IX,IX
EX DE,HL
ADC HL,HL
EX DE,HL
ADC HL,HL
SBC HL,BC
JR NC,DIV012
ADD HL,BC
DEC A
JR NZ,DIV011
JR DIV014
DIV012: INC IX
DEC A
JR NZ,DIV011
DIV014: LD E,(IY+SC_PT_H)
LD D,0
XOR A
CHS005: INC A
SBC HL,DE
JR NC,CHS005
ADD HL,DE
DEC A
LD H,A
LD E,L
INC E
LD D,LX
LD A,HX
LD L,A
RET
; D - MASK
; E - PATTERN
; BC - PORT
WAITPRT:
LD HL,0000H
WAITP0: IN A,(C)
CP 0FFH
JR Z,WAITP1
AND D
CP E
JR NZ,WAITP2
AND A
RET
WAITP2: DEC HL
LD A,L
OR H
JP NZ,WAITP0
WAITP1: SCF
RET
;=======================================================

File diff suppressed because it is too large Load Diff

View File

@ -1,841 +0,0 @@
;
_mInfoALIGN 256,0
TAB_FNS: ; !FIXIT ¯®¯à ¢¨âì ¢ ¤®ª¥ ­ §¢ ­¨ï ä㭪権, ç áâì ­¥ ᮢ¯ ¤ ¥â
; 8x
/* 80 */ DW LP_OPEN_S ; ®âªàë⨥ ®ª­ 
/* 81 */ DW LP_PRINT_ALL ; ¯¥ç âì ᨬ¢®«  ¢ ®ª­®
/* 82 */ DW LP_PRINT_SYM ; ¯¥ç âì ᨬ¢®«  ¡¥§  âà
/* 83 */ DW LP_PRINT_ATR ; ¯¥ç âì ⮫쪮  âਡãâ 
/* 84 */ DW LP_SET_PLACE ; ãáâ ­®¢ª  ¯®§¨æ¨¨ ¯¥ç â¨
/* 85 */ DW LP_PRINT_LINE ; ¯¥ç âì áâப¨ ¤«¨­®© B
/* 86 */ DW LP_PRINT_LINE2 ; ¯¥ç âì áâப¨ -//- ¡¥§  âਡã⮢
/* 87 */ DW LP_PRINT_LINE3 ; ¯¥ç âì áâப¨ ¤«¨­®© B ¤® D
/* 88 */ DW LP_PRINT_LINE4 ; ¯¥ç âì áâப¨ -//- ¡¥§  âਡã⮢
/* 89 */ DW LP_CLS_WIN
/* 8A */ DW LP_SCROLL_UD
/* 8B */ DW LP_PRINT_LINE5
/* 8C */ DW LP_PRINT_LINE6
/* 8D */ DW LP_CLS_WIN2
/* 8E */ DW LP_GET_PLACE
/* 8F */ DW FN_TURBO
; 9x
/* 90 */ DW EMM.GetMemSize ; ­¥à §àãè î饥 ®¯à¥¤¥«¥­¨¥ ®¡ê¥¬  Ž.
/* 91 */ DW EMM.InitMem ; ¨­¨æ¨ «¨§ æ¨ï à á¯à¥¤¥«¥­¨ï ¯ ¬ïâ¨
/* 92 */ DW EMM.GetMemRMD ; ¯®«ãç¨âì ¡«®ª ¯ ¬ï⨠¤«ï à ¬¤¨áª 
/* 93 */ DW EMM.FreeMemRMD ; ®á¢®¡®¤¨âì ¡«®ª ¯ ¬ï⨠ࠬ¤¨áª 
/* 94 */ DW EMM.GetMemPageRMD ; ¯®«ãç¨âì ­®¬¥àa áâà ­¨æ RAM-Disk
/* 95 */ DW EMM.GetMemPageNext ; ¯®«ãç¨âì á«¥¤ãîéãî áâà ­¨æã
/* 96 */ DW EMM.GetBanksPorts ; ¯®«ãç¨âì  ¤à¥á  ¯®à⮢
/* 97 */ DW EMM.CheckColdInit ; ¯à®¢¥àª  ­  宫®¤­ë© áâ àâ ¨ ¨­¨æ¨ «¨§ æ¨¨ ¥á«¨ ®­ ;????? ­ã¦­  «¨ ª ª API?
/* 98 */ DW RAMD_CALC_PAGE ; Fn 98h ;?????
/* 99 */ DW SET_DISK_TYPE ; ;?????
/* 9A */ DW DISK_REDIR ; ;?????
/* 9B */ DW FN_NO ;GET_RAMD_NUM ; ¯®«ãç¨âì ­®¬¥à ram disk ¯® ¥£® block id
/* 9C */ DW FN_NO ;
/* 9D */ DW EMM.DivMemBlocks ; à §¤¥«¥­¨ï ¡«®ª  ­  ¤¢ .
/* 9E */ DW EMM.MergeMemBlocks ; ᫨ﭨ¥ ¤¢ãå ¡«®ª®¢
/* 9F */ DW EMM.FullInit ; ¨­¨æ¨ «¨§ æ¨ï ¢á¥© ¯ ¬ïâ¨, á¨á⥬­ëå ¯¥à¥¬¥­­ëå
; Ax
/* A0 */ DW PIC_FN0 ; ŽŠ<EFBFBD>ˆ ŽŠ<EFBFBD> - Fn 0A0h
/* A1 */ DW PIC_FN1 ; ˆ ŽŠ
/* A2 */ DW PIC_FN2 ; Ž ˆ<EFBFBD>ˆˆ COPY
/* A3 */ DW PIC_FN3 ; Ž ˆ<EFBFBD>ˆˆ FILL
/* A4 */ DW PIC_FN4 ; Ž <EFBFBD>ˆ<EFBFBD>
/* A5 */ DW PIC_FN5 ; <EFBFBD>ŽŠ RGMOD
/* A6 */ DW PIC_FN6 ; A - page_pal, E - ­®¬¥à ¯ «¨âàë, B - ⨯ ¯ «¨âàë
/* A7 */ DW PIC_FN7 ; <EFBFBD>¨á®¢ ­¨¥ «¨­¨¨ ®¤­®£® 梥â 
/* A8 */ DW PIC_FN8 ; <EFBFBD>¨á®¢ ­¨¥ à §­®æ¢¥â­®© «¨­¨¨
/* A9 */ DW PIC_FN9 ; ­¥â
/* AA */ DW PIC_FN10 ; ­¥â
/* AB */ DW PIC_FN11 ; ­¥â
/* AC */ DW PIC_FN12 ; ­¥â
/* AD */ DW PIC_FN14 ; ­¥â
/* AE */ DW PIC_FN14 ; ­¥â
/* AF */ DW PIC_FN15 ; ­¥â
; Bx
/* B0 */ DW WIN_OPEN ; ®âªàë⨥ ®ª­  ¯® ®¯¨á â¥«î
/* B1 */ DW WIN_CLOSE ; § ªàë⨥ ®ª­ 
/* B2 */ DW WIN_COPY ; á®åà ­¥­¨¥ ⥪á⮢®£® ®ª­  ¢ ¯ ¬ïâ¨
/* B3 */ DW WIN_RESTORE ; ¢®ááâ ­®¢«¥­¨¥ ⥪á⮢®£® ®ª­  ¨§ ¯ ¬ïâ¨
/* B4 */ DW WIN_GET_SYM ; ¢§ïâì ᨬ¢®«
/* B5 */ DW WIN_PUT_SYM ; ¯®«®¦¨âì ᨬ¢®«
/* B6 */ DW WIN_SET_ZG ; § £à㧪  §­ ª®£¥­¥à â®à 
/* B7 */ DW WIN_MOVE ; ¯¥à¥¬¥áâ¨âì ®ª­®
/* B8 */ DW WIN_GET_ZG ; ¯®«ãç¨âì §­ ª®£¥­¥à â®à
/* B9 */ DW FN_NO
/* BA */ DW FN_NO
/* BB */ DW FN_NO
/* BC */ DW FN_NO
/* BD */ DW FN_NO
/* BE */ DW FN_NO
/* BF */ DW FN_NO
; Cx
/* C0 */ DW EMM.GetMemSize ; ¯®«ãç¨âì ¤ ­­ë¥ ®¡ ®¡ê¥¬¥ ¯ ¬ï⨠¨ ª®«-¢® ᢮¡. áâà.
/* C1 */ DW EMM.InitMem ; ¨­¨æ¨ «¨§ æ¨ï à á¯à¥¤¥«¥­¨ï ¯ ¬ïâ¨
/* C2 */ DW EMM.GetMem ; ¯®«ãç¨âì ¡«®ª ¯ ¬ïâ¨
/* C3 */ DW EMM.FreeMem ; ®á¢®¡®¤¨âì ¡«®ª ¯ ¬ïâ¨
/* C4 */ DW EMM.GetMemPage ; ¯®«ãç¨âì ­®¬¥à áâà ­¨æë ¢ ¡«®ª¥ ¯ ¬ïâ¨
/* C5 */ DW EMM.GetMemBlkPages ; ¯®«ãç¨âì ᯨ᮪ áâà ­¨æ ¡«®ª  ¯ ¬ïâ¨
/* C6 */ DW EMM.GetBanksPorts ; ¯®«ãç¨âì  ¤à¥á  ¯®à⮢ ®ª®­
/* C7 */ DW EMM.GetMemPageNext ; ¯®«ãç¨âì á«¥¤ãîéãî áâà ­¨æã ¡«®ª 
/* C8 */ DW BLK_RD_WR ; äã­ªæ¨ï ç⥭¨ï/§ ¯¨á¨ ¢ ¡«®ª ¯ ¬ïâ¨
/* C9 */ DW BLK_TO_RAMD ; ­ §­ ç¨âì ¡«®ª RAM-Disk-ã
/* CA */ DW RAMD_CLEAR ; ®á¢®¡®¤¨âì RAM-Disk
/* CB */ DW RAMD_TO_DRV ; ­ §­ ç¨âì RAM-Disk ­  ¤¨áª®¢®¤
/* CC */ DW FDD_TO_DRV ; ­ §­ ç¨âì REAL_DRIVE ­  ¤¨áª®¢®¤
/* CD */ DW HDD_TO_DRV ; ­ §­ ç¨âì HDD ­  ¤¨áª®¢®¤
/* CE */ DW GET_RAMD_ST ; ¯®«ãç¨âì ⨯ ­ §­ ç¥­¨ï ­  RAM-Disk
/* CF */ DW GET_DRV_ST ; ¯®«ãç¨âì ⨯ ­ §­ ç¥­¨ï ­  ¤¨áª®¢®¤
; Dx
/* D0 */ DW FN_LIB
/* D1 */ DW FN_LIB
/* D2 */ DW FN_LIB
/* D3 */ DW FN_LIB
/* D4 */ DW FN_LIB
/* D5 */ DW FN_LIB
/* D6 */ DW FN_LIB
/* D7 */ DW FN_LIB
/* D8 */ DW FN_LIB
/* D9 */ DW FN_LIB
/* DA */ DW FN_LIB
/* DB */ DW FN_LIB
/* DC */ DW FN_LIB
/* DD */ DW FN_LIB
/* DE */ DW FN_LIB
/* DF */ DW FN_LIB
; Ex
/* E0 */ DW LP_PRINT_LINE_DIR
/* E1 */ DW FN_NO
/* E2 */ DW FN_NO
/* E3 */ DW FN_NO
/* E4 */ DW FN_NO
/* E5 */ DW FN_NO
/* E6 */ DW FN_NO
/* E7 */ DW FN_NO
/* E8 */ DW FN_SEND_BYTE ; ¯®á« âì ¡ ©â ç¥à¥§ PC_link
/* E9 */ DW FN_RESEIVE_B ; ¯à¨­ïâì ¡ ©â ç¥à¥§ PC_link
/* EA */ DW FN_KBD_OUT ; ¯®á« âì ¡ ©â ¢ ª« ¢¨ âãàã
/* EB */ DW FN_NO
/* EC */ DW FN_NO
/* ED */ DW FN_CRIPT
/* EE */ DW AY8910
/* EF */ DW FN_VERSION
; Fx
/* F0 */ DW SPRINTER_1
/* F1 */ DW SPRINTER_2
/* F2 */ DW FN_SINC
/* F3 */ DW SPRINTER_ALL
/* F4 */ DW DCP_FN0
/* F5 */ DW CMOS_TEST
/* F6 */ DW CMOS_RD
/* F7 */ DW CMOS_WR
/* F8 */ DW SET_ROM_PAGES
/* F9 */ DW READ_PORTS ; !TODO
/* FA */ DW WRITE_PORTS ; !TODO
/* FB */ DW GOTO_SPEC ; Goto Spectrum!
/* FC */ DW FN_NO
/* FD */ DW FN_RESET
/* FE */ DW FN_NO ; SAVE_AUTOSTART
/* FF */ DW FN_VERSION
EXP_FNS: ; 室 ¢ äã­ªæ¨î ¨§ DOS
POP AF
CALL APIfrom80toFF ; !TEST new_api
CALL DOS_ON
JP EXP_FNS_RET
;************************************
; 室 ¢ äã­ªæ¨î ¯® RST18 ¨ RST8
EXP_FNS_RST18:
BIT 7,C
JR NZ,APIfrom80toFF ; !TEST new_api
;.APIfrom40to5F:
BIT 6,C
RES 6,C
JP NZ,EXP_HDD_NEW
SCF
RET
;**********************************
;-----------------------------------------------------------------------
FN_CRIPT:
DEC B
SCF
RET NZ
LD HL,(ROM_NUMBER.part1) ;rdlow-ok
LD A,(ROM_NUMBER.part2) ;rdlow-ok
LD BC,(BoardID.start) ;rdlow-ok
LD DE,(BoardID.end) ;rdlow-ok
AND A
RET
; BoardID_start old address #312A
; BoardID_end old address #312D
;-----------------------------------------------------------------------
;**********************************
;!!!!! £«ï­ãâì
; START_DI:
; PUSH AF
; LD A,R
; JP PE,XX_DI
; LD A,R
; XX_DI: LD A,#80
; JP PE,XX_DI2
; XOR A
; XX_DI2: LD R,A
; DI
; POP AF
; RET
; END_DI: PUSH AF
; LD A,R
; BIT 7,A
; JR Z,XX_DI3
; EI
; POP AF ; PE
; RET
; XX_DI3: DI
; POP AF ; PO
; RET
;**********************************
APIfrom80toFF:
PUSH HL
LD L,C
SLA L
LD H,high TAB_FNS
LD C,(HL) // LD A,(HL)
INC L
LD H,(HL)
LD L,C // LD L,A
EX (SP),HL
RET
;! ! ! ! ! ! ! !
; !TODO ᤥ« âì
READ_PORTS:
WRITE_PORTS:
FN_NO: SCF
RET
;! ! ! ! ! ! ! !
; ????? ¬®¦¥â ¯¥à¥¤¥« âì ¢å®¤?
; CALL from 3D13h!
; in A - page, B - new ROM-page
; out B - old ROM-page
SET_ROM_PAGES:
EX AF,AF'
LD A,CNF_0
OUT (SYS_PORT.ON),A
LD C,SLOT2 ; ¯®«ãç¨âì áâà ­¨æã
IN D,(C)
LD A,DCP_PAGE ; ãáâ ­®¢¨âì ­®¢ãî
OUT (C),A
LD A,(#8000) ; á®åà ­¨âì â® çâ® ¡ë«®
LD L,A
LD A,(#8200)
LD H,A
EX AF,AF' ; áâà ­¨æ 
LD (#8000),A ; ãáâ ­®¢¨âì ¯®àâ ROM TR-DOS
LD (#8200),A
EX AF,AF'
LD A,B
LD BC,0
EX AF,AF'
IN A,(C)
EX AF,AF'
OUT (C),A ; ãáâ ­®¢¨âì ­®¢ë© TR-DOS
EX AF,AF'
LD B,A
LD A,L
LD (#8000),A ; ¢¥à­ãâì ¯®àâ
LD A,H
LD (#8200),A ; ¢¥à­ãâì ¯®àâ
LD C,SLOT2
LD A,SYS_PAGE
OUT (C),A
LD A,(SYS_PAGE.CONFIG_DE-#4000)
OUT (C),D ; ¢¥à­ãâì áâà ­¨æã
OUT (SYS_PORT.ON),A
AND A
RET
;TAB_SIZE EQU $-TAB_FNS
;*****************************************
;*****************************************
; ã­ªæ¨ï ¤¥è¨äà â®à  ¯®à⮢.
; HL -  ¤à¥á
; DE - ¬ áª  - 0 ¨§¬¥­ï¥¬ë¥ ¡¨âë, 1 ­¥¨§¬¥­ï¥¬ë¥
; B - ¯®àâ
;
; ALL STACKS, DI
;*****************************************
DCP_FN0: ; !FIXIT § ¯®¬¨­ âì âãâ á®áâ®ï­¨¥ ¯à¥à뢠­¨© ¨ ¢ëàã¡ âì
AND A
JP Z,PORTS_INIT
PUSH IX
LD IX,.RET_DCP_FN0
IN A,(SLOT3)
EX AF,AF'
LD A,DCP_PAGE
OUT (SLOT3),A
JR DCP_FN0M
.RET_DCP_FN0:
EX AF,AF'
OUT (SLOT3),A
AND A
POP IX
; !FIXIT ¢®ááâ ­ ¢«¨¢ âì ¯à¥à뢠­¨ï
RET
;-----------------------------------------------------------------------;
; ã­ªæ¨ï ¤¥è¨äà â®à  ¯®à⮢.
; HL -  ¤à¥á
; DE - ¬ áª  - 0 ¨§¬¥­ï¥¬ë¥ ¡¨âë, 1 ­¥¨§¬¥­ï¥¬ë¥
; B - ¯®àâ
DCP_FN0M:
LD A,L
AND E
LD L,A
LD A,H
AND D
; AND #3F
OR #C0
LD H,A
LD A,D
OR #C0
LD D,A
.loop: LD (HL),B
LD A,L ; § ¬ áª¨à®¢ âì ­¥¨§¬¥­ï¥¬ë¥ ¡¨âë 1-¬¨
OR E ; ¤«ï ¯à®å®¦¤¥­¨ï ¯¥à¥­®á 
INC A ; 㢥«¨ç¨âì  ¤à¥á
JR Z,.carry ; ¢®§­¨ª ¯¥à¥­®á
OR E
XOR E ; ®¡­ã«¨âì ­¥¨§¬¥­ï¥¬ë¥ ¡¨âë
LD C,A ; ¨§¬¥­ï¥¬ ï ç áâì
LD A,L
AND E ; ¢ë¤¥«¨âì ­¥¨§¬¥­ï¥¬ãî
OR C
LD L,A ; ¤®¡ ¢¨âì ¨§¬¥­ï¥¬ãî ç áâì
JR .loop ; 横«
.carry: ; A = 0
; OR E
; XOR E
; LD C,A
LD A,L ; § ¡¨âì ¨§¬¥­ï¥¬ë¥ ¡¨âë ­ã«ï¬¨
AND E
; OR C
LD L,A
LD A,H ; § ¬ áª¨à®¢ âì ­¥¨§¬¥­ï¥¬ë¥ ¡¨âë 1-¬¨
OR D ; ¤«ï ¯à®å®¦¤¥­¨ï ¯¥à¥­®á 
INC A ; 㢥«¨ç¨âì  ¤à¥á
JR Z,.exit
OR D
XOR D
LD C,A ; ¨§¬¥­ï¥¬ ï ç áâì
LD A,H
AND D ; ¢ë¤¥«¨âì ­¥¨§¬¥­ï¥¬ãî
OR C
LD H,A ; ¤®¡ ¢¨âì ¨§¬¥­ï¥¬ãî ç áâì
JR .loop
.exit: JP (IX)
;-----------------------------------------------------------------------;
; RAM-Disk A, BLK - B
BLK_TO_RAMD:
CP SYS_PAGE.RAMD_KEYS.NUM
CCF
RET C
PUSH HL
LD L,A
IN A,(SLOT2)
LD C,A
LD A,SYS_PAGE
OUT (SLOT2),A
LD A,L
LD HL,SYS_PAGE.RAMD_KEYS-#4000
ADD A,L
LD L,A
LD A,(HL) ; ª«îç ¡«®ª 
AND A
JR NZ,BLK_BUSY ; RAM-Disk § ­ïâ - ®è¨¡ª 
LD (HL),B
LD A,C
OUT (SLOT2),A
LD A,B
AND A
POP HL
RET
BLK_BUSY:
LD A,C
OUT (SLOT2),A
SCF
POP HL
RET
; RAM-Disk A
RAMD_CLEAR:
CP SYS_PAGE.RAMD_KEYS.NUM
CCF
RET C
PUSH HL
LD L,A
IN A,(SLOT2)
LD C,A
LD A,SYS_PAGE
OUT (SLOT2),A
LD A,L
LD HL,SYS_PAGE.RAMD_KEYS-#4000 ; RAM-Disk ᢮¡®¤¥­
ADD A,L
LD L,A
LD B,A ; § ¯®¬­¨âì 㤠«ï¥¬ë© à ¬¤¨áª
LD A,(HL)
AND A
JR Z,BLK_BUSY ; ¢®§¢à â á ®è¨¡ª®©
LD (HL),0
LD A,C
OUT (SLOT2),A
AND A
POP HL
RET
; RAM-Disk A, DRV - B
RAMD_TO_DRV:
CP SYS_PAGE.RAMD_KEYS.NUM
CCF
RET C
LD C,A
LD A,B
CP 4
CCF
RET C
LD HL,SYS_PAGE.DISK_TYPE-#4000
LD L,B
IN A,(SLOT2)
LD B,A
LD A,SYS_PAGE
OUT (SLOT2),A
LD A,C
ADD A,4
LD (HL),A
LD A,B
OUT (SLOT2),A
AND A
RET
; Disk A, DRV - B
FDD_TO_DRV:
CP 4
CCF
RET C
LD C,A
LD A,B
CP 4
CCF
RET C
LD HL,SYS_PAGE.DISK_TYPE-#4000
LD L,B
IN A,(SLOT2)
LD B,A
LD A,SYS_PAGE
OUT (SLOT2),A
LD (HL),C
LD A,B
OUT (SLOT2),A
AND A
RET
; HDD A, DRV - B
HDD_TO_DRV:
AND 0FH
LD C,A
LD A,B
CP 4
CCF
RET C
LD HL,SYS_PAGE.DISK_TYPE-#4000
LD L,B
IN A,(SLOT2)
LD B,A
LD A,SYS_PAGE
OUT (SLOT2),A
LD A,C
ADD A,40H
LD (HL),A
LD A,B
OUT (SLOT2),A
AND A
RET
; 室:
; A - RAM Disk ID
; ë室:
; A - Number (0..15)
; GET_RAMD_NUM:
; EX AF,AF'
; IN A,(SLOT2)
; EX AF,AF'
; LD BC,SYS_PAGE * 256 + SLOT2
; OUT (C),B
; LD HL,SYS_PAGE.RAMD_KEYS-#4000
; LD BC,SYS_PAGE.RAMD_KEYS.NUM
; CPIR
; EX AF,AF'
; OUT (SLOT2),A
; EX AF,AF'
; SCF
; RET PE
; DEC L
; LD A,L
; SUB low SYS_PAGE.RAMD_KEYS
; RET
; ­  ¢ë室¥ ¯à¨ = 0 ¤®«¦¥­ ¡ëâì ãáâ ­®¢«¥­ ä« £ Z
GET_RAMD_ST: ; DSS ­ ¤¥¥âáï, çâ® íâ  äã­ªæ¨ï ­¥ £à®å ¥â DE
CP SYS_PAGE.RAMD_KEYS.NUM
CCF
RET C
PUSH BC
LD HL,SYS_PAGE.RAMD_KEYS-#4000
ADD A,L
LD L,A
IN A,(SLOT2)
LD B,A
LD A,SYS_PAGE
OUT (SLOT2),A
LD C,(HL)
LD A,B
OUT (SLOT2),A
LD A,C
POP BC
AND A
RET
GET_DRV_ST:
CP 4
CCF
RET C
PUSH BC
LD HL,SYS_PAGE.DISK_TYPE-#4000
ADD A,L
LD L,A
IN A,(SLOT2)
LD B,A
LD A,SYS_PAGE
OUT (SLOT2),A
LD C,(HL)
LD A,B
OUT (SLOT2),A
LD A,C
POP BC
AND A
RET
;***********************************************
; ????? çñ §  å¥à­ï ¯à® ¡¥©á¨ª? âãâ ­¥ â® ­¨¦¥
;
; CMOS - 35h,36h - ãáâ ­®¢ª¨ ¡¥©á¨ª 
;
;***********************************************
CMOS_EMU_WR:
PUSH DE
LD C,SLOT3
IN B,(C)
LD E,SYS_PAGE
OUT (C),E
LD E,D
LD D,#FF
LD (DE),A
OUT (C),B
POP DE
RET
; § ¯¨áì ¢ CMOS
CMOS_WR:
CALL CMOS_TEST
JR C,CMOS_EMU_WR
XWR_CMOS:
LD BC,CMOS.Port.Address.Write
OUT (C),D
LD BC,CMOS.Port.Data.Write
OUT (C),A
RET
CMOS_EMU_RD:
PUSH DE
LD C,SLOT3
IN B,(C)
LD E,SYS_PAGE
OUT (C),E
LD E,D
LD D,#FF
LD A,(DE)
OUT (C),B
POP DE
RET
; ç⥭¨¥ ¨§ CMOS
CMOS_RD:
CALL CMOS_TEST
JR C,CMOS_EMU_RD
XRD_CMOS:
LD BC,CMOS.Port.Address.Write
OUT (C),D
LD BC,CMOS.Port.Data.Read
IN A,(C)
RET
CMOS_TEST:
PUSH DE
PUSH BC
PUSH AF
LD D,3FH ; !HARDCODE
CALL XRD_CMOS
LD E,A
CPL
CALL XWR_CMOS
CALL XRD_CMOS
CPL
CP E
JR NZ,CMOS_ERR
LD A,E
CALL XWR_CMOS
POP AF
POP BC
POP DE
AND A
RET
CMOS_ERR:
LD A,E
CALL XWR_CMOS
POP AF
POP BC
POP DE
SCF
RET
;
;DE - ªã¤  - áâà ­¨æ  ®âªàëâ !
;BC - ᪮«ìª®
;HL - ¡ãä¥à
;
; PUSH BC
; LD H,D
; LD L,E
; ADD HL,BC
; JR C,CUT
; LD HL,BUFER
; LDIR
; POP BC
; RET
;CUT:
; PUSH HL
; LD A,L
; LD L,C
; LD C,A
; LD A,H
; LD H,B
; LD B,A
;
; AND A
; SBC HL,BC
; LD B,H
; LD C,L
; LD HL,BUFER
; LDIR
; CALL NEXT_BANK
; POP BC
; LD A,B
; OR C
; JR Z,LAB
; LDIR
;LAB: POP BC
; RET
;
FN_TURBO:
CP 2
JR Z,.FN_TB_ONOFF
CP 3
JR Z,.FN_TB_ONOFF
CP #12
JR Z,.SET_FDD_720
CP #13
JR Z,.SET_FDD_1440
SCF
RET
;!FIXIT ¬¥­ï¥¬ ¯«®â­®áâì - ¬¥­ï¥¬ ¢ á¨á⥬­®© áâà ­¨æ¥ ¨­äã ®¡ í⮬
.SET_FDD_720:
LD A,1
OUT (#BD),A ; !HARDCODE
AND A
RET
;!FIXIT ¬¥­ï¥¬ ¯«®â­®áâì - ¬¥­ï¥¬ ¢ á¨á⥬­®© áâà ­¨æ¥ ¨­äã ®¡ í⮬
.SET_FDD_1440:
LD A,#21
OUT (#BD),A ; !HARDCODE
AND A
RET
.FN_TB_ONOFF:
LD C,A
IN A,(SLOT3)
LD B,A
LD A,SYS_PAGE
OUT (SLOT3),A
LD DE,(SYS_PAGE.CONFIG_DE)
LD A,E
AND #FC
OR C
LD E,A
OUT (SYS_PORT.ON),A
LD (SYS_PAGE.CONFIG_DE),DE
LD A,B
OUT (SLOT3),A
AND A
RET
; à §¤¥«¨âì ¡«®ª ¯ ¬ï⨠­  ¤¢  ¡«®ª 
; A - ¡«®ª, B - ¤«¨­  ¯¥à¢®£® ¡«®ª  ¯®á«¥ à §¤¥«¥­¨ï
; ¢ë室: A - ¡«®ª 1, B - ¡«®ª 2
EMM.DivMemBlocks:
INC B
DEC B
SCF
RET Z
DEC B
LD E,A
CALL EMM.GetMemPage ; ¯®«ãç¨âì ­®¬¥à áâà ­¨æë ¡«®ª 
RET C
LD D,A
IN A,(SLOT2)
EX AF,AF'
LD A,SYS_PAGE
OUT (SLOT2),A
LD H,high (SYS_PAGE.RAMD_FAT - #4000)
LD L,D
LD A,(HL)
LD (HL),0FFH
LD B,A
EX AF,AF'
OUT (SLOT2),A
LD A,E
AND A
RET
; ᫨âì ¤¢  ¡«®ª  ¯ ¬ï⨠¢ ®¤¨­
; - ¡«®ª 1, B - ¡«®ª 2
; ¢ë室: - ¡«®ª
EMM.MergeMemBlocks:
LD E,A
IN A,(SLOT2)
EX AF,AF'
LD A,SYS_PAGE
OUT (SLOT2),A
LD H,high (SYS_PAGE.RAMD_FAT - #4000)
LD L,E
LD C,B
LD B,0
EMM_ADD_L:
LD A,(HL)
AND A
JR Z,EMM_ADD_ERR
CP 0FFH
JR Z,EMM_ADD_NEXT
LD L,A
DJNZ EMM_ADD_L
EMM_ADD_ERR:
EX AF,AF'
OUT (SLOT2),A
SCF
RET
EMM_ADD_NEXT:
LD A,C
AND A
JR Z,EMM_ADD_ERR
LD (HL),A
EX AF,AF'
OUT (SLOT2),A
AND A
LD A,E
RET
;

View File

@ -1,824 +0,0 @@
;
; DISPLAY "HDD utility"
/*
P_HD_CS HDW_DRV #4152
P_CMD HDW_COM #4153
P_HDST HDR_CTL #4053
P_S_CNT HDW_CNT #0152
*/
;HDD_TYPE EQU 1 ; ????? çñ íâ®???
MACRO WAIT_HDD
.loop:
LD BC,IDE.Read.Status
IN A,(C)
BIT IDE.ControlBit.Busy,A
JR NZ,.loop
ENDM
;**************************************
;!TEST ­¥ ­ã¦­® ¥á«¨ new_api_table
EXP_HDD_NEW:
PUSH AF
LD A,C
CP #10
;JR C,EXP_4X.HDD_CMD
JR C,HDD_CMD.4x
POP AF
JP EXP_HDD ; !FIXIT ¤ «ìè¥ ¢ ROM ¡ã¤ãâ ®¯ïâì ¯à®¢¥àª¨ áâ àè¨å ¡¨â®¢ ॣ. C, ã©â¨ ª ª-â® ®â í⮣®
; MODULE EXP_4X
; !TODO ®¯â¨¬¨§¨à®¢ âì HD_CMD_X
; C - COMAND ( 5 - RD, 6 - WR )
; 0 - INIT, 1 - DIAG
;HDD_CMD:
;!TEST ­¥ ­ã¦­® ¥á«¨ new_api_table
HDD_CMD.4x:
LD A,C ; !!!!! ¬®¦­® ã¡à âì, ¢ A ¨ â ª â®, çâ® ¢ C
AND A
JP Z,FN_HDD_INIT ; #40 ˆ­¨æ¨ «¨§ æ¨ï ¢¨­ç¥áâ¥à 
DEC A
JP Z,FN_HDD_RECAL ; #41 <EFBFBD>¥ª «¨¡à®¢ª  ¢¨­ç¥áâ¥à 
DEC A
JP Z,FN_HDD_TEST_IDE ; #42 ¥áâ ­ «¨ç¨ï ¨­â¥àä¥©á  IDE
DEC A
JP Z,FN_HDD_PREPARE ; #43 <EFBFBD>®¤£®â®¢ª  ¢¨­ç¥áâ¥à  ª ®¯¥à æ¨¨ ç⥭¨ï/§ ¯¨á¨
DEC A
JP Z,FN_HDD_READ_BPB ; #44 ¨â âì BPB ¯¥à¢®£® à §¤¥« 
DEC A
JP Z,FN_HDD_READ ; #45 ¨â âì ᥪâ®à  á ¢¨­ç¥áâ¥à 
DEC A
JP Z,FN_HDD_WRITE ; #46 <EFBFBD>¨á âì ᥪâ®à  ­  ¢¨­ç¥áâ¥à
DEC A
JP Z,FN_HDD_PART ; #47 set IDE number (<EFBFBD> áâனª  ¯ àâ¨æ¨© ¨ master/slave)???
DEC A
JP Z,FN_HDD_READ_NEXT ; #48 ¨â âì á«¥¤ãî騩 ᥪâ®à (ONLY FOR LBA!)
POP AF ;!TEST ­¥ ­ã¦­® ¥á«¨ new_api_table
SCF
RET
;=======================================
;-----------------------------------[OK]
HD_BPB_PREP:
LD D,A
IN A,(SLOT3)
EX AF,AF'
LD A,SYS_PAGE
OUT (SLOT3),A
LD A,(SYS_PAGE.HD_IDF_ADR.sectors)
LD E,A
EX AF,AF'
OUT (SLOT3),A
LD A,D
LD D,#00
LD IX,#0000
LD B,#01
;---------------------------------------
;-----------------------------------[OK]
HD_PREPARE:
PUSH AF
PUSH HL
CALL HD_CALC_SECS
JR NC,HD_PREP_L1
POP HL
POP AF
SCF
RET
;---------------------------------------
;-----------------------------------[OK]
HD_PREP_L1:
LD A,B
LD BC,IDE.Write.Counter ; áâ ­®¢¨âì ç¨á«® ᥪâ®à®¢ ¤«ï § ¯¨á¨
OUT (C),A
IF IDE_Optimization
INC C ; IDE.Write.Sector
OUT (C),L ; ŠŽ<EFBFBD>
INC C ; IDE.Write.CylinderLow
OUT (C),E ; ¤®à®¦ª  low
INC C ; IDE.Write.CylinderHigh
OUT (C),D
ELSE
LD BC,IDE.Write.Sector
OUT (C),L ; ŠŽ<EFBFBD>
LD BC,IDE.Write.CylinderLow
OUT (C),E ; ¤®à®¦ª  low
LD BC,IDE.Write.CylinderHigh
OUT (C),D ; ¤®à®¦ª  high
ENDIF
LD BC,IDE.Read.Control
; DEC B
IN A,(C)
AND #F0 ; !!!!! ¯®á¬®âà¥âì
OR H
INC B ; IDE.Write.DriveCtrl
OUT (C),A
POP HL ; BUFER & PAGE
POP AF
AND A
RET
;---------------------------------------
NEXT_ADD_SEC:
PUSH AF
LD A,B
LD BC,IDE.Write.Counter ; áâ ­®¢¨âì ç¨á«® ᥪâ®à®¢ ¤«ï § ¯¨á¨
OUT (C),A
IF IDE_Optimization
DEC B
INC C
IN A,(C) ; IDE.Read.Sector
ADC A,E
INC B
OUT (C),A ; IDE.Write.Sector
DEC B
INC C
IN A,(C) ; IDE.Read.CylinderLow
ADC A,D
INC B
OUT (C),A ; IDE.Write.CylinderLow
DEC B
INC C
IN A,(C) ; IDE.Read.CylinderHigh
ADC A,0
INC B
OUT (C),A ; IDE.Write.CylinderHigh
LD BC,IDE.Read.Control
IN A,(C)
ELSE
LD BC,IDE.Read.Sector
IN A,(C)
ADC A,E
INC B
OUT (C),A ; IDE.Write.Sector
LD BC,IDE.Read.CylinderLow
IN A,(C)
ADC A,D
INC B
OUT (C),A ; IDE.Write.CylinderLow
LD BC,IDE.Read.CylinderHigh
IN A,(C)
ADC A,0
INC B
OUT (C),A ; IDE.Write.CylinderHigh
LD BC,IDE.Read.Control
IN A,(C)
ENDIF
LD D,A
ADC A,0
AND #0F
LD E,A
LD A,D
AND #F0
OR E
INC B
OUT (C),A ; ????? HEADS?! IDE.Write.DriveCtrl
POP AF
RET
;-----------------------------------[OK]
FN_HDD_PREPARE: ; <EFBFBD>ŽƒŽŽŠ Š <EFBFBD>˜<EFBFBD>ˆŒ Ž<EFBFBD><EFBFBD>ˆŸŒ R/W
POP AF
AND A
INC B
DEC B
RET Z
CALL HD_WAIT
RET C
CALL HD_PREPARE
RET C
EXX
LD C,SLOT3
IN B,(C)
EXX
OUT (SLOT3),A
EX AF,AF'
SAFE_PORTY
LD BC,IDE.Write.Command ; ?????
LD A,#20 ; ?????
; OUT (C),A
AND A ; ?????
RET
;---------------------------------------
;-----------------------------------[OK]
FN_HDD_READ_BPB:
POP AF
CALL HD_WAIT
RET C
CALL HD_BPB_PREP
RET C
JR HD_RD_L1
;---------------------------------------
; FOR LBA ONLY - NEXT_READ
FN_HDD_READ_NEXT:
; HL - bufer, A - page
; B - numer of sectors
; DE - add_par (next+DE) (d.b. 1 for NEXT)
POP AF
AND A
INC B
DEC B
RET Z ; ret if 0 sectors
CALL HD_WAIT
RET C
CALL NEXT_ADD_SEC
JR HD_RD_L1
;-----------------------------------[OK]
FN_HDD_READ:
POP AF ; HL - BUFER, A - PAGE !!!
HD_RD_CMD:
AND A
INC B
DEC B
RET Z
CALL HD_WAIT
RET C
CALL HD_PREPARE
RET C
HD_RD_L1:
EXX
LD C,SLOT3
IN B,(C)
EXX
OUT (SLOT3),A
EX AF,AF'
SAFE_PORTY
LD BC,IDE.Write.Command
LD A,#20
OUT (C),A
HD_RD_L2:
WAIT_HDD
BIT IDE.ControlBit.DataRequest,A
JR NZ,HD_READ_CONT
ZERO_PORTY
HD_RET:
EXX
OUT (C),B
EXX
LD BC,IDE.Read.Error
IN A,(C)
AND A
SCF
RET NZ
EX AF,AF'
AND A
RET
;---------------------------------------
;-----------------------------------[OK]
HD_READ_CONT:
LD BC,IDE.Read.Data
.loop_read1:
DUP 16
INI ; ¢á¥£® 16 à § INI - ®¯â¨¬ «ì­®.
EDUP
JP NZ,.loop_read1
.loop_read2:
DUP 16
INI ; ¢á¥£® 16 à § INI - ®¯â¨¬ «ì­®.
EDUP
JP NZ,.loop_read2
LD A,H
OR L
JR NZ,HD_RD_L2
LD A,SYS_PAGE
OUT (SLOT3),A
EX AF,AF'
LD HL,SYS_PAGE.RAMD_FAT
LD L,A
LD A,(HL)
OUT (SLOT3),A
EX AF,AF'
LD HL,#C000 ; !!!!!
JR HD_RD_L2
;---------------------------------------
;-----------------------------------[OK]
FN_HDD_WRITE:
POP AF ; HL - BUFER, A - PAGE !!!
HD_WR_CMD:
AND A
INC B
DEC B
RET Z
CALL HD_WAIT
RET C
CALL HD_PREPARE
RET C
EXX
LD C,SLOT3
IN B,(C)
EXX
OUT (SLOT3),A
EX AF,AF'
LD BC,IDE.Write.Command
LD A,#30
OUT (C),A
HD_WR_L2:
WAIT_HDD
BIT IDE.ControlBit.DataRequest,A
JP Z,HD_RET
; IF HDD_TYPE = 1
LD BC,IDE.Write.Data
LD D,32
HD_WR_LOOP:
DUP 16
OUTI ; ¢á¥£® 16 à § OUTI - ®¯â¨¬ «ì­®.
EDUP
DEC D
JP NZ,HD_WR_LOOP
/*
ELSE
LD BC,P_DATS+#100
LD D,64
HD_WR_LOOP:
DUP 4
INC HL
OUTI
DEC HL
DEC HL
OUTI
INC HL
EDUP
DEC D
JR NZ,HD_WR_LOOP
ENDIF
*/
LD A,H
OR L
JR NZ,HD_WR_L2
LD A,SYS_PAGE
OUT (SLOT3),A
EX AF,AF'
LD HL,SYS_PAGE.RAMD_FAT
LD L,A
LD A,(HL)
OUT (SLOT3),A
EX AF,AF'
LD HL,#C000 ;!!!!!
JR HD_WR_L2
;---------------------------------------
;-----------------------------------[OK]
FN_HDD_RECAL:
POP AF
HD_CMD1_EX:
LD A,#A0
LD BC,IDE.Write.DriveCtrl
OUT (C),A
LD A,#90 ; DIAGNOSTICS
CALL HD_CMD_EXE
AND A
BIT IDE.ControlBit.Error,A
RET Z
LD BC,IDE.Read.Error
IN A,(C)
CP 1 ; !!!!! £«ï­ãâì
RET Z
SCF
RET
;---------------------------------------
;-----------------------------------[OK]
FN_HDD_TEST_IDE:
POP AF
LD E,#00
LD BC,IDE.Write.DriveCtrl
LD A,#A0 ; !!!!! £«ï­ãâì
OUT (C),A
CALL TEST_HDD_DRV
JR NZ,NO_HDD1
SET 0,E
NO_HDD1:
LD BC,IDE.Write.DriveCtrl
LD A,#B0 ; !!!!! £«ï­ãâì
OUT (C),A
CALL TEST_HDD_DRV
JR NZ,NO_HDD2
SET 1,E
NO_HDD2:
LD A,E
AND A
SCF
RET Z ; HDD absent !
AND A
RET
;---------------------------------------
;-----------------------------------[DIFFERENT]
; <EFBFBD>¥ ¤®«¦­  ¯®àâ¨âì ॣ¨áâà E!!!
TEST_HDD_DRV:
; EXP_HDD.ASM variant
LD HL,#01FE ; ?????
LD BC,IDE.Write.Counter
OUT (C),L
IF IDE_Optimization
INC C
OUT (C),H ; IDE.Write.Sector
DEC C
INC B
IN A,(C) ; ????? IDE.Write.Counter+#100
CP L
RET NZ
INC C
ELSE
LD BC,IDE.Write.Sector
OUT (C),H
LD BC,IDE.Write.Counter+#100
IN A,(C)
CP L
RET NZ
LD BC,IDE.Write.Sector+#100
ENDIF
IN A,(C) ; ????? IDE.Write.Sector+#100
CP H
RET
/*
TEST_HDD_DRV:
; EXTENDED.ASM variant
LD HL,#00FF ;???!!!!
LD BC,IDE.Write.CylinderLow
OUT (C),L
IF IDE_Optimization
INC C
OUT (C),H ; IDE.Write.CylinderHigh
INC B
DEC C
IN A,(C) ; ????? ãâ ॣ¨áâà BC = #0254 - çâ® §  ¯®àâ â ª®© ¨ çâ® ®ââ㤠 ¯à®ç¨â ¥âáï?
CP L
RET NZ
INC C
ELSE
LD BC,IDE.Write.CylinderHigh
OUT (C),H
LD BC,#0254 ;???!!!!
IN A,(C)
CP L
RET NZ
LD BC,#0255 ;???!!!!
ENDIF
IN A,(C) ; ????? ãâ ॣ¨áâà BC = #0255 - çâ® §  ¯®àâ â ª®© ¨ çâ® ®ââ㤠 ¯à®ç¨â ¥âáï?
CP H
RET
*/
;---------------------------------------
;-----------------------------------[OK]
FN_HDD_INIT:
POP AF
LD BC,IDE.Write.DriveCtrl
LD A,#A0
OUT (C),A
CALL TEST_HDD_DRV
JR NZ,HD_ABSENT
HD_C0_L3:
WAIT_HDD
LD BC,IDE.Write.Command
LD A,#EC ; !HARDCODE
OUT (C),A
WAIT_HDD
BIT IDE.ControlBit.DataRequest,A
JR NZ,HD_C0_L2
SCF
RET
;---------------------------------------
;-----------------------------------[OK]
HD_ABSENT:
LD BC,IDE.Write.DriveCtrl
LD A,#B0 ; !HARDCODE
OUT (C),A
CALL TEST_HDD_DRV
JR Z,HD_C0_L3
SCF
RET
;---------------------------------------
;-----------------------------------[OK]
HD_C0_L2:
LD BC,IDE.Read.Data
LD HL,SYS_PAGE.HD_IDF_ADR
IN A,(SLOT3)
LD D,A
LD A,SYS_PAGE
OUT (SLOT3),A
INIR
INIR
LD A,(SYS_PAGE.HD_IDF_ADR.sectors) ; ç¨á«® ᥪâ®à®¢
LD C,A
LD HL,0
LD B,H
LD A,(SYS_PAGE.HD_IDF_ADR.heads) ; ç¨á«® £®«®¢®ª
.loop:
ADD HL,BC
DEC A
JR NZ,.loop
LD (SYS_PAGE.HD_IDF_ADR.sec_cyl),HL
WAIT_HDD
LD BC,IDE.Read.Control
; DEC B
IN A,(C)
AND #10
LD B,A
LD A,(SYS_PAGE.HD_IDF_ADR.heads) ; ç¨á«® £®«®¢®ª
DEC A
AND #0F
OR #A0
OR B
LD H,A
LD A,(SYS_PAGE.HD_IDF_ADR+99) ; ????? LBA?
BIT 1,A
JR Z,HD_C0_NO_LBA
SET 6,H
HD_C0_NO_LBA:
LD BC,IDE.Write.DriveCtrl
OUT (C),H
LD A,(SYS_PAGE.HD_IDF_ADR.sectors) ; ç¨á«® ᥪâ®à®¢
LD BC,IDE.Write.Counter
OUT (C),A
LD A,D
OUT (SLOT3),A
LD A,#91 ; SET HDD PARAMETERS
CALL HD_CMD_EXE
RET
; RET C
; LD A,1FH ; RECALIBRATE
; CALL HD_CMD_EXE
; RET
;---------------------------------------
;-----------------------------------[OK]
HD_CMD_EXE:
CALL HD_WAIT
RET C
LD BC,IDE.Write.Command
OUT (C),A
HD_WAIT:
PUSH DE
PUSH BC
PUSH AF
LD DE,0
HD_WAIT1:
LD BC,IDE.Read.Status
IN A,(C)
BIT IDE.ControlBit.Busy,A
JR Z,HD_W_EXIT
DEC DE
LD A,D
OR E
JR NZ,HD_WAIT1
POP AF
POP BC
POP DE
SCF
RET
;---------------------------------------
;-----------------------------------[OK]
HD_W_EXIT:
POP AF
POP BC
POP DE
AND A
RET
;---------------------------------------
;-----------------------------------[DIFFERENT]
/*
;EXTENDED.ASM Version
HDD_LBA: ;???!!!!
POP BC
LD L,E
LD E,D
LD D,XL
XOR A
LD H,A
RET
HD_CALC_SECS:
LD A,XH
AND A
SCF
RET NZ ; ®è¨¡ª , ᫨誮¬ ¡®«ì让 HDD
PUSH BC
LD BC,IDE.Write.DriveCtrl
DEC B
IN A,(C)
BIT 6,A
JR NZ,HDD_LBA
; POP BC ;!!!!! ¯®á¬®âà¥âì
*/
;EXP_HDD.ASM Version
HDD_LBA:
POP BC
LD L,E
LD E,D
LD D,XL
LD A,XH
AND #0F ; XOR A ????? à §®¡à âìáï
LD H,A
RET
HD_CALC_SECS:
PUSH BC
LD BC,IDE.Read.Control
; DEC B
IN A,(C)
BIT 6,A
JR NZ,HDD_LBA
POP BC ; á­¨¬ ¥¬ §­ ç¥­¨¥ ¤«ï ª®à४⭮£® ret
LD A,XH
AND A
SCF
RET NZ ; ®è¨¡ª , ᫨誮¬ ¡®«ì让 HDD
;---------------------------------------
;-----------------------------------[OK]
; IX,DE -  ¡á®«îâ­ë© ­®¬¥à ᥪâ®à 
PUSH IX
POP HL
IN A,(SLOT3)
LD C,A
LD A,SYS_PAGE
OUT (SLOT3),A
LD A,C
LD (SYS_PAGE.COPY_SLOT3),A
; HL,DE - ­®¬¥à ᥪâ®à 
; BC - ç¨á«® ᥪâ®à®¢ ­  樫¨­¤à¥
LD BC,(SYS_PAGE.HD_IDF_ADR.sec_cyl) ; ç¨á«® ᥪâ®à®¢ ­  樫¨­¤à¥
LD A,16 ; HL,DE à §¤¥«¨âì ­  BC
SCF
DIV_LOOP:
EX DE,HL
ADD HL,HL
EX DE,HL
ADC HL,HL
SBC HL,BC ; áà ¢­¨âì HL ¨ BC
JR NC,NO_ADD ; ¯¥à¥­®á  ­¥ ¡ë«® - +1!
ADD HL,BC
DEC A
JR NZ,DIV_LOOP
JR DIV_END
NO_ADD:
INC DE
DEC A
JR NZ,DIV_LOOP
DIV_END:
; DE - १ã«ìâ â, HL - ®áâ â®ª
; DE - 樫¨­¤à
LD A,(SYS_PAGE.HD_IDF_ADR+12) ; !HARDCODE .sectors
; A - ç¨á«® ᥪâ®à®¢ ­  ¤®à®¦ª¥
; HL - ­®¬¥à ᥪâ®à  ¢ 樫¨­¤à¥
LD B,0
LD C,A
; LD BC,(MS_BPB+S_P_T) ; ˆŽ ŠŽ<EFBFBD>Ž <EFBFBD> Ž<EFBFBD>ŽŠ
XOR A
HD_CALC_LOOP2:
SBC HL,BC
INC A
JR NC,HD_CALC_LOOP2
DEC A ; A - £®«®¢ª 
ADD HL,BC ; L - ᥪâ®à
INC L
LD H,A ; HL - HEAD,SEC
LD A,(SYS_PAGE.COPY_SLOT3)
OUT (SLOT3),A
AND A
RET
;---------------------------------------
FN_HDD_PART:
POP AF
BIT 0,A
LD A,#21 ; !HARDCODE
JR Z,IDE_1
LD A,#01 ; !HARDCODE
IDE_1:
OUT (#BC),A ;!!!!! ¯®á¬®âà¥âì
RET
; ENDMODULE
;************************************************
; ?????
; DB 'HDD_DRV_END'
; 室:
; C - ª®¬ ­¤ 
; 0 - INIT - ¢å®¤­ëå ¯ à ­¥â => A - ç¨á«® ¯®¤¤¥à¦¨¢ ¥¬ëå ¤¨áª®¢.
; 1 - RESET - ¢ë¡®à ¤¨áª  A - ­®¬¥à ¤¨áª  ®â 0 =>
; 2 - (STATUS) !!!!! TEST?
; 3 - MEDIA CHECK - A - ­®¬¥à ¤¨áª  => A = 0 - old. #FF - new (¢á¥£¤  #FF) !!!!! PREPARE???
; 4 - READ BPB - A - ¤¨áª HL -  ¤à¥á ¢ ⥪ã饩 áâà ­¨æ¥.
; 5 - READ - A - ¤¨áª, IX:DE ᥪâ®à, HL -  ¤à¥á, B - ç¨á«® ᥪâ®à®¢
; 6 - WRITE - '' -
; 7 - PART
; 8 - READ_NEXT
;
; ®è¨¡ª¨ - CF - A - ®è¨¡ª 
;
; 0 - ­¥â ®è¨¡ª¨
; 1 - ­¥¢¥à­ ï ª®¬ ­¤ 
; 2 - ­¥¢¥à­ë© ­®¬¥à ¤¨áª 
; 3 - ­¥¢¥à­ë© ä®à¬ â (­¥ MS-DOS)
; 4 - ­¥â £®â®¢­®áâ¨
; 5 - ®è¨¡ª  ¯®§¨æ¨®­¨à®¢ ­¨ï
; 6 - ᥪâ®à ­¥ ­ ©¤¥­
; 7 - ®è¨¡ª  CRC
; 8 - § é¨â  § ¯¨á¨
; 9 - ®è¨¡ª  ç⥭¨ï
; 10 - ®è¨¡ª  § ¯¨á¨
; 11 - ƒžŠ
;

View File

@ -1,474 +0,0 @@
;
; It's disk drive BIOS extender for functions 5xh.
;---------------------------------------------------------------
;Version! Description
;---------------------------------------------------------------
; 2.32 ! Removed `DI' Disabled Interupt instruction in HDRIVER6
; ! function load sectors.
; ! Fixed bug waiting slave device in AUTOIDE.
;SPRINTER EQU 97
;SPRINTER EQU 2000
; DEVICE ZXSPECTRUM4096
/*
;HDD_TYPE EQU 1
MACRO WAIT_HDD
.LL1:
LD BC,P_HDST
IN A,(C)
BIT 7,A
JR NZ,.LL1
ENDM
*/
; ORG #0000
; INCLUDE '../VERSION.INC'
; INCLUDE '../BIOS.INC'
;VER EQU 2 ;Version disk subsystem
;MOD EQU 40
;PAGE1 EQU #A2
;PAGE2 EQU #C2
;INT_ADRESS EQU #C124
;INT_PAGE EQU #C126
;INT_ID EQU #C127
;BIOS EQU #3FD0
; DS #3FD0,#FF
;------------[Begin of ROM]-------------
ROM_START:
DI
HALT
;---------------------------------------
;--------------[checksum]---------------
BLOCK 4-$,#FF
Check_Sum:
DB #FF,#FF,#FF,#FF ; ¬¥áâ® ¤«ï ª®­â஫쭮© á㬬ë
;---------------------------------------
BLOCK #10-$,#FF
RET
;---------------------------------------
;----------------[int]------------------
BLOCK #38-$,#FF
INT:
PUSH HL
PUSH BC
PUSH AF
LD C,SLOT3
IN B,(C)
LD A,SYS_PAGE
OUT (C),A
LD A,(SYS_PAGE.INT_ID)
CP #AA
JR Z,YESINT
OUT (C),B
JR NOINT
YESINT:
LD HL,(SYS_PAGE.INT_ADRESS)
LD A,H
OR L
LD A,(SYS_PAGE.INT_PAGE)
OUT (C),B
CALL NZ,EXTINT
NOINT:
POP AF
POP BC
POP HL
EI
RETI
;---------------------------------------
;----------------[NMI]------------------
_mInfoBLOCK #66-$,#FF
NMI:
RETN
;---------------------------------------
;----------------[int]------------------
EXTINT:
OR A
RET Z
LD C,SLOT1
BIT 7,H
JR Z,L1
LD C,SLOT2
BIT 6,H
JR Z,L1
LD C,SLOT3
L1:
IN B,(C)
PUSH BC
OUT (C),A
CALL JPHL
POP BC
OUT (C),B
RET
JPHL:
JP (HL)
;---------------------------------------
;
;!TEST ­¥ ­ã¦­® ¥á«¨ new_api_table
HDD_FN_5x:
POP AF
CALL HDD_CMD.FN5X
JP RET_TO_EXP
;HD_CMD_X
;!TEST ­¥ ­ã¦­® ¥á«¨ new_api_table
HDD_CMD_4X:
SET 6,C
CALL ToBIOS_FromEXT
RET
; !TODO ; !FIXIT
; ; SCF
; ; BIT 7,C
; !FIXIT
;!TEST ­¥ ­ã¦­® ¥á«¨ new_api_table
HDD_CMD:
push af ; RET NZ
ld a,%00011111 ; BIT 6,C
sub c ; RET NZ
jp c,.exit ; BIT 5,C
pop af ; RET NZ
BIT 4,C
JP Z,HDD_CMD_4X ; 4xh functions ;C < #10 ; !TEST new_api
; 5xh functions #C0 - CD ROM, #80 - HARD DISK, #60 - RAM DISK, #00 - FLOPPY DISK
.FN5X:
RES 4,C ;C >= #10
INC C
DEC C
JP Z,.RESERVED ;#50
DEC C
JP Z,DRV_RESET ;#51 - Reset drive
DEC C
JP Z,DRV_READ_LONG ;#52 - Long read
DEC C
JP Z,DRV_WRITE_LONG ;#53 - Long write
DEC C
JP Z,DRV_VERIFY ;#54 - Verify sectors
DEC C
JP Z,DRV_READ ;#55 - Read sectors
DEC C
JP Z,DRV_WRITE ;#56 - Write sectors
DEC C
JP Z,DRV_DETECT ;#57 - Detect
DEC C
JP Z,DRV_GET_PAR ;#58 - Get Media parameters
DEC C
JP Z,DRV_SET_PAR ;#59 - Set Media parameters
DEC C
JP Z,DRV_VERSION ;#5A - Version number
DEC C
JP Z,.RESERVED ;#5B
DEC C
JP Z,.RESERVED ;#5C
DEC C
JP Z,.RESERVED ;#5D
DEC C
JP Z,.RESERVED ;#5E
DEC C
JP Z,DRV_CONFIG ;#5F - Configuration
.RESERVED:
LD A,1 ;!HARDCODE error code
SCF
RET
.exit: POP AF
SCF
RET
DRV_VERSION:
LD HL,0
LD BC,0
LD DE,Disk_subsystem_ver_hex
AND A
RET
DRV_CONFIG: ; ????? çâ® §  äã­ªæ¨ï ¨ ªã¤  㪠§ë¢ ¥â IX
IN A,(SLOT3)
PUSH AF
PUSH IY
LD A,SYS_PAGE
OUT (SLOT3),A
LD (IX+0),#04
LD (IX+1),#00 ;FDD COUNT
LD (IX+2),#00 ;HDD COUNT
LD (IX+3),#00 ;CDD COUNT
LD (IX+4),#00 ;END CODE
;Calculating FDD devices
LD HL,FDD_INI_TABLE.FDD_0
INC (IX+1)
LD B,8
LD A,#FF
TFD0:
CP (HL)
INC HL
JR NZ,YYYFD0
DJNZ TFD0
DEC (IX+1)
YYYFD0:
LD HL,FDD_INI_TABLE.FDD_1
INC (IX+1)
LD B,8
LD A,#FF
TFD1:
CP (HL)
INC HL
JR NZ,YYYFD1
DJNZ TFD1
DEC (IX+1)
YYYFD1:
;Calculating IDE devices
LD IY,IDE.INIT_TBL_IDE0
LD A,(IY+IDE.HDD_INIT_TABLE.DriveType) ;IDE TYPE 1-HDD, 2-CD-ROM
CP #FF
JR Z,ABSIDE0
CP IDE.Device.HDD
JR NZ,NOT_HD0
INC (IX+2)
NOT_HD0:
CP IDE.Device.CDROM
JR NZ,NOT_CD0
INC (IX+3)
NOT_CD0:
ABSIDE0:
LD IY,IDE.INIT_TBL_IDE1
LD A,(IY+IDE.HDD_INIT_TABLE.DriveType) ;IDE TYPE 1-HDD, 2-CD-ROM
CP #FF
JR Z,ABSIDE1
CP IDE.Device.HDD
JR NZ,NOT_HD1
INC (IX+2)
NOT_HD1:
CP IDE.Device.CDROM
JR NZ,NOT_CD1
INC (IX+3)
NOT_CD1:
ABSIDE1:
LD IY,IDE.INIT_TBL_IDE2
LD A,(IY+IDE.HDD_INIT_TABLE.DriveType) ;IDE TYPE 1-HDD, 2-CD-ROM
CP #FF
JR Z,ABSIDE2
CP IDE.Device.HDD
JR NZ,NOT_HD2
INC (IX+2)
NOT_HD2:
CP IDE.Device.CDROM
JR NZ,NOT_CD2
INC (IX+3)
NOT_CD2:
ABSIDE2:
LD IY,IDE.INIT_TBL_IDE3
LD A,(IY+IDE.HDD_INIT_TABLE.DriveType) ;IDE TYPE 1-HDD, 2-CD-ROM
CP #FF
JR Z,check_exit
CP IDE.Device.HDD
JR NZ,NOT_HD3
INC (IX+2)
NOT_HD3:
CP IDE.Device.CDROM
JR NZ,check_exit
INC (IX+3)
check_exit:
POP IY
POP AF
OUT (SLOT3),A
XOR A
RET
DRV_RESET:
CP #10
JP C,FDD_5x.RESET
; CP #60
; JP C,.error
; CP #70
; JP C,RESETR
CP #80
JP C,.error
CP #90
JP C,HDD_5x.RESET
CP #C0
JP C,.error
CP #D0
JP C,CD_5x.RESET
.error:
LD A,#AA
SCF
RET
DRV_READ_LONG:
CP #10
JP C,FDD_5x.LONG_READ
CP #60
JP C,.error
CP #70
JP C,RMD_5x.LONG_READ
CP #80
JP C,.error
CP #90
JP C,HDD_5x.LONG_READ
CP #C0
JP C,.error
CP #D0
JP C,CD_5x.LONG_READ
.error:
LD A,#AA
SCF
RET
DRV_WRITE_LONG:
CP #10
JP C,FDD_5x.LONG_WRITE
CP #60
JP C,.error
CP #70
JP C,RMD_5x.LONG_WRITE
CP #80
JP C,.error
CP #90
JP C,HDD_5x.LONG_WRITE
; CP #C0
; JP C,.error
; CP #D0
; JP C,LWRITEC
.error:
LD A,#AA
SCF
RET
DRV_READ:
CP #10 ; !HARDCODE ¯®­ §ë¢ âì ¡ë ¢á¥ ID
JP C,FDD_5x.READ
CP #60
JP C,.error
CP #70
JP C,RMD_5x.READ
CP #80
JP C,.error
CP #90
JP C,HDD_5x.READ
CP #C0
JP C,.error
CP #D0
JP C,CD_5x.READ
.error:
LD A,#AA
SCF
RET
DRV_WRITE:
CP #10
JP C,FDD_5x.WRITE
CP #60
JP C,.error
CP #70
JP C,RMD_5x.WRITE
CP #80
JP C,.error
CP #90
JP C,HDD_5x.WRITE
; CP #C0
; JP C,.error
; CP #D0
; JP C,WRITEC
.error:
LD A,#AA
SCF
RET
DRV_VERIFY:
; CP #10
; JP C,VERIFYD
; CP #60
; JP C,.error
; CP #70
; JP C,VERIFYR
CP #80
JP C,.error
CP #90
JP C,HDD_5x.VERIFY
; CP #C0
; JP C,.error
; CP #D0
; JP C,VERIFYC
.error:
LD A,#AA
SCF
RET
DRV_DETECT:
CP #10
JP C,FDD_5x.DETECT
; CP #60
; JP C,.error
; CP #70
; JP C,DETECTR
; CP #80
; JP C,.error
; CP #90
; JP C,DETECTH
CP #C0
JP C,.error
CP #D0
JP C,CD_5x.DETECT
.error:
LD A,#AA
SCF
RET
DRV_GET_PAR:
CP #10
JP C,FDD_5x.GETMED
CP #60
JP C,.error
CP #70
JP C,RMD_5x.GETMED
CP #80
JP C,.error
CP #90
JP C,HDD_5x.GETMED
.error:
LD A,#AA
SCF
RET
DRV_SET_PAR:
CP #10
JP C,FDD_5x.SETMED
CP #60
JP C,.error
CP #70
JP C,RMD_5x.SETMED
CP #80
JP C,.error
CP #90
JP C,HDD_5x.SETMED
.error:
LD A,#AA
SCF
RET
;
INCLUDE 'src/bios/ROM/EXTENDED/FDD_DRIVER_2.asm'
INCLUDE 'src/bios/ROM/EXTENDED/RAM_DISK_DRIVER_1.asm'
INCLUDE 'src/bios/ROM/EXTENDED/HDD_DRIVER_6.asm'
INCLUDE 'src/bios/ROM/EXTENDED/CD_DRIVER_0.asm'
;01000h SETUP
; ORG #9000
; INCBIN "BSETUP.BIN"
; INCLUDE "ENDROM.ASM"
;

View File

@ -1,135 +0,0 @@
;-----------[#0000 Extended]------------
INCLUDE 'src/bios/rom/EXTENDED/EXTENDED.asm'
;---------------------------------------
DISPLAY " EXTENDED end addr: ", /A, $
;-------------[#1000 SETUP]-------------
ShowInfo 'Setup block of ROM start', 0 ; !!!!! test
BLOCK_Setup EQU $
IF PACKED_MAIN
BLOCK ROM_MAP.SETUP-$,#FF
DISP COMPILE_ADDR.SETUP
; Depacker version
SETUP_MAIN:
LD HL,DEPACKER.UnpackedEXECaddr; â®çª  ¢å®¤  ¢ à á¯ ª®¢ ­­®¬ ª®¤¥
PUSH HL
LD DE,DEPACKER.WorkAddr ;  ¤à¥á ¯à®æ¥¤ãàë ¤¥¯ ª¥à 
PUSH DE
LD HL,DEPACKER.Addr
LD BC,DEPACKER.Length
LDIR
LD HL,DEPACKER.PackedMAIN ; £¤¥  à娢
LD DE,DEPACKER.UnpackAddr ; ªã¤  à á¯ ª®¢ë¢ âì
RET
.Depacker EQU $
ENT
;-----------------[v]
DEPACK_DATA:
DISP DEPACKER.WorkAddr
MODULE UnPacker
INCLUDE 'src/bios/ROM/SETUP/DEHRUST.asm' ; !TODO ᤥ« âì ­  LUA  ¢â®¢ë¡®à ¤¥ª®¬¯à¥áá®à  ¨ ª®¬¯à¥áá®à 
PackedMAIN: INCBIN 'Build/Bin/temp/MAIN.PAK'
ENDMODULE
ENT
DEPACK_DATA.length EQU $-DEPACK_DATA
;-----------------[^]
ELSE
DISP COMPILE_ADDR.SETUP
ShowInfo 'Setup block DISP start', 1 ; !!!!! test
SETUP_MAIN: INCLUDE 'src/bios/ROM/SETUP/Main.asm'
ShowInfo 'Setup block DISP end', 1 ; !!!!! test
ENT
ENDIF
ShowInfo 'Setup block of ROM end', 0 ; !!!!! test
BLOCK_Setup.Length EQU $-BLOCK_Setup
;---------------------------------------
;***************************************
;
; !TODO ¬®¦­® ®¯à¨å®¤®¢ âì âãâ ᪮«ìª®-â® ¡ ©â®¢
; DISPLAY 'Address in ROM with ', /D, ToBIOS_FromEXT-$, ' free bytes: ',/H,$
;***************************************
;
;---------------[SET EXP]---------------
_mInfoBLOCK ToBIOS_FromEXT-$,#FF ; #3FD0
; call exp bios from setup
;RST18h:
PUSH AF
LD A,ROM.EXT ; set exp-rom to slot0
OUT (SYS_PORT.ON),A
POP AF
RET
;---------------------------------------
;--------[ From TR-DOS to HDD part2]--------
_mInfoBLOCK #3FD8-$,#FF
TRDOS_HD_CMD:
// JP L0107
POP AF
CALL HDD_CMD ; !TEST new_api
JP RET_TO_TRDOS
;---------------------------------------
;-------------[SND_TEST_RET]-------------
_mInfoBLOCK #3FE0-$,#FF
SND_TEST_RET:
LD A,ROM.EXT
OUT (SYS_PORT.OFF),A
; JP SOUND_TEST
JP #0000
;---------------------------------------
;!TEST ­¥ ­ã¦­® ¥á«¨ new_api_table
;------------[HDD_5x portal]------------
; â®çª  ¢å®¤ /¢ë室  ¤«ï ä㭪権 5å ¨§ EXP
_mInfoBLOCK #3FE8-$,#FF
RET_TO_EXP:
PUSH AF
LD A,ROM.EXT
OUT (SYS_PORT.ON),A
JP HDD_FN_5x
;---------------------------------------
;!FIXIT íâ  â®çª  ¢å®¤  ®ç¥­ì áâà ­­ ï ¨§ áâà ­¨æë ¢ áâà ­¨æã ¯à룠¥â
;---------[ From TR-DOS to HDD ]--------
_mInfoBLOCK #3FF0-$,255
RET_TO_TRDOS:
PUSH AF
DI
LD A,ROM.EXT
OUT (SYS_PORT.OFF),A
JR TRDOS_HD_CMD ; âãâ ­¥ 墠⨫® ¬¥áâ  ¢ 1 ¡ ©â, ç⮡ áà §ã ᤥ« âì JP
;---------------------------------------
;-----[???????????????????????????]-----
_mInfoBLOCK #3FF8-$,255
A3FF8: PUSH AF
LD A,ROM.EXT
OUT (SYS_PORT.OFF),A
; !FIXIT ¬®¦¥â ã¡à âì § £«ãèªã ¨ ᤥ« âì, ç⮡ ¯¥à¥ª«îç «®áì ­  EXP ¨ ¤ «ìè¥ ª ª ¢ EXP_FNS_RET ?
; ¨«¨ ᢮¥£® 祣®-­¨¡ã¤ì ¤®¡ ¢¨âì.
JP #0000
;---------------------------------------
; $ = #4000
;=======================================

View File

@ -16,7 +16,7 @@
; ....0..11.1110
; WORD %00000001101110 ; -  ¤à¥á
; WORD %00001001101111 ; - ¬ áª  - 0 ¨§¬¥­ï¥¬ë¥ ¡¨âë, 1 ­¥¨§¬¥­ï¥¬ë¥
; BYTE Conf_port.Border_FE ; - ¯®àâ
; BYTE ACEX.Border_FE ; - ŻŽŕâ
; DCP END MARKER
; DW 0,0,0
@ -25,126 +25,125 @@
;
;-----------------------------------------------------------------------;
; VG93 Ports
DW %00000000000111
DW %00010001101111
DB Conf_port.VG93_1F
DB ACEX.VG93_1F
DW %11010000000111
DW %11010001101111
DB Conf_port.VG93_1F
;ok
DB ACEX.VG93_1F
DW %00000000100111
DW %00010001101111
DB Conf_port.VG93_3F
DB ACEX.VG93_3F
DW %11010000100111
DW %11010001101111
DB Conf_port.VG93_3F
;ok
DB ACEX.VG93_3F
DW %00000001000111
DW %00010001101111
DB Conf_port.VG93_5F
DB ACEX.VG93_5F
DW %11010001000111
DW %11010001101111
DB Conf_port.VG93_5F
;ok
DB ACEX.VG93_5F
DW %00000001100111
DW %00010001101111
DB Conf_port.VG93_7F
DB ACEX.VG93_7F
DW %11010001100111
DW %11010001101111
DB Conf_port.VG93_7F
;ok
DB ACEX.VG93_7F
DW %00000001101111
DW %00011001101111
DB Conf_port.VG93_State
DB ACEX.VG93_State
DW %11010001101111
DW %11011001101111
DB Conf_port.VG93_State
DB ACEX.VG93_State
; For joystick
DW %00011000000111
DW %10011001101111
DB Conf_port.JOY_VG93
DB ACEX.JOY_VG93
DW %10011000000111
DW %11011001101111
DB Conf_port.JOY_VG93
DB ACEX.JOY_VG93
; For VG93 with dos on
DW %00001001101111
DW %00011001101111
DB Conf_port.JOY_VG93
DB ACEX.JOY_VG93
; For VG93 with dos off
DW %11011001101111
DW %11011001101111
DB Conf_port.JOY_VG93
;ok
DB ACEX.JOY_VG93
DW %00000000101101
DW %11011111111111
DB Conf_port.FDD720
DB ACEX.FDD720
DW %11000000101101
DW %11001111111111
DB Conf_port.FDD720
;ok
DB ACEX.FDD720
DW %00000000111101
DW %11011111111111
DB Conf_port.FDD144
DB ACEX.FDD144
DW %11000000111101
DW %11001111111111
DB Conf_port.FDD144
DB ACEX.FDD144
;!FIXIT UNKNOWN PORTS--------------------------------------------------; dos on, ⮫쪮 ç¥à¥§ BC, ç⥭¨¥/§ ¯¨áì
;ok
DW %10000100101101
DW %11010111111111
DB #18
;ok
DW %10000100111101
DW %11010111111111
DB #19
;ok
DW %10000110101101
DW %11010111111111
DB #1A
;----------------------------------------------------------------------;
;ok
DW %00000100101101
DW %11001111111111
DB #1B
DB ACEX.ISA_CTRL
DW %10000110111101
DW %11010111111111
DB #1B
DB ACEX.ISA_CTRL
DW %11000100101101
DW %11001111111111
DB #1B
;ok
DB ACEX.ISA_CTRL
DW %00001100111101
DW %11001101111111
DB #1C
DB ACEX.CMOS_DATA.READ
DW %11001100111101
DW %11001101111111
DB #1C
;ok
DB ACEX.CMOS_DATA.READ
DW %00000110101101
DW %11001111111111
DB #1D
DB ACEX.CMOS_ADDR.WRITE
DW %11000110101101
DW %11001111111111
DB #1D
;ok
DB ACEX.CMOS_ADDR.WRITE
DW %00000100111101
DW %11001101111111
DB #1E
DB ACEX.CMOS_DATA.WRITE
DW %11000100111101
DW %11001101111111
DB #1E
;ok
DB ACEX.CMOS_DATA.WRITE
;
;---------HDD[v]
DW %00000001000000
DW %11000001101111
DB #20
DW %01000001000000
DW %11010001101111
DB #20
;ok
DW %10000001000000
DW %11010001101111
DB #20
@ -152,7 +151,6 @@
DW %11000001101111
DB #20
;ok
DW %00000001000001
DW %00010111101111
DB #21
@ -162,7 +160,7 @@
DW %11010001000001
DW %11010111101111
DB #21
;ok
DW %00000001000010
DW %00010111101111
DB #22
@ -172,7 +170,7 @@
DW %11010001000010
DW %11010111101111
DB #22
;ok
DW %00000001000011
DW %00010111101111
DB #23
@ -182,7 +180,7 @@
DW %11010001000011
DW %11010111101111
DB #23
;ok
DW %00000001000100
DW %00010111101111
DB #24
@ -193,7 +191,6 @@
DW %11010111101111
DB #24
;ok
DW %00000001000101
DW %00010111101111
DB #25
@ -204,7 +201,6 @@
DW %11010111101111
DB #25
;ok
DW %00000011000010
DW %00010111101111
DB #26
@ -214,7 +210,7 @@
DW %11010011000010
DW %11010111101111
DB #26
;ok
DW %00000011000011
DW %00010111101111
DB #27
@ -224,233 +220,232 @@
DW %11010011000011
DW %11010111101111
DB #27
;ok
;---------HDD[^]
;
DW %00000011000100
DW %00010111101111
DB Conf_port.IDE_CONTROL_3F6
DB ACEX.IDE_CONTROL_3F6
DW %00010011000100
DW %11010111101111
DB Conf_port.IDE_CONTROL_3F6
DB ACEX.IDE_CONTROL_3F6
DW %11010011000100
DW %11010111101111
DB Conf_port.IDE_CONTROL_3F6
;ok
DB ACEX.IDE_CONTROL_3F6
DW %00000011000101
DW %00010111101111
DB Conf_port.IDE_STATUS_3F7
DB ACEX.IDE_STATUS_3F7
DW %00010011000101
DW %11010111101111
DB Conf_port.IDE_STATUS_3F7
DB ACEX.IDE_STATUS_3F7
DW %11010011000101
DW %11010111101111
DB Conf_port.IDE_STATUS_3F7
;ok
DB ACEX.IDE_STATUS_3F7
DW %00000000101100
DW %11001111111111
DB Conf_port.IDE_CHANEL_1
DB ACEX.IDE_CHANEL_1
DW %11000000101100
DW %11001111111111
DB Conf_port.IDE_CHANEL_1
;ok
DB ACEX.IDE_CHANEL_1
DW %00000000111100
DW %11001111111111
DB Conf_port.IDE_CHANEL_2
DB ACEX.IDE_CHANEL_2
DW %11000000111100
DW %11001111111111
DB Conf_port.IDE_CHANEL_2
;ok
DB ACEX.IDE_CHANEL_2
DW %00000010101101
DW %11001111111111
DB Conf_port.VSYNC320
DB ACEX.VSYNC320
DW %11000010101101
DW %11001111111111
DB Conf_port.VSYNC320
;ok
DB ACEX.VSYNC320
DW %00000010111101
DW %11001111111111
DB Conf_port.VSYNC312
DB ACEX.VSYNC312
DW %11000010111101
DW %11001111111111
DB Conf_port.VSYNC312
;ok
DB ACEX.VSYNC312
DW %00000010101100
DW %11001111111111
DB Conf_port.RESET
DB ACEX.RESET
DW %11000010101100
DW %11001111111111
DB Conf_port.RESET
;ok
DB ACEX.RESET
DW %00000010111100
DW %11001111111111
DB Conf_port.UNKNOWN ;!FIXIT ¬®¦­® ¯®ª  ã¡à âì
DB ACEX.UNKNOWN ;!FIXIT ŹŽŚ­Ž ŻŽŞ  ăĄŕ âě
DW %11000010111100
DW %11001111111111
DB Conf_port.UNKNOWN ;!FIXIT ¬®¦­® ¯®ª  ã¡à âì
;ok
DB ACEX.UNKNOWN ;!FIXIT ŹŽŚ­Ž ŻŽŞ  ăĄŕ âě
DW %00010000101011
DW %11010001101011
DB Conf_port.ISA_Control
;ok
DB ACEX.ISA_Control ;!FIXIT ŹŽŚ­Ž ŻŽŞ  ăĄŕ âě ???
DW %00011001101110
DW %10011001101111
DB Conf_port.ZX_Keyboard
DB ACEX.ZX_Keyboard
DW %10011001101110
DW %11011001101111
DB Conf_port.ZX_Keyboard
;ok
DB ACEX.ZX_Keyboard
DW %00001111111101
DW %00001111111111
DB Conf_port.AY_FFFD_READ
;ok
DB ACEX.AY_FFFD_READ
DW %00001111011111
DW %11001111111111
DB Conf_port.Kempston_Mouse
DB ACEX.Kempston_Mouse
DW %11001111011111
DW %11001111111111
DB Conf_port.Kempston_Mouse
;ok
DB ACEX.Kempston_Mouse
DW %00011001100011
DW %11011001101111
DB Conf_port.CBL_OUT
DB ACEX.CBL_OUT
DW %01010001100011
DW %11010001101111
DB Conf_port.CBL_OUT
DB ACEX.CBL_OUT
DW %10010001100011
DW %11010001101111
DB Conf_port.CBL_OUT
DB ACEX.CBL_OUT
DW %00010000000111
DW %11011000001111
DB Conf_port.CBL_OUT
DB ACEX.CBL_OUT
DW %00011000001000
DW %11011001101111
DB Conf_port.CBL_OUT
DB ACEX.CBL_OUT
DW %00010001101011
DW %10010001101111
DB Conf_port.CBL_OUT
DB ACEX.CBL_OUT
DW %10010001101011
DW %11010001101111
DB Conf_port.CBL_OUT
;ok
DB ACEX.CBL_OUT
DW %00000001000110
DW %11001111111111
DB Conf_port.CBL_SYS_PORT
DB ACEX.CBL_SYS_PORT
DW %11000001000110
DW %11001111111111
DB Conf_port.CBL_SYS_PORT
;ok
DB ACEX.CBL_SYS_PORT
DW %00000111111101
DW %00001111111111
DB Conf_port.AY_FFFD_WRITE
;ok
DB ACEX.AY_FFFD_WRITE
DW %00000101111101
DW %00001111111111
DB Conf_port.AY_BFFD
;ok
DB ACEX.AY_BFFD
DW %00000001101101
DW %10000111111111
DB Conf_port.Scorp_1FFD
DB ACEX.Scorp_1FFD
DW %11000001101101
DW %11000111111111
DB Conf_port.Scorp_1FFD
;ok
DB ACEX.Scorp_1FFD
DW %00000011101101
DW %00100111101111
DB Conf_port.Pent_7FFD
DB ACEX.Pent_7FFD
DW %00100011101101
DW %11110111101111
DB Conf_port.Pent_7FFD
DB ACEX.Pent_7FFD
DW %11100011101101
DW %11100111101111
DB Conf_port.Pent_7FFD
DB ACEX.Pent_7FFD
DW %10000001101101
DW %11100111101111
DB Conf_port.Pent_7FFD
;ok
DB ACEX.Pent_7FFD
DW %00000001101110
DW %00001001101111
DB Conf_port.Border_FE
;ok
DB ACEX.Border_FE
DW %00000001010110
DW %11001111111111
DB Conf_port.ALL_MODE
DB ACEX.ALL_MODE
DW %11000001010110
DW %11001111111111
DB Conf_port.ALL_MODE
;ok
DB ACEX.ALL_MODE
DW %00000000001001
DW %00010001101111
DB Conf_port.PORT_Y
DB ACEX.PORT_Y
DW %00010000001001
DW %11010001101111
DB Conf_port.PORT_Y
DB ACEX.PORT_Y
DW %11010000001001
DW %11010001101111
DB Conf_port.PORT_Y
;ok
DB ACEX.PORT_Y
DW %00000001001001
DW %00010001101111
DB Conf_port.RGMOD
DB ACEX.RGMOD
DW %00010001001001
DW %11010001101111
DB Conf_port.RGMOD
DB ACEX.RGMOD
DW %11010001001001
DW %11010001101111
DB Conf_port.RGMOD
;ok
DB ACEX.RGMOD
DW %00000000100100
DW %00000000101111
DB Conf_port.CNF_PORT
DB ACEX.CNF_PORT
;!FIXIT ¬®¦­® ã¡à âì
DW %00000001101100
DW %11001001101111
DB Conf_port.SCALE
DB ACEX.SCALE
DW %11000001101100
DW %11001001101111
DB Conf_port.SCALE
;------------------------------
DB ACEX.SCALE
;ok
DW %00000000001010
DW %00010001101111
DB #E8
DB ACEX.SLOT0
DW %00010000001010
DW %11010001101111
DB #E8
DB ACEX.SLOT0
DW %11010000001010
DW %11010001101111
DB #E8
;ok
DB ACEX.SLOT0
DW %00000000101010
DW %00010001101111
DB #E9
DB ACEX.SLOT1
DW %00010000101010
DW %11010001101111
DB #E9
DB ACEX.SLOT1
DW %11010000101010
DW %11010001101111
DB #E9
DB ACEX.SLOT1
;ok
DW %00000001001010
DW %00010001101111
DB #EA
DB ACEX.SLOT2
DW %00010001001010
DW %11010001101111
DB #EA
DB ACEX.SLOT2
DW %11010001001010
DW %11010001101111
DB #EA
;ok
DB ACEX.SLOT2
DW %00000001101010
DW %00010001101111
DB #F0
DB ACEX.SLOT3
DW %00010001101010
DW %11010001101111
DB #F0
DB ACEX.SLOT3
DW %11010001101010
DW %11010001101111
DB #F0
DB ACEX.SLOT3
; DCP END MARKER
DW 0,0,0
;-----------------------------------------------------------------------;

View File

@ -250,23 +250,6 @@ NO_RESTART:
;
;
;----------------------------[ FOR ZX-MODE ]----------------------------;
IF BIOS_ZXMODE
;!HARDCODE ­  íâ®â  ¤à¥á #0 ¯à룠¥â ¢ vROM Basic-48 ¯®  ¤à¥áã #3CF0
; ¬®¦­® ¯®¯à®¡®¢ âì ¯¥à¥¤¥« âì íâ®â  ¤à¥á â ¬
_mInfoBLOCK #C0-$,0
;BEGIN:
; ‚室 ç¥à¥§ USR 15600
RET_FROM_BIOS_TO_BASIC48:
CALL CH_2
CALL COMAND_LINE ; <E2809A>Ž<C5BD><EFBFBD>ˆ… ŠŽŒ€<C592>, …‘‹ˆ …‘’œ
; ‚室 ¡¥§ ª®¬ ­¤ë
JP SW_ROM_1 ; އ<E280A1> << MAIN MENU >>
ENDIF
;-----------------------------------------------------------------------;
; ==== POST PROCs =================
MODULE POST_TEST
START:
@ -283,9 +266,7 @@ POST_1_RAM_BUS:
LD BC,0
LD HL,#C000
LD DE,#0055
.loop:
LD (HL),E
.loop: LD (HL),E
INC L
LD (HL),D
DEC L
@ -651,7 +632,7 @@ start:
;----[¯¥à¥å¢ â soft reset #EE port]-----
Check_EE_Port:
LD A,Conf_port.RET_PORT
LD A,ACEX.RET_PORT
LD B,0
LD C,BIOS.SET_PORTS
CALL @ToBIOS_3D13 ; ¯¥à¥ãáâ ­®¢¨âì ¢­ãâà. ¯®àâ #EE
@ -757,7 +738,7 @@ Set_Default_Screen:
CALL FN_SYNC.INT_DEF ; set default int
ld a,128+4 ; !HARDCODE
;ld c,BIOS.FN_SYNC
;RST ToBIOS_18 ; set default vsync
;RST_to_BIOS_18 ; set default vsync
CALL FN_SYNC ; set default vsync
Setup_to_RAM:
LD HL,Setup_Starter.Start
@ -976,20 +957,19 @@ init_zx_roms:
IN A,(SLOT3)
PUSH AF
;!HARDCODE
DI
LD A,1
LD A,1 ;!HARDCODE
OUT (SYS_PORT.ROM),A
LD A,2
;LD A,2
INC A ;!HARDCODE
IF SetFullZXromLoader
LD B,6 ; zx-rom number of pages
ELSE
LD B,4
ENDIF
.loop:
push bc
IF SetFullZXromLoader
LD B,6 ; zx-rom number of pages
ELSE
LD B,4
ENDIF
;!FIXIT ¯¥à¥¤¥« âì ­  äã­ªæ¨î ¡¨®á  ¤«ï ç⥭¨ï ROM-DISK ¨ ¯¥à¥­¥á⨠¢ ­¥£® <20>‡“ ᯥªâà㬠
.loop: push bc
out (ROM.SLOT0),a
or %01000000
@ -1024,7 +1004,7 @@ init_zx_roms:
LD B,#44 ; page
CALL .SET_ROM
LD A,#E0 ;!HARDCODE ROM-ID - EXPANSION
LD A,#E0 ;!HARDCODE ROM-ID - BIOS
LD B,#45 ; page
CALL .SET_ROM
@ -1114,252 +1094,11 @@ SPECTRUM_TASK:
BASIC_128:
LD SP,#BFFF
LD HL,RES128_PROG
LD DE,#5B00 ; § ¯ã᪠¯à®£à ¬¬ë ­  BASIC-¥.
LD DE,ZX_VARS.PRINTER_BUFFER ; § ¯ã᪠¯à®£à ¬¬ë ­  BASIC-¥.
LD BC,LEN_RES128
LDIR
DI
JP #5B00 ;!HARDCODE
;-----------------------------------------------------------------------;
;*****************************************************
; TURBO_OFF:
; LD A,D_TBOFF
; OUT (SYS_PORT.ON),A
; RET
; TURBO_ON:
; LD A,D_TBON
; OUT (SYS_PORT.ON),A
; RET
; JP_HL: JP (HL)
;PRINT_LINE:
; LD A,(HL)
; INC HL
; CP 0FFh
; RET Z
; RST 10H
; JR PRINT_LINE
; JP RESET_128
IF BIOS_ZXMODE
;-----------------------------------------------------------------------;
; ******* SERVICE *******
;-----------------------------------------------------------------------;
;------[ „…˜ˆ<CB86>ˆŸ ŠŽŒ€<C592><EFBFBD>މ <E28098>ŽŠˆ,<2C><EFBFBD>…„€<E2809E><E282AC>މ „‹Ÿ "EXPANSION" ]-------;
COMAND_LINE:
LD HL,(#5C5D) ;!HARDCODE CH_ADR
COMAND_LOOP:
LD A,(HL)
INC HL
CP ":"
JR Z,COMAND_L1
CP 0Dh
JR NZ,COMAND_LOOP
RET
COMAND_L1:
LD A,(HL)
CP 0EAh ; REM !!!
RET NZ
INC HL
COMAND_OK: ; Ž<><C5BD><EFBFBD>“†…<E280A0>€ ŠŽŒ€<C592>„€ „‹Ÿ 'expansion'
LD A,(HL)
INC HL
CP ':'
JP Z,MENU_S1
CP 0Dh
JP Z,MENU_S1
CP 'I'
JR Z,COMAND_ISD
CP 'i'
JR Z,COMAND_ISD
CP 'T'
JR Z,TASK_SWITCH
CP 't'
JR Z,TASK_SWITCH
DEC HL
POP BC
JP BASIC_MENU
MENU_S1:
POP BC
CALL SERVICE
JP SW_ROM_1
COMAND_ISD:
LD A,(HL)
INC HL
CP 'S'
JP Z,COMAND_ISD2
CP 's'
JP Z,COMAND_ISD2
RET
COMAND_ISD2:
POP BC
CALL ISDOS
JP SW_ROM_1
TASK_SWITCH:
; *** ‘®åà ­¨âì § ¤ çã ***
PUSH IY
PUSH IX
PUSH AF
PUSH BC
PUSH DE
PUSH HL
EXX
EX AF,AF'
PUSH AF
PUSH BC
PUSH DE
PUSH HL
LD A,R
PUSH AF
LD A,I
PUSH AF
LD A,(HL)
RLCA
RLCA
RLCA
RLCA
AND 30H ; ­®¢ ï § ¤ ç  0..3
LD C,A
IN A,(SLOT3)
LD B,A ; 3-ï áâà ­¨æ  ⥪ã饩 § ¤ ç¨
LD A,SYS_PAGE
OUT (SLOT3),A
LD IX,SYS_PAGE.TASK_DATA ; ¤ ­­ë¥ § ¤ ç
LD E,(IX) ; áâ à ï § ¤ ç 
LD D,0
ADD IX,DE ; ¤ ­­ë¥ ⥪ã饩 § ¤ ç¨
LD E,16
ADD IX,DE ; ᬥ饭¨¥ ¤ ­­ëå ¢ â ¡«¨æ¥ § ¤ ç
LD (IX+1),B ; á®åà ­¨âì áâà ­¨æã 3
LD HL,0
ADD HL,SP
LD (IX+2),L ; á®åà ­¨âì á⥪ § ¤ ç¨
LD (IX+3),H
SET 0,(IX) ; ãáâ ­®¢¨âì ä« £ á®åà ­¥­­®á⨠⥪ã饩 § ¤ ç¨
RES 1,(IX) ; ãáâ ­®¢¨âì ä« £, çâ® § ¤ ç  ¯®ª¨­ãâ 
LD IX,SYS_PAGE.TASK_DATA
LD E,C
LD D,0
ADD IX,DE ; ­®¢ ï § ¤ ç 
LD E,16
ADD IX,DE ; ᬥ饭¨¥ ¤ ­­ëå ¢ â ¡«¨æ¥ § ¤ ç
BIT 1,(IX)
; JR NZ,TASK_IN_WORK ; § ¤ ç  ¢ à ¡®â¥ ??? ­¥¢¥à­®¥ § ¢¥à襭¨¥
; á¡à á뢠âì ¨«¨ ¯à®áâ® ¢®§¢à é âìáï
BIT 0,(IX) ; ¡ë«  á®åà ­¥­ /­¥â
JR NZ,TASK_SET ; § ¤ ç  áãé¥áâ¢ã¥â
; § ¤ ç¨ ­¥ ¡ë«®!
LD IX,SYS_PAGE.TASK_DATA
LD A,C ; § ¤ ç 
LD (IX),A ; ãáâ ­®¢¨âì ­®¢ãî § ¤ çã ⥪ã饩
JP SPECTRUM_TASK ; § ¯ãáâ¨âì ­®¢ãî § ¤ çã!
; ¨ ¯®ª  ¯®ä¨£ à á¯à¥¤¥«¥­¨¥ ¯ ¬ïâ¨!
TASK_SET:
LD IX,TASK_RESTORE
LD A,C
EXX
JP INIT_PAGES ; ¯¥à¥ª«îç¨âì ¢á¥ áâà ­¨æë!
TASK_RESTORE:
EXX
LD A,SYS_PAGE
OUT (SLOT3),A
LD A,C
LD IX,SYS_PAGE.TASK_DATA
LD (IX),A ; ãáâ ­®¢¨âì ­®¢ãî § ¤ çã ⥪ã饩
LD E,A
LD D,0
ADD IX,DE ; ­®¢ ï § ¤ ç 
LD E,16
ADD IX,DE
LD L,(IX+2) ; ¢á¯®¬­¨âì á⥪
LD H,(IX+3)
LD SP,HL
LD A,(IX+1) ; ¢á¯®¬­¨âì âà¥âìî áâà ­¨æã
OUT (SLOT3),A
POP AF ; ¢®ááâ ­®¢¨âì
LD I,A
POP AF
LD R,A
POP HL
POP DE
POP BC
POP AF
EX AF,AF'
EXX
POP HL
POP DE
POP BC
POP AF
POP IX
POP IY
; ¢¥à­ãâìáï ¢ § ¤ çã
NO_TASK:
POP BC
JP SW_ROM_1
; 259F - ADRESS BASIC128 - MAIN_MENU
;-----------------------------------------------------------------------;
;-----------------------------------------------------------------------;
; *** UTILITES ***
;-----------------------------------------------------------------------;
; C_0030: ; ¯®«ãç¨âì à ¡ ®¡«
; CALL_48X 0030h
; RET
C_19E8: ; ®ç¨áâ¨âì à ¡ ®¡«
CALL_48X 19E8h
RET
C_1655: ; ¯®«ãç¨âì ¯à®áâà ­á⢮
CALL_48X 1655h
RET
CLS:
C_0D6B: CALL_48 #0D6B
RET
CH_2: LD A,2
C_1601: ; OPEN CHANEL
CALL_48 #1601
RET
INCLUDE 'ZX_MENU.ASM'
INCLUDE 'ZX_MODE.ASM'
ENDIF
JP ZX_VARS.PRINTER_BUFFER
;-----------------------------------------------------------------------;
; _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ ;
;
@ -1370,11 +1109,9 @@ C_1601: ; OPEN CHANEL
;
;>$< >$< >$< >$< >$< >$< [ <20><EFBFBD>…Œ…™€…Œ އ“ ] >$< >$< >$< >$< >$< >$< ;
;--------[ <20>ணࠬ¬ , à §¬¥é ¥¬ ï á #5B00 ¤«ï § ¯ã᪠ Spectrum ]--------;
;!TODO ­ã¦­  «¨ âãâ?
RES128_PROG:
DISP #5B00 ;!HARDCODE SWAP_ROM
DISP ZX_VARS.PRINTER_BUFFER ;#5B00
LD A,ROM.BIOS
OUT (SYS_PORT.RAM),A ; ‚®§¢à â ¢ 128k ROM
LD C,SLOT3
@ -1414,7 +1151,7 @@ RES128_PROG:
LD B,#1F
OUT (C),A
DEC D
JP Z,0 ; 3 ‚•Ž„ EXPANSION ???
JP Z,0 ; 3 ‚•Ž„ EXPANSION ???
;
XOR A
@ -1453,7 +1190,7 @@ RESTARTS_PROG: ; !TODO LDConf
Start:
DISP COMPILE_ADDR.SETUP_STARTER
Exec:
LD A,CNF_PORT.CNF_0 + ROM.EXPANSION
LD A,CNF_PORT.CNF_0 + ROM.EXTENSION
OUT (SYS_PORT.ROM),A
LD HL,ROM_MAP.SETUP
@ -1556,8 +1293,12 @@ PROG_NO_ROM.size EQU $-PROG_NO_ROM
;-------------------[]
;-----------------------------------------------------------------------;
;>$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$< >$<;
;
;
; !FIXIT ᤥ« âì í⨠䨪á¨à®¢ ­­ë¥  ¤à¥á  ®â¤¥«ì­ë¬ ä ©«®¬ ¨ á IF/ELSE ¨ ¯®¤ª«îç âì ¨å ¯®â®¬ ªã¤  ­ ¤®.
;
;????? ¯®á¬®âà¥âì
;----------------------------------------------------------------------;
@ -1642,7 +1383,7 @@ DOS_ON: NOP
;***************************************
_mInfoBLOCK #3D13-$,#FF
NOP
JP #18
JP ToBIOS_18
;***************************************
;***************************************
@ -1653,7 +1394,6 @@ DOS_ON: NOP
;***************************************
_mInfoBLOCK #3E00-$,#FF
;!TODO   çñ ­¥ ¢ á⥪ ¯à룠âì?
DOS_OFF:
DI
PUSH AF
@ -1811,7 +1551,7 @@ ROM_DISK.Pages: ;
; „«ï ¢ë§®¢  ä㭪権 ¡¨®á  ¨§ áâà ­¨æë 0 <20>‡“ (ROM Extension)
FN1_RET:
PUSH AF
LD A,ROM.EXPANSION
LD A,ROM.EXTENSION
OUT (SYS_PORT.ROM),A
POP AF
RST #18
@ -1839,7 +1579,7 @@ FN1_RET:
_mInfoBLOCK #3FE8-$,#FF
EXP_HDD: ;HDD_EXE:
PUSH AF
LD A,ROM.EXPANSION
LD A,ROM.EXTENSION
OUT (SYS_PORT.ROM),A
POP AF
RET

View File

@ -449,7 +449,7 @@ WRS000:
PUSH BC
LD D,#1D ;!!!!! CMOS £«ï­ãâì
;LD C,BIOS.CMOS_RD
;RST ToBIOS_18
;RST_to_BIOS
CALL CMOS_RD
POP BC
AND 1

View File

@ -115,7 +115,7 @@ RAM_DRV_READ_WRITE:
AND #0F ;­®¬¥à à ¬¤¨áª 
;LD C,BIOS.GET_RAMD_ST
;RST ToBIOS_18
;RST_to_BIOS
CALL GET_RAMD_ST
; A = Memory Block ID
@ -136,7 +136,7 @@ RAM_DRV_READ_WRITE:
PUSH DE
//PUSH BC
;LD C,BIOS.BLK_RD_WR
;RST ToBIOS_18
;RST_to_BIOS
CALL BLK_RD_WR
JR C,.error_stack3
; hl = address + Sector_low * 256 * Sector_counter

View File

@ -122,7 +122,7 @@ RST_CONF:
;!TODO ᤥ« âì äã­ªæ¨î ¯® § «¨¢ª¥ ᢮¥© ª®­äë, ¯¥à¥å¢ âã à¥á¥â .
; .. ... ... ..
LD BC,256*BIOS.REINIT.HARD_RESET + BIOS.REINIT
JP ToBIOS_18
JP_to_BIOS
;***************************************
@ -190,7 +190,7 @@ REINIT: DEC B
DI
LD A,DCP_PAGE
OUT (SLOT1),A ; set DCP page
LD A,Conf_port.RESET
LD A,ACEX.RESET
LD (#4400),A ; open for WR
.loop: LD BC,#0100 ; 横« á¡à®á 
OUT (C),C

View File

@ -101,7 +101,7 @@ RUN_M_1:
POP AF ; ¢¥à­ãâì ­®¬¥à ¢ë¡®à 
POP IX
RET ; ¢®§¢à â ¨§ ¯à®£à ¬¬ë RUN_MENU
JP_HL: JP (HL)
;**************************************
; 128k MENU
;**************************************
@ -132,7 +132,7 @@ MN_128_S:
;**************************************
MENU_128:
LD A,0
OUT (SYS_PORT_OFF),A
OUT (SYS_PORT.OFF),A
CALL SWAP_ROM
CALL NEW_SP
@ -220,9 +220,9 @@ BASIC_MENU:
; CP 'S'
; JP Z,SET_SYSTEM
LD DE,(CH_ADR)
LD DE,(ZX_VARS.CH_ADR)
PUSH DE
LD (CH_ADR),HL
LD (ZX_VARS.CH_ADR),HL
CALL_48X 1C8Ch ; SYMBOL VAR
CALL_48X 2BF1h ; input txt !!!
; DE - adr
@ -239,7 +239,7 @@ NO_EXE_M:
POP DE
LD (DE),A
POP HL
LD (CH_ADR),HL
LD (ZX_VARS.CH_ADR),HL
JP SW_ROM
TST_M:
PUSH DE
@ -276,9 +276,9 @@ ERR_TST_M:
;**************************************
CALL_DOS_MOVE:
LD DE,5C00H-.Size
LD DE,#5C00 - DOS_PROG.Size ;!HARDCODE
LD HL,DOS_PROG
LD BC,.Size
LD BC,DOS_PROG.Size
LDIR
RET
;
@ -294,7 +294,7 @@ CALL_DOS1:
LD (ZX_VARS.STK_BOT),DE
LD (ZX_VARS.STK_END),DE
CALL CALL_DOS_MOVE
JP 5C00H-.Size
JP #5C00 - DOS_PROG.Size
CALL_DOS:
PUSH HL
PUSH DE
@ -302,17 +302,17 @@ CALL_DOS:
PUSH AF
CALL CALL_DOS_MOVE
LD A,13H
LD (5C00H-.Size+DOS_PROG_A),A
LD (5C00H-DOS_PROG.Size+DOS_PROG_A),A
POP AF
POP BC
POP DE
POP HL
JP 5C00H-.Size
JP #5C00-DOS_PROG.Size
DOS_PROG:
PUSH AF
XOR A
OUT (SYS_PORT_OFF),A
OUT (SYS_PORT.OFF),A
POP AF
CALL #3D03 ;!HARDCODE
DOS_PROG_A EQU $-DOS_PROG-1
@ -321,7 +321,7 @@ DOS_PROG_A EQU $-DOS_PROG-1
OUT (CNF_PORT),A
POP AF
RET
.Size EQU $-DOS_PROG
DOS_PROG.Size EQU $-DOS_PROG
CONT_PROG:
LD HL,1AFDH

View File

@ -53,23 +53,23 @@ GOTO_TRDOS:
TURBO_OFF:
LD A,BIOS.FN_TURBO.OFF
LD C,BIOS.FN_TURBO
JP ToBIOS_18
JP_to_BIOS
TURBO_ON:
LD A,BIOS.FN_TURBO.ON
LD C,BIOS.FN_TURBO
JP ToBIOS_18
JP_to_BIOS
;*******************************
CLEAR_RAM:
DI
LD C,BIOS.FullInit
RST ToBIOS_18
RST_to_BIOS
; ¯à¨ ®ç¨á⪥ ¯ ¬ï⨠¨§ ¬¥­î ᯥªâà㬠 ¢®§¢à â ¢ DSS ¯® CAD
; ¡ã¤¥â ®¯ á­ë¬ (RAM Blocks ®á¢®¡®¤¨«¨áì),
; ¯®í⮬㠮⪫îç ¥¬ ¯¥à¥å¢ â à¥á¥â .
;!TODO ¯à¨¤ã¬ âì ª ª ®âª«îç âì ¯¥à¥å¢ â ⮫쪮 ­  ¢®§¢à â ¢ DSS
LD A,Conf_port.RET_PORT
LD A,ACEX.RET_PORT
LD BC,BIOS.SET_PORTS
CALL ToBIOS_3D13
EI
@ -160,7 +160,7 @@ IS_MENU:
SPRINTER_1X:
CALL _SET_CNF
LD C,BIOS.RST_CONF.SP97_1
RST ToBIOS_18
RST_to_BIOS
CALL CNF_PN_320
LD L,2 ;FN_SYNC.INT_PENT
JR 1F ;!FIXIT ¬¥âªã ¯à¨¤ã¬ âì
@ -169,7 +169,7 @@ SPRINTER_1X:
AY8910_X:
CALL _SET_CNF
LD C,BIOS.RST_CONF.AY8910
RST ToBIOS_18
RST_to_BIOS
LD A,#FA ; no ACC, Original waits
LD (Port_All_Mode),A
@ -227,17 +227,17 @@ CONFIG_SET:
LD A,L
LD C,BIOS.FN_SYNC
RST ToBIOS_18
RST_to_BIOS
LD HL,#4104 ;!HARDCODE
LD E,0
LD BC,256*4 + BIOS.LP_OPEN_S ;!HARDCODE
RST ToBIOS_18
RST_to_BIOS
LD HL,#5104 ;!HARDCODE
LD E,0
LD BC,256*4 + BIOS.LP_OPEN_S
RST ToBIOS_18
RST_to_BIOS
POP DE
LD A,E
@ -250,7 +250,7 @@ CONFIG_SET:
SPRINTER_reset:
CALL _SET_CNF
LD BC,256*BIOS.REINIT.SOFT_RESET + BIOS.REINIT
JP ToBIOS_18
JP_to_BIOS
_SET_CNF:
DI
@ -292,7 +292,7 @@ UTILIT:
UTIL_DISK:
LD A,0
CALL EMM_FN3
CALL EMM_FN3 ;!!!!! ç¥à¥§ RST_to_BIOS EMM.FreeMemRMD
LD HL,C_DEMO6
CALL CALL_DOS1

Binary file not shown.

Binary file not shown.

View File

@ -1,460 +0,0 @@
;
IFN SET_NEWdcp
;-----------------------------------------------------------------------;
; !TODO áà ¢­¨âì ª ª § ¯ ªã¥âáï DCP  «£®à¨â¬®¬ ¤«ï k50
DCP_INIT:
EXX
LD HL,DCP_DATA
LD DE,#C000
.loop0:
LD B,8
LD C,(HL)
INC HL
.loop1:
RLC C
JR C,.loop2
SUB A
LD (DE),A
INC DE
DJNZ .loop1
JR .loop3
.loop2:
LD A,(HL)
INC HL
LD (DE),A
INC DE
DJNZ .loop1
.loop3:
inc d
dec d
JR NZ,.loop0
LD HL,#C000 ; CONFIG-3 for DOS & other fns
LD DE,#F000
LD BC,#0400
LDIR
LD HL,#F000
LD DE,#F400
LD BC,#0C00
LDIR
; First IN command - OPEN DCP
IN A,(SLOT3)
EXX
JP (HL)
;-----------------------------------------------------------------------;
ELSE
;-----------------------------------------------------------------------;
DCP_INIT:
LD C,XL
LD B,XH
LD E,YL
LD D,YH
EXX
LD HL,#C000
LD DE,#C001
LD BC,#3FFF
LD (HL),L
LDIR
LD IY,.data
LD IX,.ret
.loop:
LD L,(IY)
LD H,(IY+1)
LD E,(IY+2)
LD D,(IY+3)
LD B,(IY+4)
JR DCP_FN0M
.ret:
LD BC,5
ADD IY,BC
LD A,(IY+2)
OR (IY+3)
JR NZ,.loop
EXX
LD XL,C
LD XH,B
LD YL,E
LD YH,D
; First IN command - OPEN DCP
IN A,(SLOT3)
JP (HL)
;-----------------------------------------------------------------------;
ENDIF
;-----------------------------------------------------------------------;
; ”ã­ªæ¨ï ¤¥è¨äà â®à  ¯®à⮢.
; HL -  ¤à¥á
; DE - ¬ áª  - 0 ¨§¬¥­ï¥¬ë¥ ¡¨âë, 1 ­¥¨§¬¥­ï¥¬ë¥
; B - ¯®àâ
DCP_FN0M:
LD A,L
AND E
LD L,A
LD A,H
AND D
; AND #3F
OR #C0
LD H,A
LD A,D
OR #C0
LD D,A
.loop: LD (HL),B
LD A,L ; § ¬ áª¨à®¢ âì ­¥¨§¬¥­ï¥¬ë¥ ¡¨âë 1-¬¨
OR E ; ¤«ï ¯à®å®¦¤¥­¨ï ¯¥à¥­®á 
INC A ; 㢥«¨ç¨âì  ¤à¥á
JR Z,.carry ; ¢®§­¨ª ¯¥à¥­®á
OR E
XOR E ; ®¡­ã«¨âì ­¥¨§¬¥­ï¥¬ë¥ ¡¨âë
LD C,A ; ¨§¬¥­ï¥¬ ï ç áâì
LD A,L
AND E ; ¢ë¤¥«¨âì ­¥¨§¬¥­ï¥¬ãî
OR C
LD L,A ; ¤®¡ ¢¨âì ¨§¬¥­ï¥¬ãî ç áâì
JR .loop ; 横«
.carry: ; A = 0
; OR E
; XOR E
; LD C,A
LD A,L ; § ¡¨âì ¨§¬¥­ï¥¬ë¥ ¡¨âë ­ã«ï¬¨
AND E
; OR C
LD L,A
LD A,H ; § ¬ áª¨à®¢ âì ­¥¨§¬¥­ï¥¬ë¥ ¡¨âë 1-¬¨
OR D ; ¤«ï ¯à®å®¦¤¥­¨ï ¯¥à¥­®á 
INC A ; 㢥«¨ç¨âì  ¤à¥á
JR Z,.exit
OR D
XOR D
LD C,A ; ¨§¬¥­ï¥¬ ï ç áâì
LD A,H
AND D ; ¢ë¤¥«¨âì ­¥¨§¬¥­ï¥¬ãî
OR C
LD H,A ; ¤®¡ ¢¨âì ¨§¬¥­ï¥¬ãî ç áâì
JR .loop
.exit: JP (IX)
;
IF SET_NEWdcp
;-----------------------------------------------------------------------;
; DATA FOR DCP
; ¢¡¨¢ ¥¬ ¢ â ¡«¨æã DCP.XLSX ­ã¦­ë© ¢­¥è­¨© ¯®àâ,
; ᬮâਬ ᬥ饭¨¥ ¤«ï OUT (),x - íâ®  ¤à¥á
;
; C C E D / A A A A A A A A A
; N N 1 O W 1 1 6 5 1 7 2 1 0
; F F 2 S R 5 4 3
; 1 0 8
;
; CCED/AAAAAAAAA
; NN1OW116517210
; FF2SR54 3
DCP_INIT.data: ; 108
; Border ....0..11.1110
DW %00000001101110 ; -  ¤à¥á
DW %00001001101111 ; - ¬ áª  - 0 ¨§¬¥­ï¥¬ë¥ ¡¨âë, 1 ­¥¨§¬¥­ï¥¬ë¥
DB #C2 ; - ¯®àâ
; Keyboard ....1..11.1110
DW %00001001101110
DW %00001001101111
DB #40
; Kempston ...11..00.0111
DW %00011000000111
DW %00011001101111
DB #15
; DRQ/INTRQ ...01..11.1111
DW %00001001101111
DW %00011001101111
DB #15
; WR_PDOS ...00..11.1111
DW %00000001101111
DW %00011001101111
DB #14
; CS_WG93_1F ...0...00.0111
DW %00000000000111
DW %00010001101111
DB #10
; CS_WG93_3F ...0...01.0111
DW %00000000100111
DW %00010001101111
DB #11
; CS_WG93_5F ...0...10.0111
DW %00000001000111
DW %00010001101111
DB #12
; CS_WG93_7F ...0...11.0111
DW %00000001100111
DW %00010001101111
DB #13
;
; CNF_PORT ........1.0100
DW %00000000100100
DW %00000000101111
DB #C6
;
; SOUND_BFFD_WR ....0101111101
DW %00000101111101
DW %00001111111111
DB #91
; SOUND_FFFD_WR ....0111111101
DW %00000111111101
DW %00001111111111
DB #90
; SOUND_FFFD_RD ....11.1111101
DW %00001101111101
DW %00001101111111
DB #00
;
; COVOX_4F ...10.....0111
DW %00010000000111
DW %00011000001111
DB #88
; COVOX_FB ...10..11.1011
DW %00010001101011
DW %00011001101111
DB #88
; CASH__FB ...11..11..011
DW %00011001100011
DW %00011001100111
DB #88
; CASH__80 ...11..00.1000
DW %00011000001000
DW %00011001101111
DB #88
;
; P_XTR ...1...01.1.11
DW %00010000101011
DW %00010001101011
DB #32
;
; SC_256_1FFDH 0....001101101
DW %00000001101101
DW %10000111111111
DB #C0
; ZX_128_7FFDH 0.0..0111.1101
DW %00000011101101
DW %10100111101111
DB #C1
; ZX_128_7FFDH 0..0.0111.1101
DW %00000011101101
DW %10010111101111
DB #C1
; ZX_128_7FFDH 100..0.11.1101
DW %10000001101101
DW %11100101101111
DB #C1
; ZX_128_7FFDH 10.0.0.11.1101
DW %10000001101101
DW %11010101101111
DB #C1
; SC_256_1FFDH 11...001101101
DW %11000001101101
DW %11000111111111
DB #C0
; ZX_128_7FFDH 110..0111.1101
DW %11000011101101
DW %11100111101111
DB #C1
; ZX_128_7FFDH 11.0.0111.1101
DW %11000011101101
DW %11010111101111
DB #C1
;
; HDD_DATA ...0...10.0000
DW %00000001000000
DW %00010001101111
DB #20
; HDD_1F1 ...0.0010.0001
DW %00000001000001
DW %00010111101111
DB #21
; HDD_1F2 ...0.0010.0010
DW %00000001000010
DW %00010111101111
DB #22
; HDD_1F3 ...0.0010.0011
DW %00000001000011
DW %00010111101111
DB #23
; HDD_1F4 ...0.0010.0100
DW %00000001000100
DW %00010111101111
DB #24
; HDD_1F5 ...0.0010.0101
DW %00000001000101
DW %00010111101111
DB #25
; HDD_1F6 ...0.0110.0010
DW %00000011000010
DW %00010111101111
DB #26
; HDD_1F7 ...0.0110.0011
DW %00000011000011
DW %00010111101111
DB #27
; HDD_3F6 ...0.0110.0100
DW %00000011000100
DW %00010111101111
DB #28
; HDD_3F7 ...0.0110.0101
DW %00000011000101
DW %00010111101111
DB #29
;
; HDD_DATA 00.....10.0000
DW %00000001000000
DW %11000001101111
DB #20
; HDD_1F1 00...0010.0001
DW %00000001000001
DW %11000111101111
DB #21
; HDD_1F2 00...0010.0010
DW %00000001000010
DW %11000111101111
DB #22
; HDD_1F3 00...0010.0011
DW %00000001000011
DW %11000111101111
DB #23
; HDD_1F4 00...0010.0100
DW %00000001000100
DW %11000111101111
DB #24
; HDD_1F5 00...0010.0101
DW %00000001000101
DW %11000111101111
DB #25
; HDD_1F6 00...0110.0010
DW %00000011000010
DW %11000111101111
DB #26
; HDD_1F7 00...0110.0011
DW %00000011000011
DW %11000111101111
DB #27
; HDD_3F6 00...0110.0100
DW %00000011000100
DW %11000111101111
DB #28
; HDD_3F7 00...0110.0101
DW %00000011000101
DW %11000111101111
DB #29
;
; PAGE0 ...0...00.1010
DW %00000000001010
DW %00010001101111
DB #E8
; PAGE1 ...0...01.1010
DW %00000000101010
DW %00010001101111
DB #E9
; PAGE2 ...0...10.1010
DW %00000001001010
DW %00010001101111
DB #EA
; PAGE3 ...0...11.1010
DW %00000001101010
DW %00010001101111
DB #F0
;
; PAGE0 00.....00.1010
DW %00000000001010
DW %11000001101111
DB #E8
; PAGE1 00.....01.1010
DW %00000000101010
DW %11000001101111
DB #E9
; PAGE2 00.....10.1010
DW %00000001001010
DW %11000001101111
DB #EA
; PAGE3 00.....11.1010
DW %00000001101010
DW %11000001101111
DB #F0
;
; Y_PORT(RGADR) ...0...00.1001
DW %00000000001001
DW %00010001101111
DB #C4
; RGMOD ...0...10.1001
DW %00000001001001
DW %00010001101111
DB #C5
;
; Y_PORT(RGADR) 00.....00.1001
DW %00000000001001
DW %11000001101111
DB #C4
; RGMOD 00.....10.1001
DW %00000001001001
DW %11000001101111
DB #C5
;
; ISA_REG ...00100101101
DW %00000100101101
DW %00011111111111
DB #1B
; CMOS_DWR ...001.0111101
DW %00000100111101
DW %00011101111111
DB #1E
; CMOS_AWR ...00110101101
DW %00000110101101
DW %00011111111111
DB #1D
; CMOS_DRD ...011.0111101
DW %00001100111101
DW %00011101111111
DB #1C
;
; ISA_REG 00..0100101101
DW %00000100101101
DW %11001111111111
DB #1B
; CMOS_DWR 00..01.0111101
DW %00000100111101
DW %11001101111111
DB #1E
; CMOS_AWR 00..0110101101
DW %00000110101101
DW %11001111111111
DB #1D
; CMOS_DRD 00..11.0111101
DW %00001100111101
DW %11001101111111
DB #1C
; DCP END MARKER
DW 0,0,0
;-----------------------------------------------------------------------;
ENDIF
;

View File

@ -1,9 +0,0 @@
DEFINE FNAME_DCPpage './src/bios/old_files/DCP_PAGE.bin'
DEFINE FNAME_DCP './src/bios/old_files/EXP_DCP_TABLE_GENERATED.ASM'
includelua 'Shared_includes/lua/Functions.lua'
LUA PASS1
Generate_DCPASM_fromPAGE(sj.get_define("FNAME_DCPpage"), sj.get_define("FNAME_DCP"))
ENDLUA

View File

@ -1,639 +0,0 @@
;
;-----------------------------------------------------------------------;
;
DW %00000000000111
DW %11010001101111
DB #10
;
DW %01000000000111
DW %11010001101111
DB #10
;
DW %10000000000111
DW %11010001101111
DB #10
;
DW %11000000000111
DW %11000001101111
DB #10
;
DW %00000000100111
DW %11010001101111
DB #11
;
DW %01000000100111
DW %11010001101111
DB #11
;
DW %10000000100111
DW %11010001101111
DB #11
;
DW %11000000100111
DW %11000001101111
DB #11
;
DW %00000001000111
DW %11010001101111
DB #12
;
DW %01000001000111
DW %11010001101111
DB #12
;
DW %10000001000111
DW %11010001101111
DB #12
;
DW %11000001000111
DW %11000001101111
DB #12
;
DW %00000001100111
DW %11010001101111
DB #13
;
DW %01000001100111
DW %11010001101111
DB #13
;
DW %10000001100111
DW %11010001101111
DB #13
;
DW %11000001100111
DW %11000001101111
DB #13
;
DW %00000001101111
DW %11011001101111
DB #14
;
DW %01000001101111
DW %11011001101111
DB #14
;
DW %10000001101111
DW %11011001101111
DB #14
;
DW %11000001101111
DW %11001001101111
DB #14
;
DW %00001000000111
DW %11001000000111
DB #15
;
DW %01001000000111
DW %11001000000111
DB #15
;
DW %10001000000111
DW %11001000000111
DB #15
;
DW %11001001101111
DW %11001001101111
DB #15
;
DW %00000000101101
DW %11011111111111
DB #16
;
DW %11000000101101
DW %11001111111111
DB #16
;
DW %00000000111101
DW %11011111111111
DB #17
;
DW %11000000111101
DW %11001111111111
DB #17
;
DW %10000100101101
DW %11010111111111
DB #18
;
DW %10000100111101
DW %11010111111111
DB #19
;
DW %10000110101101
DW %11010111111111
DB #1A
;
DW %00000100101101
DW %11001111111111
DB #1B
;
DW %10000110111101
DW %11010111111111
DB #1B
;
DW %11000100101101
DW %11001111111111
DB #1B
;
DW %00001100111101
DW %11001101111111
DB #1C
;
DW %11001100111101
DW %11001101111111
DB #1C
;
DW %00000110101101
DW %11001111111111
DB #1D
;
DW %11000110101101
DW %11001111111111
DB #1D
;
DW %00000100111101
DW %11001101111111
DB #1E
;
DW %11000100111101
DW %11001101111111
DB #1E
;
DW %00000001000000
DW %11000001101111
DB #20
;
DW %01000001000000
DW %11010001101111
DB #20
;
DW %10000001000000
DW %11010001101111
DB #20
;
DW %11000001000000
DW %11000001101111
DB #20
;
DW %00000001000001
DW %11000111101111
DB #21
;
DW %01000001000001
DW %11010111101111
DB #21
;
DW %10000001000001
DW %11010111101111
DB #21
;
DW %11000001000001
DW %11000111101111
DB #21
;
DW %00000001000010
DW %11000111101111
DB #22
;
DW %01000001000010
DW %11010111101111
DB #22
;
DW %10000001000010
DW %11010111101111
DB #22
;
DW %11000001000010
DW %11000111101111
DB #22
;
DW %00000001000011
DW %11000111101111
DB #23
;
DW %01000001000011
DW %11010111101111
DB #23
;
DW %10000001000011
DW %11010111101111
DB #23
;
DW %11000001000011
DW %11000111101111
DB #23
;
DW %00000001000100
DW %11000111101111
DB #24
;
DW %01000001000100
DW %11010111101111
DB #24
;
DW %10000001000100
DW %11010111101111
DB #24
;
DW %11000001000100
DW %11000111101111
DB #24
;
DW %00000001000101
DW %11000111101111
DB #25
;
DW %01000001000101
DW %11010111101111
DB #25
;
DW %10000001000101
DW %11010111101111
DB #25
;
DW %11000001000101
DW %11000111101111
DB #25
;
DW %00000011000010
DW %11000111101111
DB #26
;
DW %01000011000010
DW %11010111101111
DB #26
;
DW %10000011000010
DW %11010111101111
DB #26
;
DW %11000011000010
DW %11000111101111
DB #26
;
DW %00000011000011
DW %11000111101111
DB #27
;
DW %01000011000011
DW %11010111101111
DB #27
;
DW %10000011000011
DW %11010111101111
DB #27
;
DW %11000011000011
DW %11000111101111
DB #27
;
DW %00000011000100
DW %11000111101111
DB #28
;
DW %01000011000100
DW %11010111101111
DB #28
;
DW %10000011000100
DW %11010111101111
DB #28
;
DW %11000011000100
DW %11000111101111
DB #28
;
DW %00000011000101
DW %11000111101111
DB #29
;
DW %01000011000101
DW %11010111101111
DB #29
;
DW %10000011000101
DW %11010111101111
DB #29
;
DW %11000011000101
DW %11000111101111
DB #29
;
DW %00000000101100
DW %11001111111111
DB #2A
;
DW %11000000101100
DW %11001111111111
DB #2A
;
DW %00000000111100
DW %11001111111111
DB #2B
;
DW %11000000111100
DW %11001111111111
DB #2B
;
DW %00000010101101
DW %11001111111111
DB #2C
;
DW %11000010101101
DW %11001111111111
DB #2C
;
DW %00000010111101
DW %11001111111111
DB #2D
;
DW %11000010111101
DW %11001111111111
DB #2D
;
DW %00000010101100
DW %11001111111111
DB #2E
;
DW %11000010101100
DW %11001111111111
DB #2E
;
DW %00000010111100
DW %11001111111111
DB #2F
;
DW %11000010111100
DW %11001111111111
DB #2F
;
DW %00010000101011
DW %11010001101011
DB #32
;
DW %00011001101110
DW %11011001101111
DB #40
;
DW %01011001101110
DW %11011001101111
DB #40
;
DW %10011001101110
DW %11011001101111
DB #40
;
DW %00001111111101
DW %11001111111111
DB #52
;
DW %01001111111101
DW %11001111111111
DB #52
;
DW %10001111111101
DW %11001111111111
DB #52
;
DW %11001111111101
DW %11001111111111
DB #52
;
DW %00001111011111
DW %11001111111111
DB #58
;
DW %11001111011111
DW %11001111111111
DB #58
;
DW %00010000000000
DW %11010000000000
DB #88
;
DW %01010001100011
DW %11010001100111
DB #88
;
DW %10010001100011
DW %11010001100111
DB #88
;
DW %00000001000110
DW %11001111111111
DB #89
;
DW %11000001000110
DW %11001111111111
DB #89
;
DW %00000111111101
DW %11001111111111
DB #90
;
DW %01000111111101
DW %11001111111111
DB #90
;
DW %10000111111101
DW %11001111111111
DB #90
;
DW %11000111111101
DW %11001111111111
DB #90
;
DW %00000101111101
DW %11001111111111
DB #91
;
DW %01000101111101
DW %11001111111111
DB #91
;
DW %10000101111101
DW %11001111111111
DB #91
;
DW %11000101111101
DW %11001111111111
DB #91
;
DW %00000001101101
DW %11000111111111
DB #C0
;
DW %01000001101101
DW %11000111111111
DB #C0
;
DW %11000001101101
DW %11000111111111
DB #C0
;
DW %00000011101101
DW %11000111101111
DB #C1
;
DW %01000011101101
DW %11100111101111
DB #C1
;
DW %10000001101101
DW %11100101101111
DB #C1
;
DW %11000011101101
DW %11000111101111
DB #C1
;
DW %00000001101110
DW %11001001101111
DB #C2
;
DW %01000001101110
DW %11001001101111
DB #C2
;
DW %10000001101110
DW %11001001101111
DB #C2
;
DW %11000001101110
DW %11001001101111
DB #C2
;
DW %00000001010110
DW %11001111111111
DB #C3
;
DW %11000001010110
DW %11001111111111
DB #C3
;
DW %00000000001001
DW %11000001101111
DB #C4
;
DW %01000000001001
DW %11010001101111
DB #C4
;
DW %10000000001001
DW %11010001101111
DB #C4
;
DW %11000000001001
DW %11000001101111
DB #C4
;
DW %00000001001001
DW %11000001101111
DB #C5
;
DW %01000001001001
DW %11010001101111
DB #C5
;
DW %10000001001001
DW %11010001101111
DB #C5
;
DW %11000001001001
DW %11000001101111
DB #C5
;
DW %00000000100100
DW %11000000101111
DB #C6
;
DW %01000000100100
DW %11000000101111
DB #C6
;
DW %10000000100100
DW %11000000101111
DB #C6
;
DW %11000000100100
DW %11000000101111
DB #C6
;
DW %00000001101100
DW %11001001101111
DB #C7
;
DW %11000001101100
DW %11001001101111
DB #C7
;
DW %00000000001010
DW %11000001101111
DB #E8
;
DW %01000000001010
DW %11010001101111
DB #E8
;
DW %10000000001010
DW %11010001101111
DB #E8
;
DW %11000000001010
DW %11000001101111
DB #E8
;
DW %00000000101010
DW %11000001101111
DB #E9
;
DW %01000000101010
DW %11010001101111
DB #E9
;
DW %10000000101010
DW %11010001101111
DB #E9
;
DW %11000000101010
DW %11000001101111
DB #E9
;
DW %00000001001010
DW %11000001101111
DB #EA
;
DW %01000001001010
DW %11010001101111
DB #EA
;
DW %10000001001010
DW %11010001101111
DB #EA
;
DW %11000001001010
DW %11000001101111
DB #EA
;
DW %00000001101010
DW %11000001101111
DB #F0
;
DW %01000001101010
DW %11010001101111
DB #F0
;
DW %10000001101010
DW %11010001101111
DB #F0
;
DW %11000001101010
DW %11000001101111
DB #F0
; DCP END MARKER
DW 0,0,0
;-----------------------------------------------------------------------;
;

View File

@ -1,110 +0,0 @@
;
;-----------------------------------------------------------------------;
; !TODO áà ¢­¨âì ª ª § ¯ ªã¥âáï DCP  «£®à¨â¬®¬ ¤«ï k50
DCP_INIT:
EXX
LD HL,DCP_DATA
LD DE,#C000
.loop0:
LD B,8
LD C,(HL)
INC HL
.loop1:
RLC C
JR C,.loop2
SUB A
LD (DE),A
INC DE
DJNZ .loop1
JR .loop3
.loop2:
LD A,(HL)
INC HL
LD (DE),A
INC DE
DJNZ .loop1
.loop3:
INC D
DEC D
JR NZ,.loop0
LD HL,#C000 ; CONFIG-3 for DOS & other fns
LD DE,#F000
LD BC,#0400
LDIR ; DE = #F400 !!!
LD HL,#F000
;LD DE,#F400
LD BC,#0C00
LDIR
; First IN command - OPEN DCP
IN A,(SLOT3)
EXX
JP (HL)
;-----------------------------------------------------------------------;
;-----------------------------------------------------------------------;
; ”ã­ªæ¨ï ¤¥è¨äà â®à  ¯®à⮢.
; HL -  ¤à¥á
; DE - ¬ áª  - 0 ¨§¬¥­ï¥¬ë¥ ¡¨âë, 1 ­¥¨§¬¥­ï¥¬ë¥
; B - ¯®àâ
; DCP_FN0M:
; LD A,L
; AND E
; LD L,A
; LD A,H
; AND D
; ; AND #3F
; OR #C0
; LD H,A
; LD A,D
; OR #C0
; LD D,A
; .loop: LD (HL),B
; LD A,L ; § ¬ áª¨à®¢ âì ­¥¨§¬¥­ï¥¬ë¥ ¡¨âë 1-¬¨
; OR E ; ¤«ï ¯à®å®¦¤¥­¨ï ¯¥à¥­®á 
; INC A ; 㢥«¨ç¨âì  ¤à¥á
; JR Z,.carry ; ¢®§­¨ª ¯¥à¥­®á
; OR E
; XOR E ; ®¡­ã«¨âì ­¥¨§¬¥­ï¥¬ë¥ ¡¨âë
; LD C,A ; ¨§¬¥­ï¥¬ ï ç áâì
; LD A,L
; AND E ; ¢ë¤¥«¨âì ­¥¨§¬¥­ï¥¬ãî
; OR C
; LD L,A ; ¤®¡ ¢¨âì ¨§¬¥­ï¥¬ãî ç áâì
; JR .loop ; 横«
; .carry: ; A = 0
; ; OR E
; ; XOR E
; ; LD C,A
; LD A,L ; § ¡¨âì ¨§¬¥­ï¥¬ë¥ ¡¨âë ­ã«ï¬¨
; AND E
; ; OR C
; LD L,A
; LD A,H ; § ¬ áª¨à®¢ âì ­¥¨§¬¥­ï¥¬ë¥ ¡¨âë 1-¬¨
; OR D ; ¤«ï ¯à®å®¦¤¥­¨ï ¯¥à¥­®á 
; INC A ; 㢥«¨ç¨âì  ¤à¥á
; JR Z,.exit
; OR D
; XOR D
; LD C,A ; ¨§¬¥­ï¥¬ ï ç áâì
; LD A,H
; AND D ; ¢ë¤¥«¨âì ­¥¨§¬¥­ï¥¬ãî
; OR C
; LD H,A ; ¤®¡ ¢¨âì ¨§¬¥­ï¥¬ãî ç áâì
; JR .loop
; .exit: JP (IX)
;-----------------------------------------------------------------------;

Binary file not shown.

View File

@ -1,565 +0,0 @@
; z80dasm 1.2.0
; command line: z80dasm -a -l -u -t -g 0x0000 -o /Users/tolik/Library/CloudStorage/GoogleDrive-tolik.trek@gmail.com/Мой диск/Progs/ASM/GIT/DSS 1.70b/Build/SP_EXP2_dasm.a80 /Users/tolik/Downloads/SP_EXP2.BIN
org 00000h
;-----------------------------------------------------------------------;
l0000h: di ;0000 f3 .
halt ;0001 76 v
;
BLOCK #10-$,#FF
ret ;0010 c9 .
;
BLOCK #38-$,#FF
ei ;0038 fb .
reti ;0039 ed 4d . M
;
BLOCK #66-$,#C9
retn ;0066 ed 45 . E
;
;-----------------------------------------------------------------------;
;
;
;-----------------------------------------------------------------------;
BLOCK #100-$,#FF
l0100h: pop af ;0100 f1 .
call sub_010eh ;0101 cd 0e 01 . . .
jp l3fe8h ;0104 c3 e8 3f . . ?
l0107h:
pop af ;0107 f1 .
call sub_010eh ;0108 cd 0e 01 . . .
jp l3ff0h ;010b c3 f0 3f . . ?
sub_010eh:
push af ;010e f5 .
ld a,c ;010f 79 y
and a ;0110 a7 .
jp z,l030ch ;0111 ca 0c 03 . . .
dec a ;0114 3d =
jp z,l02b1h ;0115 ca b1 02 . . .
dec a ;0118 3d =
jp z,l02cch ;0119 ca cc 02 . . .
dec a ;011c 3d =
jp z,l017bh ;011d ca 7b 01 . { .
dec a ;0120 3d =
jp z,l019ch ;0121 ca 9c 01 . . .
dec a ;0124 3d =
jp z,l01a7h ;0125 ca a7 01 . . .
dec a ;0128 3d =
jp z,l0247h ;0129 ca 47 02 . G .
dec a ;012c 3d =
jp z,l0424h ;012d ca 24 04 . $ .
pop af ;0130 f1 .
scf ;0131 37 7
ret ;0132 c9 .
sub_0133h:
ld d,a ;0133 57 W
in a,(0e2h) ;0134 db e2 . .
ex af,af' ;0136 08 .
ld a,0feh ;0137 3e fe > .
out (0e2h),a ;0139 d3 e2 . .
ld a,(0c60ch) ;013b 3a 0c c6 : . .
ld e,a ;013e 5f _
ex af,af' ;013f 08 .
out (0e2h),a ;0140 d3 e2 . .
ld a,d ;0142 7a z
ld d,000h ;0143 16 00 . .
ld ix,0 ;0145 dd 21 00 00 . ! . .
ld b,001h ;0149 06 01 . .
sub_014bh:
push af ;014b f5 .
push hl ;014c e5 .
call sub_03d4h ;014d cd d4 03 . . .
l0150h:
jr nc,l0156h ;0150 30 04 0 .
l0152h:
pop hl ;0152 e1 .
l0153h:
pop af ;0153 f1 .
l0154h:
scf ;0154 37 7
l0155h:
ret ;0155 c9 .
l0156h:
ld a,b ;0156 78 x
ld bc,l0152h ;0157 01 52 01 . R .
out (c),a ;015a ed 79 . y
ld bc,l0153h ;015c 01 53 01 . S .
out (c),l ;015f ed 69 . i
ld bc,l0154h ;0161 01 54 01 . T .
out (c),e ;0164 ed 59 . Y
ld bc,l0155h ;0166 01 55 01 . U .
out (c),d ;0169 ed 51 . Q
ld bc,04152h ;016b 01 52 41 . R A
dec b ;016e 05 .
in a,(c) ;016f ed 78 . x
and 0f0h ;0171 e6 f0 . .
or h ;0173 b4 .
inc b ;0174 04 .
out (c),a ;0175 ed 79 . y
pop hl ;0177 e1 .
pop af ;0178 f1 .
and a ;0179 a7 .
ret ;017a c9 .
l017bh:
pop af ;017b f1 .
and a ;017c a7 .
inc b ;017d 04 .
dec b ;017e 05 .
ret z ;017f c8 .
call sub_03aeh ;0180 cd ae 03 . . .
ret c ;0183 d8 .
call sub_014bh ;0184 cd 4b 01 . K .
ret c ;0187 d8 .
exx ;0188 d9 .
ld c,0e2h ;0189 0e e2 . .
in b,(c) ;018b ed 40 . @
exx ;018d d9 .
out (0e2h),a ;018e d3 e2 . .
ex af,af' ;0190 08 .
ld a,0c0h ;0191 3e c0 > .
out (089h),a ;0193 d3 89 . .
ld bc,04153h ;0195 01 53 41 . S A
ld a,020h ;0198 3e 20 >
and a ;019a a7 .
ret ;019b c9 .
l019ch:
pop af ;019c f1 .
call sub_03aeh ;019d cd ae 03 . . .
ret c ;01a0 d8 .
call sub_0133h ;01a1 cd 33 01 . 3 .
ret c ;01a4 d8 .
jr l01b4h ;01a5 18 0d . .
l01a7h:
pop af ;01a7 f1 .
and a ;01a8 a7 .
inc b ;01a9 04 .
dec b ;01aa 05 .
ret z ;01ab c8 .
call sub_03aeh ;01ac cd ae 03 . . .
ret c ;01af d8 .
call sub_014bh ;01b0 cd 4b 01 . K .
ret c ;01b3 d8 .
l01b4h:
exx ;01b4 d9 .
ld c,0e2h ;01b5 0e e2 . .
in b,(c) ;01b7 ed 40 . @
exx ;01b9 d9 .
out (0e2h),a ;01ba d3 e2 . .
ex af,af' ;01bc 08 .
ld a,0c0h ;01bd 3e c0 > .
out (089h),a ;01bf d3 89 . .
ld bc,04153h ;01c1 01 53 41 . S A
ld a,020h ;01c4 3e 20 >
out (c),a ;01c6 ed 79 . y
l01c8h:
ld bc,04053h ;01c8 01 53 40 . S @
in a,(c) ;01cb ed 78 . x
bit 7,a ;01cd cb 7f . .
jr nz,l01c8h ;01cf 20 f7 .
bit 3,a ;01d1 cb 5f . _
jr nz,l01e8h ;01d3 20 13 .
ld a,000h ;01d5 3e 00 > .
out (089h),a ;01d7 d3 89 . .
l01d9h:
exx ;01d9 d9 .
out (c),b ;01da ed 41 . A
exx ;01dc d9 .
ld bc,#0051 ;01dd 01 51 00 . Q .
in a,(c) ;01e0 ed 78 . x
and a ;01e2 a7 .
scf ;01e3 37 7
ret nz ;01e4 c0 .
ex af,af' ;01e5 08 .
and a ;01e6 a7 .
ret ;01e7 c9 .
l01e8h:
ld bc,#0050 ;01e8 01 50 00 . P .
l01ebh:
ini ;01eb ed a2 . .
ini ;01ed ed a2 . .
ini ;01ef ed a2 . .
ini ;01f1 ed a2 . .
ini ;01f3 ed a2 . .
ini ;01f5 ed a2 . .
ini ;01f7 ed a2 . .
ini ;01f9 ed a2 . .
ini ;01fb ed a2 . .
ini ;01fd ed a2 . .
ini ;01ff ed a2 . .
ini ;0201 ed a2 . .
ini ;0203 ed a2 . .
ini ;0205 ed a2 . .
ini ;0207 ed a2 . .
ini ;0209 ed a2 . .
jp nz,l01ebh ;020b c2 eb 01 . . .
l020eh:
ini ;020e ed a2 . .
ini ;0210 ed a2 . .
ini ;0212 ed a2 . .
ini ;0214 ed a2 . .
ini ;0216 ed a2 . .
ini ;0218 ed a2 . .
ini ;021a ed a2 . .
ini ;021c ed a2 . .
ini ;021e ed a2 . .
ini ;0220 ed a2 . .
ini ;0222 ed a2 . .
ini ;0224 ed a2 . .
ini ;0226 ed a2 . .
ini ;0228 ed a2 . .
ini ;022a ed a2 . .
ini ;022c ed a2 . .
jp nz,l020eh ;022e c2 0e 02 . . .
ld a,h ;0231 7c |
or l ;0232 b5 .
jr nz,l01c8h ;0233 20 93 .
ld a,0feh ;0235 3e fe > .
out (0e2h),a ;0237 d3 e2 . .
ex af,af' ;0239 08 .
ld hl,0c200h ;023a 21 00 c2 ! . .
ld l,a ;023d 6f o
ld a,(hl) ;023e 7e ~
out (0e2h),a ;023f d3 e2 . .
ex af,af' ;0241 08 .
ld hl,0c000h ;0242 21 00 c0 ! . .
jr l01c8h ;0245 18 81 . .
l0247h:
pop af ;0247 f1 .
and a ;0248 a7 .
inc b ;0249 04 .
dec b ;024a 05 .
ret z ;024b c8 .
call sub_03aeh ;024c cd ae 03 . . .
ret c ;024f d8 .
call sub_014bh ;0250 cd 4b 01 . K .
l0253h:
ret c ;0253 d8 .
exx ;0254 d9 .
ld c,0e2h ;0255 0e e2 . .
in b,(c) ;0257 ed 40 . @
exx ;0259 d9 .
out (0e2h),a ;025a d3 e2 . .
ex af,af' ;025c 08 .
ld bc,04153h ;025d 01 53 41 . S A
ld a,030h ;0260 3e 30 > 0
out (c),a ;0262 ed 79 . y
l0264h:
ld bc,04053h ;0264 01 53 40 . S @
in a,(c) ;0267 ed 78 . x
bit 7,a ;0269 cb 7f . .
jr nz,l0264h ;026b 20 f7 .
bit 3,a ;026d cb 5f . _
jp z,l01d9h ;026f ca d9 01 . . .
ld bc,l0150h ;0272 01 50 01 . P .
ld d,020h ;0275 16 20 .
l0277h:
outi ;0277 ed a3 . .
outi ;0279 ed a3 . .
outi ;027b ed a3 . .
outi ;027d ed a3 . .
outi ;027f ed a3 . .
outi ;0281 ed a3 . .
outi ;0283 ed a3 . .
outi ;0285 ed a3 . .
outi ;0287 ed a3 . .
outi ;0289 ed a3 . .
outi ;028b ed a3 . .
outi ;028d ed a3 . .
outi ;028f ed a3 . .
outi ;0291 ed a3 . .
outi ;0293 ed a3 . .
outi ;0295 ed a3 . .
dec d ;0297 15 .
jp nz,l0277h ;0298 c2 77 02 . w .
ld a,h ;029b 7c |
or l ;029c b5 .
jr nz,l0264h ;029d 20 c5 .
ld a,0feh ;029f 3e fe > .
out (0e2h),a ;02a1 d3 e2 . .
ex af,af' ;02a3 08 .
ld hl,0c200h ;02a4 21 00 c2 ! . .
ld l,a ;02a7 6f o
ld a,(hl) ;02a8 7e ~
out (0e2h),a ;02a9 d3 e2 . .
ex af,af' ;02ab 08 .
ld hl,0c000h ;02ac 21 00 c0 ! . .
jr l0264h ;02af 18 b3 . .
l02b1h:
pop af ;02b1 f1 .
ld a,0a0h ;02b2 3e a0 > .
ld bc,04152h ;02b4 01 52 41 . R A
out (c),a ;02b7 ed 79 . y
ld a,090h ;02b9 3e 90 > .
call sub_03a5h ;02bb cd a5 03 . . .
and a ;02be a7 .
bit 0,a ;02bf cb 47 . G
ret z ;02c1 c8 .
ld bc,#0051 ;02c2 01 51 00 . Q .
in a,(c) ;02c5 ed 78 . x
cp 001h ;02c7 fe 01 . .
ret z ;02c9 c8 .
scf ;02ca 37 7
ret ;02cb c9 .
l02cch:
pop af ;02cc f1 .
ld e,000h ;02cd 1e 00 . .
ld bc,04152h ;02cf 01 52 41 . R A
ld a,0a0h ;02d2 3e a0 > .
out (c),a ;02d4 ed 79 . y
call sub_02f1h ;02d6 cd f1 02 . . .
jr nz,l02ddh ;02d9 20 02 .
set 0,e ;02db cb c3 . .
l02ddh:
ld bc,04152h ;02dd 01 52 41 . R A
ld a,0b0h ;02e0 3e b0 > .
out (c),a ;02e2 ed 79 . y
call sub_02f1h ;02e4 cd f1 02 . . .
jr nz,l02ebh ;02e7 20 02 .
set 1,e ;02e9 cb cb . .
l02ebh:
ld a,e ;02eb 7b {
and a ;02ec a7 .
scf ;02ed 37 7
ret z ;02ee c8 .
and a ;02ef a7 .
ret ;02f0 c9 .
sub_02f1h:
ld hl,001feh ;02f1 21 fe 01 ! . .
ld bc,l0152h ;02f4 01 52 01 . R .
out (c),l ;02f7 ed 69 . i
ld bc,l0153h ;02f9 01 53 01 . S .
out (c),h ;02fc ed 61 . a
ld bc,00252h ;02fe 01 52 02 . R .
in a,(c) ;0301 ed 78 . x
cp l ;0303 bd .
ret nz ;0304 c0 .
ld bc,l0253h ;0305 01 53 02 . S .
in a,(c) ;0308 ed 78 . x
cp h ;030a bc .
ret ;030b c9 .
l030ch:
pop af ;030c f1 .
ld bc,04152h ;030d 01 52 41 . R A
ld a,0a0h ;0310 3e a0 > .
out (c),a ;0312 ed 79 . y
call sub_02f1h ;0314 cd f1 02 . . .
jr nz,l0338h ;0317 20 1f .
l0319h:
ld bc,04053h ;0319 01 53 40 . S @
in a,(c) ;031c ed 78 . x
bit 7,a ;031e cb 7f . .
jr nz,l0319h ;0320 20 f7 .
ld bc,04153h ;0322 01 53 41 . S A
ld a,0ech ;0325 3e ec > .
out (c),a ;0327 ed 79 . y
l0329h:
ld bc,04053h ;0329 01 53 40 . S @
in a,(c) ;032c ed 78 . x
bit 7,a ;032e cb 7f . .
jr nz,l0329h ;0330 20 f7 .
bit 3,a ;0332 cb 5f . _
jr nz,l0346h ;0334 20 10 .
scf ;0336 37 7
ret ;0337 c9 .
l0338h:
ld bc,04152h ;0338 01 52 41 . R A
ld a,0b0h ;033b 3e b0 > .
out (c),a ;033d ed 79 . y
call sub_02f1h ;033f cd f1 02 . . .
jr z,l0319h ;0342 28 d5 ( .
scf ;0344 37 7
ret ;0345 c9 .
l0346h:
ld bc,#0050 ;0346 01 50 00 . P .
ld hl,0c600h ;0349 21 00 c6 ! . .
in a,(0e2h) ;034c db e2 . .
ld d,a ;034e 57 W
ld a,0feh ;034f 3e fe > .
out (0e2h),a ;0351 d3 e2 . .
inir ;0353 ed b2 . .
inir ;0355 ed b2 . .
ld a,(0c60ch) ;0357 3a 0c c6 : . .
ld c,a ;035a 4f O
ld b,000h ;035b 06 00 . .
ld hl,0 ;035d 21 00 00 ! . .
ld a,(0c606h) ;0360 3a 06 c6 : . .
l0363h:
add hl,bc ;0363 09 .
dec a ;0364 3d =
jr nz,l0363h ;0365 20 fc .
ld (0c604h),hl ;0367 22 04 c6 " . .
l036ah:
ld bc,04053h ;036a 01 53 40 . S @
in a,(c) ;036d ed 78 . x
bit 7,a ;036f cb 7f . .
jr nz,l036ah ;0371 20 f7 .
ld bc,04152h ;0373 01 52 41 . R A
dec b ;0376 05 .
in a,(c) ;0377 ed 78 . x
and 010h ;0379 e6 10 . .
ld b,a ;037b 47 G
ld a,(0c606h) ;037c 3a 06 c6 : . .
dec a ;037f 3d =
and 00fh ;0380 e6 0f . .
or 0a0h ;0382 f6 a0 . .
or b ;0384 b0 .
ld h,a ;0385 67 g
ld a,(0c663h) ;0386 3a 63 c6 : c .
bit 1,a ;0389 cb 4f . O
jr z,l038fh ;038b 28 02 ( .
set 6,h ;038d cb f4 . .
l038fh:
ld bc,04152h ;038f 01 52 41 . R A
out (c),h ;0392 ed 61 . a
ld a,(0c60ch) ;0394 3a 0c c6 : . .
ld bc,l0152h ;0397 01 52 01 . R .
out (c),a ;039a ed 79 . y
ld a,d ;039c 7a z
out (0e2h),a ;039d d3 e2 . .
ld a,091h ;039f 3e 91 > .
call sub_03a5h ;03a1 cd a5 03 . . .
ret ;03a4 c9 .
sub_03a5h:
call sub_03aeh ;03a5 cd ae 03 . . .
ret c ;03a8 d8 .
ld bc,04153h ;03a9 01 53 41 . S A
out (c),a ;03ac ed 79 . y
sub_03aeh:
push de ;03ae d5 .
push bc ;03af c5 .
push af ;03b0 f5 .
ld de,0 ;03b1 11 00 00 . . .
l03b4h:
ld bc,04053h ;03b4 01 53 40 . S @
in a,(c) ;03b7 ed 78 . x
bit 7,a ;03b9 cb 7f . .
jr z,l03c7h ;03bb 28 0a ( .
dec de ;03bd 1b .
ld a,d ;03be 7a z
or e ;03bf b3 .
jr nz,l03b4h ;03c0 20 f2 .
pop af ;03c2 f1 .
pop bc ;03c3 c1 .
pop de ;03c4 d1 .
scf ;03c5 37 7
ret ;03c6 c9 .
l03c7h:
pop af ;03c7 f1 .
pop bc ;03c8 c1 .
pop de ;03c9 d1 .
and a ;03ca a7 .
ret ;03cb c9 .
l03cch:
pop bc ;03cc c1 .
ld l,e ;03cd 6b k
ld e,d ;03ce 5a Z
ld d,ixl ;03cf dd 55 . U
xor a ;03d1 af .
ld h,a ;03d2 67 g
ret ;03d3 c9 .
sub_03d4h:
ld a,ixh ;03d4 dd 7c . |
and a ;03d6 a7 .
scf ;03d7 37 7
ret nz ;03d8 c0 .
push bc ;03d9 c5 .
ld bc,04152h ;03da 01 52 41 . R A
dec b ;03dd 05 .
in a,(c) ;03de ed 78 . x
bit 6,a ;03e0 cb 77 . w
jr nz,l03cch ;03e2 20 e8 .
push ix ;03e4 dd e5 . .
pop hl ;03e6 e1 .
in a,(0e2h) ;03e7 db e2 . .
ld c,a ;03e9 4f O
ld a,0feh ;03ea 3e fe > .
out (0e2h),a ;03ec d3 e2 . .
ld a,c ;03ee 79 y
ld (0c107h),a ;03ef 32 07 c1 2 . .
ld bc,(0c604h) ;03f2 ed 4b 04 c6 . K . .
ld a,010h ;03f6 3e 10 > .
scf ;03f8 37 7
l03f9h:
ex de,hl ;03f9 eb .
add hl,hl ;03fa 29 )
ex de,hl ;03fb eb .
adc hl,hl ;03fc ed 6a . j
sbc hl,bc ;03fe ed 42 . B
jr nc,l0408h ;0400 30 06 0 .
add hl,bc ;0402 09 .
dec a ;0403 3d =
jr nz,l03f9h ;0404 20 f3 .
jr l040ch ;0406 18 04 . .
l0408h:
inc de ;0408 13 .
dec a ;0409 3d =
jr nz,l03f9h ;040a 20 ed .
l040ch:
ld a,(0c60ch) ;040c 3a 0c c6 : . .
ld b,000h ;040f 06 00 . .
ld c,a ;0411 4f O
xor a ;0412 af .
l0413h:
sbc hl,bc ;0413 ed 42 . B
inc a ;0415 3c <
jr nc,l0413h ;0416 30 fb 0 .
dec a ;0418 3d =
add hl,bc ;0419 09 .
inc l ;041a 2c ,
ld h,a ;041b 67 g
ld a,(0c107h) ;041c 3a 07 c1 : . .
out (0e2h),a ;041f d3 e2 . .
pop bc ;0421 c1 .
and a ;0422 a7 .
ret ;0423 c9 .
l0424h:
pop af ;0424 f1 .
bit 0,a ;0425 cb 47 . G
ld a,021h ;0427 3e 21 > !
jr z,l042dh ;0429 28 02 ( .
ld a,001h ;042b 3e 01 > .
l042dh:
out (0bch),a ;042d d3 bc . .
ret ;042f c9 .
;
;-----------------------------------------------------------------------;
BLOCK #3FD0-$,#FF
push af ;3fd0 f5 .
ld a,000h ;3fd1 3e 00 > .
out (07ch),a ;3fd3 d3 7c . |
pop af ;3fd5 f1 .
l3fd6h:
ret ;3fd6 c9 .
l3fd7h:
jp l0107h ;3fd7 c3 07 01 . . .
BLOCK #3FE0-$,#FF
l3fe0h:
ld a,000h ;3fe0 3e 00 > .
out (03ch),a ;3fe2 d3 3c . <
jp l3fe0h ;3fe4 c3 e0 3f . . ?
rst 38h ;3fe7 ff .
l3fe8h:
push af ;3fe8 f5 .
ld a,000h ;3fe9 3e 00 > .
out (07ch),a ;3feb d3 7c . |
jp l0100h ;3fed c3 00 01 . . .
l3ff0h:
push af ;3ff0 f5 .
di ;3ff1 f3 .
ld a,000h ;3ff2 3e 00 > .
out (03ch),a ;3ff4 d3 3c . <
jr l3fd7h ;3ff6 18 df . .
push af ;3ff8 f5 .
ld a,000h ;3ff9 3e 00 > .
out (03ch),a ;3ffb d3 3c . <
jp l3fd6h ;3ffd c3 d6 3f . . ?
BLOCK #4000-$,0
;-----------------------------------------------------------------------;

View File

@ -83,6 +83,269 @@ JPHL: JP (HL)
;
; _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ [___FOR ZX-MODE___] _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ ;
;
;----------------------------[ FOR ZX-MODE ]----------------------------;
IF BIOS_ZXMODE
;!HARDCODE ­  íâ®â  ¤à¥á #0 ¯à룠¥â ¢ vROM Basic-48 ¯®  ¤à¥áã #3CF0
; ¬®¦­® ¯®¯à®¡®¢ âì ¯¥à¥¤¥« âì íâ®â  ¤à¥á â ¬
/*
_mInfoBLOCK #C0-$,0
;BEGIN:
; ‚室 ç¥à¥§ USR 15600
RET_FROM_BIOS_TO_BASIC48:
CALL CH_2
CALL COMAND_LINE ; <E2809A>Ž<C5BD><EFBFBD>ˆ… ŠŽŒ€<C592>, …‘‹ˆ …‘’œ
; ‚室 ¡¥§ ª®¬ ­¤ë
JP SW_ROM_1 ; އ<E280A1> << MAIN MENU >>
*/
;-----------------------------------------------------------------------;
;
;
;----------------------------[ ??????????? ]----------------------------;
; TURBO_OFF:
; LD A,D_TBOFF
; OUT (SYS_PORT.ON),A
; RET
;
; TURBO_ON:
; LD A,D_TBON
; OUT (SYS_PORT.ON),A
; RET
;
; JP_HL: JP (HL)
;
;PRINT_LINE:
; LD A,(HL)
; INC HL
; CP 0FFh
; RET Z
; RST 10H
; JR PRINT_LINE
;
; JP RESET_128
;-----------------------------------------------------------------------;
;
;-----------------------------------------------------------------------;
; ******* SERVICE *******
;-----------------------------------------------------------------------;
;------[ „…˜ˆ<CB86>ˆŸ ŠŽŒ€<C592><EFBFBD>މ <E28098>ŽŠˆ,<2C><EFBFBD>…„€<E2809E><E282AC>މ „‹Ÿ "EXPANSION" ]-------;
COMAND_LINE:
LD HL,(#5C5D) ;!HARDCODE CH_ADR
COMAND_LOOP:
LD A,(HL)
INC HL
CP ":"
JR Z,COMAND_L1
CP #0D
JR NZ,COMAND_LOOP
RET
COMAND_L1:
LD A,(HL)
CP #EA ;!HARDCODE
RET NZ
INC HL
COMAND_OK: ; Ž<><C5BD><EFBFBD>“†…<E280A0>€ ŠŽŒ€<C592>„€ „‹Ÿ 'expansion'
LD A,(HL)
INC HL
CP ':'
JP Z,MENU_S1
CP #0D
JP Z,MENU_S1
CP 'I'
JR Z,COMAND_ISD
CP 'i'
JR Z,COMAND_ISD
CP 'T'
JR Z,TASK_SWITCH
CP 't'
JR Z,TASK_SWITCH
DEC HL
POP BC
JP BASIC_MENU
MENU_S1:
POP BC
CALL SERVICE
JP SW_ROM_1
COMAND_ISD:
LD A,(HL)
INC HL
CP 'S'
JP Z,COMAND_ISD2
CP 's'
JP Z,COMAND_ISD2
RET
COMAND_ISD2:
POP BC
CALL ISDOS
JP SW_ROM_1
TASK_SWITCH:
; *** ‘®åà ­¨âì § ¤ çã ***
PUSH IY
PUSH IX
PUSH AF
PUSH BC
PUSH DE
PUSH HL
EXX
EX AF,AF'
PUSH AF
PUSH BC
PUSH DE
PUSH HL
LD A,R
PUSH AF
LD A,I
PUSH AF
LD A,(HL)
RLCA
RLCA
RLCA
RLCA
AND 30H ; ­®¢ ï § ¤ ç  0..3
LD C,A
IN A,(SLOT3)
LD B,A ; 3-ï áâà ­¨æ  ⥪ã饩 § ¤ ç¨
LD A,SYS_PAGE
OUT (SLOT3),A
LD IX,SYS_PAGE.TASK_DATA ; ¤ ­­ë¥ § ¤ ç
LD E,(IX) ; áâ à ï § ¤ ç 
LD D,0
ADD IX,DE ; ¤ ­­ë¥ ⥪ã饩 § ¤ ç¨
LD E,16
ADD IX,DE ; ᬥ饭¨¥ ¤ ­­ëå ¢ â ¡«¨æ¥ § ¤ ç
LD (IX+1),B ; á®åà ­¨âì áâà ­¨æã 3
LD HL,0
ADD HL,SP
LD (IX+2),L ; á®åà ­¨âì á⥪ § ¤ ç¨
LD (IX+3),H
SET 0,(IX) ; ãáâ ­®¢¨âì ä« £ á®åà ­¥­­®á⨠⥪ã饩 § ¤ ç¨
RES 1,(IX) ; ãáâ ­®¢¨âì ä« £, çâ® § ¤ ç  ¯®ª¨­ãâ 
LD IX,SYS_PAGE.TASK_DATA
LD E,C
LD D,0
ADD IX,DE ; ­®¢ ï § ¤ ç 
LD E,16
ADD IX,DE ; ᬥ饭¨¥ ¤ ­­ëå ¢ â ¡«¨æ¥ § ¤ ç
BIT 1,(IX)
; JR NZ,TASK_IN_WORK ; § ¤ ç  ¢ à ¡®â¥ ??? ­¥¢¥à­®¥ § ¢¥à襭¨¥
; á¡à á뢠âì ¨«¨ ¯à®áâ® ¢®§¢à é âìáï
BIT 0,(IX) ; ¡ë«  á®åà ­¥­ /­¥â
JR NZ,TASK_SET ; § ¤ ç  áãé¥áâ¢ã¥â
; § ¤ ç¨ ­¥ ¡ë«®!
LD IX,SYS_PAGE.TASK_DATA
LD A,C ; § ¤ ç 
LD (IX),A ; ãáâ ­®¢¨âì ­®¢ãî § ¤ çã ⥪ã饩
JP SPECTRUM_TASK ; § ¯ãáâ¨âì ­®¢ãî § ¤ çã!
; ¨ ¯®ª  ¯®ä¨£ à á¯à¥¤¥«¥­¨¥ ¯ ¬ïâ¨!
TASK_SET:
LD IX,TASK_RESTORE
LD A,C
EXX
JP INIT_PAGES ; ¯¥à¥ª«îç¨âì ¢á¥ áâà ­¨æë!
TASK_RESTORE:
EXX
LD A,SYS_PAGE
OUT (SLOT3),A
LD A,C
LD IX,SYS_PAGE.TASK_DATA
LD (IX),A ; ãáâ ­®¢¨âì ­®¢ãî § ¤ çã ⥪ã饩
LD E,A
LD D,0
ADD IX,DE ; ­®¢ ï § ¤ ç 
LD E,16
ADD IX,DE
LD L,(IX+2) ; ¢á¯®¬­¨âì á⥪
LD H,(IX+3)
LD SP,HL
LD A,(IX+1) ; ¢á¯®¬­¨âì âà¥âìî áâà ­¨æã
OUT (SLOT3),A
POP AF ; ¢®ááâ ­®¢¨âì
LD I,A
POP AF
LD R,A
POP HL
POP DE
POP BC
POP AF
EX AF,AF'
EXX
POP HL
POP DE
POP BC
POP AF
POP IX
POP IY
; ¢¥à­ãâìáï ¢ § ¤ çã
NO_TASK:
POP BC
JP SW_ROM_1
; 259F - ADRESS BASIC128 - MAIN_MENU
;-----------------------------------------------------------------------;
;-----------------------------------------------------------------------;
; *** UTILITES ***
;-----------------------------------------------------------------------;
; C_0030: ; ¯®«ãç¨âì à ¡ ®¡«
; CALL_48X 0030h
; RET
C_19E8: ; ®ç¨áâ¨âì à ¡ ®¡«
CALL_48X #19E8 ;!HARDCODE
RET
C_1655: ; ¯®«ãç¨âì ¯à®áâà ­á⢮
CALL_48X #1655 ;!HARDCODE
RET
CLS:
C_0D6B: CALL_48 #0D6B ;!HARDCODE
RET
CH_2: LD A,2
C_1601: ; OPEN CHANEL
CALL_48 #1601 ;!HARDCODE
RET
INCLUDE '../exp/ZX_MENU.ASM'
INCLUDE '../exp/ZX_MODE.ASM'
ENDIF
;-----------------------------------------------------------------------;
; _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ _ZX_ ;
;
;-------------[#1000 SETUP]-------------
@ -137,8 +400,146 @@ SETUP_MAIN: INCLUDE 'src/bios/ROM/SETUP/Main.asm'
ShowInfo 'Setup block of ROM end', 0 ; !!!!! test
BLOCK_Setup.Length EQU $-BLOCK_Setup
;---------------------------------------
;
;
; !FIXIT ᤥ« âì í⨠䨪á¨à®¢ ­­ë¥  ¤à¥á  ®â¤¥«ì­ë¬ ä ©«®¬ ¨ á IF/ELSE ¨ ¯®¤ª«îç âì ¨å ¯®â®¬ ªã¤  ­ ¤®.
;
;????? ¯®á¬®âà¥âì
;----------------------------------------------------------------------;
; BLOCK #3CC0-$,255
; no-magics!
;MAGIC_1: ; ‡€ƒ‹“˜Š€ „‹Ÿ MAGIC
; PUSH AF
; LD A,ROM.EXT
; OUT (SYS_PORT.OFF),A
; POP AF
; JP MAGIC_1
;MAGIC_3:
; PUSH AF
; LD A,ROM.EXT
; OUT (SYS_PORT.OFF),A
; POP AF
; RETN
;MAGIC_2:
;; CALL MG_BEGIN
; JR MAGIC_3
;*************************
_mInfoBLOCK #3CE0-$,0
;SW_ROM_1:
LD HL,#259F ;!HARDCODE Show Main Menu in BASIC-128
PUSH HL
LD HL,#5B00 ;!HARDCODE
LD A,(HL)
CP #F5 ; #F5 - ®¯ª®¤ 'PUSH AF'. <20>஢¥àï¥âáï â® «¨ ¢ #5B00
JR Z,JP_HL_48 ; އ<E280A1> Š Œ…<C592>ž BASIC128
POP HL
JR SW_ROM ; <20><>ŽŽ‰ އ<E280A1>
;*************************
_mInfoBLOCK #3CF0-$,0
IF BIOS_ZXMODE
;BEGIN:
; ‚室 ç¥à¥§ USR 15600
RET_FROM_BIOS_TO_BASIC48:
CALL CH_2
CALL COMAND_LINE ; <E2809A>Ž<C5BD><EFBFBD>ˆ… ŠŽŒ€<C592>, …‘‹ˆ …‘’œ
; ‚室 ¡¥§ ª®¬ ­¤ë
JR SW_ROM_1 ; އ<E280A1> << MAIN MENU >>
ENDIF
;JMP_48:
; LD HL,00h
; JR JP_HL_48
;
; NOP
; NOP
; NOP
;***************************************
_mInfoBLOCK #3CF8-$,0
; no basic-48!
;JP_HL_48:
PUSH HL
;SW_ROM:
PUSH AF
LD A,ROM.BIOS ;!FIXIT ¨«¨ ¯®áâ ¢¨âì âãâ ROM.EXPANSION ???
OUT (SYS_PORT.RAM),A
POP AF
RET
;***************************************
;----------------------------------------------------------------------;
;
;!TODO ᯥªâà㬮¢áª¨¥ ã⨫¨âë
;----------------------------------------------------------------------;
; _mInfoBLOCK #3CFA-$,#FF
; LD A,0 ;!HARDCODE
; OUT (SYS_PORT.OFF),A
; POP AF
;----------------------------------------------------------------------;
;
;
;----------------------------------------------------------------------;
_mInfoBLOCK #3D00-$,#FF
;DOS_ON:
NOP
RET
;***************************************
;***************************************
; BLOCK #3D02-$,FF
; !TODO ¬®¦­® ®¯à¨å®¤®¢ âì âãâ 17 ¡ ©â®¢
;
;***************************************
;***************************************
_mInfoBLOCK #3D13-$,#FF
NOP
JP ToBIOS_18
;***************************************
;***************************************
; BLOCK #3D17-$,FF
; !TODO ¬®¦­® ®¯à¨å®¤®¢ âì âãâ 233 ¡ ©â 
;
;***************************************
;***************************************
_mInfoBLOCK #3E00-$,#FF
;DOS_OFF:
DI
PUSH AF
PUSH BC
LD BC,(#5BFF) ; !HARDCODE
LD A,#C9
LD (#5BFF),A ; !HARDCODE
CALL #5BFF ; !HARDCODE
LD (#5BFF),BC ; !HARDCODE
POP BC
POP AF
RET
;***************************************
;***************************************
; BLOCK #3E16-$,FF
; !TODO ¬®¦­® ®¯à¨å®¤®¢ âì âãâ 10 ¡ ©â®¢
;
;***************************************
;
;
;***************************************
; _mInfoBLOCK #3FC6-$,#FF
;!FIXIT ¯¥à¥¤¥« âì <20>‡“ âà¤®á  ¨ ᯥªâà㬮¢ ¯®¤ ¯à ¢¨«ì­ë© ¢ë§®¢ ä㭪権 ¡¨®á  (  ­¥ ¢¬¥áâ® ä㭪権 4x ä㭪樨 0x)
@ -149,7 +550,7 @@ BLOCK_Setup.Length EQU $-BLOCK_Setup
; ; LD C,A
; POP AF
; SET 6,C
; CALL ToBIOS_FromEXT
; RST_to_BIOS
; JR RET_TO_TRDOS
;***************************************
;
@ -158,7 +559,7 @@ BLOCK_Setup.Length EQU $-BLOCK_Setup
; call BIOS from EXTENSION
;RST18h:
PUSH AF
LD A,ROM.BIOS ; set exp-rom to slot0
LD A,ROM.BIOS ; set exp-rom to slot0
OUT (SYS_PORT.ROM),A
POP AF
RET
@ -171,7 +572,7 @@ BLOCK_Setup.Length EQU $-BLOCK_Setup
TRDOS_HD_CMD:
POP AF
SET 6,C ;!FIXIT ¯¥à¥¤¥« âì <20>‡“ âà¤®á  ¨ ᯥªâà㬮¢ ¯®¤ ¯à ¢¨«ì­ë© ¢ë§®¢ ä㭪権 ¡¨®á  (  ­¥ ¢¬¥áâ® ä㭪権 4x ä㭪樨 0x)
CALL ToBIOS_FromEXT
RST_to_BIOS
JR RET_TO_TRDOS
;---------------------------------------

View File

@ -356,7 +356,7 @@ SCL_X: LD A,(IX+K_LOCK)
; RET Z
; XOR A
; LD BC,#02FD
; RST ToBIOS_18
; RST_to_BIOS
; RET
;----------------------------
;///////////////////////////////////////////////////////////////////////

View File

@ -121,7 +121,7 @@ GETTIME:
PUSH HL
LD D,4 ;HOURS
;LD C,BIOS.CMOS_RD
;RST ToBIOS_18
;RST_to_BIOS
CALL CMOS_RD
CP #24 ;24
jp nc,.error
@ -130,7 +130,7 @@ GETTIME:
LD D,2 ;MINUTES
;LD C,BIOS.CMOS_RD
;RST ToBIOS_18
;RST_to_BIOS
CALL CMOS_RD
CP #5A ; 60
jp nc,.error
@ -139,7 +139,7 @@ GETTIME:
LD D,0 ;SECONDS
;LD C,BIOS.CMOS_RD
;RST ToBIOS_18
;RST_to_BIOS
CALL CMOS_RD
CP #5A ; 60
jp nc,.error
@ -148,7 +148,7 @@ GETTIME:
LD D,7 ;DAY
;LD C,BIOS.CMOS_RD
;RST ToBIOS_18
;RST_to_BIOS
CALL CMOS_RD
CP #32 ;32
jp nc,.error
@ -157,7 +157,7 @@ GETTIME:
LD D,8 ;MONTH
;LD C,BIOS.CMOS_RD
;RST ToBIOS_18
;RST_to_BIOS
CALL CMOS_RD
CP #13 ;13
jp nc,.error
@ -166,7 +166,7 @@ GETTIME:
LD D,#32 ;CENTURY
;LD C,BIOS.CMOS_RD
;RST ToBIOS_18
;RST_to_BIOS
CALL CMOS_RD
CP #1A ;20
jp c,.error
@ -177,7 +177,7 @@ GETTIME:
LD D,9 ;YEAR
;LD C,BIOS.CMOS_RD
;RST ToBIOS_18
;RST_to_BIOS
CALL CMOS_RD
CP #9A ;100
jp nc,.error
@ -200,7 +200,7 @@ GETTIME:
; LD (HL),A
; LD D,#32 ;CENTURY
; LD C,#F7 ; !HARDCODE
; RST ToBIOS_18
; RST_to_BIOS_18
POP HL
RET
@ -246,14 +246,14 @@ GETTIME:
CMOSINIT:
LD D,CMOS.Register.CTRLregA ; !FIXIT FREQ
;LD C,BIOS.CMOS_RD
;RST ToBIOS_18
;RST_to_BIOS
CALL CMOS_RD
CP #26 ; !FIXIT
JR NZ,CMSERR
LD D,CMOS.Register.CTRLregC
;LD C,BIOS.CMOS_RD
;RST ToBIOS_18
;RST_to_BIOS
CALL CMOS_RD
CP #50
RET Z
@ -261,19 +261,19 @@ CMSERR:
LD D,CMOS.Register.CTRLregB
LD A,#82 ;TIME FORMAT ; !FIXIT CMOS
;LD C,BIOS.CMOS_WR
;RST ToBIOS_18
;RST_to_BIOS
CALL CMOS_WR
LD D,CMOS.Register.CTRLregA
LD A,#26 ; !FIXIT CMOS FREQ
;LD C,BIOS.CMOS_WR
;RST ToBIOS_18
;RST_to_BIOS
CALL CMOS_WR
LD D,CMOS.Register.CTRLregC
LD A,#0 ; !FIXIT CMOS
;LD C,BIOS.CMOS_WR
;RST ToBIOS_18
;RST_to_BIOS
CALL CMOS_WR
LD HL,GETTIME.default_date
@ -282,13 +282,13 @@ CMSERR:
LD D,CMOS.Register.CTRLregB
LD A,#02 ;TIME FORMAT ; !FIXIT CMOS
;LD C,BIOS.CMOS_WR
;RST ToBIOS_18
;RST_to_BIOS
CALL CMOS_WR
; LD D,13
; LD A,#80 ; !FIXIT CMOS
; LD C,#F7 ; !HARDCODE
; RST ToBIOS_18
; RST_to_BIOS
RET
CLEARM:
@ -317,7 +317,7 @@ MEMLOOP:
CALL NZ,RCHAIN
DJNZ MEMLOOP
;LD C,BIOS.InitMem
;RST ToBIOS_18
;RST_to_BIOS
CALL EMM.InitMem
LD BC,#400E ;!HARDCODE
CALL G_VALUE
@ -409,7 +409,7 @@ EXIT_SETUP:
; LD (JMPHL),HL
; LD C,#F3
; RST ToBIOS_18
; RST_to_BIOS
; JMPHL EQU $+1
; JP #0000
;-----------------------------------------------------------------------;
@ -424,20 +424,20 @@ INSTALL:
LD HL,#0000
LD E,1
;LD C,BIOS.WIN_OPEN
;RST ToBIOS_18
;RST_to_BIOS
CALL WIN_OPEN
LD DE,0
LD HL,#2050
;LD BC,7*256 + BIOS.LP_CLS_WIN
;RST ToBIOS_18
;RST_to_BIOS
LD B,7
CALL LP_CLS_WIN
LD DE,0
LD HL,#0820
;LD BC,0*256 + BIOS.LP_CLS_WIN
;RST ToBIOS_18
;RST_to_BIOS
LD B,0
CALL LP_CLS_WIN
@ -503,10 +503,10 @@ START:
ld (ERRSUM.ErrDateTime),a
; LD C,#97
; RST ToBIOS_18
; RST_to_BIOS_18
; XOR A
; LD C,#F2
; RST ToBIOS_18
; RST_to_BIOS_18
;------------------------------ ;!!!!! ¯®á¬®âà¥âì
; CALL KINIT
;------------------------------ ;!!!!! ¯®á¬®âà¥âì
@ -657,7 +657,7 @@ CHEKOK: ;CALL ScreenPOS.GET_CUR
LD A,msgStrings.spMemory
CALL POSTMSG
;LD C,BIOS.GetMemSize
;RST ToBIOS_18
;RST_to_BIOS
CALL EMM.GetMemSize
PUSH BC
CALL PMEMORY
@ -786,49 +786,49 @@ writeDateTimeToCmos: ;!FIXIT
LD A,(HL)
LD D,CMOS.Register.hours
;LD C,BIOS.CMOS_WR
;RST ToBIOS_18
;RST_to_BIOS
CALL CMOS_WR
INC HL
LD A,(HL)
LD D,CMOS.Register.minutes
;LD C,BIOS.CMOS_WR
;RST ToBIOS_18
;RST_to_BIOS
CALL CMOS_WR
INC HL
LD A,(HL)
LD D,CMOS.Register.seconds
;LD C,BIOS.CMOS_WR
;RST ToBIOS_18
;RST_to_BIOS
CALL CMOS_WR
INC HL
LD A,(HL)
LD D,CMOS.Register.date
;LD C,BIOS.CMOS_WR
;RST ToBIOS_18
;RST_to_BIOS
CALL CMOS_WR
INC HL
LD A,(HL)
LD D,CMOS.Register.month
;LD C,BIOS.CMOS_WR
;RST ToBIOS_18
;RST_to_BIOS
CALL CMOS_WR
INC HL
LD A,(HL)
LD D,CMOS.Register.century
;LD C,BIOS.CMOS_WR
;RST ToBIOS_18
;RST_to_BIOS
CALL CMOS_WR
INC HL
LD A,(HL)
LD D,CMOS.Register.year
;LD C,BIOS.CMOS_WR
;RST ToBIOS_18
;RST_to_BIOS
CALL CMOS_WR
RET
@ -859,31 +859,31 @@ RESCREEN:
; CMOSINIT:
; LD D,10 ;FREQ
; LD C,#F6 ;READ CMOS
; RST ToBIOS_18
; RST_to_BIOS
; CP #26
; JR NZ,CMSERR
; LD D,12
; LD C,#F6
; RST ToBIOS_18
; RST_to_BIOS
; CP #50
; RET Z
; CMSERR:
; LD D,10
; LD A,#26 ;FREQ
; LD C,#F7
; RST ToBIOS_18
; RST_to_BIOS
; LD D,11
; LD A,#02 ;TIME FORMAT
; LD C,#F7
; RST ToBIOS_18
; RST_to_BIOS
; LD D,12
; LD A,#50
; LD C,#F7
; RST ToBIOS_18
; RST_to_BIOS
; LD D,13
; LD A,#80
; LD C,#F7
; RST ToBIOS_18
; RST_to_BIOS
; RET
;------------------- ;!!!!! ¯®á¬®âà¥âì
@ -911,14 +911,14 @@ RECOVERYstart:
.killRAMdisk: LD A,SYS_PAGE.RAMD_KEYS.NUM-1
LD (.RDkey),A
;LD C,BIOS.FreeMemRMD
;RST ToBIOS_18
;RST_to_BIOS
CALL EMM.FreeMemRMD
JR NC,.setRAMdisk
JR Z,.setRAMdisk
RET ; ­¥¯®­ïâ­ ï ®è¨¡ª  - ¢ë室¨¬
.setRAMdisk: LD A,(.RDkey)
;LD BC,ROM_DISK.Pages.Size * 256 + BIOS.GetMemRMD
;RST ToBIOS_18
;RST_to_BIOS
LD B,ROM_DISK.Pages.Size
CALL EMM.GetMemRMD
JR NC,.IMGread ; ᢮¡®¤­ë© à ¬¤¨áª ­ ©¤¥­
@ -926,7 +926,7 @@ RECOVERYstart:
JR Z,.FreeMem ; ®è¨¡ª  - ­¥¤®áâ â®ç­® ¯ ¬ïâ¨, ¢ë§ë¢ ¥¬ ®ç¨áâªã ¯ ¬ïâ¨
RET ; ­¥¯®­ïâ­ ï ®è¨¡ª  - ¢ë室¨¬
.FreeMem: ;LD C,BIOS.FullInit
;RST ToBIOS_18
;RST_to_BIOS
CALL EMM.FullInit
JR .killRAMdisk
;
@ -986,7 +986,7 @@ FDSTART:
CALL POSTMSG
POP AF
;LD C,BIOS.DRV_RESET
;RST ToBIOS_18
;RST_to_BIOS
CALL FDD_5x.RESET
POP BC
RET C
@ -1057,7 +1057,7 @@ OS_LOAD:
LD A,B
LD BC,1*256 + BIOS.DRV_READ
PUSH AF
RST ToBIOS_18
RST ToBIOS_18
POP BC
RET C
@ -1379,7 +1379,7 @@ PIDNUM: LD HL,memBUFFER.ID
PIDBOARD:
;LD BC,1*256 + BIOS.FN_CRIPT
;RST ToBIOS_18
;RST_to_BIOS
LD B,1
CALL FN_CRIPT
@ -1412,13 +1412,13 @@ PIDBOARD:
; RET NZ
; INC HL
; LD BC,#0286
; RST ToBIOS_18
; RST_to_BIOS_18
; INC HL
; LD BC,#0586
; RST ToBIOS_18
; RST_to_BIOS_18
; INC HL
; LD BC,#0286
; RST ToBIOS_18
; RST_to_BIOS_18
; XOR A
; RET
@ -1433,7 +1433,7 @@ PIDBOARD:
; RET NZ
; INC HL
; LD BC,#0A86
; JP ToBIOS_18
; JP_to_BIOS
PRNHEX: LD D,A
RRCA
@ -1520,7 +1520,7 @@ ZXCLS: LD HL,#4000
GET_ID: LD HL,memBUFFER.ID
;LD C,BIOS.FN_VERSION
;JP ToBIOS_18
;JP_to_BIOS
JP FN_VERSION

View File

@ -10,7 +10,7 @@ SETTINGS:
LD A,(NORCLR)
LD B,A
;LD C,BIOS.LP_CLS_WIN
;RST ToBIOS_18
;RST_to_BIOS
CALL LP_CLS_WIN
@ -372,13 +372,13 @@ FSCREEN:
FSC1:
PUSH DE
;LD C,BIOS.LP_SET_PLACE
;RST ToBIOS_18
;RST_to_BIOS
CALL LP_SET_PLACE
LD A,(NORCLR)
LD E,A
;LD BC,#50*256+BIOS.LP_PRINT_ATR ;#5083
;RST ToBIOS_18
;RST_to_BIOS
LD B,#50
CALL LP_PRINT_ATR
@ -661,16 +661,16 @@ TCHEKSM:
; TSTCMOS:
; LD C,BIOS.CMOS_TEST
; JP ToBIOS_18
; JP_to_BIOS
; RDCMOS:
; LD C,BIOS.CMOS_RD
; JP ToBIOS_18
; JP_to_BIOS
; WRCMOS:
; LD C,BIOS.CMOS_WR
; JP ToBIOS_18
; JP_to_BIOS
READING:
LD D,#0E ; !HARDCODE CMOS
@ -793,7 +793,7 @@ SetTime:
ld de,#0C20
ld ix,memBUFFER.Shared
;ld c,BIOS.WIN_COPY
;RST ToBIOS_18
;RST_to_BIOS_18
CALL WIN_COPY
LD DE,#0C20 ; !HARDCODE
@ -807,7 +807,7 @@ SetTime:
; ¯¥ç âì  âਡã⮢
LD E,COLORS.INC.RED
;LD BC,#0E * 256 + BIOS.LP_PRINT_ATR
;RST ToBIOS_18
;RST_to_BIOS_18
LD B,#0E
CALL LP_PRINT_ATR
@ -835,7 +835,7 @@ SetTime:
; ld a,#46
; ex af,af'
; ld c,BIOS.BLK_RD_WR
; rst ToBIOS_18
; RST_to_BIOS_18
;------------------[^]
CALL KEY
@ -844,7 +844,7 @@ SetTime:
ld de,#0C20
ld ix,memBUFFER.Shared
;ld c,BIOS.WIN_RESTORE
;JP ToBIOS_18
;JP_to_BIOS
;RET
JP WIN_RESTORE
@ -863,7 +863,7 @@ setXYpos:
; dec a ;320
; .set:
; ld c,BIOS.FN_SYNC
; jp ToBIOS_18
; JP_to_BIOS
setVsinc:
ld a,@CMOS.Cell.ScreenSET
call READCMS
@ -895,14 +895,14 @@ setInt: ld a,@CMOS.Cell.ScreenSET
SRA A
SRA A ; byte %00xx0000 --> %000000xx
.set: ;ld c,BIOS.FN_SYNC
;rst ToBIOS_18
;RST_to_BIOS_18
CALL FN_SYNC
LD IX,win_descriptor.tab80x32
LD HL,#0000
LD E,1
;LD C,BIOS.WIN_OPEN
;RST ToBIOS_18
;RST_to_BIOS
CALL WIN_OPEN
ld a,(ITEM)

View File

@ -13,7 +13,7 @@ PIC_SET_PAL_FF EQU def_pal_mask*256+BIOS.PIC_SET_PAL
ScreenPOS:
;.GET_CUR:
; LD C,BIOS.LP_GET_PLACE
; JP ToBIOS_18
; JP_to_BIOS
.SUBNAME:
;CALL ScreenPOS.GET_CUR
@ -21,7 +21,7 @@ ScreenPOS:
LD E,#24
;.LOCAT:
; LD C,BIOS.LP_SET_PLACE
; JP ToBIOS_18
; JP_to_BIOS
JP LP_SET_PLACE
.CRLF: ;CALL ScreenPOS.GET_CUR
@ -61,12 +61,12 @@ PRINTDW:
PRINTA: LD E,A
; LD C,BIOS.LP_PRINT_ATR
; JP ToBIOS_18
; JP_to_BIOS
JP LP_PRINT_ATR
PRINT_CHAR:
; LD BC,1*256 + BIOS.LP_PRINT_SYM
; JP ToBIOS_18
; JP_to_BIOS
LD B,1
JP LP_PRINT_SYM
;
@ -78,14 +78,14 @@ TPRINTZ:
PRINTZ:
LD B,0
LD D,B
; JP ToBIOS_18
; JP_to_BIOS
JP LP_PRINT_LINE6
; PRINTZ:
; ; LD BC,0*256 + BIOS.LP_PRINT_LINE6
; LD B,0
; LD D,B
; ; JP ToBIOS_18
; ; JP_to_BIOS
; JP LP_PRINT_LINE6
HPRINTZ:
@ -93,7 +93,7 @@ HPRINTZ:
LD B,0
LD D,B
LD E,#0F
;JP ToBIOS_18
;JP_to_BIOS
JP LP_PRINT_LINE5
CPRINTZ:
@ -101,7 +101,7 @@ CPRINTZ:
LD B,0
LD D,B
LD E,A
;JP ToBIOS_18
;JP_to_BIOS
JP LP_PRINT_LINE5
;HL - NUMBER
@ -250,12 +250,12 @@ PBORDER:
RET
PRSYM: ;LD BC,1*256 + BIOS.LP_PRINT_SYM
;JP ToBIOS_18
;JP_to_BIOS
LD B,1
JP LP_PRINT_SYM
; PRSYMB: LD C,BIOS.LP_PRINT_SYM
; JP ToBIOS_18
; JP_to_BIOS
LOGOTYP:
CALL LOGOX
@ -292,13 +292,13 @@ NOWLOGO:
EI
HALT
DI
;RST ToBIOS_18
;RST_to_BIOS
CALL WIN_OPEN
LD DE,0
LD HL,#0920 ;LOGOTYPE SIZE
;LD BC,7*256 + BIOS.LP_CLS_WIN
;JP ToBIOS_18
;JP_to_BIOS
LD B,7
JP LP_CLS_WIN
@ -314,7 +314,7 @@ LOGOX: LD IX,win_descriptor.tab320x256
LD HL,#0000
LD E,1
;LD C,BIOS.WIN_OPEN
;RST ToBIOS_18
;RST_to_BIOS
CALL WIN_OPEN
SAFE_PORTY
@ -339,7 +339,7 @@ LOGOX: LD IX,win_descriptor.tab320x256
LD D,A ; SET DESKTOP PALETTE & CURSOR COLORS
LD E,A
;LD BC,PIC_SET_PAL_FF
;RST ToBIOS_18
;RST_to_BIOS
LD B,def_pal_mask
CALL PIC_SET_PAL
@ -413,7 +413,7 @@ FADE: XOR A
LD D,A
LD E,A
;LD BC,PIC_SET_PAL_FF ; !HARDCODE #EE,#EF
;RST ToBIOS_18
;RST_to_BIOS
LD B,def_pal_mask
CALL PIC_SET_PAL
@ -435,7 +435,7 @@ go_setup: ; !FIXIT
LD HL,#0000
LD E,1
;LD C,BIOS.WIN_OPEN
;RST ToBIOS_18
;RST_to_BIOS
CALL WIN_OPEN
JP CSETUP
@ -532,7 +532,7 @@ SET_CGA:
LD HL,memBUFFER.Shared
LD DE,#0000 ; D - ELEMENTS,E - COLOR
;LD BC,PIC_SET_PAL_FF ; #FFA4
;RST ToBIOS_18
;RST_to_BIOS
LD B,def_pal_mask
CALL PIC_SET_PAL
@ -540,7 +540,7 @@ SET_CGA:
LD HL,memBUFFER.Shared
LD DE,#0000 ;D - ELEMENTS,E - COLOR
;LD BC,PIC_SET_PAL_FF ; #FFA4
;RST ToBIOS_18
;RST_to_BIOS
LD B,def_pal_mask
CALL PIC_SET_PAL
@ -548,7 +548,7 @@ SET_CGA:
LD HL,#80*4+memBUFFER.Shared
LD DE,#8080 ;D - ELEMENTS,E - COLOR
;LD BC,PIC_SET_PAL_FF ; #FFA4
;RST ToBIOS_18
;RST_to_BIOS
LD B,def_pal_mask
CALL PIC_SET_PAL
;
@ -558,7 +558,7 @@ SET_CGA:
LD HL,memBUFFER.Shared
LD DE,#0000 ;D - ELEMENTS,E - COLOR
;LD BC,PIC_SET_PAL_FF ; #FFA4
;RST ToBIOS_18
;RST_to_BIOS
LD B,def_pal_mask
CALL PIC_SET_PAL
@ -566,7 +566,7 @@ SET_CGA:
LD HL,memBUFFER.Shared
LD DE,#8000 ;D - ELEMENTS,E - COLOR
;LD BC,PIC_SET_PAL_FF ; #FFA4
;RST ToBIOS_18
;RST_to_BIOS
LD B,def_pal_mask
CALL PIC_SET_PAL
;

View File

@ -63,7 +63,7 @@
LD (RECOVERYstart.RDkey),A
PUSH BC
;LD BC,ROM_DISK.Pages.Size * 256 + BIOS.GetMemRMD
;RST ToBIOS_18
;RST_to_BIOS
LD B,ROM_DISK.Pages.Size
CALL EMM.GetMemRMD
POP BC
@ -83,7 +83,7 @@
LD HL,TEMP
;LD C,BIOS.GetMemBlkPages
;RST ToBIOS_18 ; ª¨¤ ¥¬ ¢ ¡ãä¥à ­®¬¥à  áâà ­¨æ RAM disk
;RST_to_BIOS ; ª¨¤ ¥¬ ¢ ¡ãä¥à ­®¬¥à  áâà ­¨æ RAM disk
CALL EMM.GetMemBlkPages
IN A,(SLOT3)
@ -143,7 +143,7 @@
EX AF,AF'
LD HL,TEMP ; ¤à¥á ¡ãä¥à  ¤ ­­ëå
;LD BC,2*256 + BIOS.BLK_RD_WR ;ç¨á«® ᥪâ®à®¢ ¨ ­®¬¥à ä㭪樨
;RST ToBIOS_18
;RST_to_BIOS
LD B,2
CALL BLK_RD_WR
@ -158,7 +158,7 @@
EX AF,AF'
LD HL,TEMP ; ¤à¥á ¡ãä¥à  ¤ ­­ëå
;LD BC,2*256 + BIOS.BLK_RD_WR ;ç¨á«® ᥪâ®à®¢ ¨ ­®¬¥à ä㭪樨
;RST ToBIOS_18
;RST_to_BIOS
LD B,2 ;ç¨á«® ᥪâ®à®¢
CALL BLK_RD_WR
@ -171,4 +171,25 @@
ASSERT 0, Invalid 'RECOVERYmountTYPE' variant - RECOVERYmountTYPE
ENDIF
ENDM
;
;
;
MACRO RST_to_BIOS
IF (IsInBIOS = 0) && ($ < #4000)
CALL ToBIOS_FromEXT
ELSE
RST ToBIOS_18
ENDIF
ENDM
;
;
MACRO JP_to_BIOS
IF (IsInBIOS = 0) && ($ < #4000)
JP ToBIOS_FromEXT
ELSE
JP ToBIOS_18
ENDIF
ENDM
;

View File

@ -15,7 +15,7 @@
DEFINE SP2000_ConfID #FEFF
DEFINE BIOS_ZXMODE 0
DEFINE BIOS_ZXMODE 1
; ‡ ¤¥à¦ª  ¢ ª ¤à å ¯®á«¥ ®âà¨á®¢ª¨ «®£®â¨¯  (0 = 256)
DEFINE LOGO_DELAY_MIN 25