промежуточный

This commit is contained in:
Anatoliy Belyanskiy 2023-08-06 06:16:13 +10:00
parent c50040b715
commit f6e41854a8
13 changed files with 374 additions and 265 deletions

View File

@ -10,12 +10,11 @@
;=====================================================================[]
;Rev. Date Name Description
;---------------------------------------------------------------------[]
;R13 03-08-2023 BAO „®¡ ¢«¥­ ¢ë¢®¤ ­®¬¥à  ¢¥àᨨ Š®­á®«¨ ¤«ï ª®¬ ­¤ë VERSION
;R12 23-07-2023 BAO „®¡ ¢«¥­  ª®¬ ­¤  REBOOT - ¯¥à¥§ £à㧪  á ¯®«­®© ®ç¨á⪮© ¯ ¬ïâ¨
;R11 20-07-2023 BAO <09>®¯à ¢«¥­  äã­ªæ¨ï LCPIR ¤«ï ª®à४⭮£® ¢ë¡®à  á®®¡é¥­¨ï ®¡ ®è¨¡ª¥ ¯à¨ ­®¬¥à¥ ®è¨¡ª¨ > § £®â®¢«¥­­ëå á®®¡é¥­¨©
;R10 16-05-2023 BAO TE•T MODE AND TEXT ARE RESTORED AFTER RETURNING FROM THE APP
;R09 ??-??-???? DNS ;????? ????
;R08 21-02-2003 DNS FIX BUG IN BAT-PARSER, IT SPLIT STRINGS
; WHEN LINE BEGAN AT #xx00 OFFSET
;R08 21-02-2003 DNS FIX BUG IN BAT-PARSER, IT SPLIT STRINGS WHEN LINE BEGAN AT #xx00 OFFSET
;R07 14-12-2002 DNS PARSING BATCH LINE
;R06 12-12-2002 DNS ADD %0, %1, %2 ...
;R05 11-12-2002 DNS IMPLEMENTED %VAR%
@ -25,8 +24,10 @@
;R01 19-11-2002 DNS ADD ENVIRONMENT %VARIABLE% IN ECHO
;=====================================================================[]
includelua 'Shared_includes/lua/Functions.lua'
include 'shared_includes/constants/bios_equ.inc'
include 'shared_includes/constants/dss_equ.inc'
include 'console/version.inc'
;
; Standart EQU section
@ -105,7 +106,7 @@ FPRIMAR LD C,Dss.CTRLKey
JP CONSOLE
;R07
MAKE_BATCH_PRM_ARRAY
MAKE_BATCH_PRM_ARRAY:
DEC HL
B_SKIP_SPACE
INC HL
@ -122,10 +123,10 @@ B_SKIP_SPACE
LD (HL),D
INC HL
EX DE,HL
B_FIND_SPACE
B_FIND_SPACE:
INC HL
LD A,(HL)
CP "!"
CP " "+1
JR NC,B_FIND_SPACE
LD (HL),0
OR A
@ -187,13 +188,13 @@ ADDBAT PUSH DE
JR NZ,BATLINE
EX DE,HL
LD DE,CMDLINE
AND A
;AND A
SBC HL,DE
RET Z
JR Z,.exit
LD A,L
LD (CMDLINE-1),A
CALL CMDMODE
LD A,(BAT_FM)
.exit: LD A,(BAT_FM)
LD C,Dss.Close
RST ToDSS
RET
@ -214,24 +215,22 @@ NBLINE CALL MOVWORD
LD DE,CMDLINE
POP HL
JP NBLINE
MOVWORD LD A,(BAT_LEN)
MOVWORD: LD A,(BAT_LEN)
LD B,A
M00WORD LD A,(HL)
.loop: LD A,(HL)
LD (DE),A
CP #20
JR C,M01WORD
CP ' '
INC HL
JR C,.loop2
INC DE
DJNZ M00WORD
DJNZ .loop
SCF
RET
M01WORD LD A,(HL)
CP #20
.loop2: LD A,(HL)
CP ' '
RET NC
INC HL
DJNZ M01WORD
DJNZ .loop2
;R08
PUSH DE
CALL READBAT
@ -240,7 +239,7 @@ M01WORD LD A,(HL)
LD A,(BAT_LEN)
LD B,A
OR A
JR NZ,M01WORD
JR NZ,.loop2
SCF
;R08
RET
@ -326,10 +325,12 @@ CONSOLE:
RE_: CALL GETXY
CALL GETPATH
; CALL VERS
LD HL,CMDLINE
LD DE,CMDLINE+1
;!TEST
LD HL,CMDLINE-1
LD DE,CMDLINE
LD (HL),0
LD BC,#7F
LD BC,#7F ;!HARDCODE ¤«¨­  CMDLINE
LDIR
CALL INPUT
CALL CRLF
@ -344,13 +345,13 @@ GETXY LD C,Dss.Cursor
RST ToDSS
JP LOCAT
INPUT XOR A
INPUT: XOR A
LD (POSIT),A
LD (SHIFT),A
LD (PRINT_S.SHIFT),A
LD (LEN_NEW),A
LD IX,CMDLINE-2
CALL CEDIT
CALL RES_CUR
CALL RES_CUR ;!FIXIT scroll ¯®ç¨­¨âì, âãâ ⮦¥ ¢«¨ï¥â ¢à®¤¥
RET
COMP: CALL EVALCMD ;R05
@ -530,9 +531,9 @@ RUN_BAT CALL BATCH
RET
; !! <09>¥ ¤¥« âì ®¤­ã ª®¬ ­¤ã > 256 ᨬ¢®«®¢)) !!
BATLIST DZ 'PAUSE' : DW CPAUSE
BATLIST: DZ 'PAUSE' : DW CPAUSE
DZ 'REM' : DW CREM
CMDLIST DZ 'CD' : DW CCHDIR
CMDLIST: DZ 'CD' : DW CCHDIR
DZ 'DIR' : DW DIR
DZ 'ECHO' : DW CECHO
DZ 'PATH' : DW CPATH
@ -710,14 +711,14 @@ CPAUSE LD DE,PAUSMSG
RET
;R09
PATHSTR DB "PATH=",0
CPATH LD A,(DE)
OR A
JP Z,PRNEPATH
INC DE
CP 9
CP 9 ; Tab
JR Z,CPATH
CP "!"
JR C,CPATH
@ -751,7 +752,6 @@ PRNEPATH
RST ToDSS
CALL CRLF
RET
;R09
CSET LD A,(DE)
@ -834,7 +834,7 @@ ECHO_FR LD A,#FF
;R04
EVALCMD
EVALCMD:
XOR A
LD HL,CMDLINE-1
LD C,(HL)
@ -862,13 +862,13 @@ MOVLBAK LD A,(HL)
; HL - STRING WITH %VAR%
EVALSTR
;R04 LD DE,DTA
VARLOOP
;VARLOOP
LD A,(HL)
CP "%"
JR Z,TVARIABLE
VARL1 LDI
OR A
JR NZ,VARLOOP
JR NZ,EVALSTR
LD BC,0
LD (TVAR_PNT),BC
;R04 LD HL,DTA
@ -887,7 +887,7 @@ IEIGHT DB "EIGHT",0
ININE DB "NINE",0
;R06
BAT_PRM_ARRAY
BAT_PRM_ARRAY:
DW IZERO, IONE, ITWO, ITHREE, IFOUR, IFIVE, ISIX, ISEVEN, IEIGHT, ININE
DW 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
;R06
@ -934,7 +934,7 @@ MVBTP LD A,(HL)
JR NZ,MVBTP
DEC DE
NOBTP POP HL
JP VARLOOP ;R06
JP EVALSTR ;R06
;R06
TVAR1 PUSH HL
@ -960,7 +960,7 @@ TNOVAR POP HL
INC HL
LD BC,0
LD (TVAR_PNT),BC
JP VARLOOP
JP EVALSTR
;R01
COMPARE LD A,(DE)
@ -1647,28 +1647,16 @@ hex8: push af
VERS: LD C,Dss.Version
RST ToDSS
PUSH BC
PUSH DE
LD L,D
LD H,0
LD H,E
LD DE,PRM1
CALL .num_ver ;decim2 ­®¬¥à ¢¥àᨨ (0..9)
LD A,'.'
LD (DE),A
INC DE
POP HL
LD H,0
CALL .num_mod ;decim2 ­®¬¥à ¬®¤¨ä¨ª æ¨¨ (0..99)
POP HL
LD A,'.'
LD (DE),A
INC DE
CALL .num_build ;decim3 ­®¬¥à ¡¨«¤  (0..999)
XOR A
LD (DE),A
CALL .Set_Ver_to_PRM ; set DSS version
;R13
LD HL,256*CONSOLE_MODF + CONSOLE_VERS
LD BC,CONSOLE_BUILD
LD DE,PRM2
CALL .Set_Ver_to_PRM ; set Shell version
;R13
LD DE,VERSMSG
JP MESSAGE
@ -1707,6 +1695,32 @@ VERS: LD C,Dss.Version
ld (de),a ; á®åà. ¢ ¡ãä¥à¥
inc de
ret
;
; ‚室:
; L - ­®¬¥à ¢¥àᨨ (0..9)
; H - ­®¬¥à ¬®¤¨ä¨ª æ¨¨ (0..99)
; BC - ­®¬¥à ¡¨«¤  (0..999)
; DE - ­®¬¥à ¯ à ¬¥âà 
.Set_Ver_to_PRM:
PUSH BC
PUSH HL
LD H,0
CALL .num_ver ;decim2 ­®¬¥à ¢¥àᨨ (0..9)
LD A,'.'
LD (DE),A
INC DE
POP HL
LD L,H
LD H,0
CALL .num_mod ;decim2 ­®¬¥à ¬®¤¨ä¨ª æ¨¨ (0..99)
POP HL
LD A,'.'
LD (DE),A
INC DE
CALL .num_build ;decim3 ­®¬¥à ¡¨«¤  (0..999)
XOR A
LD (DE),A
RET
/*
VERS:
LD C,Dss.Version
@ -1777,8 +1791,7 @@ CEXIT: LD A,(TASKX)
DEC A
RET Z
POP HL
QUIT: LD B,0
LD C,Dss.Exit
QUIT: LD BC,Dss.Exit
RST ToDSS
RET
@ -1804,7 +1817,7 @@ ERR_MSG: INC DE
MESSAGE: CALL FMESAGE
CALL PRINTZ
CALL GETXY
;CALL GETXY
RET
FMESAGE: INC DE
@ -1847,12 +1860,14 @@ PUTPRMA: LD A,(HL)
// ret
PRINTZ: LD A,(HL)
INC HL
OR A
RET Z
CP "%"
JR NZ,.char
LD A,(HL)
INC HL
SUB "1"
@ -1902,20 +1917,32 @@ DIR3MSG EQU 10
HELPMSG EQU 11
MSG0: DB 0
; 0
DB "Volume in drive %1 has no label",CR,LF ; !FIXIT
DB "Volume Serial number is %2",CR,LF
DB "Directory of %3",CR,LF,CR,LF,0
DB "Estex DSS: Version %1",CR,LF,0 ;R02
; 1
DB "Estex DSS: Version %1",CR,LF
DB "Console: Version %2",CR,LF,0 ;R13
; 2
DB "Current date: %1",CR,LF,0
; 3
DB "Current time: %1",CR,LF,0
; 4
DB "Press any key to continue . . .",CR,LF,0
; 5
DB "Invalid parametr",CR,LF,0
; 6
DB "Echo is %1",CR,LF,0
; 7
DB "on",0
; 8
DB "off",0
; 9
DB " %1 file(s) %2 bytes",CR,LF,CR,LF,0
; FILENAME EXT SIZE DATE TIME
; 10 FILENAME EXT SIZE DATE TIME
DB "%1 %2 %3 %4 %5",CR,LF,0
; 11
DB "COMMANDS:",CR,LF,CR,LF
DB "DIR REN | RENAME PATH HELP ",CR,LF
DB "CD | CHDIR DEL | ERASE SET VER | VERSION ",CR,LF
@ -1935,8 +1962,8 @@ ERR0: DB #00
DZ "File not found" ; 03 - ä ©« ­¥ ®¡­ à㦥­
DZ "Path not found" ; 04 - ­¥¢¥à­ë© ¯ãâì
DZ "Invalid handle" ; 05 - ­¥áãé¥áâ¢ãî騩 ä ©«®¢ë© ¬ ­¨¯ã«ïâ®à
DZ "No free filehandle" ; 06 - ­¥â ᢮¡®¤­®£® ä ©«®¢®£® ¬ ­¨¯ã«ïâ®à 
DZ "File exist" ; 07 - ä ©« áãé¥áâ¢ã¥â
DZ "Too many open files" ; 06 - ­¥â ᢮¡®¤­®£® ä ©«®¢®£® ¬ ­¨¯ã«ïâ®à 
DZ "File already exist" ; 07 - ä ©« áãé¥áâ¢ã¥â
DZ "File read only" ; 08 - ä ©« ⮫쪮 ¤«ï ç⥭¨ï
DZ "Root overflow" ; 09 - ¯¥à¥¯®«­¥­¨¥ ROOT (ª®à­¥¢®£® ª â «®£ )
DZ "No free space" ; 10 - ­¥â ᢮¡®¤­®£® ¬¥áâ  ­  ¤¨áª¥
@ -1959,14 +1986,14 @@ ERR0: DB #00
DZ "Drive failure" ; 27 - á¡®© ¤¨áª 
DZ "Extended error 28"
DZ "Extended error 29"
DZ "No free memory" ; 30 - ­¥¤®áâ â®ç­® ¯ ¬ïâ¨
DZ "Not enough memory" ; 30 - ­¥¤®áâ â®ç­® ¯ ¬ïâ¨
DZ "Invalid memory block" ; 31 - ­¥áãé¥áâ¢ãî騩 ¡«®ª ¯ ¬ïâ¨
DZ "Extended error 32"
DZ "Maximum PATH size exceeded" ; 33 - ¯à¥¢ë襭 ¬ ªá¨¬ «ì­ë© à §¬¥à ¯¥à¥¬¥­­®©
DZ "Extended error 34"
DZ "Too many files in directory" ; 35 - ᫨誮¬ ¬­®£® ä ©«®¢ ¢ ¤¨à¥ªâ®à¨¨
DZ "Directory nesting too large or number of folders > 1023" ; 36 - ᫨誮¬ ¡®«ìè ï ¢«®¦¥­­®áâì ª â «®£®¢ ¨«¨ ª®«¨ç¥á⢮ ¯ ¯®ª > 1023
DZ "Operation interrupted by user" ; 37 - ®¯¥à æ¨ï ¯à¥à¢ ­  ¯®«ì§®¢ â¥«¥¬
DZ "Operation aborted by user" ; 37 - ®¯¥à æ¨ï ¯à¥à¢ ­  ¯®«ì§®¢ â¥«¥¬
DZ "Common error" ; 38 - ®¡é ï ®è¨¡ª 
DZ "Unexpected application termination" ; 39 - unexpected application termination / ­¥®¦¨¤ ­­®¥ § ¢¥à襭¨¥ ¯à¨«®¦¥­¨ï
DZ "40"
@ -2085,14 +2112,14 @@ LFF PUSH HL
POP HL
RET
PRINTX CP #20
PRINTX: CP ' '
JP NC,CHAR
CP #0D
JP Z,CR_
CP #0A
JP Z,LF_
CHAR PUSH BC
LD BC,#0182
CHAR: PUSH BC
LD BC,1*256 + BIOS.LP_PRINT_SYM
RST ToBIOS
POP BC
RET
@ -2113,11 +2140,11 @@ CEDIT PUSH IX
LD (ETXS),HL
XOR A
LD (POSIT),A
LD (SHIFT),A
LD (PRINT_S.SHIFT),A
EDIT1 LD DE,(ETXS)
CALL PRINT_S
CALL KEY
CP 13
CP 13 ; enter code
RET Z
LD HL,EDIT1
PUSH HL
@ -2165,7 +2192,7 @@ ADD_SM EX AF,AF'
LD HL,(ETXE)
INC HL
LD (ETXE),HL
LD HL,SHIFT
LD HL,PRINT_S.SHIFT
SUB (HL)
CP (IX-1)
RET C
@ -2175,14 +2202,14 @@ ADD_SM EX AF,AF'
; CALL PAGE
RET
BACK LD A,(POSIT)
BACK: LD A,(POSIT)
OR A
RET Z ;JP Z,BCK
DEC A
LD (POSIT),A
LD (MAIN_X),A
INC A
LD HL,SHIFT
LD HL,PRINT_S.SHIFT
SUB (HL)
RET NZ
LD A,(STEP)
@ -2199,7 +2226,7 @@ FORW LD A,(POSIT)
INC A
LD (POSIT),A
LD (MAIN_X),A
LD HL,SHIFT
LD HL,PRINT_S.SHIFT
SUB (HL)
CP (IX-1)
RET C
@ -2236,7 +2263,7 @@ SUB_SM XOR A
LD HL,(ETXE)
DEC HL
LD (ETXE),HL
LD HL,SHIFT
LD HL,PRINT_S.SHIFT
INC A
SUB (HL)
RET NZ
@ -2249,7 +2276,7 @@ SUB_SM XOR A
RET
KEY ;RES 5,(IY+1)
LD A,(SHIFT)
LD A,(PRINT_S.SHIFT)
LD E,A
LD A,(POSIT)
SUB E
@ -2310,7 +2337,8 @@ RES_CUR LD A,(CURSORX)
LD A,(_A+1)
JP PRINTX
PRINT_S PUSH DE
PRINT_S:
PUSH DE
CALL GETXY ;;;
LD DE,(TEMPXY)
LD E,0
@ -2321,36 +2349,34 @@ PRINT_S PUSH DE
CALL PRINTX
POP DE
EX DE,HL
SH LD BC,#0000
.SHIFT+1: LD BC,#0000
ADD HL,BC
LD A,(SHIFT)
LD A,(.SHIFT)
LD C,A
LD A,(IX+1)
SUB C
JP Z,EMT_STR
JP Z,.EMT_STR
LD B,A
LD A,(IX-1)
SUB B
JR NC,PR_S
JR NC,.PR_S
LD B,(IX-1)
PR_S PUSH BC
LD C,#86
.PR_S: PUSH BC
LD C,BIOS.LP_PRINT_LINE2
RST ToBIOS
POP BC
EMT_STR LD A,(IX-1)
.EMT_STR: LD A,(IX-1)
SUB B
EI
RET Z
LD B,A
LD C,#82
LD A,#20
LD A,' '
LD C,BIOS.LP_PRINT_SYM
RST ToBIOS
EI
RET
SHIFT EQU SH+1
GET_CMD LD D,XH
GET_CMD: LD D,XH
LD E,XL
EX DE,HL
LD E,(HL)
@ -2444,10 +2470,19 @@ BAT_BUFFER.size EQU 128 ;!FIXIT BAT_BUFFER LENGTH
/*
; ‘âàãªâãà  áâப¨ ¢¢®¤  ~input line~
struct_input_line:
db max_len_comline ;+0 254 ¬ ªá. ç¨á«® ¢¢®¤. ᨬ¢®«®¢
db 0 ;+1 ä« £ ReadyString
db 0 ;+2 X ⥪. ¯®«®¦. ªãàá®à  ¢ ¯à¥¤¥« å áâப¨
db 0 ;+3 X ᬥé. áâப¨ §  «¥¢ë© ªà © (¢ ᨬ¢®« å)
db 0 ;+4 ç¨á«® ¢¢¥¤¥­­ëå ᨬ¢®«®¢
ds max_len_comline+1 ;+5 áâப  ¢¢®¤ 
*/
STRUCT BUFFERS_STRUCT
CMDLINE BLOCK 256,0
CMDLINE BLOCK 256,0 ;!HARDCODE cmdline size
TMPLINE BLOCK 256,0
PRMLINE BLOCK 256,0
;BUFFER
@ -2471,7 +2506,7 @@ BAT_FM DB 0
BAT_LEN DB 0
ECHOFLG DB 0
PATHLEN DB 0
PATH BLOCK 40,0 ;!FIXIT PATH LENGTH
PATH BLOCK 40,0 ;!HARDCODE PATH LENGTH
ENDS

