Changed procedure "BANK"

This commit is contained in:
Anatoliy Belyanskiy 2023-07-07 01:39:06 +10:00
parent 305a557e34
commit aae08dd436
9 changed files with 226 additions and 125 deletions

View File

@ -347,7 +347,7 @@ ADRST10: ;DS 512 ;,0
;...............................................[LOW ADDRESS ]:
; 0 1 2 3 4 5 6 7 8 9 DEC HEX
DB low F_START, low CHNDISK, low CURRDSK, low DISKINF, low NOPS, low NOPS, low NOPS, low NOPS, low SCANDRV, low BOOTDSK ; 0 00..09
DB low CREATE, low CREAT_N, low NOPS, low NOPS, low DELETE, low NOPS, low RENAME, low OPEN_FN, low CLOSE_FN, low READ ; 1 A0..13
DB low CREATE, low CREAT_N, low NOPS, low NOPS, low DELETE, low NOPS, low RENAME, low OPEN_FN, low CLOSE_FN, low READ ; 1 0A..13
DB low WRITE, low MOVE_FP, low ATTRIB, low GET_D_T, low PUT_D_T, low F_FIRST, low F_NEXT, low MKDIR, low RMDIR, low CHDIR ; 2 14..1D
DB low CURRDIR, low NOPS, low NOPS, low SYSTIME, low SETTIME, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS ; 3 1E..27
DB low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low WAITKEY, low SCANKEY ; 4 28..31
@ -512,8 +512,12 @@ DEPLOY:
POP AF
OUT (SLOT3),A
LD A,DRVPAGE
CALL BANK
;!TEST
;LD A,DRVPAGE
;CALL BANK
SET_PAGE_X DRVPAGE
;
PUSH AF
LD HL,DRV_CONTENT
LD DE,#C000

View File

