mirror of
https://github.com/Tolik-Trek/Spectrum.EXE.git
synced 2026-06-15 00:51:36 +03:00
before free zx pages
This commit is contained in:
parent
703ad3d963
commit
d07085bb0a
@ -1,3 +1,5 @@
|
|||||||
|
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-;
|
||||||
|
INCLUDE 'Shared_Includes/structures/FileSystem.inc'
|
||||||
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-;
|
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-;
|
||||||
|
|
||||||
; in: HL - CLUSTER
|
; in: HL - CLUSTER
|
||||||
@ -56,7 +58,7 @@ SET_IMAGE_DIR_SECTOR:
|
|||||||
RST ToDSS
|
RST ToDSS
|
||||||
RET C
|
RET C
|
||||||
;
|
;
|
||||||
LD HL,(TMP_BUFF+26) ; ;!HARDCODE first dir cluster
|
LD HL,(TMP_BUFF + FAT_DIRECTORY_RECORD.FIRST_CLUSTER_L)
|
||||||
CALL CLUSTER_TO_SECTOR
|
CALL CLUSTER_TO_SECTOR
|
||||||
LD (RESET_TO_ZX.DIR_SEC_L),IX
|
LD (RESET_TO_ZX.DIR_SEC_L),IX
|
||||||
LD (RESET_TO_ZX.DIR_SEC_H),HL
|
LD (RESET_TO_ZX.DIR_SEC_H),HL
|
||||||
|
|||||||
@ -1 +1 @@
|
|||||||
Subproject commit e73e9f8d4f4e72de4f6b54abaec159684fdcebe1
|
Subproject commit 817bba0c1abebdb890f77ee129578ebe06fb5131
|
||||||
177
ZXMODE/ZXMODE.FRT
Normal file
177
ZXMODE/ZXMODE.FRT
Normal file
@ -0,0 +1,177 @@
|
|||||||
|
\ \\\\ menu program for spectrum.exe \\\\ \
|
||||||
|
|
||||||
|
VARIABLE MAIN-X
|
||||||
|
VARIABLE CURS-M
|
||||||
|
VARIABLE MENU
|
||||||
|
VARIABLE ITEMS
|
||||||
|
VARIABLE EXE-POINT
|
||||||
|
VARIABLE PLACE-M
|
||||||
|
|
||||||
|
: M-CB 10 COLOR ! ;
|
||||||
|
: M-C0 07 COLOR ! ;
|
||||||
|
: M-C1 70 COLOR ! ;
|
||||||
|
: M-C2 30 COLOR ! ;
|
||||||
|
: M-C3 3F COLOR ! ;
|
||||||
|
: M-C4 01 COLOR ! ;
|
||||||
|
|
||||||
|
: CLSM M-CB 100 SET_POS 17 0 DO CLL CR LOOP ;
|
||||||
|
|
||||||
|
: MENU" CREATE , , ," ;
|
||||||
|
: ITEM" , ," BL WORD FIND IF NAME> , ELSE ABORT" no word!" THEN ;
|
||||||
|
: END-MENU 0 , ;
|
||||||
|
|
||||||
|
\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \
|
||||||
|
|
||||||
|
19 CONSTANT LEN-F
|
||||||
|
|
||||||
|
: EDIT-FNAME EXE-POINT @ PLACE-M @ OVER C@ LEN-F - + SET_POS C@+ + LEN-F - LEN-F 1- (EXPECT) ;
|
||||||
|
: EDIT-CNAME EXE-POINT @ PLACE-M @ OVER C@ 0D - + SET_POS C@+ + 0D - 0C (EXPECT) ;
|
||||||
|
: NO-ESC ;
|
||||||
|
: H-LINE M-C3 1800 SET_POS CLL 1801 SET_POS ;
|
||||||
|
|
||||||
|
: NEW-MENU M-C1 PLACE-M @ SET_POS EXE-POINT @ C@+ TYPE MENU ! CLSM ;
|
||||||
|
|
||||||
|
: M-EXIT M-C0 CLS BYE ;
|
||||||
|
|
||||||
|
: RET-MAIN MAIN-X @ MENU @ = IF M-EXIT THEN
|
||||||
|
H-LINE ." Ret to Main " MAIN-X @ NEW-MENU ;
|
||||||
|
|
||||||
|
: NO-FN H-LINE ." no function " ;
|
||||||
|
|
||||||
|
1 0E1B MENU" TRDS TRD files "
|
||||||
|
1 ITEM" Disk A: testfile.trd " EDIT-FNAME
|
||||||
|
1 ITEM" Disk B: " EDIT-FNAME
|
||||||
|
1 ITEM" Disk C: " EDIT-FNAME
|
||||||
|
1 ITEM" Disk D: " EDIT-FNAME
|
||||||
|
1 ITEM" Main Menu <esc> " RET-MAIN
|
||||||
|
END-MENU
|
||||||
|
|
||||||
|
1 21B MENU" ROMS ROM Menu "
|
||||||
|
1 ITEM" BASIC48 basic48.bin " EDIT-FNAME
|
||||||
|
1 ITEM" BASIC128 basic128.bin " EDIT-FNAME
|
||||||
|
1 ITEM" TR-DOS trdos5s.bin " EDIT-FNAME
|
||||||
|
1 ITEM" EXPANSION exp.bin " EDIT-FNAME
|
||||||
|
1 ITEM" BIOS1 exp.bin " EDIT-FNAME
|
||||||
|
1 ITEM" BIOS2 exp2.bin " EDIT-FNAME
|
||||||
|
1 ITEM" Main Menu <esc> " RET-MAIN
|
||||||
|
END-MENU
|
||||||
|
|
||||||
|
1 414 MENU" CONFIG Options Menu "
|
||||||
|
1 ITEM" Turbo Yes " NO-FN
|
||||||
|
1 ITEM" Sprinter ports Yes " NO-FN
|
||||||
|
1 ITEM" Port 1FFD Yes " NO-FN
|
||||||
|
1 ITEM" Port 7FFD Yes " NO-FN
|
||||||
|
1 ITEM" 512Kb Memory No " NO-FN
|
||||||
|
1 ITEM" Original Int No " NO-FN
|
||||||
|
1 ITEM" Scorpion Int No " NO-FN
|
||||||
|
1 ITEM" 312 screen lines No " NO-FN
|
||||||
|
1 ITEM" Start TR-DOS No " NO-FN
|
||||||
|
1 ITEM" Install only No " NO-FN
|
||||||
|
1 ITEM" Reset to ZX Yes " NO-FN
|
||||||
|
1 ITEM" Main Menu <esc> " RET-MAIN
|
||||||
|
END-MENU
|
||||||
|
|
||||||
|
1 D03 MENU" STAN Standards "
|
||||||
|
1 ITEM" Sprinter ZX " NO-FN
|
||||||
|
1 ITEM" ZX Spectrum " NO-FN
|
||||||
|
1 ITEM" Pentagon 128 " NO-FN
|
||||||
|
1 ITEM" Scorpion 256 " NO-FN
|
||||||
|
1 ITEM" Pentagon 512 " NO-FN
|
||||||
|
1 ITEM" Main Menu <esc> " RET-MAIN
|
||||||
|
END-MENU
|
||||||
|
|
||||||
|
1 512 MENU" SPEC Specials "
|
||||||
|
1 ITEM" Save your MODE " NO-FN
|
||||||
|
1 ITEM" Save utility " NO-FN
|
||||||
|
1 ITEM" Main Menu <esc> " RET-MAIN
|
||||||
|
END-MENU
|
||||||
|
|
||||||
|
: START-ZX H-LINE ." Start SPECTRUM.EXE" ;
|
||||||
|
: STANDARD H-LINE ." Choose standard mode" STAN NEW-MENU ;
|
||||||
|
: CONFIG-ZX H-LINE ." Set Spectrum MODE options" CONFIG NEW-MENU ;
|
||||||
|
: ROM-SET H-LINE ." Set Spectrum ROM files" ROMS NEW-MENU ;
|
||||||
|
: TRD-FILES H-LINE ." Set TR-DOS disk images" TRDS NEW-MENU ;
|
||||||
|
: SPECIALS H-LINE ." Special functions" SPEC NEW-MENU ;
|
||||||
|
|
||||||
|
1 203 MENU" MAIN Main Menu " ( pos,curs,"name" )
|
||||||
|
1 ITEM" Mode: Sprinter ZX " EDIT-CNAME
|
||||||
|
1 ITEM" Start " START-ZX ( type "name" word )
|
||||||
|
1 ITEM" Standard modes " STANDARD
|
||||||
|
1 ITEM" Options " CONFIG-ZX
|
||||||
|
1 ITEM" ROM files " ROM-SET
|
||||||
|
1 ITEM" Disk image files " TRD-FILES
|
||||||
|
1 ITEM" Specials " SPECIALS
|
||||||
|
1 ITEM" Exit <esc> " M-EXIT
|
||||||
|
END-MENU
|
||||||
|
|
||||||
|
MAIN MAIN-X !
|
||||||
|
|
||||||
|
: CURS-TYPE CURS-M @ 0=
|
||||||
|
IF GET_POS PLACE-M ! DUP EXE-POINT ! C@+ M-C2 TYPE M-C1 ELSE C@+ TYPE THEN
|
||||||
|
-1 CURS-M +! 1 ITEMS +! ;
|
||||||
|
|
||||||
|
: HEAD ( len -> ) GET_POS SWAP M-C1 C" É EMIT 0 DO C" Í EMIT LOOP C" » EMIT 100 + SET_POS ;
|
||||||
|
: TEXT ( len -> ) GET_POS OVER M-C1 C" º EMIT CURS-TYPE C" º EMIT M-C4 ." ±±" 100 + SET_POS ;
|
||||||
|
: LINE ( len -> ) GET_POS SWAP M-C1 C" Ç EMIT 0 DO C" Ä EMIT LOOP C" ¶ EMIT M-C4 ." ±±" 100 + SET_POS ;
|
||||||
|
: ENDS ( l->) GET_POS OVER M-C1 C" È EMIT 0 DO C" Í EMIT LOOP C" ¼ EMIT M-C4 ." ±±"
|
||||||
|
102 + SET_POS 2 + C" ± SWAP 0 DO DUP EMIT LOOP DROP ;
|
||||||
|
|
||||||
|
MAIN MENU !
|
||||||
|
|
||||||
|
: PRINT-MENU COLOR @ M-C1 ITEMS 0! EXE-POINT 0!
|
||||||
|
MENU @
|
||||||
|
DUP @ SET_POS 2 +
|
||||||
|
DUP @ CURS-M ! 2 +
|
||||||
|
DUP C@ HEAD TEXT DUP C@ LINE DUP C@ SWAP C@+ +
|
||||||
|
BEGIN DUP @ 0<> WHILE
|
||||||
|
2 + TEXT C@+ + 2 + REPEAT
|
||||||
|
DROP ENDS COLOR ! ;
|
||||||
|
|
||||||
|
|
||||||
|
: CURS-UP MENU @ 2 + DUP @ 1- 1 MAX SWAP ! ;
|
||||||
|
: CURS-DN MENU @ 2 + DUP @ 1+ ITEMS @ 1- MIN SWAP ! ;
|
||||||
|
: CURS-HOME 1 MENU @ 2 + ! ;
|
||||||
|
: CURS-END ITEMS @ 1- MENU @ 2 + ! ;
|
||||||
|
|
||||||
|
: EXE-MENU M-C0 EXE-POINT @ ?DUP IF C@+ + @ EXECUTE THEN ;
|
||||||
|
|
||||||
|
: KEY-MENU WAIT-KEY
|
||||||
|
|
||||||
|
DUP [ SYS-ID 011B AND SYS-ID NOT 011B AND OR ] LITERAL = IF DROP RET-MAIN EXIT THEN ( ESC )
|
||||||
|
DUP [ SYS-ID 4400 AND SYS-ID NOT 4400 AND OR ] LITERAL = IF DROP RET-MAIN EXIT THEN ( F10 )
|
||||||
|
DUP [ SYS-ID 5200 AND SYS-ID NOT 5000 AND OR ] LITERAL = IF DROP CURS-DN EXIT THEN ( Down )
|
||||||
|
DUP [ SYS-ID 5800 AND SYS-ID NOT 4800 AND OR ] LITERAL = IF DROP CURS-UP EXIT THEN ( Up )
|
||||||
|
DUP [ SYS-ID 280D AND SYS-ID NOT 1C0D AND OR ] LITERAL = IF DROP EXE-MENU EXIT THEN ( Up )
|
||||||
|
\ DUP [ SYS-ID D400 AND SYS-ID NOT 7300 AND OR ] LITERAL = IF DROP W-LEFT EXIT THEN ( <ctrl )
|
||||||
|
\ DUP [ SYS-ID D600 AND SYS-ID NOT 7400 AND OR ] LITERAL = IF DROP W-RIGHT EXIT THEN ( ctrl> )
|
||||||
|
\ DUP [ SYS-ID 5400 AND SYS-ID NOT 4B00 AND OR ] LITERAL = IF DROP -POS EXIT THEN ( <- )
|
||||||
|
\ DUP [ SYS-ID 5600 AND SYS-ID NOT 4D00 AND OR ] LITERAL = IF DROP +POS EXIT THEN ( -> )
|
||||||
|
\ DUP [ SYS-ID 0F09 AND SYS-ID NOT 0F09 AND OR ] LITERAL = IF DROP TAB+ EXIT THEN ( tab )
|
||||||
|
\ DUP [ SYS-ID 8F09 AND SYS-ID NOT 0F00 AND OR ] LITERAL = IF DROP TAB- EXIT THEN ( <tab )
|
||||||
|
\ DUP [ SYS-ID 0E08 AND SYS-ID NOT 0E08 AND OR ] LITERAL = IF DROP DELX EXIT THEN ( <del )
|
||||||
|
\ DUP [ SYS-ID 8E00 AND SYS-ID NOT 0E7F AND OR ] LITERAL = IF DROP DELW EXIT THEN ( ctrl<del )
|
||||||
|
DUP [ SYS-ID 5700 AND SYS-ID NOT 4700 AND OR ] LITERAL = IF DROP CURS-HOME EXIT THEN ( home )
|
||||||
|
DUP [ SYS-ID D700 AND SYS-ID NOT 7700 AND OR ] LITERAL = IF DROP CURS-HOME EXIT THEN ( ctrl.home )
|
||||||
|
DUP [ SYS-ID 5100 AND SYS-ID NOT 4F00 AND OR ] LITERAL = IF DROP CURS-END EXIT THEN ( end )
|
||||||
|
DUP [ SYS-ID D100 AND SYS-ID NOT 7500 AND OR ] LITERAL = IF DROP CURS-END EXIT THEN ( ctrl.end )
|
||||||
|
|
||||||
|
DROP ;
|
||||||
|
|
||||||
|
: LOOP-M M-CB CLS S0 @ SP! R0 @ RP!
|
||||||
|
MAIN MENU ! CURS-HOME
|
||||||
|
H-LINE 0 SET_POS M-C3 CLL ." Spectrum.exe config utility version 0.02"
|
||||||
|
BEGIN
|
||||||
|
PRINT-MENU KEY-MENU AGAIN ;
|
||||||
|
|
||||||
|
BL WORD NO-ESC FIND DROP NAME> ESC-W !
|
||||||
|
|
||||||
|
TRUE H-FLAG !
|
||||||
|
07 COLOR !
|
||||||
|
|
||||||
|
MAKE LOOP-M
|
||||||
|
\ PC> INC-END SAVE-SYSTEM _test.com
|
||||||
|
\ SP> INC-END SAVE-SYSTEM zxmode.exe
|
||||||
|
|
||||||
|
CLS LOOP-M
|
||||||
|
BYE
|
||||||
|
|
||||||
19
ZXMODE/_HELP.FRT
Executable file
19
ZXMODE/_HELP.FRT
Executable file
@ -0,0 +1,19 @@
|
|||||||
|
\ !! DO NOT EDIT THIS FILE !!
|
||||||
|
M-C0 100 SET_POS
|
||||||
|
CLL CR
|
||||||
|
CLL .( This is a help page ¿)
|
||||||
|
CLL .( ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ)
|
||||||
|
CLL CR
|
||||||
|
CLL .( Main keys: F1 - help F10 - Terminate program)
|
||||||
|
CLL .( Down - cursor DOWN Up - cursor UP)
|
||||||
|
CLL .( Home - cursor to 1-st line End - cursor to last)
|
||||||
|
CLL .( Enter - Execute ESC - Exit from menu)
|
||||||
|
CLL CR
|
||||||
|
CLL .( Special keys: Ctrl+left - Shift menu Left)
|
||||||
|
CLL .( Ctrl+right - Shift menu Right)
|
||||||
|
CLL .( Ctrl+PageUp - Shift menu Up)
|
||||||
|
CLL .( Ctrl+PageDown - Shift menu Down)
|
||||||
|
CLL CR
|
||||||
|
CLL .( --*** press any key ***--) CLL CR
|
||||||
|
M-CB WAIT-KEY MENU @ NEW-MENU
|
||||||
|
|
||||||
24
spectrum.asm
24
spectrum.asm
@ -527,22 +527,19 @@ FILE_HANDLE: DB 0 ; !FIXIT
|
|||||||
|
|
||||||
|
|
||||||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||||||
RESTORE_PORT_HOLD:
|
FIRST_PREPARE: LD A,CNF_PORT.CNF_0
|
||||||
;!FIXIT ᤥ« âì ç¥à¥§ API BIOS
|
OUT (SYS_PORT.RAM),A
|
||||||
|
; restore HOLD port
|
||||||
LD D,CMOS_CELL.ScreenPosition
|
LD D,CMOS_CELL.ScreenPosition
|
||||||
LD C,BIOS.CMOS_RD
|
LD C,BIOS.CMOS_RD
|
||||||
RST ToBIOS
|
RST ToBIOS
|
||||||
RET C
|
JR C,.next
|
||||||
LD B,A
|
LD B,A
|
||||||
LD A,ACEX.HOLD
|
LD A,ACEX.HOLD
|
||||||
LD C,BIOS.SET_PORTS
|
LD C,BIOS.SET_PORTS
|
||||||
JP ToBIOS
|
RST ToBIOS
|
||||||
; ; ;
|
;
|
||||||
FIRST_PREPARE: LD A,CNF_PORT.CNF_0
|
.next: LD A,high ZXKeys.Line_7
|
||||||
OUT (SYS_PORT.RAM),A
|
|
||||||
CALL RESTORE_PORT_HOLD
|
|
||||||
|
|
||||||
LD A,high ZXKeys.Line_7
|
|
||||||
IN A,(ZXKeys)
|
IN A,(ZXKeys)
|
||||||
AND #1F
|
AND #1F
|
||||||
CP #1E
|
CP #1E
|
||||||
@ -749,6 +746,7 @@ RESET_TO_ZX: DI
|
|||||||
.CURRENT_DIR_DRIVE+1:
|
.CURRENT_DIR_DRIVE+1:
|
||||||
LD A,#FF
|
LD A,#FF
|
||||||
LD (SYS_PAGE.CURRENT_DIR_DRIVE),A
|
LD (SYS_PAGE.CURRENT_DIR_DRIVE),A
|
||||||
|
LD (SYS_PAGE.CURRENT_DIR_DRIVE_COPY),A
|
||||||
;;;;;;;;
|
;;;;;;;;
|
||||||
|
|
||||||
LD A,CNF_PORT.CNF_3
|
LD A,CNF_PORT.CNF_3
|
||||||
@ -836,12 +834,12 @@ Original: LD C,BIOS.FN_SYNC ; -> INT for Pentagon or Scorpion
|
|||||||
; ˆ¨æ¨ «¨§ æ¨ï áâà ¨æ
|
; ˆ¨æ¨ «¨§ æ¨ï áâà ¨æ
|
||||||
;!FIXIT ç¥à¥§ äãªæ¨î ¡¨®á ¯®¯à®¡®¢ âì
|
;!FIXIT ç¥à¥§ äãªæ¨î ¡¨®á ¯®¯à®¡®¢ âì
|
||||||
DI
|
DI
|
||||||
LD A,5
|
LD A,5 ; [ ] free zx pages!
|
||||||
OUT (SLOT1),A
|
OUT (SLOT1),A
|
||||||
; #1FFD
|
; #1FFD
|
||||||
LD BC,#1FFD
|
LD BC,#1FFD
|
||||||
XOR A
|
XOR A
|
||||||
OUT (SLOT0),A
|
OUT (SLOT0),A ; [ ] free zx pages!
|
||||||
OUT (C),A
|
OUT (C),A
|
||||||
; #7FFD
|
; #7FFD
|
||||||
LD B,#7F
|
LD B,#7F
|
||||||
@ -917,7 +915,7 @@ LOOP_P2: OUT (C),A
|
|||||||
PROG_STARTS:
|
PROG_STARTS:
|
||||||
.Launch: EQU #FF00
|
.Launch: EQU #FF00
|
||||||
DISP .Launch
|
DISP .Launch
|
||||||
LD A,2
|
LD A,2 ; [ ] free zx pages!
|
||||||
OUT (SLOT2),A
|
OUT (SLOT2),A
|
||||||
LD A,E
|
LD A,E
|
||||||
OUT (SYS_PORT.RAM),A
|
OUT (SYS_PORT.RAM),A
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user