1
Console/build.txt Normal file
View File

@ -0,0 +1 @@
31

22
Console/version.inc Normal file
View File

@ -0,0 +1,22 @@
;------------------[ „®áâ ñ¬ ⥪ãéãî ¤ âã ¨ BUILD++ ]-----------------[]
LUA PASS1
Console_build = increase_build("./Console/build.txt")
if Console_build > 999 then
Console_build = 999
print("WARNING! Build > 999","WARNING! Build > 999","WARNING! Build > 999","WARNING! Build > 999","\aWARNING! Build > 999\a")
end
ENDLUA
LUA ALLPASS
sj.insert_label("lua_BUILD", Console_build)
ENDLUA
;---------------------------------------------------------------------[]
;
; Shell full version
; ­®¬¥à ¢¥àᨨ (0..9)
CONSOLE_VERS EQU 1
; ­®¬¥à ¬®¤¨ä¨ª æ¨¨ (0..99)
CONSOLE_MODF EQU 2
; ­®¬¥à ¡¨«¤  (0..999)
CONSOLE_BUILD EQU lua_BUILD
;

View File

@ -185,7 +185,7 @@ DEL01 EX DE,HL ; hl=
; INPUT: HL - "old_name.ext",#00 without simbols * ?
; DE - "new_name.ext",#00 without simbols * ?
//////////////////////////////////////////////////////////////////////
RENAME PUSH DE
RENAME: PUSH DE
LD DE,MASKARE
CALL MASK
POP DE
@ -1134,7 +1134,7 @@ MASKARE: BLOCK 8,0 ;
; RET: C=2 FILE WITHOUT EXTENTION
; C=1 FILE WITH EXTENTION
;-------------------------------------------------
MASK PUSH HL
MASK: PUSH HL
PUSH DE
LD H,D
LD L,E
@ -1147,13 +1147,13 @@ MASK PUSH HL
LD A,(HL)
CP '.' ;R07
SCF ;R07
JR Z,MASKB ;R07
CP '!'
MASKB LD A,DSS_Error.sys.INVALID_NAME
JR Z,.MASKB ;R07
CP ' '+1
.MASKB: LD A,DSS_Error.sys.INVALID_NAME
RET C
LD BC,#0902 ; B - áç¥â稪
MASK1 LD A,(HL)
CP '!'
MASK1: LD A,(HL)
CP ' '+1
CCF
RET NC
CP '"'
@ -1201,20 +1201,20 @@ MASK_ERR:
SCF
RET
MASK3 LD A,'?'
MASK3: LD A,'?'
INC HL
DJNZ MASK6
LD A,DSS_Error.sys.INVALID_NAME
SCF
RET
MASK6 LD (DE),A
MASK6: LD (DE),A
INC DE
DJNZ MASK6
LD B,1
JR MASK1
MASK5 LD A,' '
MASK5: LD A,' '
INC HL
DJNZ MASK4
LD B,4
@ -1224,7 +1224,7 @@ MASK5 LD A,' '
SCF
RET
MASK4 LD (DE),A
MASK4: LD (DE),A
INC DE
DJNZ MASK4
LD B,4
@ -1235,7 +1235,7 @@ MASK4 LD (DE),A
RET
; a..z -> A..Z
UPPER CP 'a'
UPPER: CP 'a'
RET C
CP '{'
JR NC,MDUPPER

