LP_PR_LINE_DIR - добавлен параметр для отключения скролла при печати

TRAY_FN - исправлен баг с извлечением носителя
This commit is contained in:
Tolik 2025-07-04 23:23:48 +10:00
parent 6eda6215d8
commit 0188b1dfce
5 changed files with 61 additions and 337 deletions

View File

@ -343,64 +343,8 @@ ATAPI_5x_LONG_WRITE:
SCF ;write
EX AF,AF'
JR ATAPI_BEGIN_RW
;
; SAFE_PORTY_2
; PUSH BC
; PUSH IX
; PUSH HL
; ;
; CALL RW_ATAPI_SECTORs
; ;
; JP ATA_5x_LONG_READ.shared
;[]================================================================[#53]
;[]================================================================[#57]
;Function: Detect Disk
; A - Disk
;Return: CF=0 - A=Drive type
; B=MediaParameters byte ; [ ] media change
; CF=1 - drive not present, A=#02
; ATAPI_5x_DETECT: LD C,IDE.Device.ATAPI
; AND %1011'1111
; .shared: LD D,A
; LD E,C
; PUSH DE
; CALL DRV_DETECT
; POP DE
; RET C
; ;
; PUSH AF
; LD C,SLOT3
; IN B,(C)
; LD A,SYS_PAGE
; OUT (C),A
; INC HL ;!HARDCODE HDD_INIT_TABLE
; INC HL
; INC HL
; LD A,(HL)
; OUT (C),B
; LD B,A
; AND %0000'0011 ;[ ] media change ¯¥à¥¤¥« âì «®£¨ªã âãâ ¨ ¢ „‘‘? ; !FIXIT
; JR NZ,.error
; ;
; .exit: POP AF
; RET
; ;
; .error: AND %0000'0010
; JR NZ,.UnitAttention
; ;
; LD A,D
; LD C,E
; CALL SELECT_DRIVE
; CALL ATAPI_CHECK_MEDIA_CHANGED
; JR NC,.exit
; POP BC
; RET
; ;
; .UnitAttention: POP AF
; LD A,BIOS.Error.ATAPI.UnitAttention
; SCF
; RET
;[]================================================================[#57]
;[]================================================================[#57]
;Function: Detect Disk
; A - Disk
@ -469,20 +413,6 @@ ATAPI_CHECK_MEDIA_CHANGED:
;----------------------------------------------------------------------;
;----------------------------------------------------------------------;
; ATAPI_CHECK_ERROR:
; CALL ATAPI_GET_ERROR_REG
; ;CP BIOS.Error.ATAPI.NoSence
; ;JP Z,ATAPI_MEDIA_ERROR
; CP BIOS.Error.ATAPI.NotReady
; JP Z,ATAPI_MEDIA_ERROR
; CP BIOS.Error.ATAPI.UnitAttention
; JP Z,ATAPI_MEDIA_ERROR
; ;
; SCF
; RET
;----------------------------------------------------------------------;
;----------------------------------------------------------------------;
; HL - 㪠§ â¥«ì ­  ¯ ª¥â­ãî ª®¬ ­¤ã (¯¥à¢ë© ¨«¨ ¢â®à®© á«®â)
@ -501,14 +431,14 @@ TRAY_FN: LD HL,ATAPI_CMD_PACKET.CLOSE
DEC A
JR Z,EXEC_PACKET_COMMAND.start
LD HL,ATAPI_CMD_PACKET.OPEN
;JR EXEC_PACKET_COMMAND
JR EXEC_PACKET_COMMAND.start
; INPUT: HL - AP packet (12bytes)
; DE - address for/with data if needed
; A' - ­ ç «ì­ ï áâà ­¨æ  ¤«ï R/W Long
;
; RETURN: CF - ERROR
; ;!FIXIT ­®¬¥à  ­¥¯à ¢¨«ì­ë¥
; !FIXIT ­®¬¥à  ­¥¯à ¢¨«ì­ë¥
; !TODO CD ERRORS to INCLUDES
; #01 - RECOVERED ERROR
; #02 - NOT READY
@ -520,10 +450,6 @@ TRAY_FN: LD HL,ATAPI_CMD_PACKET.CLOSE
; #0B - ABORTED COMMAND
; #80 - TIME OUT
EXEC_PACKET_COMMAND:
; .error_APLOOP: LD A,BIOS.Error.ATAPI.UnitAttention
; RET
;CALL ATAPI_GET_ERROR_REG
.error_ex: EX DE,HL
.error: CP #FF
.error_fail: SCF
@ -685,7 +611,6 @@ EXEC_PACKET_COMMAND:
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ATAPI_IdlePasses:
;CALL ATAPI_WAITPRT.wait_NZ
LD B,_ZIP_WAITS_
DJNZ $
CALL ATAPI_CHECK_DRV
@ -757,18 +682,6 @@ ATAPI_CHECK_DRV:
SCF
RET
;
; .zeroWait: ;LD B,2
; LD HL,#800
; .loop: LD A,high IDE.Read.Status
; IN A,(low IDE.Read.Status)
; AND A
; RET NZ
; DEC HL
; LD A,H
; OR L
; JR NZ,.loop
; ;DJNZ .loop
; RET
ATAPI_PREPARE_RW:
LD BC,IDE.Read.ByteCountLow
@ -790,30 +703,6 @@ ATAPI_PREPARE_RW:
LD BC,IDE.Read.Data
SCF
RET
; .AddrOverflow: EX DE,HL
; AND A
; SBC HL,DE
; EX DE,HL
; RET
;
; !TODO 宫®á⮥ ç⥭¨¥
; .error_buffer: AND A
; SBC HL,DE
;.NULL:
;.RD_N_CD: IN A,(C)
; DEC B
; IN A,(C)
; DEC B
; DEC DE
; DEC DE
; LD A,D
; OR E
; JR NZ,.RD_N_CD
; ; DE = 0
; JR .AP_LOOP
;----------------------------------------------------------------------;
@ -855,145 +744,14 @@ ATAPI_WAITPRT: LD DE,256*IDE.CtrlByte.Busy + 0
LD A,H
OR L
JR NZ,.LOOP
;
; LD A,high IDE.Read.Status
; IN A,(low IDE.Read.Status)
; CP #FF
; SCF
; RET Z
;
; 1ÿ392ÿ512ÿ256
DJNZ .LOOP
;
; LD A,high IDE.Read.Status
; IN A,(low IDE.Read.Status)
; INC A ;CP #FF
; SCF
; RET Z
;
LD A,BIOS.Error.Busy
SCF
RET
;
; .wait_NZ: LD B,2 ; 50 - § ¤¥à¦ª  ®¯à¥¤¥«ñ­­ ï â¥áâ ¬¨ ­  IOMEGA ZIP Drive
; .NZ_loop: LD A,high IDE.Read.Status
; IN A,(low IDE.Read.Status)
; LD C,A
; AND A
; CALL NZ,PutHexNumb
; ;INC A
; ;RET NZ
; ;AND IDE.CtrlByte.Busy + IDE.CtrlByte.DataRequest + IDE.CtrlByte.CheckCondition
; ;INC A
; ;AND A
; ;RET NZ
; DJNZ .NZ_loop
; RET
;----------------------------------------------------------------------;
;----------------------------------------------------------------------;
;<3B>à®æ¥¤ãà  ¯à¥®¡à §®¢ ­¨ï 8¡¨â®¢ëå ç¨á¥« ¢ è¥áâ­ ¤æ. ⥪áâ
;<3B>  ¢å®¤:
; HL -  ¤à¥á ¡ãä¥à 
; € - ¡ ©â
;<3B>  ¢ë室:
; DE - ¤¢  ¡ ©â  è¥áâ­ ¤æ â¥à¨ç­®£® ⥪áâ 
; PutHexNumb: PUSH IX
; PUSH IY
; PUSH AF
; EX AF,AF'
; PUSH AF
; EX AF,AF'
; PUSH DE
; PUSH HL
; PUSH BC
; LD A,C
; EXX
; PUSH DE
; PUSH HL
; PUSH BC
; ;
; PUSH AF
; RRCA
; RRCA
; RRCA
; RRCA
; AND #0F
; ADD A,#90
; DAA
; ADC A,#40
; DAA
; LD E,A
; POP AF
; AND #0F
; ADD A,#90
; DAA
; ADC A,#40
; DAA
; LD D,A
; ;
; LD HL," "
; PUSH HL
; PUSH DE
; LD L,0
; ADD HL,SP
; ;
; SCF
; LD B,COLORS.CGA.INK.LGRAY + COLORS.CGA.PAPER.BLACK
; EX AF,AF'
; AND A
; LD A,B
; CALL LP_PR_LINE_DIR.START
; POP HL
; POP HL
; ;
; POP BC
; POP HL
; POP DE
; EXX
; POP BC
; POP HL
; POP DE
; POP AF
; EX AF,AF'
; POP AF
; POP IY
; POP IX
; RET
;
;----------------------------------------------------------------------;
;----------------------------------------------------------------------;
; D - MASK, E - PATTERN
; !!! ­¥ª®â®àë¥ ä㭪樨 ­ ¤¥îâáï, çâ® ­  ¢ë室¥ ¢á¥£¤  ZF
; ­¥ ¤®«¦­  âண âì ॣ. C
; ATAPI_WAITPRT: LD DE,256*IDE.CtrlByte.Busy + 0
; .Custom:
; .LOOP: LD A,high IDE.Read.Status
; IN A,(low IDE.Read.Status)
; CP #FF
; JR Z,.error
; ;
; AND D
; CP E
; RET Z
; JR .LOOP
; ;
; ; LD A,high IDE.Read.Status
; ; IN A,(low IDE.Read.Status)
; ; INC A ;CP #FF
; ; SCF
; ; RET Z
; ; ;
; ; LD A,BIOS.Error.Busy
; ; RET
; ;
; .error: SCF
; RET
;----------------------------------------------------------------------;
;----------------------------------------------------------------------;
; DE - buffer
ATAPI_READ_CAPACITY_DATA:
@ -1036,13 +794,6 @@ ATAPI_READ_CAPACITY_DATA:
;----------------------------------------------------------------------;
;----------------------------------------------------------------------;
; ATAPI_TEST: LD HL,ATAPI_CMD_PACKET.TEST_UNIT_READY
; LD DE,0 ; ¬ àª¥à ⮣®, çâ® ­¥ ­ã¦­® ç¨â âì á ãáâனá⢠ ¢ އ“
; JP EXEC_PACKET_COMMAND
;----------------------------------------------------------------------;
;----------------------------------------------------------------------;
ATAPI_MEDIA_ERROR:
PUSH IX
@ -1078,27 +829,6 @@ ATAPI_MEDIA_ERROR:
LD (IY + IDE.HDD_INIT_TABLE.MediaParameters),A
;
CALL GET_ATAPI_CAPACITY
; LD DE,SYS_PAGE.TMP_BUFFER
; CALL ATAPI_READ_CAPACITY_DATA
; ;
; LD HL,#FFFF
; LD C,BIOS.Error.ATAPI.MediumError
; JR C,.No_Media
; ;
; LD HL,(SYS_PAGE.TMP_BUFFER) ; media size high
; LD (IY+IDE.HDD_INIT_TABLE.MediaSizeHigh),H
; LD (IY+IDE.HDD_INIT_TABLE.MediaSizeHigh+1),L
; LD HL,(SYS_PAGE.TMP_BUFFER + 2) ; media size low
; LD (IY+IDE.HDD_INIT_TABLE.MediaSizeLow),H
; LD (IY+IDE.HDD_INIT_TABLE.MediaSizeLow+1),L
; LD HL,(SYS_PAGE.TMP_BUFFER + 6) ; sector size
; ;
; LD C,BIOS.Error.ATAPI.UnitAttention
; .No_Media: LD (IY+IDE.HDD_INIT_TABLE.SectorSize),H ;[ ] sector size
; LD (IY+IDE.HDD_INIT_TABLE.SectorSize + 1),L
; JR NC,.exit
; SET 2,(IY + IDE.HDD_INIT_TABLE.MediaParameters)
;
.exit: POP AF
POP HL
POP IX
@ -1184,7 +914,6 @@ ATAPI_CMD_PACKET:
DB #00
;
.WRITE: DB #2E,#00 ; write and verify
;DB #2A,#00 ; write
DB #00,#00,#00,#00 ; sector dword
DB #00
DB #00,#01,#00,#00 ; counter dword
@ -1198,24 +927,12 @@ ATAPI_CMD_PACKET:
DB MAX_DATA_PACKET_FOR_REQUEST_SENSE
DB #00,#00,#00,#00,#00,#00,#00
;
ATAPI_PACKET:
.SECTOR EQU 2
.COUNTER EQU 7
////////////////////////////////////////////////////////////////////////
;
; E - Second * 10
; PAUSE LD HL,#0000
; PAUSE1 DEC L
; JR NZ,PAUSE1
; DEC H
; JR NZ,PAUSE1
; DEC E
; JR NZ,PAUSE1
; RET
;
/*
᫨ «®¢¨âáï ®è¨¡ª  media changed, â® ¡¨®á ¤®«¦¥­ ¢ëáâ ¢«ïâì ¢ HDD_INIT_TABLE.MediaParameters = 3
¨ § â¨à âì FF SectorSize.
®á ¯®á«¥ ¯®«ã祭¨ï â ª®© ®è¨¡ª¨ ¤®«¦¥­ ¢ë§ë¢ âì BIOS.DRV_DETECT ¨ ¥á«¨ ¢áñ ŽŠ, â® ReScanDRV
*/
; …᫨ «®¢¨âáï ®è¨¡ª  media changed, â® ¡¨®á ¤®«¦¥­ ¢ëáâ ¢«ïâì ¢ HDD_INIT_TABLE.MediaParameters = 3
; ¨ § â¨à âì FF SectorSize.
; „®á ¯®á«¥ ¯®«ã祭¨ï â ª®© ®è¨¡ª¨ ¤®«¦¥­ ¢ë§ë¢ âì BIOS.DRV_DETECT ¨ ¥á«¨ ¢áñ ŽŠ, â® ReScanDRV

View File

@ -33,7 +33,6 @@ DRV_LIST:
OUT (SLOT3),A ; !TODO ᤥ« âì áâàãªâãன
XOR A
LD (IX+0),#04 ; DB 0 ;LEN ;!HARDCODE
;LD (IX+1),A ; DB 0 ;FDD COUNT
LD (IX+1),#02 ; DB 0 ;FDD COUNT
LD (IX+2),A ; DB 0 ;HDD COUNT
LD (IX+3),A ; DB 0 ;CDROM COUNT

View File

@ -1656,6 +1656,7 @@ LP_PR_LINE_DIR:
JP LP_END_P
;;;;;;;;;;;;;;;;;
; A -  âਡãâë ¢ë¢®¤¨¬®£® ᨬ¢®«  ¥á«¨ CF'
; A' - ¥á«¨ !=0 â® ¡¥§ áªà®«« 
; CF - XY-mode
; DE - ¬¥á⮠ᨬ¢®«  ¢ ®ª­¥, ¥á«¨ CF=1
; HL -  ¤à¥á á ¢ë¢®¤¨¬®© áâப®©
@ -1674,10 +1675,11 @@ LP_PR_LINE_DIR:
LD C,A
CALL LP_BEG_P
CALL C,LP_SET_CUR ; mode for DE
POP AF ; attr-mode
LD A,B
; ¤ «¥¥ ॣ B ᢮¡®¤¥­, ¬®¦­® § ¤¥©á⢮¢ âì
LD (SYS_PAGE.SYS_WORK2),A ; 梥⠪®­á®«¨
POP AF ; attr-mode, scroll on/off
LD B,A ; scroll on/off
EXX
RL C ; C' - attr-mode. ¢ë¢®¤¨âì  âਡãâ
.loop: LD A,D
@ -1840,6 +1842,13 @@ LP_NEXT_HL_DIR: LD A,SYS_PAGE
.end_line: LD A,L
SUB 4 ;!HARDCODE ¤«¨­  ®¤­®£® ®¯¨á â¥«ï ª¢ ¤à â¨ª 
LD L,A
; ¨£­®à¨¬ áªà஫« ¨«¨ ­¥â?
EXX
LD A,B
EXX
AND A
RET NZ ; ZF=0 ¨£­®à áªà®«« 
;
PUSH HL
DEC L
PUSH BC

Binary file not shown.

View File

@ -1,8 +1,7 @@
TODO:
- ¯ã­ªâ ¢ á¥â ¯¥ "á®åà ­ïâì áâà ­¨æë ᯥªâà㬠 ¯à¨ ¯¥à¥§ £à㧪¥"
- ¯¥à¥¤ ¨­¨æ¨ «¨§ æ¨¥© áâà ­¨æ ᯥªâà㬠 ¨ áâà ­¨æë 41 ¯à®¢¥àïâì, ­¥ § ­ïâë «¨ ®­¨ à ¬¤¨áª®¬
-? ¯ã­ªâ ¢ á¥â ¯¥ "á®åà ­ïâì áâà ­¨æë ᯥªâà㬠 ¯à¨ ¯¥à¥§ £à㧪¥"
- η¨αβ¨βμ ‘γδ₯ΰ ͺ« ’λ ­₯ ’βγ―γξ,   ͺ ͺ¨¬¨-­¨‘γ€μ ͺ<>¬ ­ ¬¨ €«ο νβ¨ε ’αοͺ¨ε SIO/PIO, ₯᫨ ₯αβμ
-+ ! ¢ Setup ¤®¡ ¢¨âì ¯ã­ªâ ­ áâனª¨ ¢à¥¬¥­¨ ¨ ¤ âë
Done:
+ ­₯¬­<C2AC>£<EFBFBD><>ΰ <C2A0>β ­  α¨αβ₯¬  ―₯ΰ₯ε’ β  ΰ₯α₯β  €«ο γαβΰ ­₯­¨ο ­ͺ<E282AF>β<EFBFBD>ΰλε £«ξͺ<CEBE> ¨ ­  ‘γ€γι₯₯