@ -22,8 +22,6 @@
; INPUT: HL - "C:\DIR1\DIR2\filename.ext",#00
; A - ATTRIB
; B - MODE
@ -59,7 +57,7 @@ WATTRIB PUSH AF
POP BC
RET C
SET 7,(IY+_sFM.ACCESS_MODE)
RES 3,B ;CLEAR LABEL ATTR ;R03
RES 3,B ;CLEAR LABEL ATTR ;R03 ;!HARDCODE attribute bit
LD (IY+_sFM.ATTRIBUT),B
PUSH BC
CALL CLOSE
@ -153,8 +151,13 @@ DELETE LD DE,MASKARE
CALL LOADDIR
CALL SEARCH
RET C
DELFILE LD A,DIRPAGE
CALL BANK
DELFILE:
;!TEST
;LD A,DIRPAGE
;CALL BANK
SET_PAGE_X DIRPAGE
;
;PUSH AF
LD (IX+_sFM.NAME),#E5
LD E,(IX+_sFM.ST_CLUSTER)
@ -216,8 +219,13 @@ RENAME PUSH DE
LD A,DSS_Error.sys.FILE_EXISTS
CCF
RET C
LD A,DIRPAGE
CALL BANK
;!TEST
;LD A,DIRPAGE
;CALL BANK
SET_PAGE_X DIRPAGE
;
LD HL,MASKARE
LD D,XH
LD E,XL
@ -320,23 +328,29 @@ CLOSE: ;R08
LD C,(IY+_sFM.HANDLE)
LD B,(IY+_sFM.HANDLE+1)
JR CLOSE2
CLOSE1 ADD HL,DE
CLOSE1: ADD HL,DE
DEC BC
CLOSE2 LD A,B
CLOSE2: LD A,B
OR C
JR NZ,CLOSE1
LD D,YH
LD E,YL
EX DE,HL
PUSH HL
LD A,DIRPAGE
CALL BANK
;!TEST
;LD A,DIRPAGE
;CALL BANK
SET_PAGE_X DIRPAGE
;
POP HL
LD BC,#0020
LDIR
OUT (SLOT3),A
CALL SAVEDIR
NOTMODF LD A,(ACCESS)
NOTMODF:
LD A,(ACCESS)
CALL RES_FM
RET
@ -347,15 +361,20 @@ ACCESS: DB #00
HANDBUF: BLOCK HANDBUF.SIZE,0
WRT_HND:
;!TEST
;LD A,DIRPAGE
;CALL BANK
SET_PAGE_X DIRPAGE
;
WRT_HND LD A,DIRPAGE
CALL BANK
PUSH AF
LD IX,DIR
EXX
LD DE,0
EXX
WRT_HN1 LD A,(IX+00)
WRT_HN1:
LD A,(IX+00)
OR A
JR Z,WRT_HN2
CP #E5
@ -369,7 +388,8 @@ WRT_HN1 LD A,(IX+00)
SCF
RET
WRT_HN2 LD D,XH
WRT_HN2:
LD D,XH
LD E,XL
LD HL,HANDBUF
LD BC,HANDBUF.SIZE
@ -390,7 +410,8 @@ WRT_HN2 LD D,XH
AND A
RET
DOSNAME INC B
DOSNAME:
INC B
DEC B
JP Z,GETNAME
DEC B
@ -401,25 +422,26 @@ DOSNAME INC B
; HL - 11 bytes filename "FILENAMEEXT"
; DE - DOS filename "FILENAME.EXT",0
GETNAME LD BC,#08FF
GETN1 LD A,(HL)
GETNAME:
LD BC,#08FF
GETN1: LD A,(HL)
CP " "
JR NZ,GETN3
GETN2 INC HL
GETN2: INC HL
DJNZ GETN2
JR GETN4
GETN3 LDI
GETN3: LDI
DJNZ GETN1
GETN4 LD A,(HL)
GETN4: LD A,(HL)
CP " "
LD A,"."
JR NZ,GETN5
LD A,#00
GETN5 LD (DE),A
GETN5: LD (DE),A
INC DE
RET Z
LD B,#03
GETN6 LD A,(HL)
GETN6: LD A,(HL)
CP " "
RET Z
LDI
@ -428,12 +450,13 @@ GETN6 LD A,(HL)
DJNZ GETN6
RET
DTABUF DW #0000
CURHND DW #0000
NO_NEXT DB #00
FNDMODE DB #00
DTABUF: DW #0000
CURHND: DW #0000
NO_NEXT: DB #00
FNDMODE: DB #00
F_FIRST LD (ACCESS),A
F_FIRST:
LD (ACCESS),A
LD (DTABUF),DE
LD A,B
LD (FNDMODE),A
@ -456,7 +479,7 @@ F_FIRST LD (ACCESS),A
LD A,(ACCESS)
LD (DE),A
INC DE
FIND_S LD BC,#0020
FIND_S: LD BC,#0020
ADD IX,BC
LD (CURHND),IX
LD HL,HANDBUF+12
@ -475,13 +498,14 @@ FIND_S LD BC,#0020
LD (NO_NEXT),A
XOR A
RET
FIND_M2 CALL GETNAME
FIND_M2:
CALL GETNAME
LD A,#FF
LD (NO_NEXT),A
XOR A
RET
F_NEXT LD A,(NO_NEXT)
F_NEXT: LD A,(NO_NEXT)
OR A
LD A,DSS_Error.sys.INVALID_ACCESS
SCF
@ -503,9 +527,13 @@ F_NEXT LD A,(NO_NEXT)
INC DE
JP FIND_S
NSEARCH EX AF,AF'
LD A,DIRPAGE
CALL BANK
NSEARCH:
EX AF,AF'
;!TEST
;LD A,DIRPAGE
;CALL BANK
SET_PAGE_X DIRPAGE
;
PUSH AF
EX AF,AF'
CPL
@ -516,16 +544,21 @@ NSEARCH EX AF,AF'
EXX
JP SEARCH1
DSEARCH LD A,#10
DSEARCH:
LD A,#10
CALL ASEARCH
RET NC
LD A,4
RET
SEARCH LD A,#23 ;%00100011
ASEARCH EX AF,AF' ; 76ADLSHR
LD A,DIRPAGE
CALL BANK
SEARCH: LD A,#23 ;%00100011 ;!!!!! ă ‘ ©¬ ­  #27 - %0010'0111
ASEARCH:
EX AF,AF' ; 76ADLSHR
;!TEST
;LD A,DIRPAGE
;CALL BANK
SET_PAGE_X DIRPAGE
;
PUSH AF
EX AF,AF'
CPL
@ -534,7 +567,8 @@ ASEARCH EX AF,AF' ; 76ADLSHR
EXX
LD DE,0
EXX
SEARCH1 LD A,(IX+00)
SEARCH1:
LD A,(IX+00)
OR A
JR Z,SEARCH4
CP #E5
@ -547,12 +581,14 @@ SEARCH1 LD A,(IX+00)
LD E,XL
LD B,11
EX DE,HL
SEARCH2 LD A,(DE)
SEARCH2:
LD A,(DE)
CP '?'
JR Z,SEARCH5
CP (HL)
JR NZ,SEARCH3
SEARCH5 INC HL
SEARCH5:
INC HL
INC DE
DJNZ SEARCH2
LD D,XH
@ -566,13 +602,15 @@ SEARCH5 INC HL
AND A
RET
SEARCH3 EXX
SEARCH3:
EXX
INC DE
EXX
LD DE,#0020
ADD IX,DE
JR NC,SEARCH1
SEARCH4 POP AF
SEARCH4:
POP AF
OUT (SLOT3),A
LD A,DSS_Error.sys.FILE_NOT_FOUND
SCF
@ -730,8 +768,12 @@ SUBDIR3 CALL FINDDIR
; FIND "MASKAREA" IN DIRECTORY
FINDDIR LD A,DIRPAGE
CALL BANK
FINDDIR:
;!TEST
;LD A,DIRPAGE
;CALL BANK
SET_PAGE_X DIRPAGE
;
PUSH AF
LD IX,DIR
.F_01: LD A,(IX+00)
@ -875,8 +917,11 @@ LOADDIR:
LD IX,0
LD B,A
CALL MOVE_FP
LD A,DIRPAGE
CALL BANK
;!TEST
;LD A,DIRPAGE
;CALL BANK
SET_PAGE_X DIRPAGE
;
PUSH AF
;!TEST no ldir
;LD HL,#C000
@ -924,8 +969,11 @@ SAVEDIR XOR A
LD IX,0
LD B,0
CALL MOVE_FP
LD A,DIRPAGE
CALL BANK
;!TEST
;LD A,DIRPAGE
;CALL BANK
SET_PAGE_X DIRPAGE
;
PUSH AF
LD A,(FatBuffer.DRIVE)
LD (IY+_sFM.DRIVE),A
@ -960,21 +1008,23 @@ RTD1S LD A,(FatBuffer.DRIVE)
AND A
RET
DIRSIZE DW 0
DIRSIZE: WORD 0
;!FIXIT ŹĄŕĄ¤Ą« âě Żŕ®áâ® ­  áâŕăŞâăŕă, ç⮡ Ż®«ăç âě ­®¬Ąŕ  áâŕ ­¨ć ˇĄ§ í⮣® ŁĄ¬®ŕ 
BANK: LD C,A
LD B,0
LD HL,BANKTBL
ADD HL,BC
IN A,(SLOT3)
LD C,SLOT3
OUTI
RET
;!TEST
;BANK:
; LD C,A
; LD B,0
; LD HL,BANKTBL
; ADD HL,BC
; IN A,(SLOT3)
; LD C,SLOT3
; OUTI
; RET
;
BANKTBL:
BLOCK USING_MEMPAGES+1,#FF
BANKTBL: BLOCK USING_MEMPAGES+1,#FF
;!TODO
;G_HAND1 POP IX
; POP HL
; POP DE
@ -1082,22 +1132,18 @@ BANKTBL:
;HANDTA DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
; DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
MASKARE
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
MASKARE: BLOCK 32,0 ;!HARDCODE Ż®çĄ¬ă 32?
; HL - MASK "file*.t??"
; DE - 11 bytes filename
; RET: C=2 FILE WITHOUT EXTENTION
; C=1 FILE WITH EXTENTION
MASK PUSH HL
PUSH DE
LD H,D
LD L,E
INC DE
LD (HL),#20
LD BC,10
LD (HL),' '
LD BC,10 ;!HARDCODE = size (FileName + Extension - 1)
LDIR
POP DE
POP HL
@ -1610,8 +1656,11 @@ MKD03 INC HL
DJNZ MKD03
INC HL
PUSH HL
LD A,DIRPAGE
CALL BANK
;!TEST
;LD A,DIRPAGE
;CALL BANK
SET_PAGE_X DIRPAGE
;
POP HL
PUSH AF
LD A,(DIR)

