чутка оптимизирован по размеру драйвер мышки

This commit is contained in:
Anatoliy Belyanskiy 2024-02-14 01:50:08 +10:00
parent 1d24621a28
commit 66e5661218
19 changed files with 367 additions and 361 deletions

View File

@ -350,7 +350,7 @@ write_to_: ld a,(disk) ;
ret z ; !TODO § £à㧪  á à áè¨à¥­­®£® à §¤¥«  ­¥ ¯®¤¤¥à¦¨¢ ¥âáï ret z ; !TODO § £à㧪  á à áè¨à¥­­®£® à §¤¥«  ­¥ ¯®¤¤¥à¦¨¢ ¥âáï
dec c dec c
push bc ; B - PHISICAL DRIVE NUMBER, C - PARTITION RECORD NUMBER IN DRIVE MBR push bc ; B - PHISICAL DRIVE NUMBER, C - PARTITION RECORD NUMBER IN DRIVE MBR
; [ ] 02/02/2024 ¯א®¢¥א×  ­  ¢«¥§ ¥¬®בגל § £אד§ח¨×  (חג®<D792> ­¥ ¯®¯®אג¨גל ה ג) ; [x] 02/02/2024 ¯א®¢¥א×  ­  ¢«¥§ ¥¬®בגל § £אד§ח¨×  (חג®<D792> ­¥ ¯®¯®אג¨גל ה ג)
LD HL,0 LD HL,0
LD IX,0 LD IX,0
LD DE,buffer LD DE,buffer

View File

@ -58,6 +58,7 @@
include 'API/Read.asm' include 'API/Read.asm'
include 'API/Write.asm' include 'API/Write.asm'
include 'API/Environ.ASM' include 'API/Environ.ASM'
include 'API/Lib_Sub.asm'

View File

@ -3,7 +3,7 @@
; C - #19 ; C - #19
; HL - ד× § ג¥«ל ­  ה ©«®¢דמ ב¯¥ז¨ה¨× ז¨מ ; HL - ד× § ג¥«ל ­  ה ©«®¢דמ ב¯¥ז¨ה¨× ז¨מ
; DE - א <D790>®ח¨© <20>דה¥א 44 <20> ©ג , ¥ב«¨ B=0, ¨­ ח¥ 256 <20> ©ג ; DE - א <D790>®ח¨© <20>דה¥א 44 <20> ©ג , ¥ב«¨ B=0, ¨­ ח¥ 256 <20> ©ג
; ;!!!!! ­  α ¬<EFBFBD>¬ €₯«₯ α₯©η α ₯᫨ B=1, ΰ <C2A0>稩 ‘γδ₯ΰ 46 ‘ ©β ; ;!!!!! ­  á ¬®¬ ¤¥«¥ ¯®ª  çâ® ¥á«¨ B=1, à ¡®ç¨© ¡ãä¥à 46 ¡ ©â
; A -  גא¨<D790>דגכ, ¨ב¯®«ל§ד¥¬כ¥ ¯א¨ ¯®¨ב×¥ ; A -  גא¨<D790>דגכ, ¨ב¯®«ל§ד¥¬כ¥ ¯א¨ ¯®¨ב×¥
; B = 0 - ¨¬ן ­ ©¤¥­­®£® ה ©«  ¢ ה®א¬ ג¥ 11 <20> ©ג "FilenameExt" ; B = 0 - ¨¬ן ­ ©¤¥­­®£® ה ©«  ¢ ה®א¬ ג¥ 11 <20> ©ג "FilenameExt"
; B = 1 - ¨¬ן ­ ©¤¥­­®£® ה ©«  ¢ ה®א¬ ג¥ DOS "filename.ext",0 ; B = 1 - ¨¬ן ­ ©¤¥­­®£® ה ©«  ¢ ה®א¬ ג¥ DOS "filename.ext",0

14
DSS/API/Lib_Sub.asm Normal file
View File

@ -0,0 +1,14 @@
;[ ] 11/02/2024 - ”γ­<CEB3>ζ¨ο α ―®―®«­ο¥¬λ¬¨ ―®¤δγ­<CEB3>ζ¨ο¬¨)))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; B = 1 ‚λ§®Ά δγ­<CEB3>樨 SETUP_CURSORS ¤«ο Ά®ααβ ­®Ά«¥­¨ο α¨α⥬­λε θΰ¨δβ®Ά DSS ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LIB_SUB:
DJNZ 1F
; func B = 1
JP SETUP_CURSORS
;
1: ; func B > 1 or 0
SCF
RET
;
;

View File

@ -28,7 +28,7 @@ READ: LD (.R_POINT),HL
; RR L ; RR L
; RR D ; RR D
; RR E ; RR E
LD H,0 LD H,0 ;
LD L,(IY+_sFM.F_POSITION+3) LD L,(IY+_sFM.F_POSITION+3)
LD D,(IY+_sFM.F_POSITION+2) LD D,(IY+_sFM.F_POSITION+2)
LD E,(IY+_sFM.F_POSITION+1) LD E,(IY+_sFM.F_POSITION+1)

View File

