Rev 952 |
Go to most recent revision |
Blame |
Compare with Previous |
Last modification |
View Log
| Download
| RSS feed
| ?url?
;LAST UPDATE: 21.12.2017 savelij
include ../../macros.a80
include ../../global_vars.a80
include ../../define.a80
include ../../evodos_vars.a80
STACK EQU 0X0DFF
OLD_IF EQU STACK-WORD*2
OLD_AF EQU STACK-WORD
;ª®¬ ¤ ¢ë室 ¨ ¯¥à¥å®¤ ®¡à ¡®â稪
JP_EMU MACRO ADDRESS
DUPL ADDRESS-$,0;XFF
OUT (EXIT_PORT),A
JP ADR_ADDRESS
ENDM
;£¥¥à æ¨ï ¤à¥á®¢ ¤«ï â ¡«¨æë
LABEL_GEN MACRO ADDRESS
_ADDRESS EQU ($-TABLE_VIRT)/4
DW ADDRESS,ADR_ADDRESS.WORK
ENDM
;¯¥à¥å®¤ ®¡à ¡®â稪 á ª®¤®¬ ¤à¥á
EMU_JUMP MACRO ADDRESS
ADR_ADDRESS EQU $
LD (OLD_AF+1),A
LD A,_ADDRESS
JP WORKER
.WORK EQU $
ENDM
ORG 0
DUPL 0X0038-$,0;XFF
EI
RET
DUPL 0X006F-$,0;XFF
JP (HL)
JP_EMU 0X02BE ; OUT (0XFF), A
DUPL 0X801-$,0;XFF
;[â ¡«¨æ ¤à¥á®¢ ¯¥à¥å¢ â ¨ ¢ë§ë¢ â®à ®¡à ¡®â稪®¢]
TABLE_VIRT LABEL_GEN 0X02BE ; OUT (0XFF), A
LABEL_GEN 0X1E3A ; OUT (0X3F), A
LABEL_GEN 0X1FDD ; IN A, (0X1F)
LABEL_GEN 0X1FF3 ; OUT (0XFF), A
LABEL_GEN 0X2000 ; OUT (0X1F), A
LABEL_GEN 0X2076 ; IN A, (0X1F)
LABEL_GEN 0X2085 ; OUT (0X3F), A
LABEL_GEN 0X208D ; OUT (0X5F), A
LABEL_GEN 0X2093 ; OUT (0X1F), A
LABEL_GEN 0X2099 ; IN A, (0X1F)
LABEL_GEN 0X20B1 ; IN A, (0XFF)
LABEL_GEN 0X20B8 ; OUT (C), D
LABEL_GEN 0X2740 ; IN A, (0X1F)
LABEL_GEN 0X2748 ; OUT (0X7F), A
LABEL_GEN 0X2A53 ; OUT (C), A
LABEL_GEN 0X2A71 ; OUT (0XFF), A MAGIC
LABEL_GEN 0X2A77 ; IN A, (0X1F) MAGIC
LABEL_GEN 0X2AD9 ; OUT (OXFF), A MAGIC
LABEL_GEN 0X2B25 ; IN A, (0X5F) MAGIC
LABEL_GEN 0X2C07 ; IN A, (0X5F) MAGIC
LABEL_GEN 0X2CD8 ; IN A, (0X5F) MAGIC
LABEL_GEN 0X2D75 ; OUT (0X5F), A MAGIC
LABEL_GEN 0X2D80 ; OUT (0X1F), A MAGIC
LABEL_GEN 0X2D87 ; IN A, (0X1F) MAGIC
LABEL_GEN 0X2F0C ; OUT (0XFF), A MAGIC
LABEL_GEN 0X2F1D ; OUT (0X5F), A MAGIC
LABEL_GEN 0X2F28 ; OUT (0X1F), A MAGIC
LABEL_GEN 0X2F2F ; IN A, (0X1F) MAGIC
LABEL_GEN 0X2F3C ; OUT (0XFF), A MAGIC
LABEL_GEN 0X2F4D ; OUT (0XFF), A MAGIC
LABEL_GEN 0X2F50 ; OUT (0X7F), A MAGIC
LABEL_GEN 0X2F57 ; OUT (0X1F), A MAGIC
LABEL_GEN 0X2F59 ; IN A, (0XFF)
LABEL_GEN 0X2FB1 ; OUT (0XFF), A
LABEL_GEN 0X2FC3 ; OUT (0X1F), A
LABEL_GEN 0X3C30 ; IN A, (0X1F)
LABEL_GEN 0X3D4D ; OUT (0XFF), A
LABEL_GEN 0X3D9A ; OUT (0X1F), A
LABEL_GEN 0X3DA6 ; IN A, (0XFF)
LABEL_GEN 0X3DB5 ; IN A, (0X1F)
LABEL_GEN 0X3DBA ; IN A, (0X1F)
LABEL_GEN 0X3DD5 ; OUT (0XFF), A
LABEL_GEN 0X3E30 ; IN A, (0X1F)
LABEL_GEN 0X3E3A ; IN A, (0X1F)
LABEL_GEN 0X3E44 ; OUT (0X7F), A
LABEL_GEN 0X3E4C ; OUT (0X7F), A
LABEL_GEN 0X3E50 ; IN A, (0X3F)
LABEL_GEN 0X3E78 ; IN A, (0X3F)
LABEL_GEN 0X3E7E ; OUT (0X3F), A
LABEL_GEN 0X3E87 ; IN A, (0X3F)
LABEL_GEN 0X3E95 ; OUT (0X3F), A
LABEL_GEN 0X3EB5 ; IN A, (0X1F)
LABEL_GEN 0X3EBC ; IN A, (0X3F)
LABEL_GEN 0X3EC9 ; OUT (0X1F), A
LABEL_GEN 0X3ECE ; IN A, (0XFF)
LABEL_GEN 0X3EDF ; OUT (0X1F), A
LABEL_GEN 0X3EF3 ; IN H, (C)
LABEL_GEN 0X3EF5 ; IN A, (0XFF)
LABEL_GEN 0X3EFE ; IN A, (0X7F)
LABEL_GEN 0X3F1B ; OUT (0X5F), A
LABEL_GEN 0X3F25 ; OUT (0X1F), A
LABEL_GEN 0X3F33 ; IN A, (0X1F)
LABEL_GEN 0X3F4D ; OUT (0X1F), A
LABEL_GEN 0X3F55 ; IN A, (0X3F)
LABEL_GEN 0X3F5A ; IX A, (0X5F)
LABEL_GEN 0X3F69 ; IN A, (0X3F)
LABEL_GEN 0X3F72 ; IN A, (0X5F)
LABEL_GEN 0X3FBC ; IN A, (0XFF)
LABEL_GEN 0X3FCA ; IN A, (0XFF)
LABEL_GEN 0X3FD1 ; OUTI
LABEL_GEN 0X3FD7 ; IN A, (0XFF)
LABEL_GEN 0X3FE5 ; IN A, (0XFF)
LABEL_GEN 0X3FEC ; INI
LABEL_GEN 0X3FF0 ; OUT (C), A
LABEL_GEN 0X3FF3 ; IN A, (C)
;[¢ë§ë¢ â®àë ¯¥à¥å¢ â ]
;OUT (0XFF),A
EMU_JUMP 0X02BE
JP OUT_FF
;OUT (0X3F),A
EMU_JUMP 0X1E3A
JP OUT_3F
;IN A,(0X1F)
EMU_JUMP 0X1FDD
JP IN_1F
;OUT (0XFF),A
EMU_JUMP 0X1FF3
JP OUT_FF
;OUT (0X1F),A
EMU_JUMP 0X2000
JP OUT_1F
;IN A,(0X1F)
EMU_JUMP 0X2076
JP IN_1F
;OUT (0X3F),A
EMU_JUMP 0X2085
JP OUT_3F
;OUT (0X5F),A
EMU_JUMP 0X208D
JP OUT_5F
;OUT (0X1F),A
EMU_JUMP 0X2093
JP OUT_1F
;IN A,(0X1F)
EMU_JUMP 0X2099
JP IN_1F
;IN A,(0XFF)
EMU_JUMP 0X20B1
JP IN_FF
;OUT (C),D
EMU_JUMP 0X20B8
JP OUT_C_D
;IN A,(0X1F)
EMU_JUMP 0X2740
JP IN_1F
;OUT (0X7F),A
EMU_JUMP 0X2748
JP OUT_7F
;OUT (C),A
EMU_JUMP 0X2A53
JP OUT_C_A
;OUT (0XFF),A
EMU_JUMP 0X2A71
JP OUT_FF
;IN A,(0X1F)
EMU_JUMP 0X2A77
JP IN_1F
;OUT (0XFF),A
EMU_JUMP 0X2AD9
JP OUT_FF
;IN A,(0X5F)
EMU_JUMP 0X2B25
JP IN_5F
;IN A,(0X5F)
EMU_JUMP 0X2C07
JP IN_5F
;IN A,(0X5F)
EMU_JUMP 0X2CD8
JP IN_5F
;OUT (0X5F),A
EMU_JUMP 0X2D75
JP OUT_5F
;OUT (0X1F),A
EMU_JUMP 0X2D80
JP OUT_1F
;IN A,(0X1F)
EMU_JUMP 0X2D87
JP IN_1F
;OUT (0XFF),A
EMU_JUMP 0X2F0C
JP OUT_FF
;OUT (0X5F),A
EMU_JUMP 0X2F1D
JP OUT_5F
;OUT (0X1F),A
EMU_JUMP 0X2F28
JP OUT_1F
;IN A,(0X1F)
EMU_JUMP 0X2F2F
JP IN_1F
;OUT (0XFF),A
EMU_JUMP 0X2F3C
JP OUT_FF
;OUT (0XFF),A
EMU_JUMP 0X2F4D
JP OUT_FF
;OUT (0X7F),A
EMU_JUMP 0X2F50
JP OUT_7F
;OUT (0X1F),A
EMU_JUMP 0X2F57
JP OUT_1F
;IN A,(0XFF)
EMU_JUMP 0X2F59
CALL IN_FF
LD HL,EXIT_0X2F59
LD (ADR_EXIT),HL
JP UPDATE_AF
;OUT (0XFF),A
EMU_JUMP 0X2FB1
JP OUT_FF
;OUT (0X1F),A
EMU_JUMP 0X2FC3
JP OUT_1F
;IN A,(0X1F)
EMU_JUMP 0X3C30
JP IN_1F
;OUT (0XFF),A
EMU_JUMP 0X3D4D
JP OUT_FF
;OUT (0X1F),A
EMU_JUMP 0X3D9A
JP OUT_1F
;IN A,(0XFF)
EMU_JUMP 0X3DA6
JP IN_FF
;IN A,(0X1F)
EMU_JUMP 0X3DB5
JP IN_1F
;IN A,(0X1F)
EMU_JUMP 0X3DBA
JP IN_1F
;OUT (0XFF),A
EMU_JUMP 0X3DD5
JP OUT_FF
;IN A,(0X1F)
EMU_JUMP 0X3E30
JP IN_1F
;IN A,(0X1F)
EMU_JUMP 0X3E3A
JP IN_1F
;OUT (0X7F),A
EMU_JUMP 0X3E44
JP OUT_7F
;OUT (0X7F),A
EMU_JUMP 0X3E4C
JP OUT_7F
;IN A,(0X3F)
EMU_JUMP 0X3E50
JP IN_3F
;IN A,(0X3F)
EMU_JUMP 0X3E78
JP IN_3F
;OUT (0X3F),A
EMU_JUMP 0X3E7E
JP OUT_3F
;IN A,(0X3F)
EMU_JUMP 0X3E87
JP IN_3F
;OUT (0X3F),A
EMU_JUMP 0X3E95
JP OUT_3F
;IN A,(0X1F)
EMU_JUMP 0X3EB5
JP IN_1F
;IN A,(0X3F)
EMU_JUMP 0X3EBC
JP IN_3F
;OUT (0X1F),A
EMU_JUMP 0X3EC9
JP OUT_1F
;IN A,(0XFF)
EMU_JUMP 0X3ECE
JP IN_FF
;OUT (0X1F),A
EMU_JUMP 0X3EDF
JP OUT_1F
;IN H,(C)
EMU_JUMP 0X3EF3
JP IN_H_C
;IN A,(0XFF)
EMU_JUMP 0X3EF5
CALL IN_FF
LD HL,EXIT_0X3EF5
LD (ADR_EXIT),HL
UPDATE_AF LD A,(OLD_AF+1)
AND 0XC0
PUSH AF
POP HL
LD (OLD_AF),HL
RET
;IN A,(0X7F)
EMU_JUMP 0X3EFE
CALL INFF_BIT6
JP IN_7F
;OUT (0X5F),A
EMU_JUMP 0X3F1B
JP OUT_5F
;OUT (0X1F),A
EMU_JUMP 0X3F25
JP OUT_1F
;IN A,(0X1F)
EMU_JUMP 0X3F33
JP IN_1F
;OUT (0X1F),A
EMU_JUMP 0X3F4D
JP OUT_1F
;IN A,(0X3F)
EMU_JUMP 0X3F55
JP IN_3F
;IN A,(0X5F)
EMU_JUMP 0X3F5A
JP IN_5F
;IN A,(0X3F)
EMU_JUMP 0X3F69
JP IN_3F
;IN A,(0X5F)
EMU_JUMP 0X3F72
JP IN_5F
;IN A,(0XFF) ;§ ¯¨áì ᥪâ®à
EMU_JUMP 0X3FBC
JP WRITE_SECTOR
;IN A,(0XFF) ;§ ¯¨áì ᥪâ®à
EMU_JUMP 0X3FCA
JP WRITE_SECTOR
;OUTI ;§ ¯¨áì ᥪâ®à
EMU_JUMP 0X3FD1
JP WRITE_SECTOR
;IN A,(0XFF) ;ç⥨¥ ᥪâ®à
EMU_JUMP 0X3FD7
JP READ_SECTOR
;IN A,(0XFF) ;ç⥨¥ ᥪâ®à
EMU_JUMP 0X3FE5
JP READ_SECTOR
;INI ;ç⥨¥ ᥪâ®à
EMU_JUMP 0X3FEC
JP IN_INI
;OUT (C),A
EMU_JUMP 0X3FF0
LD BC,(OLD_BC)
LD A,(OLD_AF+1)
OUT (C),A
RET
;IN A,(C)
EMU_JUMP 0X3FF3
LD BC,(OLD_BC)
IN A,(C)
PUSH AF
POP HL
LD (OLD_AF),HL
RET
;[á⥪ ¨ ®¡à ¡®â稪¨]
DUPL STACK-$,0;XFF
DW INT_BREAK
DUPL STACK+0X41-$,0;XFF
INT_BREAK PUSH AF
PUSH HL
PUSH DE
LD A,(FLAG_RW_BREAK)
AND A
JR NZ,IB1
LD HL,(OLD_IF)
LD L,0XFF
LD E,(HL)
INC HL
LD D,(HL)
LD HL,(OLD_SP)
DEC HL
LD (HL),D
DEC HL
LD (HL),E
LD (OLD_SP),HL
POP DE
POP HL
POP AF
EI
RET
IB1 PUSH BC
LD (INT_SP),SP
CALL READ_TMP_CPU12
CALL WRITE_CPU12
LD A,(OLD_PORT_BF)
OUT (PEVO_CONF),A
LD A,(OLD_IF+1)
LD I,A
LD HL,(OLD_AF)
PUSH HL
POP AF
LD HL,(OLD_SP)
LD DE,0X2A71
DEC HL
LD (HL),D
DEC HL
LD (HL),E
DEC HL
EX DE,HL
LD HL,OLD_IF+1
LD H,(HL)
LD L,0XFF
LD C,(HL)
INC HL
LD B,(HL)
EX DE,HL
LD (HL),B
DEC HL
LD (HL),C
LD SP,HL
LD HL,(OLD_HL)
LD DE,(OLD_DE)
LD BC,(OLD_BC)
EI
JP 0X2A53
INT_RET LD SP,0
INT_SP EQU $-2
IN A,(PEVO_CONF)
OR 1
OUT (PEVO_CONF),A
LD A,HIGH (STACK)
LD I,A
CALL WRITE_TMP_CPU12
POP BC
POP DE
POP HL
POP AF
RET
;¢ë室 ¨§ ®¡à ¡®â稪
EXIT_PAGE_FE LD A,(OLD_PORT_BF)
OUT (PEVO_CONF),A ;¢®ááâ ®¢«¥¨¥ ¯®àâ 0xBF
LD A,(OLD_IF+1)
LD I,A
LD HL,(OLD_AF)
PUSH HL
POP AF
LD HL,0 ;¢®ááâ ®¢«¥¨¥ HL
OLD_HL EQU $-2
LD DE,0 ;¢®ááâ ®¢«¥¨¥ DE
OLD_DE EQU $-2
LD BC,0 ;¢®ááâ ®¢«¥¨¥ BC
OLD_BC EQU $-2
LD SP,0 ;¢®ááâ ®¢«¥¨¥ SP
OLD_SP EQU $-2
JP 0
ADR_EXIT EQU $-2
DUPL STACK+0X101-$,0;XFF
;¢å®¤ ¢ ®¡à ¡®â稪
WORKER LD (NUM_ADR),A
LD (OLD_SP),SP
LD SP,STACK-WORD
LD A,I
JP PE,WORKER1
LD A,I
WORKER1 PUSH AF ;IF
IN A,(PEVO_CONF)
LD (OLD_PORT_BF),A ;¯®àâ BF
OR 1
OUT (PEVO_CONF),A
LD A,HIGH (STACK)
LD I,A
LD (OLD_HL),HL
LD (OLD_DE),DE
LD (OLD_BC),BC
LD HL,0
NUM_ADR EQU $-2
ADD HL,HL
ADD HL,HL
LD DE,TABLE_VIRT
ADD HL,DE
LD E,(HL)
INC HL
LD D,(HL) ;DE- ¤à¥á ¢®§¢à â ¨§ ®¡à ¡®â稪
INC HL
LD (ADR_EXIT),DE
LD E,(HL)
INC HL
LD D,(HL) ;DE- ¤à¥á ®¡à ¡®â稪
PUSH DE
LD HL,EXIT_PAGE_FE ;ª®¤ ¢ë室 ¨§ ®¡à ¡®â稪
EX (SP),HL
JP (HL)
;[ç⥨¥/§ ¯¨áì ¯à¨¬®â¨à®¢ ®£® ¤¨áª ]
MOUNT_RW LD HL,0X4000
ADD HL,SP
LD SP,HL
LD BC,WIN_A1
LD A,0X40
OUT (C),A
LD B,HIGH (WIN_P1)
LD A,RAM_EVODOS
OUT (C),A
LD A,(RDWR_MODE)
AND 0X80
LD L,A
LD A,(WR_FF)
AND 3
OR L
BIT 7,A
PUSH AF
LD HL,0X2A77
PUSH HL
LD HL,MNT_RW
PUSH HL
JP Z,0X2A53
LD HL,(OLD_HL)
LD DE,0X100
CALL COPY_BLOCK
LD (OLD_HL),HL
JP 0X2A53
PHASE $+0X4000
MNT_RW LD L,A
LD A,(PORT_3F+0X4000) ;¢§ï«¨ ®¬¥à â४
ADD A,A ;áâ®à® 2
LD D,A
LD A,(WR_FF+0X4000)
AND 0X10 ;¯à®¢¥àª ª ª ï áâ®à® ¤¨áª
JR NZ,WRRDSECM1
INC D ;¤«ï áâ®à®ë 1
WRRDSECM1 LD A,(PORT_5F+0X4000) ;¢§ï«¨ ®¬¥à ᥪâ®à
LD E,A ;D-â४, E-ᥪâ®à
LD A,L
LD HL,0X4100
RST 8
DB _MOUNTER
DB _RDWR_MOUNT
JP 0X3D2F
PHASE $-0X4000
RET_MNT_RW LD HL,-0X4000
ADD HL,SP
LD SP,HL
CALL WRITE_CPU12
POP AF
RET NZ
LD HL,0X100
LD DE,(OLD_HL)
CALL COPY_BLOCK
LD (OLD_HL),DE
RET
;[¨ä ¤«ï ᮧ¤ ¨ï 9 ᥪâ®à ®¢®£® ¤¨áª ]
DSKINFO DB 0 ;+0XE1-®¬¥à ¯¥à¢®£® ᢮¡®¤®£® ᥪâ®à
DB 1 ;+0XE2-®¬¥à ¯¥à¢®£® ᢮¡®¤®£® â४
DB 0X16 ;+0XE3-⨯ ¤¨áª¥âë
DB 0 ;+0XE4-ª®«¨ç¥á⢮ ä ©«®¢ ¤¨áª¥â¥
SECFREE DW 2544 ;+0XE5-ª®«¨ç¥á⢮ ᢮¡®¤ëå ᥪâ®à®¢
DB 0X10 ;+0XE7-¨¤¥â¨ä¨ª æ¨®ë© ª®¤ TRDOS
DW 0 ;+0XE8-2 ¡ ©â 0
DUPL 9," " ;+0XEA-9 ¡ ©â 0X20
DB 0 ;+0XF3-1 ¡ ©â 0
DB 0 ;+0XF4-ª®«¨ç¥á⢮ 㤠«¥ëå ä ©«®¢
DB "RAMDISKO" ;+0XF5-¨¬ï ¤¨áª¥âë
DSK_END
DUPL 0X1000-$,0;XFF
VARS1
;[ ¤à¥á ¯¥à¥å¢ â ]
JP_EMU 0X1E3A ; OUT (0X3F), A
JP_EMU 0X1FDD ; IN A, (0X1F)
JP_EMU 0X1FF3 ; OUT (0XFF), A
JP_EMU 0X2000 ; OUT (0X1F), A
JP_EMU 0X2076 ; IN A, (0X1F)
JP_EMU 0X2085 ; OUT (0X3F), A
JP_EMU 0X208D ; OUT (0X5F), A
JP_EMU 0X2093 ; OUT (0X1F), A
JP_EMU 0X2099 ; IN A, (0X1F)
JP_EMU 0X20B1 ; IN A, (0XFF)
JP_EMU 0X20B8 ; OUT (C), D
JP_EMU 0X2740 ; IN A, (0X1F)
JP_EMU 0X2748 ; OUT (0X7F), A
JP_EMU 0X2A53 ; OUT (C), A
;¯¥à¢ ï ª®¬ ¤ ¢ ®¡à ¡®â稪¥ MAGIC ¤«ï ¢®§¢à â ¢ ¯ £ã FE
; JP_EMU 0X2A71 ; OUT (0XFF), A
DUPL 0X2A73-$,0;XFF
JP INT_RET ;¢®§¢à 饨¥ ¨§ ®¡à ¡®â稪 INT
; JP_EMU 0X2A77 ; IN A, (0X1F)
DUPL 0X2A79-$,0;XFF
JP RET_MNT_RW ;¢®§¢à 饨¥ ¯®á«¥ ¢ë§®¢ RST 8
JP_EMU 0X2AD9 ; OUT (0XFF), A
JP_EMU 0X2B25 ; IN A, (0X5F)
JP_EMU 0X2C07 ; IN A, (0X5F)
JP_EMU 0X2CD8 ; IN A, (0X5F)
JP_EMU 0X2D75 ; OUT (0X5F), A
JP_EMU 0X2D80 ; OUT (0X1F), A
JP_EMU 0X2D87 ; IN A, (0X1F)
JP_EMU 0X2F0C ; OUT (0XFF), A
JP_EMU 0X2F1D ; OUT (0X5F), A
DUPL 0X2F24-$,0;XFF ; ¤«ï ¤à¥á 0X2F4D
JP ADR_0X2F4D
JP_EMU 0X2F28 ; OUT (0X1F), A
JP_EMU 0X2F2F ; IN A, (0X1F)
JP_EMU 0X2F3C ; OUT (0XFF), A
DUPL 0X2F4D-$,0;XFF ; OUT (0XFF), A
OUT (EXIT_PORT),A
DB 0X18 ; JR 0X2F24
JP_EMU 0X2F50 ; OUT (0X7F), A
DUPL 0X2F57-$,0;XFF ; OUT (0X1F), A
OUT (EXIT_PORT),A
JR JUMP_0X2F57
JR JUMP_0X2F59 ; IN A, (0XFF)
EXIT_0X2F59 OUT (EXIT_PORT),A
JUMP_0X2F59 JP ADR_0X2F59
JUMP_0X2F57 JP ADR_0X2F57
JP_EMU 0X2FB1 ; OUT (0XFF), A
JP_EMU 0X2FC3 ; OUT (0X1F), A
DUPL 0X32A2-$,0;XFF
;[®¡à ¡®â稪¨ ç⥨ï/§ ¯¨á¨ ¯®à⮢]
;[§ ¯¨áì "A" ¢ ¯®àâ 0X1F]
OUT_1F LD A,(OLD_AF+1)
LD (WR_1F),A
CP 0X10
JR NC,OUT_1F_10
;00-0F ª®¬ ¤ ¢®ááâ ®¢«¥¨ï
XOR A
LD (PORT_3F),A
JR INFF_BIT6
OUT_1F_10 CP 0X20
JR NC,OUT_1F_20
;10-1F ª®¬ ¤ ¯®¨áª
LD A,(PORT_7F)
LD (PORT_3F),A
CALL DISK_NONE
LD A,0X80
JR C,INFF_BIT6_1
INFF_BIT6 XOR A
INFF_BIT6_1 LD (RD_1F),A
LD A,0XBF
LD (RD_FF),A
RET
OUT_1F_20 CP 0X40
JR NC,OUT_1F_40
;20-3F ª®¬ ¤ è £ ¢ ¯à¥¤ë¤ã饬 ¯à ¢«¥¨¨
LD A,(PORT_3F)
NAPRAVL NOP
LD (PORT_3F),A
JR INFF_BIT6
OUT_1F_40 CP 0X60
JR NC,OUT_1F_60
;40-5F ª®¬ ¤ è £ ¢¯¥à¥¤
LD A,(PORT_3F)
INC A
LD (PORT_3F),A
LD A,0X3C ;INC A
LD (NAPRAVL),A
JR INFF_BIT6
OUT_1F_60 CP 0X80
JR NC,OUT_1F_80
;60-7F ª®¬ ¤ è £ § ¤
LD A,(PORT_3F)
DEC A
LD (PORT_3F),A
LD A,0X3D ;DEC A
LD (NAPRAVL),A
JR INFF_BIT6
OUT_1F_80 CP 0XA0
JR NC,OUT_1F_A0
;80-9F ª®¬ ¤ ç⥨¥ ᥪâ®à
JR INFF_BIT6;7
OUT_1F_A0 CP 0XC0
JR NC,OUT_1F_D0
;A0-BF ª®¬ ¤ § ¯¨áì ᥪâ®à
JR INFF_BIT6
INFF_BIT7 XOR A
LD (RD_1F),A
LD A,0X7F
LD (RD_FF),A
RET
OUT_1F_D0 CP 0XD0
JR NC,OUT_1F_E0
;C0-CF ç⥨¥ ¤à¥á
JR INFF_BIT6;7
OUT_1F_E0 CP 0XE0
JR NC,OUT_1F_F0
;D0-DF ¯à¨ã¤¨â¥«ì®¥ ¯à¥àë¢ ¨¥
LD A,0XBF
LD (RD_FF),A
RET
OUT_1F_F0 CP 0XF0
JR C,INFF_BIT6
;E0-EF ç⥨¥ ¤®à®¦ª¨
JR INFF_BIT6
;[§ ¯¨áì "A" ¢ ¯®àâ 0X3F]
OUT_3F LD A,(OLD_AF+1)
LD (PORT_3F),A
RET
;[§ ¯¨áì "A" ¢ ¯®àâ 0X5F]
OUT_5F LD A,(OLD_AF+1)
LD (PORT_5F),A
RET
;[§ ¯¨áì "A" ¢ ¯®àâ 0X7F]
OUT_7F LD A,(OLD_AF+1)
LD (PORT_7F),A
RET
;[§ ¯¨áì "A" ¢ ¯®àâ 0XFF]
OUT_FF LD A,(OLD_AF+1)
LD (WR_FF),A
OUT (0XFF),A
RET
;[§ ¯¨áì "A" ¢ ¯®àâ (C)]
OUT_C_A LD A,(OLD_AF+1)
WRCA1 LD D,A
LD BC,(OLD_BC) ;¥á«¨ ¯®àâ ¥ TR-DOS
LD A,C
;®¯à¥¤¥«¥¨¥ ¢ ª ª®© ¯®àâ § ¯¨áì
CP 0X1F
JP Z,OUT_1F
CP 0X3F
JR Z,OUT_3F
CP 0X5F
JR Z,OUT_5F
CP 0X7F
JR Z,OUT_7F
CP 0XFF
JR Z,OUT_FF
CP LOW (WIN_A0)
JR Z,WRCA3
WRCA4 OUT (C),D
RET
;[§ ¯¨áì ¢ ¯®àâë ATM/PENTEVO]
WRCA3 LD A,B
LD HL,BB_CPU1
CP HIGH (WIN_A1)
JR Z,WRCA2
CP HIGH (WIN_P2)
JR Z,WRCA2
LD HL,BB_CPU2
CP HIGH (WIN_A2)
JR Z,WRCA2
CP HIGH (WIN_P2)
JR NZ,WRCA4
WRCA2 LD E,B
PUSH DE
PUSH HL
CALL READ_CPU12
POP HL
POP DE
LD (HL),D
INC HL
LD (HL),E
JP WRITE_CPU12
;[§ ¯¨áì "D" ¢ ¯®àâ (C)]
OUT_C_D LD A,(OLD_DE+1)
JR WRCA1
;[¯¥à¥¤ ç ¡ ©â , ª®¬ ¤ OUTI]
OUT_OUTI LD HL,(BUFF_SECT)
EXX
LD A,(HL)
INC HL
EXX
LD (HL),A
INC HL
LD (BUFF_SECT),HL
RET
;[ç⥨¥ ¯®àâ 0X1F]
IN_1F LD A,(WR_1F)
AND 0XF0
CP 0X10
JR C,RD1F1
CP 0X20
JR C,RD1F3
CP 0XD0
JR Z,RD1F1
XOR A
JR RD1F2
RD1F3 LD A,(INDEX)
XOR %00000100
JR RD1F4
RD1F1 LD A,0X24
INDEX EQU $-1
RD1F4 XOR %00000010
LD (INDEX),A
RD1F2 LD (RD_1F),A
LD (OLD_AF+1),A
RET
;[ç⥨¥ ¯®àâ 0X3F]
IN_3F LD A,(PORT_3F)
LD (OLD_AF+1),A
RET
;[ç⥨¥ ¯®àâ 0X5F]
IN_5F LD A,(PORT_5F)
LD (OLD_AF+1),A
RET
;[ç⥨¥ ¯®àâ 0X7F]
IN_7F LD A,(PORT_7F)
LD (OLD_AF+1),A
RET
;[ç⥨¥ ¯®àâ 0XFF]
IN_FF LD A,(RD_FF)
LD (OLD_AF+1),A
RET
;[ç⥨¥ ¢ "H" ¨§ ()]
IN_H_C LD A,(OLD_BC)
;[®¯à¥¤¥«¥¨¥ ¨§ ª ª®£® ¯®àâ ç⥨¥]
CP 0X1F
JR NZ,RDHC2
LD A,(RD_1F)
LD (OLD_HL+1),A
RET
RDHC2 CP 0X3F
JR NZ,RDHC3
LD A,(PORT_3F)
LD (OLD_HL+1),A
RET
RDHC3 CP 0X5F
JR NZ,RDHC4
LD A,(PORT_5F)
LD (OLD_HL+1),A
RET
RDHC4 CP 0X7F
JR NZ,RDHC5
LD A,(PORT_7F)
LD (OLD_HL+1),A
RET
RDHC5 CP 0XFF
JR NZ,RDHC6
LD A,(RD_FF)
LD (OLD_HL+1),A
RET
RDHC6 LD BC,(OLD_BC)
IN A,(C)
LD (OLD_HL+1),A
RET
;[ç⥨¥ INI]
IN_INI LD A,(RD_1F)
LD HL,(OLD_HL)
DEC HL
LD (HL),A
INC HL
LD (OLD_HL),HL
LD HL,0X2A53
LD (ADR_EXIT),HL
JP INFF_BIT6
;[ç⥨¥ ᥪâ®à ¨«¨ ¯®à⮢]
READ_SECTOR LD A,(WR_1F)
AND 0X0F0
CP 0X80
JP C,INFF_BIT6
CP 0XC0
JR NZ,READ_SECTOR_1
LD A,(PORT_3F)
LD HL,(OLD_HL)
LD (HL),A ;®¬¥à ¤®à®¦ª¨
INC HL
LD (HL),0 ;®¬¥à áâ®à®ë
INC HL
LD A,(PORT_5F)
LD (HL),A ;®¬¥à ᥪâ®à
INC HL
LD (HL),0 ;à §¬¥à ᥪâ®à
INC HL
LD (HL),0 ;¡ ©â CRC
INC HL
LD (HL),0 ;¡ ©â CRC
INC HL
LD (OLD_HL),HL
LD HL,OLD_BC+1
LD A,(HL)
SUB 6 ;REG B - 6
LD (HL),A
LD HL,0X2A53
LD (ADR_EXIT),HL
JP INFF_BIT6
;[ç⥨¥ ᥪâ®à ]
READ_SECTOR_1 XOR A
JR WRITE_SECTOR_1
;[§ ¯¨áì ᥪâ®à ]
WRITE_SECTOR LD A,0XFF
WRITE_SECTOR_1 LD (RDWR_MODE),A
LD A,1
LD (FLAG_RW_BREAK),A
LD HL,(OLD_IF)
PUSH HL
POP AF
JP PO,DI_MODE ;¯à¥àë¢ ¨ï à §à¥è¥ë?
CP 0X3F
JR Z,DI_MODE
HALT ;à §à¥è¥ë, ¦¤¥¬ ®¡à ¡®â稪 ¯à¥àë¢ ¨ï
DI_MODE CALL READ_CPU12 ;á®åà ¥¨¥ ⥪ã饩 ª®ä¨£ãà 樨 ®ª® ¯à®¥æ¨à®¢ ¨ï 1,2
CALL W_WR_RD_SECT
XOR A
LD (FLAG_RW_BREAK),A
LD HL,0X8090
LD (OLD_AF),HL ;í¬ã«ïæ¨ï ä« £ ãᯥ讣® ç⥨ï/§ ¯¨á¨ ᥪâ®à
LD HL,0X2A53
LD (ADR_EXIT),HL
JP WRITE_CPU12 ;¢®ááâ ®¢«¥¨¥ ª®ä¨£ãà 樨 ®ª® ¯à®¥æ¨à®¢ ¨ï 1,2
;[ç⥨¥ ¨«¨ § ¯¨áì ᥪâ®à à ¬¤¨áª ]
W_WR_RD_SECT LD A,(WR_FF)
AND 3
INC A
LD B,A
LD A,(COPY_VIRT_BITS)
REPT 5
RRCA
ENDM
DJNZ $-1
JP C,MOUNT_RW ;à ¡®â á ¯à¨¬®â¨à®¢ ë¬ ®¡à §®¬
LD BC,WIN_A1
LD A,0X40
OUT (C),A
LD B,HIGH (WIN_P1)
LD A,RAM_RAMDISK
OUT (C),A ;áâà ¨æ § £®«®¢ª®¢ à ¬¤¨áª
LD A,(PORT_3F) ;¢§ï«¨ ®¬¥à â४
ADD A,A ;áâ®à® 2
LD C,A
LD A,(WR_FF)
AND 0X10 ;¯à®¢¥àª ª ª ï áâ®à® ¤¨áª
JR NZ,WWRRD1
INC C ;¤«ï áâ®à®ë 1
WWRRD1 LD B,HIGH (CPU1)+2 ; ¤à¥á ç « ¨äë ® ᥪâ®à å ¤®à®¦ª¥
LD A,(PORT_5F) ;¢§ï«¨ ®¬¥à ᥪâ®à
LD L,A
LD H,0
WWRRD3 LD A,(BC)
LD D,A ;¢§ï«¨ ®¬¥à ᥪâ®à
INC B
LD A,(BC)
LD E,A ;¢§ï«¨ à §¬¥à ᥪâ®à
INC B
; LD A,D
; AND A
; JR Z,WWRRD_ERR
LD A,L
CP D
JR Z,WWRRD2
LD A,E
ADD A,H
LD H,A
JR WWRRD3
WWRRD2 LD A,E
RRCA
LD (SECTOR_SIZE),A ;à §¬¥à ©¤¥®£® ᥪâ®à
LD L,0
LD E,L
SRL H
RR L ;HL=ᬥ饨¥ ¢ ¡«®ª å ¤® ©¤¥®£® ᥪâ®à
LD B,HIGH (CPU1)
LD A,(BC)
LD D,A
ADD HL,DE ;HL=ᬥ饨¥ ®â ç « áâà ¨æë ¢ ¡«®ª å
INC B
LD A,(BC)
LD C,A ;ᬥ饨¥ ¢ áâà ¨æ å ®â ç « à ¬¤¨áª
LD A,H
CP HIGH (CPU1)
JR C,WWRRD5
SUB 0X40
LD H,A
INC C
;HL=ᬥ饨¥ ¢ áâà ¨æ¥ ¤® ç « ᥪâ®à
WWRRD5 LD A,C ;ᬥ饨¥ ¤® ®¬¥à áâà ¨æë, £¤¥ 㪠§ ë© á¥ªâ®à ç¨ ¥âáï
ADD A,RAM_DATARAMD ;¯à¨¡ ¢¨«¨ ®¬¥à ç « à ¬¤¨áª ¨ +1. ¢ 0 áâà ¨æ¥ à ¬¤¨áª ®¯¨á ⥫¨ ᥪâ®à®¢
LD (RDWR_PAGE),A ;á®åà ¨«¨ ®¬¥à ¢ëç¨á«¥®© áâà ¨æë
LD DE,(OLD_HL)
LD BC,(BB_CPU1)
LD A,C
LD C,LOW (WIN_A0)
OUT (C),A ;¢¥à㫨 áâ ¤ àâãî 5 áâà ¨æã
SP_RAMD9 LD A,D ;¯à®¢¥àª £à ¨æë ®âªã¤ /ªã¤ ª®¯¨à®¢ âì
CP HIGH (CPU2)
PUSH DE
LD DE,CPU1+HIGH (WIN_P1)
LD BC,WIN_A1 ;¥á«¨ ¢¥à娥 32ª¡ ®§ã, ⮠㦮 ¢ª«îç¨âì ¢ 1 ®ª¥ ¯à®¥æ¨à®¢ ¨ï
JR NC,SP_RAMD1
LD DE,CPU2+HIGH (WIN_P2)
LD B,HIGH (WIN_A2) ;¥á«¨ ¨¦¨¥ 32ª¡ ®§ã, ⮠㦮 ¢ª«îç¨âì ¢® 2 ®ª¥ ¯à®¥æ¨à®¢ ¨ï
SP_RAMD1 LD A,0X40
OUT (C),A
LD B,E
LD A,(RDWR_PAGE) ;®¬¥à ¢ëç¨á«¥®© áâà ¨æë ®§ã
OUT (C),A ;¢ª«î稫¨ ¢ëç¨á«¥ãî áâà ¨æã
LD B,D ;áâ à訩 ¡ ©â ¤à¥á ç « ¢ª«î祮© áâà ¨æë
POP DE
LD A,B
ADD A,H
LD H,A
LD A,(RDWR_MODE)
AND A
JR NZ,IN_ROM1
LD A,D
INC A
JR NZ,IN_ROM1
LD A,E
AND A
JR Z,IN_ROM1
IN_ROM4 NEG
LD C,A
LD B,0
LDIR
NEG
LD C,A
IN_ROM2 EX DE,HL
ADD HL,BC
EX DE,HL
ADD HL,BC
LD A,(SECTOR_SIZE)
JP SP_RAMD8_
IN_ROM1 LD A,D
CP HIGH (CPU1)
JR NC,IN_ROM3
LD A,(SECTOR_SIZE)
AND A
LD BC,0X80
JR Z,IN_ROM2
LD BC,0X100
JR IN_ROM2
IN_ROM3 CP HIGH (CPU2) ;¯à®¢¥àª ¯¥à¥å®¤ £à ¨æë áâà ¨æ
JP NC,SP_RAMD3 ;¥á«¨ ¢ëè¥ â® áà §ã ª®¯¨à㥬
CP HIGH (CPU2)-1
JP C,SP_RAMD3 ;¥á«¨ ¨¦¥ â ª ¦¥ áà §ã ª®¯¨à㥬
LD A,E
AND A ;¥á«¨ ᥪâ®à ¯®«®áâìî 㪫 ¤ë¢¥âáï ¤® £à ¨æë, â® áà §ã ª®¯¨à㥬
JR Z,SP_RAMD3 ;¨ ç¥ ¯à¨ã¤¨â¥«ì® ª®¯¨à㥬 ¢ ¤¢ ¯à¨¥¬
LD A,(RDWR_MODE) ;ç⥨¥ ¨«¨ § ¯¨áì?
AND A
LD A,E ;¬« ¤è¨© ¡ ©â ¤à¥á ¢ ¡«®ª¥
JR Z,SP_RAMD4
EX DE,HL ;¤«ï § ¯¨á¨ ¬¥ï¥¬ ¯à ¢«¥¨¥
SP_RAMD4 NEG
LD C,A ;ª®¯¨à㥬 ®áâ ⮪ ¤® ª®æ ¡«®ª
LD B,0
LDIR
NEG
PUSH AF ;á¯àïâ «¨ ᪮«ìª® ®áâ «®áì ª®¯¨à®¢ âì ¨§ ç « á«¥¤ãî饣® ¡«®ª
LD BC,(BB_CPU2)
LD A,C
LD C,LOW (WIN_A0)
OUT (C),A
LD B,HIGH (WIN_A1)
LD A,0X40
OUT (C),A
LD B,HIGH (WIN_P1)
LD A,(RDWR_PAGE)
OUT (C),A ;¢ëç¨á«¥ãî áâà ¨æã ¢ª«îç ¥¬ ¢ 1 ®ª¥ ¯à®¥æ¨à®¢ ¨ï
LD A,(RDWR_MODE) ;ç⥨¥ ¨«¨ § ¯¨áì
AND A
JR Z,SP_RAMD5
LD A,D ;¤«ï § ¯¨á¨
SUB 0X40 ;¨§¬¥¨«¨ ¤à¥á ªã¤ ª®¯¨à®¢ âì ¤à㣮¥ ®ª® ¯à®¥æ¨à®¢ ¨ï
LD D,A
JR SP_RAMD6
SP_RAMD5 LD A,H ;¤«ï ç⥨ï
SUB 0X40 ;¨§¬¥¨«¨ ¤à¥á ªã¤ ª®¯¨à®¢ âì ¤à㣮¥ ®ª® ¯à®¥æ¨à®¢ ¨ï
LD H,A
SP_RAMD6 POP AF
LD C,A ;᪮«ìª® ®áâ «®áì ᪮¯¨à®¢ âì ¡ ©â
LD B,0
LDIR
LD A,(SECTOR_SIZE)
JR SP_RAMD8_
SP_RAMD3 LD A,(RDWR_MODE) ;ç⥨¥ ¨«¨ § ¯¨áì
AND A
JR Z,SP_RAMD7
EX DE,HL ;¤«ï § ¯¨á¨ ¬¥ï¥¬ ¯à ¢«¥¨¥
SP_RAMD7 LD A,(SECTOR_SIZE)
AND A
JR NZ,SP_RAMD8
CALL COPYHBLOCK ;¤«ï ᥪâ®à à §¬¥à®¬ 128 ¡ ©â ª®¯¨à㥬 ¯®«®¢¨ã ¨ ¢ë室¨¬
ECOPY_BLOCK LD A,(RDWR_MODE)
AND A
JR Z,ECOPY_BLOCK1
EX DE,HL
ECOPY_BLOCK1 LD (OLD_HL),DE
RET
SP_RAMD8 CALL COPY_BLOCK ;¤«ï ᥪâ®à 256 ¡ ©â ª®¯¨à㥬 ¢¥áì ¨ ¢ë室¨¬
SP_RAMD8_ DEC A
JR Z,ECOPY_BLOCK
LD (SECTOR_SIZE),A
LD A,(RDWR_MODE)
AND A
JR Z,SP_RAMD0
EX DE,HL
SP_RAMD0 LD A,0X3F
AND H
LD H,A
JP SP_RAMD9
COPY_BLOCK REPT 128
LDI
ENDM
COPYHBLOCK REPT 128
LDI
ENDM
RET
;[¯à®¢¥àª «¨ç¨ï ¬ થà à ¬¤¨áª ]
CMP_RAM_DISK CALL READ_CPU12
LD BC,WIN_P1
LD A,RAM_RAMDISK
OUT (C),A
LD HL,CPU1+0X3FFF
LD D,(HL)
DEC H
LD E,(HL) ;¢§ï«¨ ¡ ©âë ¤«ï ¯à®¢¥àª¨ ¬ થà
CALL WRITE_CPU12
LD HL,"RD"
AND A
SBC HL,DE
RET Z ;¥á«¨ ¬ àª¥à ¬¥áâ¥, â® à ¬¤¨áª ¥ ᮧ¤ ¥¬
;[ᮧ¤ ¨¥ ç¨á⮣® à ¬¤¨áª ]
CREATE_TRDTABL LD BC,WIN_P1
LD A,RAM_RAMDISK ;㦠áâà ¨æ ç « à ¬¤¨áª , £¤¥ ¡ã¤¥â â ¡«¨æ ®¯¨á ⥫¥©
OUT (C),A
LD HL,CPU1
PUSH HL
LD DE,CPU1+1
LD BC,0X3FFF
LD (HL),L
LDIR ;®ç¨á⨫¨ áâà ¨æã
POP DE ; ¤à¥á ç « áâà ¨æë
LD HL,0 ;ᬥ饨¥ ¢ ¡«®ª å ¨ áâà ¨æ å
LD A,0XA0
ELT2 PUSH AF
LD BC,0X1000 ;áç¥â稪 ®¬¥à®¢ ᥪâ®à®¢ ¨ ¨å ®¬¥à
LD A,L
RRCA
RRCA
LD (DE),A ;ᬥ饨¥ ¢ ¡«®ª å ¤®à®¦ª¨ ¢ áâà ¨æ¥
INC D
LD A,H
LD (DE),A ;ᬥ饨¥ ¢ áâà ¨æ å ¤® ¤®à®¦ª¨
INC D
ELT1 INC C
LD A,C
LD (DE),A ;®¬¥à ᥪâ®à
INC D
LD A,2
LD (DE),A ;à §¬¥à ᥪâ®à
INC D
DJNZ ELT1 ;¢®á¨¬ ¢ â ¡«¨æ㠢ᥠ®¬¥à ᥪâ®à®¢ á à §¬¥à ¬¨
LD D,HIGH (CPU1) ;¢¥à㫨 㪠§ â¥«ì ¢ ç «®
INC E ;¤«ï á«¥¤ãî饩 ¤®à®¦ª¨
LD BC,0X40
ADD HL,BC ;¯¥à¥å®¤ ª á«¥¤ãî饩 ¤®à®¦ª¥
POP AF
DEC A
JR NZ,ELT2 ;¯®¢â®à塞 ¤«ï ¢á¥å ¤®à®¦¥ª
LD HL,CPU1+0X3FFF
LD (HL),"R" ;¢®á¨¬ ¬ થà à ¬¤¨áª
DEC H
LD (HL),"D"
LD BC,WIN_P1
LD A,RAM_DATARAMD
OUT (C),A
LD HL,CPU1
LD DE,CPU1+1
LD BC,0X0FFF
LD (HL),L
LDIR
LD HL,DSKINFO
LD DE,CPU1+0X8E1
LD BC,DSK_END-DSKINFO
LDIR
;[¢®ááâ ®¢«¥¨¥ ª®ä¨£ãà 樨 ®ª® ¯à®¥æ¨à®¢ ¨ï 1,2]
WRITE_CPU12 LD BC,(BB_CPU1)
LD A,C
LD C,LOW (WIN_A0)
OUT (C),A
LD BC,(BB_CPU2)
LD A,C
LD C,LOW (WIN_A0)
OUT (C),A
RET
;[ç⥨¥ ⥪ã饣® ª®ä¨£ áâà ¨æ ¯à®¥æ¨à®¢ ¨ï 1,2]
READ_TMP_CPU12 LD HL,(BB_CPU1)
PUSH HL
LD HL,(BB_CPU2)
PUSH HL
CALL READ_CPU12
LD HL,(BB_CPU1)
LD (TMP_BB_CPU1),HL
LD HL,(BB_CPU2)
LD (TMP_BB_CPU2),HL
POP HL
LD (BB_CPU2),HL
POP HL
LD (BB_CPU1),HL
JR WRITE_CPU12
;[¢®ááâ ®¢«¥¨¥ ⥪ã饩 ª®ä¨£ãà 樨 áâà ¨æ ¯à®¥æ¨à®¢ ¨ï 1,2]
WRITE_TMP_CPU12 LD BC,0
TMP_BB_CPU1 EQU $-2
LD A,C
LD C,LOW (WIN_A0)
OUT (C),A
LD BC,0
TMP_BB_CPU2 EQU $-2
LD A,C
LD C,LOW (WIN_A0)
OUT (C),A
RET
;[ç⥨¥ ª®ä¨£ãà 樨 ®ª® ¯à®¥æ¨à®¢ ¨ï 1,2]
READ_CPU12 LD BC,RD_RAMNROM
IN L,(C) ;¡¨âë RAM & ROM
INC B
IN H,(C) ;¡¨âë DOS & 7FFD
ADD HL,HL
LD B,HIGH (RD_1WINA1)
IN A,(C)
CP 0XC0
JR NC,RWCPU1
LD E,A
LD D,HIGH (WIN_P1)
JR RWCPU2
RWCPU1 RLCA
RLCA
SLA L
RRA
SLA H
RRA
LD E,A
LD D,HIGH (WIN_A1)
RWCPU2 LD (BB_CPU1),DE
INC B
IN A,(C)
CP 0XC0
JR NC,RWCPU3
LD E,A
LD D,HIGH (WIN_P2)
JR RWCPU4
RWCPU3 RLCA
RLCA
SLA L
RRA
SLA H
RRA
LD E,A
LD D,HIGH (WIN_A2)
RWCPU4 LD (BB_CPU2),DE
RET
;[¯à®¢¥àª «¨ç¨ï ¢¨àâ㠫쮣® ¤¨áª ]
DISK_NONE PUSH HL
PUSH BC
CALL READ_CPU12
LD BC,WIN_A1
LD A,0X40
OUT (C),A
LD B,HIGH (WIN_P1)
LD A,RAM_RAMDISK
OUT (C),A
LD HL,CPU1+0X3FFF
LD A,(HL)
DEC H
CP "R"
SCF
JR NZ,DISK_NONE1
LD A,(HL)
CP "D"
SCF
JR NZ,DISK_NONE1
XOR A
DISK_NONE1 PUSH AF
CALL WRITE_CPU12
POP AF
POP BC
POP HL
RET
; ¢å®¤¥: H- ¤à¥á ï祩ª¨
; L-¯à®ç¨â ®¥ § 票¥
READCMOS PUSH BC
LD BC,CMOSD_SET_ADR
OUT (C),H
LD B,HIGH (CMOSD_RD_WR)
IN L,(C)
POP BC
LD A,L
AND A
RET
; ¢å®¤¥: H- ¤à¥á ï祩ª¨
; L-çâ® â㤠§ ¯¨á âì
WRITECMOS PUSH BC
LD BC,CMOSD_SET_ADR
OUT (C),H
LD B,HIGH (CMOSD_RD_WR)
OUT (C),L
POP BC
RET
JP_EMU 0X3C30 ; IN A, (0X1F)
DUPL 0X3D2F-$,0;XFF
NOP
RET
JP_EMU 0X3D4D ; OUT (0XFF), A
JP_EMU 0X3D9A ; OUT (0X1F), A
JP_EMU 0X3DA6 ; IN A, (0XFF)
JP_EMU 0X3DB5 ; IN A, (0X1F)
JP_EMU 0X3DBA ; IN A, (0X1F)
JP_EMU 0X3DD5 ; OUT (0XFF), A
JP_EMU 0X3E30 ; IN A, (0X1F)
JP_EMU 0X3E3A ; IN A, (0X1F)
JP_EMU 0X3E44 ; OUT (0X7F), A
DUPL 0X3E49-$,0;XFF
JP ADR_0X3E4C ; ¤«ï ¤à¥á 0X3E4C
; JP_EMU 0X3E4C ; OUT (0X7F), A
DUPL 0X3E4C-$,0;XFF
OUT (EXIT_PORT),A
JR 0X3E49
JP_EMU 0X3E50 ; IN A, (0X3F)
JP_EMU 0X3E78 ; IN A, (0X3F)
JP_EMU 0X3E7E ; OUT (0X3F), A
JP_EMU 0X3E87 ; IN A, (0X3F)
JP_EMU 0X3E95 ; OUT (0X3F), A
JP_EMU 0X3EB5 ; IN A, (0X1F)
JP_EMU 0X3EBC ; IN A, (0X3F)
JP_EMU 0X3EC9 ; OUT (0X1F), A
JP_EMU 0X3ECE ; IN A, (0XFF)
JP_EMU 0X3EDF ; OUT (0X1F), A
DUPL 0X3EF3-$,0;XFF ; IN H, (C)
OUT (EXIT_PORT),A
JR JUMP_0X3EF3
JR JUMP_0X3EF5 ; IN A, (0XFF)
EXIT_0X3EF5 OUT (EXIT_PORT),A
JUMP_0X3EF5 JP ADR_0X3EF5
; JP_EMU 0X3EF5 ; IN A, (0XFF)
JP_EMU 0X3EFE ; IN A, (0X7F)
JUMP_0X3EF3 JP ADR_0X3EF3
JP_EMU 0X3F1B ; OUT (0X5F), A
JP_EMU 0X3F25 ; OUT (0X1F), A
JP_EMU 0X3F33 ; IN A, (0X1F)
DUPL 0X3F40-$,0;XFF ; ¤«ï ¤à¥á 0x3EF3
JP ADR_0X3EF3
JP_EMU 0X3F4D ; OUT (0X1F), A
JP_EMU 0X3F55 ; IN A, (0X3F)
JP_EMU 0X3F5A ; IN A, (0X5F)
JP_EMU 0X3F69 ; IN A, (0X3F)
JP_EMU 0X3F72 ; IN A, (0X5F)
JP_EMU 0X3FBC ; IN A, (0XFF) ;§ ¯¨áì ᥪâ®à
DUPL 0X3FC7-$,0;XFF
JUMP_0X3FF0 JP ADR_0X3FF0
JP_EMU 0X3FCA ; IN A, (0XFF) ;§ ¯¨áì ᥪâ®à
JP_EMU 0X3FD1 ; OUTI ;§ ¯¨áì ᥪâ®à
JP_EMU 0X3FD7 ; IN A, (0XFF) ;ç⥨¥ ᥪâ®à
JUMP_0X3FEC JP ADR_0X3FEC
JUMP_0X3FF3 JP ADR_0X3FF3
JP_EMU 0X3FE5 ; IN A, (0XFF) ;ç⥨¥ ᥪâ®à
; JP_EMU 0X3FEC ; INI ;ç⥨¥ ᥪâ®à
DUPL 0X3FEC-$,0;XFF
OUT (EXIT_PORT),A
JR JUMP_0X3FEC
; DUPL 0X3FF0-$,0 ; OUT (C), A
OUT (EXIT_PORT),A
DB 0X18 ; JR 0X3FC7
; DUPL 0X3FF5-$,0 ; IN A, (C)
OUT (EXIT_PORT),A
JP JUMP_0X3FF3
DUPL 0X3FF8-$,0
DB "EVOSFE"
DW DATA_VERS