View File

@ -381,8 +381,11 @@ S4C02 INC HL
; JP C,RDERR1
LD HL,0
LD (FATCASH),HL
LD A,FATPAGE
CALL BANK
;!TEST
;LD A,FATPAGE
;CALL BANK
SET_PAGE_X FATPAGE
;
PUSH AF
XOR A
CALL RE_FAT
@ -457,8 +460,11 @@ SAVE_CUR_PATH
PUSH BC
PUSH AF
;
LD A,ENVPAGE
CALL BANK
;!TEST
;LD A,ENVPAGE
;CALL BANK
SET_PAGE_X ENVPAGE
;
PUSH AF
CALL CURRDSK
@ -496,8 +502,12 @@ BACK_CUR_PATH:
PUSH BC
PUSH AF
;
LD A,ENVPAGE
CALL BANK
;!TEST
;LD A,ENVPAGE
;CALL BANK
SET_PAGE_X ENVPAGE
;
PUSH AF
LD HL,TMP_CURDIR

View File

@ -1,3 +1,14 @@
;
MACRO SET_PAGE_X new_page
LD A,(BANKTBL+new_page)
LD B,A
LD C,SLOT3
IN A,(SLOT3)
OUT (C),B
ENDM
;
;
MACRO _mSavePath
IF SAVE_PATH_MACRO

