ZX-EXP to BIOS adaptation
This commit is contained in:
parent
2c91a523fa
commit
6a170dff30
@ -1 +1 @@
|
||||
Subproject commit 6e27011b6259b0256ce65d91a53ef1185223eafa
|
||||
Subproject commit 80b60f7294ce3eee958a0c4e9a6f29577cee496f
|
||||
@ -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
|
||||
;---------------------------------------
|
||||
;
|
||||
|
||||
|
||||
@ -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
@ -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
|
||||
;
|
||||
|
||||
|
||||
|
||||
@ -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 - ƒ‹žŠ
|
||||
;
|
||||
@ -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"
|
||||
;
|
||||
@ -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
|
||||
;=======================================
|
||||
@ -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
|
||||
;-----------------------------------------------------------------------;
|
||||
|
||||
@ -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
|
||||
;!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
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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.
@ -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
|
||||
;
|
||||
@ -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
|
||||
@ -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
|
||||
;-----------------------------------------------------------------------;
|
||||
;
|
||||
@ -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.
@ -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
|
||||
;-----------------------------------------------------------------------;
|
||||
@ -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
|
||||
;***************************************
|
||||
;
|
||||
@ -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
|
||||
;---------------------------------------
|
||||
|
||||
|
||||
@ -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
|
||||
;----------------------------
|
||||
;///////////////////////////////////////////////////////////////////////
|
||||
|
||||
@ -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
|
||||
@ -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
|
||||
|
||||
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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
|
||||
;
|
||||
|
||||
@ -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
|
||||
|
||||
@ -172,3 +172,24 @@
|
||||
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
|
||||
;
|
||||
|
||||
@ -15,7 +15,7 @@
|
||||
|
||||
DEFINE SP2000_ConfID #FEFF
|
||||
|
||||
DEFINE BIOS_ZXMODE 0
|
||||
DEFINE BIOS_ZXMODE 1
|
||||
|
||||
; ‡ ¤¥à¦ª ¢ ª ¤à å ¯®á«¥ ®âà¨á®¢ª¨ «®£®â¨¯ (0 = 256)
|
||||
DEFINE LOGO_DELAY_MIN 25
|
||||
|
||||
Loading…
Reference in New Issue
Block a user