@ -392,7 +392,7 @@ ADRST10: ;DS 512 ;,0
DB low FREEMEM, low GETMEM, low RETMEM, low SETMEM, low EXEC, low LEAVE, low WAIT, low GSWITCH, low DOSNAME, low EX_PATH ; 6 3C..45 DB low FREEMEM, low GETMEM, low RETMEM, low SETMEM, low EXEC, low LEAVE, low WAIT, low GSWITCH, low DOSNAME, low EX_PATH ; 6 3C..45
DB low ENVIRON, low APPINFO, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS ; 7 46..4F DB low ENVIRON, low APPINFO, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS ; 7 46..4F
DB low SETVMOD, low GETVMOD, low LOCATE, low CURSOR, low SELPAGE, low SCROLL, low CLEAR, low RDCHAR, low WRCHAR, low WINCOPY ; 8 50..59 DB low SETVMOD, low GETVMOD, low LOCATE, low CURSOR, low SELPAGE, low SCROLL, low CLEAR, low RDCHAR, low WRCHAR, low WINCOPY ; 8 50..59
DB low WINREST, low PUTCHAR, low PCHARS, low NOPS, low NOPS, low PRINT ; 9 5A..5F DB low WINREST, low PUTCHAR, low PCHARS, low LIB_SUB, low NOPS, low PRINT ; 9 5A..5F
IFN SHORT_RSTx10_TABLE IFN SHORT_RSTx10_TABLE
;[ ] R09 ;[ ] R09
@ -419,7 +419,7 @@ ADRST10: ;DS 512 ;,0
DB high FREEMEM, high GETMEM, high RETMEM, high SETMEM, high EXEC, high LEAVE, high WAIT, high GSWITCH,high DOSNAME, high EX_PATH DB high FREEMEM, high GETMEM, high RETMEM, high SETMEM, high EXEC, high LEAVE, high WAIT, high GSWITCH,high DOSNAME, high EX_PATH
DB high ENVIRON, high APPINFO, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS DB high ENVIRON, high APPINFO, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS
DB high SETVMOD, high GETVMOD, high LOCATE, high CURSOR, high SELPAGE,high SCROLL, high CLEAR, high RDCHAR, high WRCHAR, high WINCOPY DB high SETVMOD, high GETVMOD, high LOCATE, high CURSOR, high SELPAGE,high SCROLL, high CLEAR, high RDCHAR, high WRCHAR, high WINCOPY
DB high WINREST, high PUTCHAR, high PCHARS, high NOPS, high NOPS, high PRINT DB high WINREST, high PUTCHAR, high PCHARS, high LIB_SUB,high NOPS, high PRINT
IFN SHORT_RSTx10_TABLE IFN SHORT_RSTx10_TABLE
;[ ] R09 ;[ ] R09

View File

@ -340,10 +340,15 @@ LOADDIR:
; ;
LD A,(FatBuffer.DRIVE) ; ­®¬¥à ¤¨áª  LD A,(FatBuffer.DRIVE) ; ­®¬¥à ¤¨áª 
LD (IY+_sFM.DRIVE),A ; á®åà. ¢ ¤¥áªà¨¯â®à LD (IY+_sFM.DRIVE),A ; á®åà. ¢ ¤¥áªà¨¯â®à
LD D,(IY+_sFM.ST_CLUSTER) ; de=­®¬¥à ¯¥à¢®£® ª« áâ¥à  ;
LD E,(IY+_sFM.ST_CLUSTER+1) ;LD D,(IY+_sFM.ST_CLUSTER+1) ; de=­®¬¥à ¯¥à¢®£® ª« áâ¥à 
LD A,D ;LD E,(IY+_sFM.ST_CLUSTER)
OR E ;LD A,D
;OR E
; ­®¬¥à ¯¥à¢®£® ª« áâ¥à 
LD A,(IY+_sFM.ST_CLUSTER)
OR (IY+_sFM.ST_CLUSTER+1)
;
JP Z,.LROTDIR ; root ?? JP Z,.LROTDIR ; root ??
LD HL,DIRPAGE.buffer ; ªã¤  LD HL,DIRPAGE.buffer ; ªã¤ 
LD DE,#4000 ; ᪮«ìª® LD DE,#4000 ; ᪮«ìª®
@ -567,7 +572,7 @@ RD_BPB: LD C,SLOT3
.loop1: ADD HL,DE .loop1: ADD HL,DE
DEC A DEC A
JR NZ,.loop1 JR NZ,.loop1
LD (FatBuffer.DIR_FRM),HL ; first sector DIR LD (FatBuffer.DIR_FRL),HL ; first sector DIR
; CF = ? ¬ «® «¨ ; CF = ? ¬ «® «¨
AND A AND A
; CF = 0 ; CF = 0
@ -615,7 +620,7 @@ RD_BPB: LD C,SLOT3
LD B,0 LD B,0
LD (FatBuffer.DIR_S_S),A LD (FatBuffer.DIR_S_S),A
ADD HL,BC ; Start DATA area ADD HL,BC ; Start DATA area
LD (FatBuffer.DAT_FRM),HL LD (FatBuffer.DAT_FRL),HL
;!TODO ­¥ ¨á¯®«ì§ãîâáï §­ ç¥­¨ï ¢ëç¨á«ï¥¬ë¥ ¨ á®åà ­ï¥¬ë¥ ¢ FatBuffer ;!TODO ­¥ ¨á¯®«ì§ãîâáï §­ ç¥­¨ï ¢ëç¨á«ï¥¬ë¥ ¨ á®åà ­ï¥¬ë¥ ¢ FatBuffer
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
;IF COMPILE_UNUSED_CODE ;IF COMPILE_UNUSED_CODE
@ -706,7 +711,7 @@ RD_BPB: LD C,SLOT3
;ENDIF ;ENDIF
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
LD DE,(FatBuffer.DAT_FRM) LD DE,(FatBuffer.DAT_FRL)
; LD E,(IY+_sBOOT_SEC.HIDDEN) ;Hidden sec ; LD E,(IY+_sBOOT_SEC.HIDDEN) ;Hidden sec
; LD D,(IY+_sBOOT_SEC.HIDDEN+1) ; LD D,(IY+_sBOOT_SEC.HIDDEN+1)
; AND A ; AND A
@ -813,12 +818,12 @@ FatBuffer:
.FAT_FRM: .FAT_FRM:
.FAT1_XX: DW #0000 ; MSD_FAT_SEC first sector FAT .FAT1_XX: DW #0000 ; MSD_FAT_SEC first sector FAT
.FAT2_XX: DW #0000 .FAT2_XX: DW #0000
.DIR_FRH: DW #0000 ; MSD_CAT_SEC first sector DIR .DIR_FRH: DW #0000 ; MSD_CAT_SEC first sector DIR ; !TODO ®£à ­¨ç¥­¨¥ ¢ 32 ƒ¨£  ;!FIXIT ­¥ ¨á¯®«ì§ã¥âáï
.DIR_FRL: .DIR_FRL: DW #0000 ; MSD_CAT_SEC first sector DIR
.DIR_FRM: DW #0000 ; MSD_CAT_SEC first sector DIR
.F_P_S: DB #00 ; ç¨á«® ä ©«®¢ëå § ¯¨á¥© ¢ ᥪâ®à¥ .F_P_S: DB #00 ; ç¨á«® ä ©«®¢ëå § ¯¨á¥© ¢ ᥪâ®à¥
.DIR_S_S: DB #00 ; DIR_SEC_SIZE .DIR_S_S: DB #00 ; DIR_SEC_SIZE
.DAT_FRM: DW #0000 ; MSD_DAT_SEC .DAT_FRL: DW #0000 ; MSD_DAT_SEC low
;.DAT_FRH: DW #0000 ; MSD_DAT_SEC high ; !TODO ®£à ­¨ç¥­¨¥ ¢ 32 ƒ¨£  ;!FIXIT ­¥ ¨á¯®«ì§ã¥âáï
.CLU_LEN: .CLU_LEN:
.B_P_C: DW #0000 ; CLUSTER_LEN .B_P_C: DW #0000 ; CLUSTER_LEN
.C_P_B: DB #00 ; A - Clusters per bank (16k) (ç¨á«® ª« áâ¥à®¢ ­  ¡«®ª އ“) ; ????? íâ® ¨á¯®«ì§ã¥âáï? .C_P_B: DB #00 ; A - Clusters per bank (16k) (ç¨á«® ª« áâ¥à®¢ ­  ¡«®ª އ“) ; ????? íâ® ¨á¯®«ì§ã¥âáï?