View File

@ -28,8 +28,12 @@ ENVIRON:
RET
INITENV:
LD A,ENVPAGE
CALL BANK
;!TEST
;LD A,ENVPAGE
;CALL BANK
SET_PAGE_X ENVPAGE
;
PUSH AF
;!TEST
LD A,(BOOTDRV)
@ -56,8 +60,11 @@ INITENV:
READENV:
PUSH HL
LD A,ENVPAGE
CALL BANK
;!TEST
;LD A,ENVPAGE
;CALL BANK
SET_PAGE_X ENVPAGE
;
LD H,A
LD C,SLOT3
IN L,(C)
@ -88,8 +95,11 @@ READENV:
GETENV: PUSH DE
CALL ENV_EX
LD A,ENVPAGE
CALL BANK
;!TEST
;LD A,ENVPAGE
;CALL BANK
SET_PAGE_X ENVPAGE
;
EX AF,AF'
CALL F_ENV
@ -111,9 +121,11 @@ GE_1: EX AF,AF'
RET
SETENV: CALL ENV_EX
;
LD A,ENVPAGE
CALL BANK
;!TEST
;LD A,ENVPAGE
;CALL BANK
SET_PAGE_X ENVPAGE
;
PUSH AF
;
CALL F_ENV

View File

@ -560,8 +560,11 @@ RELATIVE_DIR EQU 0
ABSOLUTE_DIR EQU 1
FINDPATH
LD A,ENVPAGE
CALL BANK
;!TEST
;LD A,ENVPAGE
;CALL BANK
SET_PAGE_X ENVPAGE
;
PUSH AF
CALL CURRDSK
@ -871,7 +874,7 @@ NOINK LD A,H
SUB B
LD (SECBUF),A
LD SP,EXEBUFF+510 ;R02
LD A,#FF
LD A,DSS_PAGE
OUT (SLOT1),A
OUT (SLOT2),A
OUT (SLOT3),A
@ -1023,7 +1026,7 @@ NOINK2 CALL GETMEM
SUB B
LD (SECBUF),A
LD SP,EXEBUFF+510
LD A,#FF
LD A,DSS_PAGE
OUT (SLOT1),A
OUT (SLOT2),A
OUT (SLOT3),A

View File

@ -61,8 +61,13 @@ R_F_FAT EX DE,HL
LD A,10
RET C
EXX
LD A,FATPAGE
CALL BANK
;!TEST
;LD A,FATPAGE
;CALL BANK
SET_PAGE_X FATPAGE
;
EXX
PUSH HL
PUSH AF
@ -218,8 +223,11 @@ W_T_FAT PUSH DE
LD A,10
RET C
EXX
LD A,FATPAGE
CALL BANK
;!TEST
;LD A,FATPAGE
;CALL BANK
SET_PAGE_X FATPAGE
;
EXX
PUSH HL
PUSH AF
@ -342,8 +350,11 @@ RE_FAT PUSH HL
RET
WR_FAT EXX
LD A,FATPAGE
CALL BANK
;!TEST
;LD A,FATPAGE
;CALL BANK
SET_PAGE_X FATPAGE
;
EXX
PUSH AF
CALL WR_FAT_

