- плагин доделан, описание/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.
224 lines
5.4 KiB
Plaintext
224 lines
5.4 KiB
Plaintext
|
||
; LAST UPDATE: 19.07.2025 savelij
|
||
|
||
include macros.a80
|
||
|
||
include macros_sp.a80
|
||
include define_sp.a80
|
||
include bios_sp.a80
|
||
include dss_sp.a80
|
||
include errors_sp.a80
|
||
include ports_sp.a80
|
||
include mouse_sp.a80
|
||
include accel_sp.a80
|
||
include fat_dir_sp.a80
|
||
include fn_version.a80
|
||
|
||
ENABLE
|
||
;.EDIT
|
||
;.VIEW
|
||
;.HELP
|
||
|
||
PAGES_MEM := 4
|
||
|
||
IFDEF ENABLE.VIEW
|
||
PAGES_MEM := PAGES_MEM + 1
|
||
ENDIF
|
||
IFDEF ENABLE.EDIT
|
||
PAGES_MEM := PAGES_MEM + 1
|
||
ENDIF
|
||
INIT_VAR 0xC000
|
||
SETVAR FONT_RAW, 6888;IFFFONT_RAW_PACK - FONT_RAW_PACK
|
||
SETVAR_ALIGN
|
||
SETVAR IFFFONT_RAW, 8704;IFFFONT_RAW_END - IFFFONT_RAW_PACK
|
||
SETVAR CLOCK_BMP, CLOCK_BMP_END - Clock_BMP
|
||
SETVAR MOUSE_BMP, MOUSE_BMP_END - Mouse_BMP
|
||
|
||
HDR_EXE 0x8100,1,EXEend-EntryExec,EntryExec,EntryExec,0x80FF,0
|
||
|
||
EntryExec: DI
|
||
LD A,(IX-0x03) ; file handle
|
||
LD (MAIN.hFile),A ; save
|
||
LD HL,MAIN.copyright_str
|
||
SPDSS DSSF.PCHARS ; print text
|
||
SPDSS DSSF.VERSION
|
||
LD A,D
|
||
OR A
|
||
JR NZ,.next1
|
||
LD HL,MAIN.incor_dos_str
|
||
SPDSS DSSF.PCHARS ; print text
|
||
SPDSS DSSF.EXIT,0x26 ; exit
|
||
|
||
.next1
|
||
SPDSS DSSF.GETMEM,PAGES_MEM ; § ¯à®á áâà ¨æ ¯ ¬ïâ¨
|
||
JR NC,.next2 ; CY - not enough memory
|
||
LD HL,MAIN.no_memory_str
|
||
SPDSS DSSF.PCHARS ; print text
|
||
SPDSS DSSF.EXIT,0x1E ; exit
|
||
|
||
.next2 LD (MAIN.hMem),A ; memory handle
|
||
LD HL,MAIN.FNMAIN
|
||
SPBIOS BIOSF.GETMEMBLKPAGES ; get memory pages list
|
||
; § £à㧪 ª¥à «ï
|
||
LD A,(MAIN.FNMAIN) ; set pages from 0xC000
|
||
SETPORT WINSP.CPU3,,0
|
||
LD HL,BASE_ADDR ; FNMAIN
|
||
LD DE,END_BLOCK_1 - START_BLOCK_1
|
||
LD A,(MAIN.hFile)
|
||
SPDSS DSSF.READ
|
||
JP C,disk_error
|
||
; § £à㧪 ¤®¯®«¨â¥«ìëå äãªæ¨©
|
||
LD A,(MAIN.FNREZ2)
|
||
SETPORT WINSP.CPU3,,0
|
||
LD HL,0xC000 ; FNREZ2
|
||
LD DE,END_BLOCK_2 - START_BLOCK_2
|
||
LD A,(MAIN.hFile)
|
||
SPDSS DSSF.READ
|
||
JP C,disk_error
|
||
; § £à㧪 ä®â
|
||
LD A,(MAIN.FNFONT) ; FNFONT
|
||
SETPORT WINSP.CPU3,,0
|
||
LD HL,0xFFFF - (IFFFONT_RAW_END - FONT_RAW_PACK)
|
||
LD DE,END_BLOCK_4 - START_BLOCK_4
|
||
LD A,(MAIN.hFile)
|
||
SPDSS DSSF.READ
|
||
JP C,disk_error
|
||
; à ᯠª®¢ª èà¨ä⮢
|
||
LD HL,0xFFFF - (IFFFONT_RAW_END - FONT_RAW_PACK)
|
||
LD DE,0xC000
|
||
CALL UNPACK
|
||
LD HL,0xFFFF - (IFFFONT_RAW_END - IFFFONT_RAW_PACK)
|
||
LD DE,0xDB00
|
||
CALL UNPACK
|
||
; ¯¥à¥®á ¨ª®®ª ¬ëè¨ à ¡®ç¥¥ ¬¥áâ®
|
||
LD HL,Clock_BMP
|
||
LD DE,CLOCK_BMP
|
||
LD BC,CLOCK_BMP_Size + MOUSE_BMP_Size
|
||
LDIR
|
||
; § £à㧪 奫¯
|
||
LD A,(MAIN.FNREZ3) ; FNREZ3
|
||
SETPORT WINSP.CPU3,,0
|
||
; SETPORT WINSP.CPU1,,0 ; ????
|
||
LD HL,0xC000
|
||
LD DE,END_BLOCK_3 - START_BLOCK_3
|
||
LD A,(MAIN.hFile)
|
||
SPDSS DSSF.READ
|
||
JP C,disk_error
|
||
IFDEF ENABLE.VIEW
|
||
; § £à㧪 ¢ìà
|
||
LD A,(MAIN.FNVIEW) ; FNVIEW
|
||
SETPORT WINSP.CPU3,,0
|
||
LD HL,0xC000
|
||
LD DE,END_BLOCK_VIEWER - START_BLOCK_VIEWER
|
||
LD A,(MAIN.hFile)
|
||
SPDSS DSSF.READ
|
||
JP C,disk_error
|
||
ENDIF
|
||
IFDEF ENABLE.EDIT
|
||
; § £à㧪 । ªâ®à
|
||
LD A,(MAIN.FNEDIT) ; FNEDIT
|
||
SETPORT WINSP.CPU3,,0
|
||
LD HL,0xC000
|
||
LD DE,END_BLOCK_EDITOR - START_BLOCK_EDITOR
|
||
LD A,(MAIN.hFile)
|
||
SPDSS DSSF.READ
|
||
JP C,disk_error
|
||
ENDIF
|
||
LD A,(MAIN.hFile)
|
||
SPDSS DSSF.CLOSE ; close file
|
||
;!TEST ; !HARDCODE SYS_PAGE
|
||
SETPORT WINSP.CPU3,PAGE.SYSTEM
|
||
LD HL,0x0124 + CPU3 ; !HARDCODE
|
||
LD (HL),0x38 ; interrupt routine address Low byte
|
||
INC HL
|
||
XOR A
|
||
LD (HL),A ; interrupt routine address High byte
|
||
INC HL
|
||
GETPORT WINSP.CPU0
|
||
LD (HL),A ; interrupt routine page
|
||
LD A,(MAIN.FNMAIN)
|
||
SETPORT WINSP.CPU3,,0
|
||
LD A,(MAIN.hMem)
|
||
LD (RAMPAGES.FNPAGESID),A
|
||
LD HL,MAIN.FNREZ2
|
||
LD DE,RAMPAGES.FNREZ2
|
||
LD BC,PAGES_MEM
|
||
LDIR
|
||
JP BASE_ADDR
|
||
|
||
disk_error: PUSH AF
|
||
LD A,(MAIN.hMem) ; free memory
|
||
SPDSS DSSF.FREEMEM
|
||
LD A,(MAIN.hFile)
|
||
SPDSS DSSF.CLOSE ; close file
|
||
LD HL,MAIN.load_err_str
|
||
SPDSS DSSF.PCHARS ; print text
|
||
POP BC
|
||
SPDSS DSSF.EXIT ; exit
|
||
|
||
UNPACK include dec40.a80
|
||
|
||
oo EQU COLORP.BLACK + COLORI.BLACK
|
||
WW EQU COLORP.WHITE + COLORI.WHITE
|
||
HH EQU COLORP.WHITE + COLORI.WHITE0E
|
||
BB EQU COLORP.WHITE + COLORI.BLACK
|
||
|
||
; ç ᨪ¨ ¤«ï ¬ëè¨
|
||
; 9 x 14 = 126 00 01 02 03 04 05 06 07 08
|
||
Clock_BMP: DB oo,oo,oo,oo,oo,oo,oo,oo,oo ; 00
|
||
DB oo,HH,HH,HH,HH,HH,HH,HH,oo ; 01
|
||
DB oo,oo,oo,oo,oo,oo,oo,oo,oo ; 02
|
||
DB WW,oo,HH,HH,HH,HH,HH,oo,WW ; 03
|
||
DB WW,oo,HH,HH,HH,oo,HH,oo,WW ; 04
|
||
DB WW,WW,oo,HH,BB,HH,oo,WW,WW ; 05
|
||
DB WW,WW,WW,oo,HH,oo,WW,WW,WW ; 06
|
||
DB WW,WW,WW,oo,HH,oo,WW,WW,WW ; 07
|
||
DB WW,WW,oo,HH,BB,HH,oo,WW,WW ; 08
|
||
DB WW,oo,HH,HH,HH,oo,HH,oo,WW ; 09
|
||
DB WW,oo,HH,HH,HH,HH,HH,oo,WW ; 0A
|
||
DB oo,oo,oo,oo,oo,oo,oo,oo,oo ; 0B
|
||
DB oo,HH,HH,HH,HH,HH,HH,HH,oo ; 0C
|
||
DB oo,oo,oo,oo,oo,oo,oo,oo,oo ; 0D
|
||
CLOCK_BMP_END
|
||
|
||
; ªãàá®à ¤«ï ¬ëè¨
|
||
; 9 x 13 = 117 00 01 02 03 04 05 06 07 08
|
||
Mouse_BMP: DB oo,oo,WW,WW,WW,WW,WW,WW,WW ; 00
|
||
DB oo,HH,oo,WW,WW,WW,WW,WW,WW ; 01
|
||
DB oo,HH,HH,oo,WW,WW,WW,WW,WW ; 02
|
||
DB oo,HH,HH,HH,oo,WW,WW,WW,WW ; 03
|
||
DB oo,HH,HH,HH,HH,oo,WW,WW,WW ; 04
|
||
DB oo,HH,HH,HH,HH,HH,oo,WW,WW ; 05
|
||
DB oo,HH,HH,HH,HH,HH,HH,oo,WW ; 06
|
||
DB oo,HH,HH,HH,HH,oo,oo,oo,oo ; 07
|
||
DB oo,HH,HH,oo,HH,oo,WW,WW,WW ; 08
|
||
DB oo,HH,oo,oo,HH,HH,oo,WW,WW ; 09
|
||
DB oo,oo,WW,WW,oo,HH,oo,WW,WW ; 0A
|
||
DB oo,WW,WW,WW,oo,HH,HH,oo,WW ; 0B
|
||
DB WW,WW,WW,WW,WW,oo,oo,WW,WW ; 0C
|
||
MOUSE_BMP_END
|
||
|
||
MAIN
|
||
.hFile db 0x00
|
||
.hMem db 0x00
|
||
.FNMAIN db 0x00
|
||
.FNREZ2 db 0x00 ; 00
|
||
.FNFONT db 0x00 ; 01
|
||
.FNREZ3 db 0x00 ; 02
|
||
IFDEF ENABLE.VIEW
|
||
.FNVIEW db 0x00 ; 03
|
||
ENDIF
|
||
IFDEF ENABLE.EDIT
|
||
.FNEDIT db 0x00 ; 04
|
||
ENDIF
|
||
DB 0xFF
|
||
|
||
.copyright_str: DZ "\r\nThe Flex Navigator, ver.\{FLEX_VERS.NAVIGATOR}\r\n"
|
||
.incor_dos_str: DZ "Incorrect DOS version, need DOS 1.00 or high.\r\n"
|
||
.no_memory_str: DZ "Not enough memory to load program.\r\n"
|
||
.load_err_str: DZ "Disk loading error.\r\n"
|
||
|
||
EXEend:
|
||
|
||
include fnmain.a80
|