View File

@ -60,18 +60,18 @@ A0010: ;JP DRV_PAGE.RST_10 ;
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
;
;
; ;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
; ; <[DRIVE API]> ;
; BLOCK #18-$,#C7 ; #C7 - "RST 0" opcode
; ;A0018 JP INTDISK ;
; A0018: PUSH AF ;
; PUSH BC ;
; DRV_PAGE.MAIN_PAGE_NUMBER+2: ;
; LD BC,0*256 + SLOT0 ; !FIXIT á ­¥ ¤®«¦­ë ¢áâ ¢«ïâìáï ­®¬¥à  ¢ë¤¥«¥­­ëå áâà ­¨æ?
; JP PORTAL.outDRV ;
; ;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
;
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
; <[DRIVE API]> ;
BLOCK #18-$,#C7 ; #C7 - "RST 0" opcode
;A0018 JP INTDISK ;
A0018: PUSH AF ;
PUSH BC ;
DRV_PAGE.MAIN_PAGE_NUMBER+2: ;
LD BC,0*256 + SLOT0 ; !FIXIT á ­¥ ¤®«¦­ë ¢áâ ¢«ïâìáï ­®¬¥à  ¢ë¤¥«¥­­ëå áâà ­¨æ?
JP PORTAL.outDRV ;
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
;!TODO
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
@ -202,7 +202,7 @@ ADCALL+1: CALL DISPATCH ;
JP PORTAL.out_DRV ;
;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ';
;
display "=============================",/H,(#82-#73-(PORTAL.toMAIN.switch-PORTAL.toMAIN))
;!FIXIT çñâ ­¥ â® âãâ

View File

@ -298,8 +298,10 @@ F_START: DI
;R05
.saveDRV+1: LD A,0
LD BC,1*256 + Dss.BootDSK
RST ToDSS
;LD BC,1*256 + Dss.BootDSK
;RST ToDSS
LD B,1
CALL BOOTDSK
EI
;Set new address fn. VERSION
@ -334,8 +336,9 @@ F_START: DI
;R12
.err_oldBIOS:
LD HL,.err_oldBIOS_message
LD C,Dss.PChars
RST ToDSS
;LD C,Dss.PChars
;RST ToDSS
CALL PCHARS
SCF
RET
.err_oldBIOS_message:

View File

@ -990,7 +990,7 @@ NOINK: LD A,H
;R02
LD SP,EXEBUFF+510 ;‚áâ ˘«ďĄâáď ˘ DSS_PAGE
;
LD A,DSS_PAGE ;!FIXIT ¢â몠âì áâà ­¨æë ¯à¨«®¦¥­¨ï
LD A,SHARED_PAGE
OUT (SLOT1),A
OUT (SLOT2),A
OUT (SLOT3),A
@ -1159,7 +1159,7 @@ NOINK2:
;R02
LD SP,EXEBUFF+510 ;‚áâ ˘«ďĄâáď ˘ DSS_PAGE
;
LD A,DSS_PAGE
LD A,SHARED_PAGE
OUT (SLOT1),A
OUT (SLOT2),A
OUT (SLOT3),A

View File

@ -160,7 +160,9 @@ ECHOKEY: CALL Cursor_On ;
CALL Cursor_Off ; ¢ëª«. ªãàá®à
POP AF
OR A ; ¤®¡ ¢¨«
;!FIXIT scroll § ¬¥­¨âì ­  ¢ë¢®¤ ᨬ¢®«  ¡¨®á®¬ ¨«¨ WRCHAR
CALL NZ,PUTCHAR ; ¢ë¢®¤ "a" ­  íªà ­
;
POP BC
POP DE
LD A,E

View File

@ -653,7 +653,7 @@ NXTPART LD DE,#10
PARTIT: IN A,(SLOT3)
PUSH AF
LD A,DSS_PAGE
LD A,SHARED_PAGE
OUT (SLOT3),A
CALL PARTIT1
POP AF

View File

@ -6,7 +6,7 @@
;---------------------------------------------------------------
;Rev Date Name Description
;---------------------------------------------------------------
;R03 04-04-2023 BAO FIXED BUGS IN FN WINCOPY, WINREST, SCROLL, SETVMOD, SELPAGE
;R03 04-04-2023 BAO FIXED BUGS IN FN SCROLL, SETVMOD, SELPAGE
;R02 07-11-2002 DNS CORRECT FN. WINCOPY & WINREST, ADD "DI+EI"
;R01 07-11-2002 DNS FIX BUG WITH SCROLLUP FN. (A=0)
;---------------------------------------------------------------
@ -20,46 +20,25 @@ CLEAR: LD C,BIOS.LP_CLS_WIN2
; PRINT NULL-TERMINATED CHARS STRING
; HL - STRING POINTER
PCHARS: LD A,(HL)
PCHARS: ;CALL CURSOR
;LD A,E
;LD (.start_x),A
.loop: LD A,(HL)
INC HL
OR A
RET Z
;PUSH HL
;LD C,A
CALL PUTCHAR
;POP HL
JP PCHARS
; PRINT CHAR
; A - CHAR
PUTCHAR:
CP #0D
JP Z,CR_
CP #0A
JP Z,LF_
CP #09
JP Z,TB_
CP #08
JP Z,BK_
; CP #20
; JP NC,CHAR
CHAR: LD BC,1*256 + BIOS.LP_PRINT_SYM
RST ToBIOS
; €‰Œ€<C592> âãâ ­ á¨«ì­ë© áªà®«« íªà ­  ¥á«¨ ­ ¯¥ç â « ¢ ¯®§¨æ¨¨ ¯®á«¥¤­¥£® ᨬ¢®«  ¯®á«¥¤­¥© áâப¨
; push af
; ld a,e
; cp #4F
; jp nz,.exit
; ld a,d
; cp #1F
; jp nz,.exit
; ld e,0
; ld c,#84
; rst 8
; call LFF
; .exit:
; pop af
; €‰Œ€<C592>
RET
;CALL CURSOR
;LD A,(.start_x)
;CP E
;POP HL
JP .loop
NO_NEED_SCROLL: DB 1
BK_: LD C,BIOS.LP_GET_PLACE ;GET CURSOR
RST ToBIOS
@ -69,6 +48,73 @@ BK_: LD C,BIOS.LP_GET_PLACE ;GET CURSOR
DEC E
JP LOCATE
;-----[]
LF_: LD C,BIOS.LP_GET_PLACE ;GET CURSOR
RST ToBIOS
LD A,D
CP #1F
JR NC,LFF
INC D
IFN EnoughtOnly_LF
JP LOCATE
ELSE
CALL LOCATE
; !!!! <20>… à §à뢠âì LF_ ¨ CR_ !!!!
ENDIF
CR_: LD C,BIOS.LP_GET_PLACE ;GET CURSOR
RST ToBIOS
LD E,0
JP LOCATE
;-----[]
; PRINT CHAR
; A - CHAR
PUTCHAR:
;CP ' '
;JR NC,CHAR
CP #0D
JR Z,CR_
CP #0A
JR Z,LF_
CP #09
JR Z,TB_
CP #08
JR Z,BK_
;SCF
;RET
CHAR:
LD BC,1*256 + BIOS.LP_PRINT_SYM
;!TEST CR+LF+SCROLL
;JP ToBIOS
RST ToBIOS
; ¯à®¢¥àª  ­  ¯¥à¥å®¤ ªãàá®à  ¢ á ¬®¥ ­ ç «® (X:Y == 0:0)
CALL CURSOR
LD A,D
OR E
RET NZ
;
LFF: PUSH HL ;!FIXIT á®åà ­ïâì ⥪ã騥 ¯à¥à뢠­¨ï
;PUSH DE
LD BC,1*256 + BIOS.LP_SCROLL_UD
LD DE,#0020
EI
HALT
DI
RST ToBIOS
LD DE,#1F00
;PUSH DE
CALL LOCATE
LD A,' '
LD BC,#50*256 + BIOS.LP_PRINT_SYM
RST ToBIOS
EI
;POP DE
LD DE,#1F00
CALL LOCATE
POP HL
RET
TB_: LD C,BIOS.LP_GET_PLACE ;GET CURSOR
RST ToBIOS
@ -80,53 +126,16 @@ TB_: LD C,BIOS.LP_GET_PLACE ;GET CURSOR
SUB B
LD B,A
LD C,BIOS.LP_PRINT_SYM
LD A,#20
RST ToBIOS
RET
LD A,' '
JP ToBIOS
ELSE
LD A,E
ADD A,8
AND #78
AND #78 ;????? £«ï­ãâì, çâ® ¡ã¤¥â ¥á«¨ ª®®à¤¨­ âë ªãàá®à  ¢ ª®­æ¥ áâப¨ ¯®çâ¨
LD E,A
JP LOCATE
ENDIF
LF_: LD C,BIOS.LP_GET_PLACE ;GET CURSOR
RST ToBIOS
LD A,D
CP #1F
JP NC,LFF
INC D
//JP LOCATE
CALL LOCATE ; !!!!! ‘ ©¬ ­
CR_: LD C,BIOS.LP_GET_PLACE ;GET CURSOR
RST ToBIOS
LD E,0
JP LOCATE
LFF: PUSH HL
;PUSH DE
LD BC,1*256 + BIOS.LP_SCROLL_UD
LD DE,#0020
EI
HALT
DI
RST ToBIOS
LD DE,#1F00
;PUSH DE
CALL LOCATE
LD A,#20
LD BC,#50*256 + BIOS.LP_PRINT_SYM
RST ToBIOS
EI
;POP DE
LD DE,#1F00
CALL LOCATE
POP HL
RET
;
;
; SET CURRENT CURSOR POSITION
@ -134,16 +143,18 @@ LFF: PUSH HL
; D = Y
; E = X
LOCATE: LD C,BIOS.LP_SET_PLACE
RST ToBIOS
RET
; LD A,C
; LD (NO_NEED_SCROLL),A
JP ToBIOS
;RET
; GET CURRENT CURSOR POSITION
; out:
; D - Y
; E - X
CURSOR: LD C,BIOS.LP_GET_PLACE
RST ToBIOS
RET
JP ToBIOS
;RET
; READ CHAR & ATTR FROM THE SCREEN
; in:
@ -186,14 +197,14 @@ WRCHAR: LD C,A
; H - HEIGHT
; L - WIDTH
; IX - ADDRESS
; B - PAGE, IF IX > 0C000H ; FIXIT ­¥ ª®áïª «¨ âãâ? ¡ ­ª  ¤®«¦­  ¢ A' ¯¥à¥¤ ¢ âìáï,   ­¥ B
; B - PAGE, IF IX > #C000
WINCOPY: AND A
LD A,R ;R02
PUSH AF ;R02
XOR A
EX AF,AF' ;R03
LD A,B ;R03
EX AF,AF' ;R03
;EX AF,AF' ;R03
;LD A,B ;R03
;EX AF,AF' ;R03
LD C,BIOS.WIN_COPY
DI ;R02
RST ToBIOS
@ -208,14 +219,14 @@ WINCOPY: AND A
; H - HEIGHT
; L - WIDTH
; IX - ADDRESS
; B - PAGE, IF IX > 0C000H ; FIXIT ­¥ ª®áïª «¨ âãâ? ¡ ­ª  ¤®«¦­  ¢ A' ¯¥à¥¤ ¢ âìáï,   ­¥ B
; B - PAGE, IF IX > #C000
WINREST: AND A
LD A,R ;R02
PUSH AF ;R02
XOR A
EX AF,AF' ;R03
LD A,B ;R03
EX AF,AF' ;R03
;EX AF,AF' ;R03
;LD A,B ;R03
;EX AF,AF' ;R03
DI ;R02
LD C,BIOS.WIN_RESTORE
RST ToBIOS
@ -233,10 +244,13 @@ WINREST: AND A
; B = 1 - SCROLL UP
; B = 2 - SCROLL DOWN
; A = 0 - CLEAR LINE
SCROLL: DJNZ SCR_DW
LD B,A
LD C,H
PUSH BC
SCROLL: DJNZ SCR_DW ;!TODO § ¬¥­¨âì ­  BIOS.LP_SCROLL_UD ¨ ¯®á¬®âà¥âì, çâ® èãáâ॥
;!TEST
;LD B,A
;LD C,H
;PUSH BC
PUSH AF
;
PUSH DE
PUSH HL
LD XH,D
@ -248,9 +262,13 @@ SCROLL: DJNZ SCR_DW
RST ToBIOS
POP HL
POP DE
POP BC
XOR A
CP B
;!TEST
;POP BC
POP AF
;XOR A
;CP B
AND A
;
RET NZ
LD A,D
ADD A,H
@ -258,7 +276,7 @@ SCROLL: DJNZ SCR_DW
LD D,A
.print: PUSH DE ;R01
CALL LOCATE
LD A,#20
LD A,' '
LD B,L
LD C,BIOS.LP_PRINT_SYM
RST ToBIOS
@ -268,9 +286,12 @@ SCROLL: DJNZ SCR_DW
RET
SCR_DW: DJNZ SCR_ERR
LD B,A
LD C,L
PUSH BC ;R03
;!TEST
;LD B,A
;LD C,H
;PUSH BC
PUSH AF ;R03
;
PUSH DE
PUSH HL
LD XH,D
@ -282,10 +303,15 @@ SCR_DW: DJNZ SCR_ERR
RST ToBIOS
POP HL
POP DE
POP BC ;R03
XOR A
CP B
JR Z,SCROLL.print
;!TEST
;POP BC
POP AF ;R03
;XOR A
;CP B
AND A
;
RET NZ
JP SCROLL.print
; PUSH DE ;R01
; CALL LOCATE
; LD A,#20
@ -303,15 +329,15 @@ SCR_ERR:
; SELECT SCREEN PAGE
; B - SCREEN PAGE
SELPAGE ;PUSH BC
SELPAGE:;PUSH BC
LD A,(VMODE)
BIT 7,A
JR NZ,SEL2
JR NZ,.SEL2
PUSH BC
LD C,A
CALL SETVMOD.TEXT_M
POP BC
SEL2 ;POP BC
.SEL2: ;POP BC
LD A,B
AND #01
OUT (SCREEN_SWITCH),A
@ -426,7 +452,7 @@ G320_56 PUSH BC
CALL SETMODE
LD HL,TAB_320x256_1
LD E,#00
JR GRAPH_NEXT
JP GRAPH_NEXT
; CALL SETMODE
; POP BC
; LD A,C
@ -447,7 +473,7 @@ G640_16 PUSH BC
CALL SETMODE
LD HL,TAB_640x256_1
LD E,#00
JR GRAPH_NEXT
JP GRAPH_NEXT
; CALL SETMODE
; POP BC
@ -471,42 +497,24 @@ VMODE: DB #03
;81h - GRAF 320 x 256 (256 colors)
;82h - GRAF 640 x 256 (16 colors)
;83h - GRAF 640 x 256 (256 colors) UNUSED
SETMODE: PUSH DE
LD DE,#FEE0 ;!HARDCODE £àï§­ë© å ª. ª¨¤ ¥â ¤ ­­ë¥ ¢ ¡ãä¥à á«ã¦¥¡­®© áâà ­¨æë ¡¨®á .
LD DE,SYS_PAGE.SHARED_BUFFER_32b ; £àï§­ë© å ª. ª¨¤ ¥â ¤ ­­ë¥ ¢ ¡ãä¥à á«ã¦¥¡­®© áâà ­¨æë ¡¨®á .
LD BC,ScreenDescriptorTable.Size ; <20>ˆŽ ¯à¨ ¨á¯®«ì§®¢ ­¨¨ IX ¯à¥¤¯®« £ ¥â, çâ® ®­ 㪠§ë¢ ¥â
;CALL MOVBIOS ; ­   ¤à¥á ­¨¦¥ #C000 ¨ ¢áâ ¢«ï¥â ¢ âà¥âìî ¡ ­ªã áâà ­¨æã #FE
;LD A,R
IN A,(SLOT3)
IN A,(SLOT3) ; ­   ¤à¥á ­¨¦¥ #C000 ¨ ¢áâ ¢«ï¥â ¢ âà¥âìî ¡ ­ªã áâà ­¨æã #FE
EX AF,AF'
LD A,SYS_PAGE
OUT (SLOT3),A
LDIR
EX AF,AF'
OUT (SLOT3),A
;JP PO,.skip_EI
;EI
.skip_EI: POP DE
LD IX,#FEE0 ;!HARDCODE £àï§­ë© å ª.
;LD HL,#0000
LD IX,SYS_PAGE.SHARED_BUFFER_32b ; £àï§­ë© å ª.
LD C,BIOS.WIN_OPEN
RST ToBIOS
SAFE_PORTY ;????? - ¢®§¬®¦­®, ç⮠⥯¥àì ­¥ ­ã¦­®, ¢¥§¤¥ á ¡ ­ª®© 3 à ¡®â îâ, ¯à®¢¥à¨âì
XOR A
RET
; MOVBIOS: LD A,R
; IN A,(SLOT3)
; EX AF,AF'
; LD A,SYS_PAGE
; OUT (SLOT3),A
; LDIR
; EX AF,AF'
; OUT (SLOT3),A
; RET PO
; EI
; RET
;IX+0 ;HORIZONTAL
;IX+1 ;VERTICAL
;IX+2 ;X - COORD
@ -536,7 +544,7 @@ ScreenDescriptorTable.Size EQU ($ - ScreenDescriptorTable)/6
;
SAVETXT PUSH AF
;;!!!!! ¯¥à¥­¥á¥­  «®£¨ª  áã¯¥à ¤¨ç ©è¥£® ã᪮७¨ï
;!!!!! ¯¥à¥­¥á¥­  «®£¨ª  áã¯¥à ¤¨ç ©è¥£® ã᪮७¨ï
LD A,(VMODE)
BIT 7,A
JR NZ,NOSAVET
@ -560,10 +568,10 @@ SAVETXT PUSH AF
LD L,#28
SVTEXT1 LD (SVHL1),HL
LD DE,#0000
EX AF,AF' ;R03
;EX AF,AF' ;R03
LD A,(BANKTBL+TXTPAGE)
LD B,A
EX AF,AF' ;R03
;EX AF,AF' ;R03
LD C,BIOS.WIN_COPY
XOR A
DI
@ -590,10 +598,10 @@ VVMODE+1:
SVHL1+1:
LD HL,#2050
LD DE,#0000
EX AF,AF' ;R03
;EX AF,AF' ;R03
LD A,(BANKTBL+TXTPAGE)
LD B,A
EX AF,AF' ;R03
;EX AF,AF' ;R03
LD C,BIOS.WIN_RESTORE
XOR A
DI
@ -601,8 +609,9 @@ SVHL1+1:
EI
TCURS+1:
LD DE,#0000
LD C,BIOS.LP_SET_PLACE
RST ToBIOS
;LD C,BIOS.LP_SET_PLACE
;RST ToBIOS
CALL LOCATE
POP IX
POP HL
POP DE
@ -681,3 +690,39 @@ PRINT_INIT:
;//MODULE: VIDEO
;[END]
; ; €‰Œ€<C592>
; PUSH AF
; LD A,E
; CP #4F
; JP NZ,.exit
; LD A,D
; CP #1F
; JP NZ,.exit
; LD E,0
; LD C,BIOS.LP_SET_PLACE
; RST ToBIOS
; CALL LFF
; .exit:
; pop af
; RET
; ; €‰Œ€<C592>
; LD A,D ; ¢ DE ª®®à¤¨­ âë ⥪ã饣® §­ ª®¬¥áâ 
; XOR E ; <20>஢¥à塞 ­  ª®®à¤¨­ âë #1F:#4F
; XOR #50
; RET NZ ; ¥á«¨ ¤à㣨¥ - â® ¢ë室
; LD E,A
; LD C,BIOS.LP_SET_PLACE
; RST ToBIOS
;LFF:
; ...
;;;;;;;;
; LD A,D ; ¢ DE ª®®à¤¨­ âë ⥪ã饣® §­ ª®¬¥áâ 
; XOR E ; <20>஢¥à塞 ­  ª®®à¤¨­ âë #1F:#4F
; XOR #50
; RET NZ ; ¥á«¨ ¤à㣨¥ - â® ¢ë室
;;;;;;;;

View File

@ -1 +1 @@
114
147

View File

@ -9,7 +9,8 @@
;
DEFINE MAX_RAMDRIVES 16
DEFINE NeedSafePort_Y 1
DEFINE TABisSPACES 1
DEFINE TABisSPACES 0
DEFINE EnoughtOnly_LF 0
DEFINE CLASSIC_CURSOR 0
DEFINE SAVE_PATH_MACRO 0
DEFINE MINIMUM_BIOS_VERSION 2*256 + 55 ; version 2.55
@ -18,7 +19,7 @@
DEFINE USING_MEMPAGES 4
DEFINE OLD_SET_BANK 0
PORTAL.RSTx18_SWITCH_ADDRESS #82
DEFINE PORTAL.RSTx18_SWITCH_ADDRESS #82
; ªíè ᯨ᪠ ª â «®£ 
DIRPAGE EQU 0
FATPAGE EQU 1

@ -1 +1 @@
Subproject commit b25c3779d6af8abc2970d3a9a55006f43292c86e
Subproject commit 0277d424098318dc45617d6fb2c1cdf405c6d345