View File

@ -613,7 +613,7 @@ NXTPART LD DE,#10
PARTIT IN A,(SLOT3)
PUSH AF
LD A,#FF
LD A,DSS_PAGE
OUT (SLOT3),A
CALL PARTIT1
POP AF
@ -701,7 +701,7 @@ LOADSEC PUSH IY
LD IX,(CURSECL)
LD HL,(CURSECH)
LD DE,PART
LD BC,#0155
LD BC,1*256 + BIOS.DRV_READ
LD A,(DRV)
RST ToBIOS
POP IY

View File

@ -846,21 +846,23 @@ CONTROL CALL READ_M
RET NC
CALL MCORECT
LD A,#00
LD (REDY+1),A
LD (REDY),A
RET
REFRESH LD A,#01
OR A
RET NZ
REDY LD A,#00
; OR A
; RET NZ
REDY+1: LD A,#00
;????? ŻŽçĽŹă § ŞŽŹŹĽ­â¨ŕŽ˘ ­­Ž ˘ Žŕ¨Ł¨­ ŤĽ?
;OR A
;RET NZ
;
CALL RESTORE
LD HL,(PIX_X)
LD DE,(PIX_Y)
CALL MOUSE
LD A,#FF
LD (REDY+1),A
LD (REDY),A
RET
MODE_M DB #03
@ -892,26 +894,25 @@ SKIPXF DW 0
REALXS DW 0
REALYS DW 0
Xx EQU #00
Ww EQU #FE
Nn EQU #FF
; Xx EQU #00
; Ww EQU #FE
; Nn EQU #FF
;MS_BMP
M_IMAGE:
DB Xx,Xx,Nn,Nn,Nn,Nn,Nn,Nn,Nn,Nn
DB Xx,Ww,Xx,Nn,Nn,Nn,Nn,Nn,Nn,Nn
DB Xx,Ww,Ww,Xx,Nn,Nn,Nn,Nn,Nn,Nn
DB Xx,Ww,Ww,Ww,Xx,Nn,Nn,Nn,Nn,Nn
DB Xx,Ww,Ww,Ww,Ww,Xx,Nn,Nn,Nn,Nn
DB Xx,Ww,Ww,Ww,Ww,Ww,Xx,Nn,Nn,Nn
DB Xx,Ww,Ww,Ww,Ww,Ww,Ww,Xx,Nn,Nn
DB Xx,Ww,Ww,Ww,Ww,Xx,Xx,Xx,Xx,Nn
DB Xx,Ww,Ww,Xx,Ww,Xx,Nn,Nn,Nn,Nn
DB Xx,Ww,Xx,Xx,Ww,Ww,Xx,Nn,Nn,Nn
DB Xx,Xx,Nn,Nn,Xx,Ww,Xx,Nn,Nn,Nn
DB Xx,Nn,Nn,Nn,Xx,Ww,Ww,Xx,Nn,Nn
DB Nn,Nn,Nn,Nn,Nn,Xx,Xx,Nn,Nn,Nn
DB Nn,Nn,Nn,Nn,Nn,Nn,Nn,Nn,Nn,Nn
DH "00 00 FF FF FF FF FF FF FF FF"
DH "00 FE 00 FF FF FF FF FF FF FF"
DH "00 FE FE 00 FF FF FF FF FF FF"
DH "00 FE FE FE 00 FF FF FF FF FF"
DH "00 FE FE FE FE 00 FF FF FF FF"
DH "00 FE FE FE FE FE 00 FF FF FF"
DH "00 FE FE FE FE FE FE 00 FF FF"
DH "00 FE FE FE FE 00 00 00 00 FF"
DH "00 FE FE 00 FE 00 FF FF FF FF"
DH "00 FE 00 00 FE FE 00 FF FF FF"
DH "00 00 FF FF 00 FE 00 FF FF FF"
DH "00 FF FF FF 00 FE FE 00 FF FF"
DH "FF FF FF FF FF 00 00 FF FF FF"
DH "FF FF FF FF FF FF FF FF FF FF"
BLOCK 256-($-M_IMAGE),0
.Size EQU $-M_IMAGE