View File

@ -442,7 +442,7 @@ GET_FAT12_CELL:
; in: HL - CLUSTER ; in: HL - CLUSTER
; out: HL:IX - SECTOR ; out: HL:IX - SECTOR
NSECTOR: NSECTOR:
LD DE,0 LD DE,0 ;!FIXIT for FAT32
DEC HL DEC HL
DEC HL DEC HL
LD A,(CORE_BUFFERS.BootSector.S_P_C) LD A,(CORE_BUFFERS.BootSector.S_P_C)
@ -460,7 +460,7 @@ NSECTOR:
.skip: EX DE,HL .skip: EX DE,HL
LD XL,E LD XL,E
LD XH,D LD XH,D
LD DE,(FatBuffer.DAT_FRM) ;first data sector LD DE,(FatBuffer.DAT_FRL) ;first data sector
XOR A XOR A
ADD IX,DE ADD IX,DE
LD D,A LD D,A
@ -962,7 +962,7 @@ FAT_Max_Cluster: WORD #0FF0 ;
; JR NC,ADD_DE2 ; JR NC,ADD_DE2
; INC HL ; INC HL
; ADD_DE2: DJNZ ADD_DE1 ; ADD_DE2: DJNZ ADD_DE1
; LD DE,(FatBuffer.DAT_FRM) ;first data sector ; LD DE,(FatBuffer.DAT_FRL) ;first data sector
; ADD IX,DE ; ADD IX,DE
; LD DE,#0000 ; LD DE,#0000
; ADC HL,DE ; ADC HL,DE

View File

