- плагин доделан, описание/history в cdplayer.txt рядом с плагином. FE 1.09 - исправлено: при выходе из редактора с несохраненным файлом и запросе на сохранение клавиша Enter теперь работает как подтверждение сохранения. FN 1.16 - встроенный editor переехал в плагин откуда и запускается по F4, из FN удален. - встроенный viewer переехал в плагин откуда и запускается по F3, из FN удален. - встроенный help переехал в плагин откуда и запускается при нажатии F1, из FN удален. - загрузка плагина отделена от запуска, теперь можно запускать плагины не только из панели FN. - добавлен макрос формирования заголовка для плагинов. - добавлена поддержка работы плагинов в адреса 0x4000-0x7FFF (окно 1) в дополнение к старым 0xC000-0xBFFF (окно 3), пока используется в плагине cdplayer. - в окнах с ошибкой переделан на 2 типа окон вместо многих под каждую ошибку. - исправлена потеря цвета при печати текста по указанному адресу. - текстовым файлам вернул кодировку CP866, readme.md оставлен в кодировке UTF8.
718 lines
13 KiB
Plaintext
718 lines
13 KiB
Plaintext
|
||
; LAST UPDATE: 15.07.2025 savelij
|
||
|
||
include macros.a80
|
||
include fn_const.a80
|
||
include fn_macros.a80
|
||
include accel_sp.a80
|
||
include ports_sp.a80
|
||
include define_sp.a80
|
||
include errors_sp.a80
|
||
include macros_sp.a80
|
||
include dss_sp.a80
|
||
include bios_sp.a80
|
||
include vers.a80
|
||
|
||
DEBUG EQU 0
|
||
BUF_TOC EQU RESULT + 3000
|
||
|
||
HDR_FLX "-CDPL",,,FLXMODES.M_ADRORG
|
||
|
||
PluginEntry:
|
||
MAKEWINDOW WINSUBOBJ.STORE
|
||
W_MAIN 78,79,484,72
|
||
W_FILL 4,2,464,10,COLORI.BLUE + COLORP.BLUE
|
||
W_TEXT 8,4,COLORI.WHITE + COLORP.BLUE,"SHAOS CD-Player v\{CDVERS}"
|
||
W_BUTTONTEXT 468,2,12,10,COLORP.HIGHGRAY,"x"
|
||
W_BORDER 8,15,268,38
|
||
W_FILL 10,16,264,36,COLORI.BLACK
|
||
W_BUTTON 282,15,116,18
|
||
W_BUTTON 402,15,36,18
|
||
W_BUTTON 442,15,36,18
|
||
W_BUTTON 282,35,36,18
|
||
W_BUTTON 322,35,36,18
|
||
W_BUTTON 362,35,36,18
|
||
W_BUTTON 402,35,36,18
|
||
W_BUTTON 442,35,36,18
|
||
W_HORIZLINE 2,56,480
|
||
W_END
|
||
call JUMPS.ResFire
|
||
CALL SHOW_BUTTON ; ¢ë¢®¤ ¨ª®®ª ª®¯ª¨
|
||
IF DEBUG
|
||
CALL DEBUG_TXTKEYS ; ®â« ¤®çë© â¥ªáâ
|
||
ENDIF
|
||
call CDinit ; ¯®¨áª Audio-CD ¨ ¨¨â
|
||
call BIGDIGITSALL
|
||
plugin_loop: LD HL,FLAG
|
||
BIT B_RDUPDATE,(HL)
|
||
JR NZ,.L2
|
||
; ¯¥à¥ç¨âë¢ ¥¬ ⥪ã饥 ¯®«®¦¥¨¥ á ãç¥â®¬ ०¨¬®¢
|
||
SET B_RDUPDATE,(HL)
|
||
BIT B_PAUSE,(HL)
|
||
JR NZ,.L3
|
||
BIT B_TRAY,(HL)
|
||
JR NZ,.L4
|
||
BIT B_PLAY,(HL)
|
||
CALL NZ,RDSUBCHAN ; ¨«¨ ç¨â ¥¬ ⥪ã饥 ¢à¥¬ï ¥á«¨ â३ § ªàëâ ¨ ०¨¬ ¯«¥©
|
||
CALL UPDATE_CURRTRACK ; ®¡®¢«¥¨¥ áâப¨ ¤«ï ¢ë¢®¤
|
||
.L4 LD HL,(APCMD.PLAY_MSF + 6) ; ¢à¥¬ï ª®æ ¤¨áª
|
||
LD DE,(RESULT + 9) ; ⥪ã饥 ¢à¥¬ï
|
||
AND A
|
||
SBC HL,DE
|
||
CALL Z,CDSTOP ; ¯à¨ã¤¨â¥«ìë© á⮯ ¥á«¨ ª®¥æ ¤¨áª
|
||
JR .L3
|
||
|
||
; ¯¥à¥à¨á®¢ë¢ ¥¬ ⥪ãéãî ¯®§¨æ¨î ¨£à ¨ï
|
||
.L2 RES B_RDUPDATE,(HL)
|
||
BIT B_TRAY,(HL)
|
||
CALL Z,BIGDIGITSALL ; ¨«¨ ¢ë¢®¤¨¬ íªà
|
||
; ®á®¢®© 横« ®¯à®á ã¯à ¢«¥¨ï
|
||
.L3 ld ix,PluginMouseTab
|
||
call JUMPS.TestCoords
|
||
SPDSS DSSF.SCANKEY
|
||
jr z,plugin_loop
|
||
ld a,b
|
||
or a
|
||
jr nz,plugin_loop
|
||
ld a,e
|
||
CALL CHECKHOTKEYS ; ¯à®¢¥àª å®âª¥¥¢ ¯® ᯨáªã
|
||
JR NC,plugin_loop
|
||
.L1 cp 0x1B
|
||
jr z,PluginExit
|
||
cp 0x0D
|
||
jr nz,plugin_loop
|
||
PluginExit:
|
||
CALL RESTORE_STATE
|
||
WINDOWCLOSE
|
||
or a ; cf = 0
|
||
ret
|
||
|
||
; hl - bitmap 32x16 for 16-color mode
|
||
; ix,iy - coords (320x256)
|
||
show: di
|
||
GETPORT WINSP.CPU0
|
||
PUSH AF
|
||
GETPORT WINSP.Y_PORT
|
||
PUSH AF
|
||
SETPORT WINSP.CPU0,0x50
|
||
push ix
|
||
pop de
|
||
LD C,IYL
|
||
ld b,16
|
||
.L1: ld a,c
|
||
SETPORT WINSP.Y_PORT,,0
|
||
push de
|
||
ACCEL ACCELCMD.SET_BUFFER
|
||
ld a,16
|
||
ACCEL ACCELCMD.COPY
|
||
ld a,(hl)
|
||
ld (de),a
|
||
ACCEL ACCELCMD.OFF
|
||
ld de,16
|
||
add hl,de
|
||
pop de
|
||
inc c
|
||
dec b
|
||
jp nz,.L1
|
||
POP AF
|
||
SETPORT WINSP.Y_PORT,,0
|
||
POP AF
|
||
SETPORT WINSP.CPU0,,0
|
||
ei
|
||
ret
|
||
|
||
; a - digit
|
||
; ix,iy - coords (320x256)
|
||
showd: rlca
|
||
ld e,0
|
||
ld d,a
|
||
ld hl,digit0
|
||
add hl,de
|
||
call show
|
||
ld de,16
|
||
add iy,de
|
||
jp show
|
||
|
||
; ¯®ª § ®¬¥à â४ ¨ ¢à¥¬¥¨ ¯à®¨£àë¢ ¨ï ªàã¯ë¬ èà¨ä⮬
|
||
BIGDIGITSALL: LD HL,(Digits)
|
||
LD (DigitsNone),HL ; ª®¯¨à®¢ ¨¥ ®¬¥à â४
|
||
LD HL,FLAG
|
||
BIT B_PAUSE,(HL)
|
||
LD DE,Digits ; ¯® 㬮«ç ¨î ¢á¥£¤ æ¨äàë
|
||
JR Z,.L3
|
||
; áç¥â稪 ¤«ï ¬®à£ ¨ï ¢ ¯ ã§¥
|
||
LD A,PAUSEDIGITS
|
||
.L4 EQU $-1
|
||
DEC A
|
||
JR NZ,.L5
|
||
LD A,PAUSEDIGITS
|
||
.L5 LD (.L4),A
|
||
JR NZ,.L6
|
||
LD A,M_VIEWNONE
|
||
XOR (HL)
|
||
LD (HL),A
|
||
.L6 BIT B_VIEWNONE,(HL)
|
||
JR Z,.L3
|
||
LD DE,DigitsNone ; ¯ãá⮥ ¢à¥¬ï ¢ ०¨¬¥ ¯ ã§
|
||
; ¯¥ç âì ⥪ã饣® ®¬¥à â४ ¨ ¢à¥¬¥¨
|
||
.L3 EX DE,HL
|
||
; HL - ¤à¥á ¤ ëå ¤«ï ¢ë¢®¤ ⥪饣® â४ /¢à¥¬¥¨ ¨£à ¨ï
|
||
ld ix,46 ; X
|
||
ld c,8 ; ᪮«ìª® ᨬ¢®«®¢ à¨á®¢ âì
|
||
.L2 ld iy,97 ; Y
|
||
.L1: push bc
|
||
push hl
|
||
push iy
|
||
ld a,(hl)
|
||
call showd
|
||
ld bc,16
|
||
add ix,bc
|
||
pop iy
|
||
pop hl
|
||
pop bc
|
||
inc hl
|
||
dec c
|
||
jp nz,.L1
|
||
ret
|
||
|
||
CHANGEDISK: LD A,(CDDRIVE)
|
||
SPBIOS BIOSF.DRV_RESET
|
||
JR NC,.cont
|
||
CP ERR_DRV.ATAPI_UnitAttention
|
||
JR Z,.drv_change
|
||
CP ERR_DRV.ATAPI_NotReady
|
||
SCF
|
||
RET NZ
|
||
LD A,ERR_DSS.NOT_READY
|
||
RET
|
||
|
||
.drv_change: LD A,(CDDRIVE)
|
||
CALL SAVE_MEDIA_CHANGED
|
||
.cont: CALL INITDISK
|
||
RET C
|
||
AND A
|
||
RET
|
||
|
||
INITDISK: LD B,4
|
||
.CD_I_LP PUSH BC
|
||
LD IX,0x0010
|
||
LD HL,0x0000
|
||
LD DE,RESULT
|
||
LD A,(CDDRIVE)
|
||
SPBIOS BIOSF.DRV_READ,1
|
||
POP BC
|
||
JR NC,.CD_I_OK
|
||
DJNZ .CD_I_LP
|
||
.UNKCD LD A,ERR_DSS.UNKNOWN_FORMAT
|
||
SCF
|
||
RET
|
||
|
||
.CD_I_OK LD HL,RESULT
|
||
LD A,(HL)
|
||
INC HL
|
||
DEC A
|
||
JR NZ,.UNKCD
|
||
LD A,(HL)
|
||
INC HL
|
||
CP 'C'
|
||
JR NZ,.UNKCD
|
||
LD A,(HL)
|
||
INC HL
|
||
CP 'D'
|
||
JR NZ,.UNKCD
|
||
XOR A
|
||
RET
|
||
|
||
RESTORE_STATE: LD B,1
|
||
.set_par: EQU $-1
|
||
LD A,(CDDRIVE)
|
||
SPBIOS BIOSF.DRV_SET_PAR
|
||
RET
|
||
|
||
SAVE_MEDIA_CHANGED:
|
||
SPBIOS BIOSF.DRV_GET_PAR
|
||
OR %00000010
|
||
LD B,A
|
||
LD A,(RESTORE_STATE.set_par)
|
||
OR B
|
||
LD (RESTORE_STATE.set_par),A
|
||
RET
|
||
|
||
; ¯®¨áª CD-ROM ¨ ¨¨æ¨ «¨§ æ¨ï
|
||
CDinit: LD B,0xC0 - 1
|
||
.loop: INC B
|
||
LD A,B
|
||
CP 0xC4
|
||
SCF
|
||
JP Z,noCD
|
||
PUSH BC
|
||
SPBIOS BIOSF.DRV_DETECT
|
||
POP BC
|
||
JR NC,.found
|
||
CP ERR_DRV.ATAPI_MediumError
|
||
JR Z,.found
|
||
CP ERR_DRV.ATAPI_UnitAttention
|
||
JR NZ,.loop
|
||
.found: LD A,B
|
||
LD (CDDRIVE),A
|
||
CALL yesCD0
|
||
.CLOSETRAY LD HL,APCMD.CLOSETRAY
|
||
CALL SEND_PACKET
|
||
CALL CHANGEDISK
|
||
LD HL,FLAG
|
||
RES B_TRAY,(HL)
|
||
.UPDATE_TOC LD HL,RESULT+6
|
||
LD (HL),0xAA
|
||
LD HL,APCMD.READTOC
|
||
CALL SEND_PACKET
|
||
LD HL,RESULT-2
|
||
LD B,0xFF
|
||
LD DE,8
|
||
.L1 INC B
|
||
ADD HL,DE
|
||
LD A,(HL)
|
||
CP 0xAA
|
||
JR NZ,.L1
|
||
LD A,B
|
||
LD (TRACKS),A
|
||
; ä®à¬¨à®¢ ¨¥ â ¡«¨æë â४®¢
|
||
LD HL,RESULT + 4 + 5
|
||
LD A,(RESULT + 3)
|
||
LD DE,BUF_TOC + 3 ; ã«¥¢®£® ¥â
|
||
.L2 EX AF,AF'
|
||
LDI
|
||
LDI
|
||
LDI
|
||
LD A,5
|
||
ADD A,L
|
||
LD L,A
|
||
ADC A,H
|
||
SUB L
|
||
LD H,A
|
||
EX AF,AF'
|
||
DEC A
|
||
JP NZ,.L2
|
||
LD DE,APCMD.PLAY_MSF + 6 ; ª®¥æ ¤¨áª
|
||
LDI
|
||
LDI
|
||
LDI
|
||
LD A,(TRACKS)
|
||
LD HL,TXTTRACKS.DIGITS
|
||
CALL A2HALFDEC
|
||
LD A,'0'
|
||
ADD A,(HL)
|
||
LD (HL),A
|
||
DEC HL
|
||
LD A,'0'
|
||
ADD A,(HL)
|
||
LD (HL),A
|
||
LD HL,TXTTRACKS
|
||
LD DE,360
|
||
LD BC,140
|
||
LD A,COLORP.HIGHGRAY + COLORI.BLUE
|
||
CALL JUMPS.PrnTxtLnIFF
|
||
LD A,1
|
||
LD (CURRENT.TRACK),A
|
||
; ®¡®¢«¥¨¥ ⥪ã饣® ®¬¥à â४ ¨ ¢à¥¬¥¨ ¨£à ¨ï íªà ¥
|
||
UPDATE_CURRTRACK
|
||
LD A,(CURRENT.TRACK)
|
||
LD HL,Digits
|
||
CALL A2HALFDEC
|
||
LD A,(CURRENT.MINUTE)
|
||
LD HL,Digits.MIN
|
||
CALL A2HALFDEC
|
||
LD A,(CURRENT.SECUND)
|
||
LD HL,Digits.SEC
|
||
; ª®¢¥àá¨ï ç¨á« ¤«ï ¢ë¢®¤ ¤¨á¯«¥©
|
||
A2HALFDEC LD BC,10
|
||
.L1 INC B
|
||
SUB C
|
||
JR NC,.L1
|
||
DEC B
|
||
ADD A,C
|
||
LD (HL),B
|
||
INC HL
|
||
LD (HL),A
|
||
RET
|
||
|
||
IF DEBUG
|
||
A2HEX PUSH AF
|
||
AND %11110000
|
||
RRCA
|
||
RRCA
|
||
RRCA
|
||
RRCA
|
||
CALL .L2
|
||
LD B,A
|
||
POP AF
|
||
AND %00001111
|
||
.L2 ADD A,'0'
|
||
CP '9'+1
|
||
RET C
|
||
ADD A,7
|
||
RET
|
||
ENDIF
|
||
|
||
; CD-ROM ©¤¥
|
||
yesCD0: ld hl,msgY
|
||
ld a,COLORP.HIGHGRAY + COLORI.BLUE
|
||
jr CDprn
|
||
|
||
; CD-ROM ¥ ©¤¥
|
||
noCD: ld hl,msgN
|
||
ld a,COLORP.HIGHGRAY + COLORI.RED
|
||
CDprn: ld de,84
|
||
ld bc,140
|
||
JP JUMPS.PrnTxtLnIFF
|
||
|
||
msgY DZ "CD-ROM is present"
|
||
msgN DZ "CD-ROM is absent"
|
||
TXTTRACKS DZ "Tracks: 00" ; ª®«¨ç¥á⢮ â४®¢ ¤¨áª¥
|
||
.DIGITS EQU $-3
|
||
|
||
; à¨á®¢ ¨¥ ¨ª®®ª ª®¯ª å ¯® â ¡«¨çª¥ ¯®§¨æ¨©
|
||
SHOW_BUTTON LD HL,TABLBUTTONS
|
||
.L1 LD E,(HL)
|
||
INC HL
|
||
LD D,(HL)
|
||
INC HL
|
||
LD A,D
|
||
OR E
|
||
RET Z
|
||
PUSH DE
|
||
LD E,(HL)
|
||
INC HL
|
||
LD D,(HL)
|
||
INC HL
|
||
LD IXH,D
|
||
LD IXL,E
|
||
LD E,(HL)
|
||
INC HL
|
||
LD D,(HL)
|
||
INC HL
|
||
LD IYH,D
|
||
LD IYL,E
|
||
EX (SP),HL
|
||
CALL show
|
||
POP HL
|
||
JR .L1
|
||
|
||
IF DEBUG
|
||
; â ¡«¨æ ¯®¤áª §®ª å®âª¥¨
|
||
DEBUG_TXTKEYS LD HL,DEBUGTABLKEYS
|
||
.L1 LD E,(HL)
|
||
INC HL
|
||
LD D,(HL)
|
||
INC HL
|
||
LD A,D
|
||
OR E
|
||
RET Z
|
||
PUSH DE
|
||
LD E,(HL)
|
||
INC HL
|
||
LD D,(HL)
|
||
INC HL
|
||
LD C,(HL)
|
||
INC HL
|
||
LD B,(HL)
|
||
INC HL
|
||
EX (SP),HL
|
||
LD A,COLORP.HIGHGRAY + COLORI.RED
|
||
CALL JUMPS.PrnTxtLnIFF
|
||
POP HL
|
||
JR .L1
|
||
ENDIF
|
||
|
||
; ¯à®¢¥àª å®âª¥¥¢ ¯® â ¡«¨æ¥
|
||
CHECKHOTKEYS LD HL,TABLHOTKEYS
|
||
.L1 LD B,(HL)
|
||
INC B
|
||
DEC B
|
||
SCF
|
||
RET Z
|
||
INC HL
|
||
LD E,(HL)
|
||
INC HL
|
||
LD D,(HL)
|
||
INC HL
|
||
CP B
|
||
JR NZ,.L1
|
||
PUSH AF
|
||
EX DE,HL
|
||
CALL JP_HL
|
||
POP AF
|
||
AND A
|
||
RET
|
||
|
||
JP_HL JP (HL)
|
||
|
||
; ç⥨¥ ⥪ã饣® á®áâ®ï¨ï ¨£à ¨ï
|
||
RDSUBCHAN LD HL,APCMD.RDSUBCHAN
|
||
CALL SEND_PACKET
|
||
LD A,(RESULT + 6)
|
||
LD (CURRENT.TRACK),A
|
||
LD HL,RESULT + 13
|
||
LD DE,CURRENT.MINUTE
|
||
LDI
|
||
LDI
|
||
RET
|
||
|
||
; ãáâ ®¢ª ¯®§¨æ¨¨ ¤«ï ¨£à ¨ï ¢ ¯ ª¥â¥
|
||
SETPOS_MSF EXX
|
||
LD HL,(CURRENT.TRACK)
|
||
LD H,0
|
||
LD E,L
|
||
LD D,H
|
||
ADD HL,HL
|
||
ADD HL,DE
|
||
LD DE,BUF_TOC
|
||
ADD HL,DE
|
||
LD DE,APCMD.PLAY_MSF + 3
|
||
LDI
|
||
LDI
|
||
LDI
|
||
EXX
|
||
RET
|
||
|
||
; ¯¥à¥¬®âª § ¤
|
||
REWIND LD A,(FLAG)
|
||
BIT B_PAUSE,A
|
||
RET NZ
|
||
BIT B_PLAY,A
|
||
RET Z
|
||
; ⮫쪮 ¤«ï ०¨¬ ¯«¥©
|
||
CALL RDSUBCHAN
|
||
LD HL,APCMD.PLAY_MSF + 3
|
||
LD DE,(RESULT + 9)
|
||
LD A,D
|
||
SUB PAUSE
|
||
LD D,A
|
||
JR NC,.L1
|
||
ADD A,60
|
||
LD D,A ; ®¢ë¥ ᥪã¤ë
|
||
DEC E ; ®¢ë¥ ¬¨ãâë
|
||
.L1 LD (HL),E ; ¬¨ãâë
|
||
INC HL
|
||
LD (HL),D ; ᥪã¤ë
|
||
INC HL
|
||
LD (HL),0 ; ä३¬
|
||
JR CDPLAY.L1
|
||
|
||
; ¯¥à¥¬®âª ¢¯¥à¥¤
|
||
FORWARD LD A,(FLAG)
|
||
BIT B_PAUSE,A
|
||
RET NZ
|
||
BIT B_PLAY,A
|
||
RET Z
|
||
; ⮫쪮 ¤«ï ०¨¬ ¯«¥©
|
||
CALL RDSUBCHAN
|
||
LD HL,APCMD.PLAY_MSF + 3
|
||
LD DE,(RESULT + 9)
|
||
LD A,D
|
||
ADD A,PAUSE
|
||
LD D,A
|
||
CP 60
|
||
JR C,REWIND.L1
|
||
SUB 60
|
||
LD D,A ; ®¢ë¥ ᥪã¤ë
|
||
INC E ; ®¢ë¥ ¬¨ãâë
|
||
JR REWIND.L1
|
||
|
||
; ¯à¥¤ë¤ã騩 â४
|
||
PREV_TRACK LD HL,CURRENT.TRACK
|
||
LD A,(HL)
|
||
DEC A
|
||
RET Z
|
||
DEC (HL)
|
||
JR NEXT_TRACK.L1
|
||
|
||
; á«¥¤ãî騩 â४
|
||
NEXT_TRACK LD HL,CURRENT.TRACK
|
||
LD A,(TRACKS)
|
||
CP (HL)
|
||
RET Z
|
||
INC (HL)
|
||
.L1 LD HL,0
|
||
LD (CURRENT.MINUTE),HL
|
||
CALL SETPOS_MSF ; ãáâ ®¢ª ¯®§¨æ¨¨ ¢ ¯ ª¥â¥
|
||
CALL UPDATE_CURRTRACK ; ®¡®¢«¥¨¥ áâப¨ â४ ¨ ¢à¥¬¥¨
|
||
CALL BIGDIGITSALL ; à¨á®¢ ¨¥ íªà áâப¨ â४ ¨ ¢à¥¬¥¨
|
||
LD HL,FLAG
|
||
BIT B_PLAY,(HL) ; ०¨¬ ¯«¥©?
|
||
RET Z ; ¢ë室 ¥á«¨ ¥â
|
||
BIT B_PAUSE,(HL) ; ०¨¬ ¯ ã§ë?
|
||
RET NZ ; ¢ë室 ¥á«¨ ¤
|
||
JR CDPLAY.L1 ; ¨ ç¥ § ¯ã᪠¥¬ ¯«¥© ¤«ï ®¢®£® â४
|
||
|
||
; ¨£à âì â४
|
||
CDPLAY: LD HL,FLAG
|
||
BIT B_PAUSE,(HL)
|
||
JR NZ,CDPAUSE.PAUSEON ; ¥á«¨ ¨§ ०¨¬ ¯ ã§ , á ç « á¡à®á ०¨¬
|
||
BIT B_PLAY,(HL)
|
||
RET NZ ; ¥á«¨ ¨§ ०¨¬ ¯«¥©, â® ¢ë室¨¬
|
||
.L2 SET B_PLAY,(HL)
|
||
CALL SETPOS_MSF
|
||
.L1 LD HL,APCMD.PLAY_MSF
|
||
JP SEND_PACKET
|
||
|
||
CDPAUSE LD HL,FLAG
|
||
BIT B_PLAY,(HL)
|
||
RET Z ; ¥á«¨ á⮯ â® ¯ ã§ã ¨£®à¨¬
|
||
BIT B_PAUSE,(HL)
|
||
JR NZ,.PAUSEON
|
||
; ¢ª«î票¥ ०¨¬ ¯ ã§
|
||
SET B_PAUSE,(HL)
|
||
CALL RDSUBCHAN
|
||
LD HL,(RESULT + 9)
|
||
LD (CURRENT.PAUSE_POS),HL
|
||
LD HL,APCMD.PAUSE
|
||
JP SEND_PACKET
|
||
|
||
; ¢ëª«î票¥ ०¨¬ ¯ ã§
|
||
.PAUSEON RES B_PAUSE,(HL)
|
||
RES B_VIEWNONE,(HL)
|
||
BIT B_PAUSENEW,(HL)
|
||
RES B_PAUSENEW,(HL)
|
||
JP Z,CDPLAY.L1
|
||
LD HL,(CURRENT.PAUSE_POS)
|
||
LD (APCMD.PLAY_MSF + 3),HL
|
||
JR CDPLAY.L1
|
||
|
||
; ¯®« ï ®áâ ®¢ª
|
||
CDSTOP: LD HL,FLAG
|
||
RES B_PLAY,(HL)
|
||
RES B_PAUSE,(HL)
|
||
RES B_VIEWNONE,(HL)
|
||
LD A,1
|
||
LD (CURRENT.TRACK),A
|
||
LD HL,0
|
||
LD (CURRENT.MINUTE),HL
|
||
CALL SETPOS_MSF
|
||
CALL UPDATE_CURRTRACK
|
||
CALL BIGDIGITSALL
|
||
; ª®¬ ¤ á⮯
|
||
CD_APSTOP LD HL,APCMD.STOP
|
||
; ¯®á뫪 ATAPI ¯ ª¥â
|
||
SEND_PACKET LD DE,RESULT
|
||
LD A,0
|
||
CDDRIVE EQU $-1
|
||
SPBIOS BIOSF.DRV_EXTENDED,DRV_EXTENDED.ATAPI_Custom_PCMD
|
||
RET
|
||
|
||
; ®âªàë⨥/§ ªàë⨥ âà¥ï
|
||
CDEJECT: CALL CDSTOP
|
||
LD HL,FLAG
|
||
BIT B_TRAY,(HL)
|
||
SET B_TRAY,(HL)
|
||
JP NZ,CDinit.CLOSETRAY ; § ªàë⨥ ¨ २¨â
|
||
; ¨ ç¥ ®âªàë⨥ âà¥ï
|
||
LD HL,APCMD.OPENTRAY
|
||
CALL SEND_PACKET
|
||
LD HL,BUF_TOC
|
||
LD DE,BUF_TOC + 1
|
||
LD BC,99 * 3
|
||
LD (HL),0
|
||
LDIR
|
||
RET
|
||
|
||
IF DEBUG
|
||
TXT
|
||
.D1 DZ "1"
|
||
.D2 DZ "2"
|
||
.D3 DZ "3"
|
||
.D4 DZ "4"
|
||
.D5 DZ "5"
|
||
.D6 DZ "6"
|
||
.D7 DZ "7"
|
||
.D8 DZ "8"
|
||
|
||
DEBUGTABLKEYS DW TXT.D1,363,95
|
||
DW TXT.D2,483,95
|
||
DW TXT.D3,523,95
|
||
DW TXT.D4,363,115
|
||
DW TXT.D5,403,115
|
||
DW TXT.D6,443,115
|
||
DW TXT.D7,483,115
|
||
DW TXT.D8,523,115
|
||
DW 0
|
||
ENDIF
|
||
|
||
; â ¡«¨æ ¨ª®®ª ¤«ï ª®¯®ª
|
||
TABLBUTTONS DW cd_play,201,95
|
||
DW cd_paus,241,95
|
||
DW cd_stop,261,95
|
||
DW cd_ll,181,115
|
||
DW cd_l,201,115
|
||
DW cd_r,221,115
|
||
DW cd_rr,241,115
|
||
DW cd_ejec,261,115
|
||
DW 0
|
||
|
||
; å®âª¥¨
|
||
TABLHOTKEYS DB '1'
|
||
DW CDPLAY ; ¯«¥©
|
||
DB '2'
|
||
DW CDPAUSE ; ¯ ã§
|
||
DB '3'
|
||
DW CDSTOP ; á⮯
|
||
DB '4'
|
||
DW PREV_TRACK ; ¯à¥¤ë¤ã騩 â४
|
||
DB '5'
|
||
DW REWIND ; ¯¥à¥¬®âª § ¤
|
||
DB '6'
|
||
DW FORWARD ; ¯¥à¥¬®âª ¢¯¥à¥¤
|
||
DB '7'
|
||
DW NEXT_TRACK ; á«¥¤ãî騩 â४
|
||
DB '8'
|
||
DW CDEJECT ; ®âªàë⨥/§ ªàë⨥ âà¥ï
|
||
DB 0
|
||
|
||
; ⥪ã騩 â४ ¨ ⥪ã饥 ¢à¥¬ï â४
|
||
Digits DB 0x00,0x00,0x0B
|
||
.MIN DB 0x00,0x00,0x0A
|
||
.SEC DB 0x00,0x00
|
||
; ¯ãá⮥ ¢à¥¬ï ¤«ï ¬®à£ ¨ï ¢ ¯ ã§¥
|
||
DigitsNone DB 0x0B,0x0B,0x0B,0x0B,0x0B,0x0A,0x0B,0x0B
|
||
|
||
; â ¡«¨æ ¤«ï ¬ëè¨
|
||
PluginMouseTab: dw 546,558, 81, 91,%0000000000100001,0,PluginExit,PluginExit
|
||
dw 360,476, 94,112,%0000000000000001,0,CDPLAY,0
|
||
dw 480,516, 94,112,%0000000000000001,0,CDPAUSE,0
|
||
dw 520,556, 94,112,%0000000000000001,0,CDSTOP,0
|
||
dw 360,396,114,132,%0000000000000001,0,PREV_TRACK,0
|
||
dw 400,436,114,132,%0000000000000001,0,REWIND,0
|
||
dw 440,476,114,132,%0000000000000001,0,FORWARD,0
|
||
dw 480,516,114,132,%0000000000000001,0,NEXT_TRACK,0
|
||
dw 520,556,114,132,%0000000000000001,0,CDEJECT,0
|
||
dw 0x8000
|
||
|
||
APCMD
|
||
; 00 01 02 03 04 05 06 07 08 09 0A 0B
|
||
.STOP DB 0x4E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||
.PAUSE DB 0x4B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||
; SM SS SF EM ES EF
|
||
.PLAY_MSF DB 0x47,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ; 3-5 START MSF, 6-8 END MSF
|
||
.READTOC DB 0x43,0x02,0x00,0x00,0x00,0x00,0x01,0x03,0x24,0x00,0x00,0x00
|
||
.CLOSETRAY DB 0x1B,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||
.OPENTRAY DB 0x1B,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||
.RDSUBCHAN DB 0x42,0x02,0x40,0x01,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00
|
||
|
||
include icons.a80
|
||
include digits.a80
|
||
|
||
FLAG DB 0
|
||
BITMASK TRAY, 7 ; 1-â३ ®âªàëâ, 0-â३ § ªàëâ
|
||
BITMASK RDUPDATE, 6 ; 1-®¡®¢«¥¨¥ ¢à¥¬¥¨,0-ç⥨¥ ¢à¥¬¥¨
|
||
BITMASK PAUSE, 5 ; 1-०¨¬ ¯ ã§ë,0-¥â
|
||
BITMASK PLAY, 4 ; 1-०¨¬ ¯«¥© ªâ¨¢¥,0-¥â
|
||
BITMASK PAUSENEW, 3 ; 1-¢ ०¨¬¥ ¯ ã§ ¦ â ¯¥à¥å®¤ ¤à㣮© â४
|
||
BITMASK VIEWNONE, 2 ; 1-¯ãáâë¥ æ¨äàë,0-®à¬ «ìë¥
|
||
CURRENT ; ®¬¥à â४ ¨ ¢à¥¬ï ¤«ï ¢ë¢®¤ íªà
|
||
.TRACK DB 0 ; ⥪ã騩 â४
|
||
.MINUTE DB 0 ; ⥪ãé ï ¬¨ãâ
|
||
.SECUND DB 0 ; ⥪ãé ï ᥪã¤
|
||
.PAUSE_POS DW 0 ; ⥪ãé ï ¯®§¨æ¨ï ¬®¬¥â ¦ â¨ï ¯ ã§ë
|
||
TRACKS DB 0 ; ª®«¨ç¥á⢮ â४®¢ ¤¨áª¥
|
||
; ç «® ¡ãä¥à ¯®«ã票ï १ã«ìâ ⠢믮«¥¨ï ATAPI ¯ ª¥â
|
||
RESULT DB 0 ; १ã«ìâ ⠢믮«¥¨ï ATAPI ª®¬ ¤ë
|