@ -158,9 +158,9 @@ M_RESR LD A,DSS_Error.mouse.INVALID_COMMAND
;!TODO ­  ¡¨®á. ;!TODO ­  ¡¨®á.
MS_INIT DI MS_INIT DI
;!TEST mouse ;!TEST mouse
;LD A,85 ;LD A,#55
;OUT (#10),A ;OUT (#10),A
;LD A,45 ;LD A,#2D
;OUT (#10),A ;OUT (#10),A
; ;
XOR A ;LD A,0 XOR A ;LD A,0
@ -176,9 +176,7 @@ MS_INIT DI
LD A,4 LD A,4
OUT (PORT_MOUSE.Ctrl),A OUT (PORT_MOUSE.Ctrl),A
;!TEST mouse ;!TEST mouse
LD A,#47 ; ¯¥à¢ë© ¬­®¦¨â¥«ì = 16 875000/Œ­1*Œ­2=1215 LD A,MOUSE_BAUD.multiplier_1 ; ¯¥à¢ë© ¬­®¦¨â¥«ì
;LD A,#44
;LD A,#04 ; ¯¥à¢ë© ¬­®¦¨â¥«ì = 1 875000/Œ­1*Œ­2=4807
OUT (PORT_MOUSE.Ctrl),A OUT (PORT_MOUSE.Ctrl),A
; ;
LD A,5 LD A,5
@ -192,8 +190,7 @@ MS_INIT DI
;!TEST mouse ;!TEST mouse
LD A,#55 LD A,#55
OUT (Z84.CTC.Ch_0),A OUT (Z84.CTC.Ch_0),A
LD A,#2D ; ¢â®à®© ¬­®¦¨â¥«ì = 45 875000/Œ­1*Œ­2=1215 LD A,MOUSE_BAUD.multiplier_2 ; ¢â®à®© ¬­®¦¨â¥«ì
;LD A,#B6 ; ¢â®à®© ¬­®¦¨â¥«ì = 182 875000/Œ­1*Œ­2=4807
OUT (Z84.CTC.Ch_0),A OUT (Z84.CTC.Ch_0),A
; ;
@ -211,7 +208,7 @@ MS_SHOW PUSH IX
DI DI
CALL MOUSE CALL MOUSE
XOR A XOR A
LD (REFRESH+1),A LD (REFRESH.hide),A
EI EI
POP AF POP AF
EX AF,AF' EX AF,AF'
@ -228,7 +225,7 @@ MS_HIDD PUSH IX
PUSH AF PUSH AF
DI DI
LD A,1 LD A,1
LD (REFRESH+1),A LD (REFRESH.hide),A
CALL RESTORE CALL RESTORE
EI EI
POP AF POP AF
@ -373,10 +370,84 @@ MS_GSEN
LD HL,(SENSEXY) LD HL,(SENSEXY)
XOR A XOR A
RET RET
;----------------------------------------------------------------------;
MOUSET LD (REST_XT+1),HL
LD (REST_YT+1),DE ;----------------------------------------------------------------------;
;Y RESTORE:
.sw+1: LD A,#00
BIT 7,A
JP Z,.TXT
; restore gfx-mode
IN A,(SLOT3)
LD B,A
IN A,(PORT_Y)
LD C,A
PUSH BC
LD A,#50 ;!HARDCODE videopage
OUT (SLOT3),A
.X+1: LD HL,0
.Y+1: LD DE,0
LD A,E
EX AF,AF'
.SCR+1: LD A,0
AND 1
LD DE,SLOT3.MEM_ADDR ;screen 0
JR Z,.adr
LD DE,SLOT3.MEM_ADDR+320 ;screen 1
.adr: ADD HL,DE
.YSize+1: LD A,0
LD XH,A
EX AF,AF'
.loop: ;
.Xsize+1: LD BC,10
OUT (PORT_Y),A
EX AF,AF'
LD (.PUSH_HL),HL
LD D,H
LD E,L
LDIR
.PUSH_HL+1: LD HL,#0000
EX AF,AF'
INC A
JR Z,.no_dec
DEC XH
JR NZ,.loop
.no_dec: POP BC
LD A,B
OUT (SLOT3),A
LD A,C
OUT (PORT_Y),A
XOR A
RET
.TXT: ; restore txt-mode
.TXT_X+1: LD HL,#0000
.TXT_Y+1: LD DE,#0000
;
IN A,(PORT_Y)
LD XH,A
IN A,(SLOT3)
LD XL,A
;
LD A,#50
;
CALL GET_SYMBOL_ADDR
;
LD (HL),A
INC L
LD A,(HL) ;ATTRIBUT
;JR SET_RESTORE_EXIT
;---------------------------------------------------------------;
SET_RESTORE_EXIT:
LD (HL),A
;
LD A,XL
OUT (SLOT3),A
LD A,XH
OUT (PORT_Y),A
RET
;---------------------------------------------------------------;
GET_SYMBOL_ADDR:;Y
SRL D SRL D
RR E RR E
SRL D SRL D
@ -384,7 +455,7 @@ MOUSET LD (REST_XT+1),HL
SRL D SRL D
RR E RR E
LD D,E LD D,E
;X ;X
SRL H SRL H
RR L RR L
SRL H SRL H
@ -392,24 +463,17 @@ MOUSET LD (REST_XT+1),HL
SRL H SRL H
RR L RR L
LD E,L LD E,L
;
IN A,(PORT_Y)
LD XH,A
IN A,(SLOT1)
LD XL,A
;
DI DI
; OUT (SLOT3),A
LD A,#54 ;!HARDCODE video page ;
OUT (SLOT1),A
;
LD A,D LD A,D
ADD A,A ADD A,A
ADD A,A ;Y * 4 ADD A,A ;Y * 4
LD L,A LD L,A
LD H,#43 ;+ #4300 LD H,high (SLOT3.MEM_ADDR + #300) ;#300 - ®¯¨á â¥«¨ íªà ­ 
; ;
IN A,(RGMOD) IN A,(SCREEN_SWITCH)
RRCA RRCA
AND #80 AND #80
OR #01 OR #01
@ -417,6 +481,29 @@ MOUSET LD (REST_XT+1),HL
OUT (PORT_Y),A OUT (PORT_Y),A
INC L INC L
LD A,(HL) ;SIMBOL LD A,(HL) ;SIMBOL
;
RET
;---------------------------------------------------------------;
;----------------------------------------------------------------------;
;HL/DE - X/Y
MOUSE: LD A,(MODE_M)
LD (RESTORE.sw),A
BIT 7,A
JP NZ,.GFX
;
; set txt-mode
.TXT: LD (RESTORE.TXT_X),HL
LD (RESTORE.TXT_Y),DE
;
IN A,(PORT_Y)
LD XH,A
IN A,(SLOT3)
LD XL,A
;
LD A,#54
;
CALL GET_SYMBOL_ADDR
;
LD BC,(ANDXORS) LD BC,(ANDXORS)
AND B AND B
XOR C XOR C
@ -426,136 +513,23 @@ MOUSET LD (REST_XT+1),HL
LD BC,(ANDXORA) LD BC,(ANDXORA)
AND B AND B
XOR C XOR C
LD (HL),A JR SET_RESTORE_EXIT
; ;
LD A,XL ;set gfx-mode
OUT (SLOT1),A .GFX: CP #82 ;640x256x16
LD A,XH JR NZ,.NOFIX_640
OUT (PORT_Y),A
RET
RESTORT:
REST_XT: LD HL,#0000
REST_YT: LD DE,#0000
;Y
SRL D
RR E
SRL D
RR E
SRL D
RR E
LD D,E
;X
SRL H SRL H
RR L RR L
SRL H .NOFIX_640: LD IX,M_IMAGE
RR L
SRL H
RR L
LD E,L
IN A,(PORT_Y)
LD XH,A
IN A,(SLOT1)
LD XL,A
;
DI
;
LD A,#50
OUT (SLOT1),A
;
LD A,D
ADD A,A
ADD A,A ;Y * 4
LD L,A
LD H,#43 ;+ #4300
;
IN A,(RGMOD)
RRCA
AND #80
OR #01
ADD A,E
OUT (PORT_Y),A
INC L
LD A,(HL) ;SIMBOL
LD (HL),A
INC L
LD A,(HL) ;ATTRIBUT
LD (HL),A
;
LD A,XL
OUT (SLOT1),A
LD A,XH
OUT (PORT_Y),A
RET
RESTORE:
.sw+1: LD A,#00
BIT 7,A
JP Z,RESTORT
RESTORG IN A,(SLOT3)
LD B,A
IN A,(PORT_Y)
LD C,A
PUSH BC
LD A,#50 ;!HARDCODE videopage
OUT (SLOT3),A
REST_X LD HL,0
REST_Y LD DE,0
LD A,E
EX AF,AF'
REST_V LD A,#00
AND 1
LD DE,#C000 ;screen 0
JR Z,AA2
LD DE,#C000+320 ;screen 1
AA2 ADD HL,DE
REST_A LD A,0
LD XH,A
EX AF,AF'
REST_H
RS002 LD BC,10
OUT (PORT_Y),A
EX AF,AF'
LD (PUSH_HL),HL
LD D,H
LD E,L
LDIR
PUSH_HL+1: LD HL,#0000
; POP HL
EX AF,AF'
INC A
JR Z,RS003
DEC XH
JR NZ,RS002
RS003 POP BC
LD A,B
OUT (SLOT3),A
LD A,C
OUT (PORT_Y),A
XOR A
RET
;HL/DE - X/Y
MOUSE: LD A,(MODE_M)
LD (RESTORE.sw),A
BIT 7,A
JP Z,MOUSET
MOUSEG: CP #82 ;640x256x16
JR NZ,NOFX
SRL H
RR L
NOFX: LD IX,M_IMAGE
LD A,(M_XSIZE) LD A,(M_XSIZE)
LD C,A LD C,A
LD B,0 LD B,0
LD (REALXS),BC LD (REALXS),BC
LD (REST_H+1),BC LD (RESTORE.Xsize),BC
LD C,B LD C,B
LD (SKIPXF),BC LD (SKIPXF),BC
LD A,(M_YSIZE) LD A,(M_YSIZE)
LD (REST_A+1),A LD (RESTORE.YSize),A
LD C,A LD C,A
LD B,0 LD B,0
LD (REALYS),BC LD (REALYS),BC
@ -563,7 +537,7 @@ NOFX: LD IX,M_IMAGE
LD A,E LD A,E
SUB C SUB C
LD E,A LD E,A
JR NC,GOODY JR NC,.GOOD_Y
NEG NEG
LD E,A LD E,A
LD A,(M_XSIZE) LD A,(M_XSIZE)
@ -571,15 +545,15 @@ NOFX: LD IX,M_IMAGE
LD B,0 LD B,0
LD A,(M_YSIZE) LD A,(M_YSIZE)
SUB E SUB E
SKIPMY: ADD IX,BC .SKIPMY: ADD IX,BC
DEC E DEC E
JR NZ,SKIPMY JR NZ,.SKIPMY
LD C,A LD C,A
LD (REALYS),BC LD (REALYS),BC
GOODY: LD BC,(XHOT_SP) .GOOD_Y: LD BC,(XHOT_SP)
AND A AND A
SBC HL,BC SBC HL,BC
JR NC,GOODX JR NC,.GOOD_X
LD B,H LD B,H
LD C,L LD C,L
LD HL,0 LD HL,0
@ -591,9 +565,9 @@ GOODY: LD BC,(XHOT_SP)
LD L,A LD L,A
LD (REALXS),HL LD (REALXS),HL
LD HL,0 LD HL,0
GOODX: LD (REST_X+1),HL .GOOD_X: LD (RESTORE.X),HL
LD (REST_Y+1),DE LD (RESTORE.Y),DE
;
PUSH HL PUSH HL
IN A,(SLOT3) IN A,(SLOT3)
LD H,A LD H,A
@ -604,41 +578,45 @@ GOODX: LD (REST_X+1),HL
OUT (SLOT3),A OUT (SLOT3),A
LD A,E LD A,E
EX AF,AF' EX AF,AF'
IN A,(RGMOD) IN A,(SCREEN_SWITCH)
LD (REST_V+1),A LD (RESTORE.SCR),A
AND 1 AND 1
LD DE,#C000 ;PAGE 0 LD DE,SLOT3.MEM_ADDR ;Screen 0
JR Z,AA1 JR Z,.adr
LD DE,#C000+320 ;PAGE 1 LD DE,SLOT3.MEM_ADDR+320 ;Screen 1
AA1 ADD HL,DE .adr: ADD HL,DE
LD D,XH LD D,XH
LD E,XL LD E,XL
EX DE,HL ;HL - BITMAP EX DE,HL ;HL - BITMAP
LD BC,(REALYS) LD BC,(REALYS)
LD XH,C LD XH,C
EX AF,AF' EX AF,AF'
MS002 LD BC,(SKIPXF) ;
.loop: LD BC,(SKIPXF)
ADD HL,BC ADD HL,BC
LD BC,(REALXS) LD BC,(REALXS)
OUT (PORT_Y),A OUT (PORT_Y),A
EX AF,AF' EX AF,AF'
;PUSH DE LD (.PUSH_DE),DE
LD (PUSH_DE+1),DE
LDIR LDIR
PUSH_DE LD DE,#0000 .PUSH_DE+1: LD DE,#0000
; POP DE
EX AF,AF' EX AF,AF'
INC A INC A
JR Z,MS003 JR Z,.exit_loop
DEC XH DEC XH
JR NZ,MS002 JR NZ,.loop
MS003 POP BC ;
.exit_loop: POP BC
LD A,B LD A,B
OUT (SLOT3),A OUT (SLOT3),A
LD A,C LD A,C
OUT (PORT_Y),A OUT (PORT_Y),A
XOR A XOR A
RET RET
;----------------------------------------------------------------------;
;----------------------------------------------------------------------;
READ_M: IN A,(PORT_MOUSE.Ctrl) READ_M: IN A,(PORT_MOUSE.Ctrl)
RRCA RRCA
@ -893,7 +871,8 @@ CONTROL CALL READ_M
LD (REDY),A LD (REDY),A
RET RET
REFRESH LD A,#01 REFRESH:
.hide+1: LD A,#01
OR A OR A
RET NZ RET NZ
REDY+1: LD A,#00 REDY+1: LD A,#00

View File

@ -179,11 +179,8 @@ ECHOKEY: CALL Cursor_On ;
CALL Cursor_Off ; ¢ëª«. ªãàá®à CALL Cursor_Off ; ¢ëª«. ªãàá®à
POP AF POP AF
OR A OR A
;!FIXIT scroll § ¬¥­¨âì ­  ¢ë¢®¤ ᨬ¢®«  ¡¨®á®¬ ¨«¨ WRCHAR ; [x] -bug with Vasil's version of cursor
; LD BC,1*256 + BIOS.LP_PRINT_SYM
; RST ToBIOS
CALL NZ,PUTCHAR.NO_SCROLL ; ¤®¡ ¢¨« ¢ë¢®¤ "a" ­  íªà ­ CALL NZ,PUTCHAR.NO_SCROLL ; ¤®¡ ¢¨« ¢ë¢®¤ "a" ­  íªà ­
;
POP BC POP BC
POP DE POP DE
LD A,E LD A,E
@ -261,17 +258,19 @@ cursor_interrupt:
; <20> áâனª  §­ ª®£¥­¥à â®à  ªãàá®à  ç¥àâ®çª®© ; <20> áâனª  §­ ª®£¥­¥à â®à  ªãàá®à  ç¥àâ®çª®©
SETUP_CURSORS: SETUP_CURSORS:
in a,(SLOT2) .buffer EQU #C000
;
in a,(SLOT3)
push af ; á®åà. ¯®àâ push af ; á®åà. ¯®àâ
ld a,(BANKTBL+TXTPAGE) ; 2-© «®£. ­®¬¥à áâà ­¨æë à áè. „Ž‘ ld a,(BANKTBL+TXTPAGE) ; 2-© «®£. ­®¬¥à áâà ­¨æë à áè. „Ž‘
out (SLOT2),a out (SLOT3),a
; ¯®«ãç¨âì á¨áâ. §­ ª®£¥­. ; ¯®«ãç¨âì á¨áâ. §­ ª®£¥­.
ld de,#8000 ;!HARDCODE ¡ãä¥à ¤«ï 2048 ¡ ©â ¤ ­­ëå ld de,.buffer ;!HARDCODE ¡ãä¥à ¤«ï 2048 ¡ ©â ¤ ­­ëå
push de push de
ld c,BIOS.WIN_GET_ZG ; ¯®«ãç¨âì §­ ª®£¥­. ld c,BIOS.WIN_GET_ZG ; ¯®«ãç¨âì §­ ª®£¥­.
rst ToBIOS rst ToBIOS
; § ¯®«­¨âì ª®¤®¬ #FF 2 ­¨¦­¨¥ «¨­¨¨ ; § ¯®«­¨âì ª®¤®¬ #FF 2 ­¨¦­¨¥ «¨­¨¨
ld hl,#8000+(2048-(2*256)) ;!HARDCODE ¯®á«¥¤­¨¥ 512 ¡ ©â ld hl,.buffer+(2048-(2*256)) ;!HARDCODE ¯®á«¥¤­¨¥ 512 ¡ ©â
ld bc,511 ld bc,511
ld a,CURSOR_ZG; ; ­®¬¥à §­ ª®£¥­. "ç¥àâ®çª " ld a,CURSOR_ZG; ; ­®¬¥à §­ ª®£¥­. "ç¥àâ®çª "
call .fill_data_font call .fill_data_font
@ -281,7 +280,7 @@ SETUP_CURSORS:
ld a,INS_CUR_ZG ; ­®¬¥à §­ ª®£¥­. "¡«®ª" ld a,INS_CUR_ZG ; ­®¬¥à §­ ª®£¥­. "¡«®ª"
call .fill_data_font call .fill_data_font
pop af pop af
out (SLOT2),a ; ¢®ááâ. ¯®àâ out (SLOT3),a ; ¢®ááâ. ¯®àâ
ret ret
; <20> áâனª  §­ ª®£¥­. ¨ ¥£® ॣ¨áâà æ¨ï ; <20> áâனª  §­ ª®£¥­. ¨ ¥£® ॣ¨áâà æ¨ï
; ¢å®¤: a=­®¬¥à §­ ª®£¥­. ; ¢å®¤: a=­®¬¥à §­ ª®£¥­.
@ -293,7 +292,7 @@ SETUP_CURSORS:
ld (hl),#FF ld (hl),#FF
inc de inc de
ldir ldir
ld de,#8000 ; §­ ª®£¥­. ld de,.buffer ; §­ ª®£¥­.
ld c,BIOS.WIN_SET_ZG ; ãáâ. §­ ª®£¥­. ld c,BIOS.WIN_SET_ZG ; ãáâ. §­ ª®£¥­.
rst ToBIOS rst ToBIOS
ret ret

View File

@ -286,7 +286,7 @@ ERROR_BOOTDRV_DIES:
RST ToBIOS RST ToBIOS
; ;
LD A,1 LD A,1
OUT (RGMOD),A ; set scr-2 OUT (SCREEN_SWITCH),A ; set scr-2
; ;
LD HL,.ERROR_MSG LD HL,.ERROR_MSG
LD DE,#A000 LD DE,#A000

View File

@ -313,7 +313,7 @@ FDDRIVE:
LD H,B LD H,B
EX DE,HL EX DE,HL
EXX EXX
LD C,0 ;[ ] 17.12.2023 § £à㧪  á  ªâ¨¢­®£® à §¤¥« ,   ­¥ á ¯¥à¢®£® LD C,0 ;[x] 17.12.2023 § £à㧪  á  ªâ¨¢­®£® à §¤¥« ,   ­¥ á ¯¥à¢®£®
AND A AND A
RET RET

View File

@ -455,7 +455,7 @@ IOCTL_RD:
SCF SCF
RET RET
; C - PARTITION RECORD NUMBER IN DRIVE MBR must be 0 here ;[ ] 17.12.2023 § £à㧪  á  ªâ¨¢­®£® à §¤¥« ,   ­¥ á ¯¥à¢®£® ; C - PARTITION RECORD NUMBER IN DRIVE MBR must be 0 here ;[x] 17.12.2023 § £à㧪  á  ªâ¨¢­®£® à §¤¥« ,   ­¥ á ¯¥à¢®£®
; HL:DE - SECTORS ON LOGICAL DISK ; HL:DE - SECTORS ON LOGICAL DISK
; HL' - CYLINDERS ON PHISICAL DISK ; HL' - CYLINDERS ON PHISICAL DISK
; DE' - HEADS ON PHISICAL DISK ; DE' - HEADS ON PHISICAL DISK

View File

@ -47,20 +47,14 @@ PCHARS: LD A,(HL)
; ¢ë室: ­¥â ; ¢ë室: ­¥â
;///////////////////////////////////////////////////////////////////// ;/////////////////////////////////////////////////////////////////////
PUTCHAR: PUTCHAR:
CP #0D ;CALL .NO_SCROLL
JR Z,.CR_ CP #0E
CP #0A JR C,.control_characters
JR Z,.LF_
CP #09
JR Z,.TB_
CP #08
JR Z,.BK_
CP #07
JR Z,.BELL ; [x] Beep in PChars/PUTCHAR
; ;
.CHAR: LD BC,1*256 + BIOS.LP_PRINT_SYM LD BC,1*256 + BIOS.LP_PRINT_SYM
;[x] CR+LF+SCROLL ;[x] CR+LF+SCROLL
RST ToBIOS RST ToBIOS
;
; ¯à®¢¥àª  ­  ¯¥à¥å®¤ ªãàá®à  ¢ á ¬®¥ ­ ç «® (X:Y == 0:0) ; ¯à®¢¥àª  ­  ¯¥à¥å®¤ ªãàá®à  ¢ á ¬®¥ ­ ç «® (X:Y == 0:0)
CALL CURSOR CALL CURSOR
LD A,D LD A,D
@ -80,8 +74,7 @@ PUTCHAR:
CALL LOCATE CALL LOCATE
POP HL POP HL
RET RET
.TB_: LD C,BIOS.LP_GET_PLACE ;GET CURSOR .TB_: CALL CURSOR
RST ToBIOS
IF TABisSPACES IF TABisSPACES
LD B,E LD B,E
LD A,E LD A,E
@ -99,15 +92,13 @@ PUTCHAR:
LD E,A LD E,A
JP LOCATE JP LOCATE
ENDIF ENDIF
.BK_: LD C,BIOS.LP_GET_PLACE ;GET CURSOR .BK_: CALL CURSOR
RST ToBIOS
XOR A XOR A
CP E CP E
RET Z RET Z
DEC E DEC E
JP LOCATE JP LOCATE
.LF_: LD C,BIOS.LP_GET_PLACE ;GET CURSOR .LF_: CALL CURSOR
RST ToBIOS
LD A,D LD A,D
CP #1F CP #1F
JR NC,.LFF JR NC,.LFF
@ -118,8 +109,7 @@ PUTCHAR:
CALL LOCATE CALL LOCATE
; !!!! <20>… à §à뢠âì LF_ ¨ CR_ !!!! ; !!!! <20>… à §à뢠âì LF_ ¨ CR_ !!!!
ENDIF ENDIF
.CR_: LD C,BIOS.LP_GET_PLACE ;GET CURSOR .CR_: CALL CURSOR
RST ToBIOS
LD E,0 LD E,0
JP LOCATE JP LOCATE
; [x] Beep in PChars/PUTCHAR ; [x] Beep in PChars/PUTCHAR
@ -132,6 +122,12 @@ PUTCHAR:
; ;
; [x] -bug with Vasil's version of cursor ; [x] -bug with Vasil's version of cursor
.NO_SCROLL: .NO_SCROLL:
CP #0E
JR C,.control_characters
._CHAR: LD BC,1*256 + BIOS.LP_PRINT_SYM
JP ToBIOS
;
.control_characters:
CP #0D CP #0D
JR Z,.CR_ JR Z,.CR_
CP #0A CP #0A
@ -142,8 +138,7 @@ PUTCHAR:
JR Z,.BK_ JR Z,.BK_
CP #07 CP #07
JR Z,.BELL ; [x] Beep in PChars/PUTCHAR JR Z,.BELL ; [x] Beep in PChars/PUTCHAR
._CHAR: LD BC,1*256 + BIOS.LP_PRINT_SYM RET
JP ToBIOS
;-----[] ;-----[]
; ;
; ;
@ -397,14 +392,14 @@ GETVMOD:
; ”ã­ªæ¨ï #50. ‚ë¡®à ०¨¬  íªà ­ . ; ”ã­ªæ¨ï #50. ‚ë¡®à ०¨¬  íªà ­ .
; ;
; ¢å®¤: A - ०¨¬ íªà ­  ; ¢å®¤: A - ०¨¬ íªà ­ 
; 02h - ⥪áâ®¢ë© 40x32x16 梥⮢ ; #02 - ⼪áâŽ˘ëŠ 40x32x16 梼⎢
; 03h - ⥪áâ®¢ë© 80x32x16 梥⮢ ; #03 - ⼪áâŽ˘ëŠ 80x32x16 梼⎢
; 81h - £à ä¨ç¥áª¨© 320x256x256 梥⮢ ; #81 - Łŕ ä¨çĽáŞ¨Š 320x256x256 梼⎢
; 82h - £à ä¨ç¥áª¨© 640x256x16 梥⮢ ; #82 - Łŕ ä¨çĽáŞ¨Š 640x256x16 梼⎢
; B - áâà ­¨æ  íªà ­  0/1 ; B - áâà ­¨æ  íªà ­  0/1
; ¢ë室: A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1 ; ¢ë室: A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
;///////////////////////////////////////////////////////////////////// ;/////////////////////////////////////////////////////////////////////
SETVMOD:;BIT 7,A SETVMOD:;
CP %1000'0000 CP %1000'0000
LD C,A LD C,A
JR NC,GRAPH JR NC,GRAPH
@ -412,10 +407,8 @@ SETVMOD:;BIT 7,A
PUSH IX PUSH IX
EX AF,AF' EX AF,AF'
LD A,(VMODE) LD A,(VMODE)
LD (VVMODE),A LD (BACKTXT.VMODE),A
EX AF,AF' EX AF,AF'
//INC A
//DEC A
OR A OR A
JR Z,.NOMODE JR Z,.NOMODE
DEC A DEC A
@ -626,17 +619,18 @@ SAVETXT: PUSH AF
PUSH AF PUSH AF
LD C,BIOS.LP_GET_PLACE LD C,BIOS.LP_GET_PLACE
RST ToBIOS RST ToBIOS
LD (TCURS),DE LD (BACKTXT.CURS),DE
POP AF POP AF
LD IX,#C000 LD IX,#C000
LD HL,#2050 LD HL,#2050
OR A OR A
JR NZ,.SVTEXT1 JR NZ,.SVTEXT1
LD L,#28 LD L,#28
.SVTEXT1: LD (SVHL1),HL .SVTEXT1: LD (BACKTXT.WinMax),HL
LD DE,#0000 LD DE,#0000
LD A,(BANKTBL+TXTPAGE) LD A,(BANKTBL+TXTPAGE)
LD B,A LD B,A
LD C,BIOS.WIN_COPY LD C,BIOS.WIN_COPY
;[x] 29/9/23 ;[x] 29/9/23
LD A,R LD A,R
@ -659,7 +653,7 @@ SAVETXT: PUSH AF
;---------------------------------------------------------------------- ;----------------------------------------------------------------------
BACKTXT: PUSH AF BACKTXT: PUSH AF
VVMODE+1: LD A,#00 .VMODE+1: LD A,#00
;BIT 7,A ;BIT 7,A
CP %1000'0000 CP %1000'0000
JR C,NOBACKT JR C,NOBACKT
@ -669,7 +663,7 @@ VVMODE+1: LD A,#00
PUSH HL PUSH HL
PUSH IX PUSH IX
LD IX,#C000 LD IX,#C000
SVHL1+1: LD HL,#2050 .WinMax+1: LD HL,#2050
LD DE,#0000 LD DE,#0000
LD A,(BANKTBL+TXTPAGE) LD A,(BANKTBL+TXTPAGE)
LD B,A LD B,A
@ -683,10 +677,10 @@ SVHL1+1: LD HL,#2050
RST ToBIOS RST ToBIOS
;[x] 29/9/23 ;[x] 29/9/23
POP AF POP AF
JP PO,1F JP PO,.no_ei
EI EI
1: ; .no_ei: ;
TCURS+1: LD DE,#0000 .CURS+1: LD DE,#0000
CALL LOCATE CALL LOCATE
POP IX POP IX
POP HL POP HL

View File

@ -1 +1 @@
880 905

View File

@ -7,6 +7,10 @@
DEFINE COMPILE_UNUSED_CODE 0 DEFINE COMPILE_UNUSED_CODE 0
; ;
;
DEFINE MOUSE_COM_BAUD_4800 0
;
; ;
;LD_DSK EQU 16 ; ¬ ªá¨¬ «ì­®¥ ª®«¨ç¥á⢮ «®£¨ç¥áª¨å HDD ¤¨áª®¢ ¢ á¨á⥬¥ ;LD_DSK EQU 16 ; ¬ ªá¨¬ «ì­®¥ ª®«¨ç¥á⢮ «®£¨ç¥áª¨å HDD ¤¨áª®¢ ¢ á¨á⥬¥
@ -85,3 +89,17 @@ FMCOUNT EQU 10 ;
HANDBUF.SIZE EQU 32 HANDBUF.SIZE EQU 32
;----------------------------------------------------; ;----------------------------------------------------;
; ;
;
;----------------------------------------------------;
IF MOUSE_COM_BAUD_4800
MOUSE_BAUD:
.multiplier_1 EQU #04 ; ¯¥à¢ë© ¬­®¦¨â¥«ì = 1. 875000/Œ­1*Œ­2=4807
.multiplier_2 EQU #B6 ; ¢â®à®© ¬­®¦¨â¥«ì = 182. 875000/Œ­1*Œ­2=4807
ELSE
MOUSE_BAUD:
.multiplier_1 EQU #47 ; ¯¥à¢ë© ¬­®¦¨â¥«ì = 16. 875000/Œ­1*Œ­2=1215
.multiplier_2 EQU #2D ; ¢â®à®© ¬­®¦¨â¥«ì = 45. 875000/Œ­1*Œ­2=1215
ENDIF
;----------------------------------------------------;
;

View File

@ -5,12 +5,10 @@
;/////////////////////////////////////////////////// ;///////////////////////////////////////////////////
cmd_chdir: cmd_chdir:
ex de,hl ex de,hl
;ld de,T9186 ; ¡ãä¥à
ld de,work_buffer1; ld de,work_buffer1;
ld c,Dss.GSwitch ; ¢ë¤¥«¨âì ¯ à ¬¥âà ª®¬-áâப¨ ld c,Dss.GSwitch ; ¢ë¤¥«¨âì ¯ à ¬¥âà ª®¬-áâப¨
RST ToDSS RST ToDSS
xor a xor a
;ld hl,T9186
ld hl,work_buffer1; ld hl,work_buffer1;
cp (hl) cp (hl)
jr nz,A877B jr nz,A877B
@ -23,9 +21,7 @@ cmd_chdir:
dec hl dec hl
A877B: ld c,Dss.ChDir ; ᬥ­¨âì ⥪. ª â «®£ A877B: ld c,Dss.ChDir ; ᬥ­¨âì ⥪. ª â «®£
RST ToDSS RST ToDSS
;call c,print_err_message
jp c,print_err_message ; ¢ë¢®¤ á®®¡é¥­¨ï jp c,print_err_message ; ¢ë¢®¤ á®®¡é¥­¨ï
; call newline
jp Get_Path ; á®åà. ⥪. ¤¨áª ¨ ¯ãâì jp Get_Path ; á®åà. ⥪. ¤¨áª ¨ ¯ãâì
; ; ¢ë¢®¤ á¨áâ. ¯ã⨠­  íªà ­ ; ; ¢ë¢®¤ á¨áâ. ¯ã⨠­  íªà ­
; ld c,8Eh ; ã§­ âì ¯®«®¦. ªãàá®à  ; ld c,8Eh ; ã§­ âì ¯®«®¦. ªãàá®à 

View File

@ -520,7 +520,7 @@ T8B46: db "0 000 000 000",0
db 0 db 0
; ;
; [ ] ג¥¯¥אל ­¥ «¥§¥ג ­ ¯אן¬דמ, ¤¥« ¥ג ח¥א¥§ ­®¢כ© ¯ א ¬¥גא הד­×ז¨¨ DskInfo ; [x] ג¥¯¥אל ­¥ «¥§¥ג ­ ¯אן¬דמ, ¤¥« ¥ג ח¥א¥§ ­®¢כ© ¯ א ¬¥גא הד­×ז¨¨ DskInfo
; ¨­ ï «®£¨ª  ¯®«ã祭¨ï ¬¥âª¨ ⮬  - á­ ç «  ¨é¥âáï ¢ ª®à­¥¢®© ¤¨à¥ªâ®à¨¨, ; ¨­ ï «®£¨ª  ¯®«ã祭¨ï ¬¥âª¨ ⮬  - á­ ç «  ¨é¥âáï ¢ ª®à­¥¢®© ¤¨à¥ªâ®à¨¨,
; ¥á«¨ â ¬ ­¥â, â® ¡¥àñâáï ¨§ BPB ; ¥á«¨ â ¬ ­¥â, â® ¡¥àñâáï ¨§ BPB
read_disk_info: read_disk_info:

@ -1 +1 @@
Subproject commit 4d37c338c31c060e7a42f1e47fad93b69af34a5b Subproject commit 795ad6ac57585133e1ffb8f0baafb3751dda576c