Release 25/06/2025

This commit is contained in:
Tolik 2025-06-25 23:52:57 +10:00
commit d25a15300e
23 changed files with 8808 additions and 7873 deletions

View File

@ -691,9 +691,9 @@ CHAR_SET EQU #3D00
DEFW adr DEFW adr
ENDM ENDM
DEFINE START_PAUSE #0000 DEFINE START_PAUSE #0001
INCLUDE 'shared_includes/constants/sp2000.inc' INCLUDE 'shared_includes/constants/sp2000.inc'
INCLUDE 'inc/char_codes.inc' INCLUDE 'shared_includes/constants/zx_char_codes.inc'
;[^]..................................................................................................................... SP2000 [^] ;[^]..................................................................................................................... SP2000 [^]
; ----------------------- ; -----------------------
@ -876,9 +876,9 @@ NMI_POINT:
; ;
BLOCK #6B-$,0 BLOCK #6B-$,0
; ============ ; ============
; RAM ROUTINES ; RAM ROUTINES
; ============ ; ============
; The following code will be copied to locations #5B00 to #5B57, within the old ZX Printer buffer. ; The following code will be copied to locations #5B00 to #5B57, within the old ZX Printer buffer.
; ----------------- ; -----------------
@ -922,6 +922,7 @@ NMI_POINT:
; ENT ; ENT
;SWAP_ROM ;SWAP_ROM
RAM_ROUTINES:
L006B: PUSH AF ; Save AF and BC. L006B: PUSH AF ; Save AF and BC.
PUSH BC ; PUSH BC ;
LD BC,#7FFD ; LD BC,#7FFD ;
@ -1012,7 +1013,9 @@ L00B5: EX AF,AF' ; Save AF registers. For a read, A holds the byte read
OUT (C),A ; Switch back to original paging configuration. OUT (C),A ; Switch back to original paging configuration.
EI ; EI ;
EX AF,AF' ; Restore AF registers. For a read, A holds the byte read and the flags the success status. EX AF,AF' ; Restore AF registers. For a read, A holds the byte read and the flags the success status.
RET ; <<< End of RAM Routines >>> RET
RAM_ROUTINES.Size EQU $-RAM_ROUTINES
;<<<<<<<<<<<<<<<<<<<<<<<<< End of RAM Routines >>>>>>>>>>>>>>>>>>>>>>>>>;
; =============================== ; ===============================
@ -1142,10 +1145,10 @@ L0137: LD B,D ; Complete setting up the sound chip registers.
LD A,#FF ; Disable AY-3-8912 sound channels. LD A,#FF ; Disable AY-3-8912 sound channels.
OUT (C),A ; OUT (C),A ;
LD DE,SWAP_ROM ; #5B00. Copy the various paging routines to the old printer buffer. LD DE,SWAP_ROM ; #5B00. Copy the various paging routines to the old printer buffer.
LD HL,L006B ; The source is in this ROM. LD HL,RAM_ROUTINES ; The source is in this ROM.
LD BC,L006B.Size; There are eighty eight bytes to copy. LD BC,RAM_ROUTINES.Size ; There are eighty eight bytes to copy.
LDIR ; Copy the block of bytes. LDIR ; Copy the block of bytes.
LD A,#CF ; Load A with the code for the Z80 instruction 'RST #08'. LD A,#CF ; Load A with the code for the Z80 instruction 'RST #08'.
LD (RAMRST),A ; #5B5D. Insert into new System Variable RAMRST. LD (RAMRST),A ; #5B5D. Insert into new System Variable RAMRST.
@ -10027,7 +10030,7 @@ L2584: CALL L28BE ; Reset Cursor Position.
; -------------- ; --------------
; Show Main Menu ; Show Main Menu
; -------------- ; --------------
BLOCK #259F-$,#FF; áâ ­¤ àâ­ë©  ¤à¥á
L259F: LD HL,TSTACK ; #5BFF. L259F: LD HL,TSTACK ; #5BFF.
LD (OLDSP),HL ; #5B81. LD (OLDSP),HL ; #5B81.
@ -10555,7 +10558,7 @@ L27EB:
M_COM: BYTE 6,0 M_COM: BYTE 6,0
WORD TRDOS WORD TRDOS
BYTE 1 BYTE 1
WORD HARDWARE ;ISDOS WORD HARDWARE
BYTE 2 BYTE 2
WORD L286C WORD L286C
BYTE 3 BYTE 3
@ -10635,25 +10638,36 @@ L281C: LD HL,#EC0D ; Editor flags.
; JP L1AF1 ; Run the tape loader. ; JP L1AF1 ; Run the tape loader.
L2831: L2831:
ED_COM: BYTE 10 ; Number of entries. ED_COM: BYTE 10 ; Number of entries.
BYTE #0B ; Key code: Cursor up. ;
BYTE #0B ; Key code: Cursor up.
DEFW L272E ; MENU-UP handler routine. DEFW L272E ; MENU-UP handler routine.
BYTE #0A ; Key code: Cursor dow ;
BYTE #0A ; Key code: Cursor down
DEFW L2731 ; MENU-DOWN handler routine. DEFW L2731 ; MENU-DOWN handler routine.
BYTE #0D ; Key code: Enter. ;
BYTE #0D ; Key code: Enter.
DEFW L2717 ; MENU-SELECT handler routine. DEFW L2717 ; MENU-SELECT handler routine.
;
BYTE '8' ; ­  ᨭª«¥à-¤¦®©á⨪¥ ¢­¨§ BYTE '8' ; ­  ᨭª«¥à-¤¦®©á⨪¥ ¢­¨§
DEFW L2731 ; MENU-DOWN handler routine. DEFW L2731 ; MENU-DOWN handler routine.
BYTE '9' ; ­  ᨭª«¥à-¤¦®©á⨪¥ ¢¢¥àå ;
BYTE '9' ; ­  ᨭª«¥à-¤¦®©á⨪¥ ¢¢¥àå
DEFW L272E ; MENU-UP handler routine. DEFW L272E ; MENU-UP handler routine.
BYTE '0' ; ­  ᨭª«¥à-¤¦®©á⨪¥ enter ;
;
BYTE '0' ; ­  ᨭª«¥à-¤¦®©á⨪¥ enter
DEFW L2717 ; MENU-SELECT handler routine. DEFW L2717 ; MENU-SELECT handler routine.
BYTE '6' ; ­  ᨭª«¥à-¤¦®©á⨪¥ ¢«¥¢® Page Up ;
BYTE '6' ; ­  ᨭª«¥à-¤¦®©á⨪¥ ¢«¥¢® Page Up
DEFW LEFT_E ; MENU-PageUp DEFW LEFT_E ; MENU-PageUp
BYTE #08 ; Key code: Cursor left ;
BYTE #08 ; Key code: Cursor left
DEFW LEFT ; MENU-PageUp DEFW LEFT ; MENU-PageUp
BYTE '7' ; [x] ¡ë«® 7 ;
BYTE '7' ; [x] ¡ë«® 7
DEFW RIGHT_E ; MENU-PageDown DEFW RIGHT_E ; MENU-PageDown
BYTE #09 ; Key code: Cursor right ;
BYTE #09 ; Key code: Cursor right
DEFW RIGHT ; MENU-PageDown DEFW RIGHT ; MENU-PageDown
; DB #1A ; ¯à®áâ® áâ¥à¥âì íâã áâà®çªã, ­¥ ­ã¦­  ; DB #1A ; ¯à®áâ® áâ¥à¥âì íâã áâà®çªã, ­¥ ­ã¦­ 

File diff suppressed because it is too large Load Diff

6761
SP__48.ASM

File diff suppressed because it is too large Load Diff

@ -1 +1 @@
Subproject commit 6e27011b6259b0256ce65d91a53ef1185223eafa Subproject commit a0e68ce3a19bd47537585e49bfbf5e45fab197a1

Binary file not shown.

251
TRDOS/TR_HDD_4.ASZ Normal file
View File

@ -0,0 +1,251 @@
File_Start DEFL $
DISPLAY "===================================================="
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
HDD_PROG:
;!TEST 06/01/2024 㡨ࠥ¬ «¨è­¨¥ ⥫®¤¢¨¦¥­¨ï
;LD C,BIOS.HDD_INIT and #BF
;CALL HD_CMD
LD C,BIOS.HDD_INIT
CALL EXP_FNS
;
JP C,HDD_PROG_E
LD HL,SYS_PAGE.HD_IDF_ADR.ModelNum
LD B,32
HDD_PROG_L:
DI
IN A,(SLOT3)
LD D,A
LD A,SYS_PAGE
OUT (SLOT3),A
LD A,L
XOR 1
LD L,A
LD C,(HL)
LD A,L
XOR 1
LD L,A
INC HL
LD A,D
OUT (SLOT3),A
; RET_PAGE3
EI
LD A,C
PUSH BC
RST #10
POP BC
DJNZ HDD_PROG_L
;!TEST 06/01/2024 㡨ࠥ¬ «¨è­¨¥ ⥫®¤¢¨¦¥­¨ï
;LD C,BIOS.HDD_RECAL and #BF
;CALL HD_CMD
LD C,BIOS.HDD_RECAL
CALL EXP_FNS
;
JP NC,AUTO_03E1
HDD_ERROR:
CALL PRINT_HEX_A
LD HL,HD_TX
JP AUTO_03E4
; JP AUTO_03E1
HDD_PROG_E:
LD HL,HD_TX2
JP AUTO_03E4
;
HDD_SET:
.loop: LD A,(DE)
INC DE
CP " "
JR Z,.loop
CP "\r"
JR Z,.check
;
DEC DE
DEC DE
JP CHOOSE_HDD
;
; [x] new tr-hdd
.check: DI
LD C,SLOT3
IN B,(C)
LD A,SYS_PAGE
OUT (SLOT3),A
;
LD E,DRIVE_CODES.TRDOS.HDD
LD A,(SYS_PAGE.CURRENT_DIR_DRIVE_COPY)
CP #FF
JR Z,.init
CP E
JR C,.init
;
LD (SYS_PAGE.CURRENT_DIR_DRIVE),A
OUT (C),B
PUSH DE
AND #0F
LD C,BIOS.HDD_PART
CALL EXP_FNS
POP DE
JR C,CHOOSE_HDD.error
JR .exit
;
.init: OUT (C),B
PUSH DE
LD C,BIOS.HDD_INIT
CALL EXP_FNS
POP DE
JP C,HDD_PROG_E
;
.exit: LD C,BIOS.SET_DISK_REDIR
JP EXP_FNS
;[x] 29/01/2024
;¢ë室: A: bit1 - Primary/Secondary, bit0 - master/slave, bit2..3: ¨á¯®«ì§ãî騩áï à §¤¥« ¢ MBR
CHOOSE_HDD:
.loop: LD A,(DE)
INC DE
CP " "
JR Z,.loop
LD A,(DE)
CP "\r"
JR Z,.error
; ­®¬¥à à §¤¥« 
LD A,(DE)
CP "4"
JR NC,.error
CP "0"
JR C,.error
SUB "0"
RLA
RLA
LD C,A
; Primary/Secondary, master/slave
DEC DE
LD A,(DE)
CP "4"
JR NC,.error
CP "0"
JR C,.error
SUB "0"
OR C
;
.part: PUSH AF
LD C,BIOS.HDD_PART
CALL EXP_FNS
POP BC
JR C,.error
;
;
;CALL RESTORE_CURRENT_DIR
IN A,(SLOT3)
EX AF,AF'
LD A,SYS_PAGE
OUT (SLOT3),A
LD A,(SYS_PAGE.CURRENT_DIR_DRIVE)
CP #FF
JR Z,.skip
LD (SYS_PAGE.CURRENT_DIR_DRIVE_COPY),A
XOR A
DEC A
LD (SYS_PAGE.CURRENT_DIR_DRIVE),A
.skip: EX AF,AF'
OUT (SLOT3),A
;
;
;XOR A
LD C,0 ; ®¡­ã«¨âì C
LD A,B
;OR #40
;LD B,A
;
; PUSH AF
; LD A,(ZX_VARS.OPER_DISK)
; LD C,BIOS.GET_DRV_ST
; CALL EXP_FNS
; POP BC
; JR C,.error
; ;
; AND #40 ;!HARDCODE HDD
; LD C,A ; ®¡­ã«¨âì C
; LD A,B
; RET NZ
;
PUSH BC
LD BC,(ZX_VARS.OPER_DISK - 1)
; LD B,A
; XOR A
LD C,BIOS.HDD_TO_DRV
CALL EXP_FNS
POP AF
RET
;
.error: ;AND %1101'1111
;CP "*"
;JR Z,.set_from_sys_page
LD HL,MSG_3
JP ERR_EXIT
;
; .setUp_HDD:
; PUSH BC
; LD A,(ZX_VARS.OPER_DISK)
; LD B,A
; XOR A
; LD C,BIOS.HDD_TO_DRV
; CALL EXP_FNS
; POP BC
; RET
;
;.set_from_sys_page:
; !!!
; [x] new tr-hdd
RESTORE_CURRENT_DIR:
PUSH AF
;
LD C,BIOS.GET_DISK_REDIR
CALL EXP_FNS
;CP #40
;JR C,.exit_Res_Dir
;AND #0F
LD H,A
;
IN A,(SLOT3)
EX AF,AF'
LD A,SYS_PAGE
OUT (SLOT3),A
;
LD A,(SYS_PAGE.CURRENT_DIR_DRIVE)
CP H
JR NZ,.exit_Res_Dir
LD HL,(SYS_PAGE.CURRENT_DIR_SEC_L)
LD DE,(SYS_PAGE.CURRENT_DIR_SEC_H)
LD A,H
OR L
OR D
OR E
JR Z,.exit_Res_Dir
;
LD (SYS_PAGE.MSD_CAT_SEC),HL
LD (SYS_PAGE.MSD_CAT_SEC2),DE
.exit_Res_Dir:
EX AF,AF'
OUT (SLOT3),A
POP AF
RET
;
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
BOOT_PART_2:
IF DEFtrd_boot_small
INCBIN 'build/boot.bin',248
ELSE
INCBIN 'build/boot.bin',248,181
ENDIF
.SIZE EQU $-BOOT_PART_2
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
DISPLAY "TR_HDD_4.ASZ size: ",/A,$-File_Start
DISPLAY "===================================================="

View File

@ -1,609 +0,0 @@
;
; for INCLUDE
; MS-DOS system
;
;**********************************
MSDOS_FIND_FILE:
PUSH DE ; ˆŒŸ ˆ‘ŠŽŒŽƒŽ ”€‰‹€
CALL MSDOS_1ST_FL
POP DE
RET C
FIND_LOOP_ALL:
CALL MSDOS_KOMP_FL
RET Z ; އ<E280A1> - ”€‰‹ <20>€‰„…<E2809E> !!
MSDOS_FIND_NEXT:
CALL MSDOS_NEXT_FL
JR NC,FIND_LOOP_ALL
RET
;***********************************************
;
;***********************************************
MSDOS_1ST_FL:
PUSH DE
CALL READ_BPB
CALL READ_1ST_DIR
POP DE
MSDOS_TEST_FL:
PUSH DE
DI
IN A,(PAGE3)
LD E,A
LD A,SYS_PAGE
OUT (PAGE3),A
LD A,E
LD E,(HL)
OUT (PAGE3),A
EI
LD A,E
POP DE
AND A
SCF
RET Z ; ŠŽ<C5A0> Š€’€‹Žƒ€
CP 0E5H
SCF
CCF
; DEC A ; <E28099>‰ ”€‰‹
; AND A
RET
;**********************************
MSDOS_NEXT_FL:
PUSH DE
LD DE,20H
ADD HL,DE
DI
IN A,(PAGE3)
LD D,A
LD A,SYS_PAGE
OUT (PAGE3),A
LD A,(COUNT_FL)
DEC A
LD (COUNT_FL),A
LD E,A
LD A,D
OUT (PAGE3),A
; RET_PAGE3
EI
LD A,E
POP DE
AND A ; <><E28098>Ž CF !!
JR NZ,MSDOS_TEST_FL
PUSH DE
DI
IN A,(PAGE3)
LD D,A
LD A,SYS_PAGE
OUT (PAGE3),A
LD A,(COUNT_SEC)
DEC A
LD (COUNT_SEC),A
LD E,A
LD A,D
OUT (PAGE3),A
; RET_PAGE3
EI
LD A,E
POP DE
AND A
SCF
RET Z
PUSH DE
CALL READ_NEXT_DIR
POP DE
LD HL,MS_DIR
JR MSDOS_TEST_FL
;**********************************
MSDOS_CAT:
PUSH DE
CALL AUTO_1D97 ; CLS
CALL OPEN_CH2
LD A,13
RST 10H
POP DE ; <E28098>ŽŠ€ <20>Ž… CAT
CAT_SPACES:
LD A,(DE)
CP 20H
JR NZ,CAT_NO_SPACE
INC DE
JR CAT_SPACES
CAT_NO_SPACE:
CP 13
JR NZ,CAT_ALL
LD DE,CAT_FILES
CAT_ALL:
; CALL MSDOS_FIND_FILE
CALL MSDOS_1ST_FL
JR C,CAT_END
CAT_LOOP:
JR Z,CAT_NO_PRINT
CALL MSDOS_KOMP_FL
JR NZ,CAT_NO_PRINT
PUSH HL
PUSH DE
CALL OPEN_CH2
POP DE
POP HL
; CALL COPY_NAME_MSD
CALL PRINT_MSD_NAME
CALL PRINT_MSD_DATS
; CALL MSDOS_FIND_NEXT
CAT_NO_PRINT:
CALL MSDOS_NEXT_FL
JR NC,CAT_LOOP
CAT_END:
CALL OPEN_CH0
JP AUTO_03E1
PRINT_MSD_NAME:
PUSH HL
PUSH DE
LD HL,FL_NAME
LD A,' '
RST 10H
LD A,' '
RST 10H
LD B,8
PRINT_MSD_L1:
LD A,(HL)
RST 10H
INC HL
DJNZ PRINT_MSD_L1
LD A,' '
RST 10H
LD B,3
PRINT_MSD_L2:
LD A,(HL)
RST 10H
INC HL
DJNZ PRINT_MSD_L2
LD A,6
RST 10H
POP DE
POP HL
RET
PRINT_MSD_DATS:
PUSH HL
PUSH DE
LD HL,FL_PLACE+1
LD A,(HL)
DEC HL
CALL PRINT_HEX_A
LD A,(HL)
DEC HL
CALL PRINT_HEX_A
LD A,(HL)
DEC HL
CALL PRINT_HEX_A
LD A,' '
RST 10H
LD A,(HL)
DEC HL
CALL PRINT_HEX_A
LD A,(HL)
DEC HL
CALL PRINT_HEX_A
LD A,13
RST 10H
POP DE
POP HL
RET
;**********************************************
CAT_FILES: DB '*.*',13
;**********************************************
COPY_NAME_MSD:
PUSH HL
PUSH DE
DI
IN A,(PAGE3)
LD C,A
LD A,SYS_PAGE
OUT (PAGE3),A
LD A,C
LD DE,FL_NAME
LD BC,11
LDIR
LD BC,15
ADD HL,BC
LD BC,5
LDIR
LD L,(HL)
OUT (PAGE3),A
; RET_PAGE3
EI
LD A,L
POP DE
POP HL
AND A ; A = 0 „‹Ÿ ”€‰‹€ „ˆ<E280B9>މ < 16 Œ¡.
RET
;*********************************************
;******************************************************
CMD_MSDOS: ; MS-DOS ª®¬ ­¤¥à !!
;******************************************************
CALL SINTAX_RET
LD HL,WORDS
LOOP_FIND2:
LD DE,(ADR_DOS_COM)
INC DE ; <20>யãáâ¨âì /
LD A,(HL)
AND A
JR Z,END_TAB
LD B,A
INC HL
LOOP_FIND:
LD A,(DE)
AND 223
CP (HL)
JR NZ,NEXT_WORD
INC DE
INC HL
DJNZ LOOP_FIND
LD A,(DE)
CP 13
JR Z,CMD_EXE1
CP 20H
JR Z,CMD_EXE
JR NEXT_WORD2
CMD_EXE:
INC DE
CMD_EXE1:
LD A,(HL)
INC HL
LD H,(HL)
LD L,A
CALL JP_HL
JP AUTO_03E1
JP_HL:
JP (HL)
NEXT_WORD:
INC HL
DJNZ NEXT_WORD
NEXT_WORD2:
INC HL
INC HL
JR LOOP_FIND2
END_TAB:
INC DE
LD A,(DE)
CP ':'
DEC DE
JR NZ,END_TAB3
LD A,(DE)
AND 223
SUB 'A'
JR C,END_TAB3
CP 4
JR NC,END_TAB2
LD (OPER_DISK),A
LD (CONT_DISK),A
LD B,A
LD A,(PDOS_COPY)
AND 7CH
OR B
LD (PDOS_COPY),A
OUT (P_DOS_FF),A
JP AUTO_03E1
END_TAB2:
SUB 4
CP RAMD_KEY_NUM
JR NC,END_TAB3
CALL RAMD_SET1
JP AUTO_03E1
END_TAB3:
LD A,0
JP LOAD_RMD_XX
MSD_ERR:
LD HL,MSDOS_MSG
JP AUTO_03E4
;************************************
LOAD_RMD:
CALL RAMD_SYM ; ¯®«ãç¨âì ­®¬¥à RAM-Disk ¨§ (DE)
JP C,MSD_ERR
LOAD_RMD_XX:
LD (MED_START+1),A ; á®åà ­¨âì
CALL MSDOS_FIND_FILE
JP C,MSD_ERR
CALL RMD_BLKS_FL ; B - ç¨á«® ¡«®ª®¢ , DE -  ¡á®«îâ­ë© ᥪâ®à
LD A,(MED_START+1)
PUSH AF
CALL CLEAR_RMD_A ; ®á¢®¡®¤¨âì RAM-Disk A
POP AF
CALL GET_RMD_A ; ãáâ ­®¢¨âì RAM-Disk A à §¬¥à®¬ B
LD HL,0C000H
CALL MSDOS_READ_FILE
JP AUTO_03E1
SAVE_RMD:
CALL RAMD_SYM ; ¯®«ãç¨âì ­®¬¥à RAM-Disk ¨§ (DE)
JP C,MSD_ERR
LD (MED_START+1),A
CALL MSDOS_FIND_FILE
JP C,MSD_ERR
CALL RMD_BLKS_FL
LD A,(MED_START+1)
CALL TEST_RAMD ; ¯à®¢¥à¨âì ­ «¨ç¨¥ RAM-Disk A à §¬¥à®¬ B
JP C,MSD_ERR ; A - ­®¬¥à ¯¥à¢®£® ¡«®ª 
JP Z,MSD_ERR
LD HL,0C000H
CALL MSDOS_WRITE_FILE
JP AUTO_03E1
RMD_BLKS_FL:
LD A,(FL_SIZE+2)
PUSH HL
LD HL,(FL_SIZE)
LD B,A
AND A
RL L
RL H
RL B
AND A
RL L
RL H
RL B
LD A,H
OR L
JR Z,RMD_BLKS_L2
INC B
RMD_BLKS_L2:
POP HL
RET ; B - —ˆ‘‹Ž <20>ŽŠŽ RAM_DISK
;****************************************
MSDOS_KOMP_FL: ; DE - ˆŒŸ ”€‰‹€ ‘Ž *,?
; HL - ˆŒŸ Š€’€‹Žƒ…
CALL COPY_NAME_MSD ; <20><EFBFBD>…Œ…ˆœ ˆŒŸ Ž<>œ TR-DOS
LD A,(FL_NAME)
AND A
JR NZ,KOMP_CONT1
LD A,2 ; ŠŽ<C5A0> Š€’€‹Žƒ€
AND A ; NZ - ˆŒŸ <20>Ž<C5BD>€„€…
RET
KOMP_CONT1:
CP 0A5h
JR NZ,KOMP_CONT2
LD A,1 ; <E28099>‰ ”€‰‹ - ˆŒŸ <20>Ž<C5BD>€„€…
AND A
RET
KOMP_CONT2:
PUSH DE
PUSH HL
LD HL,FL_NAME
CALL MSDOS_KOMP_ALL
POP HL
POP DE
RET
MSDOS_KOMP_ALL:
LD A,(DE)
INC DE
CP 20H
JR Z,MSDOS_KOMP_ALL
CP 13
JR Z,KOMP_ERROR_NAME ; <20><E2809A><E280A6>Ž… ˆŒŸ
DEC DE
LD B,8
CALL KOMP_TX
RET NZ
LD A,(DE)
CP '.'
JR Z,KOMP_POINT
CP 13
JR Z,KOMP_SPACING3
CP 20H
JR Z,KOMP_SPACING3
KOMP_ERROR_NAME: ; <20><E2809A><E280A6>Ž… ˆŒŸ
LD A,1
AND A
RET
KOMP_POINT:
INC DE
LD B,3
CALL KOMP_TX
RET NZ
LD A,(DE)
CP 13
RET Z
CP 20H
RET Z
JR KOMP_ERROR_NAME
;****************************************************
KOMP_TX:
LD A,(DE)
CP 13
JR Z,KOMP_SPACING
CP 20H
JR Z,KOMP_SPACING
CP '.'
JR Z,KOMP_SPACING
CP '?'
JR Z,KOMP_EX_OK
CP '*'
JR Z,KOMP_EX_OK2
CP 'a'
JR C,KOMP_EXEC
CP 'z'+1
JR NC,KOMP_EXEC
AND 223
KOMP_EXEC:
CP (HL)
RET NZ ; ­¥â ᮢ¯ ¤¥­¨ï
KOMP_EX_OK:
INC DE
KOMP_EX_OK2:
INC HL
DJNZ KOMP_TX
CP '*'
JR NZ,KOMP_NO_STAR1
INC DE
KOMP_NO_STAR1:
XOR A
RET
KOMP_SPACING3:
LD B,3
KOMP_SPACING:
LD A,20H
KOMP_L2:
CP (HL)
INC HL
RET NZ
DJNZ KOMP_L2
RET
;************************************************
CALC_CLAST: ; HL - áâ àâ®¢ë© ª« áâ¥à
PUSH BC
PUSH HL
DEC HL
DEC HL
DI
IN A,(PAGE3)
EX AF,AF'
LD A,SYS_PAGE
OUT (PAGE3),A
LD A,(MS_BPB+CLAST_SIZE)
EX DE,HL
LD BC,0
LD HL,0
LD IX,0
CALC_CL_LP:
ADD IX,DE
ADC HL,BC
DEC A
JR NZ,CALC_CL_LP
LD DE,(MSD_DAT_SEC)
LD BC,(MSD_DAT_SEC2)
ADD IX,DE
ADC HL,BC ; HL,IX - Œ…™…<E284A2>ˆ… Š<E28099>€ Ž’ <20>€—€€ „€<E2809E><E282AC>
EX AF,AF'
OUT (PAGE3),A
PUSH IX
EX (SP),HL
POP IX
EX DE,HL
EI
POP HL
POP BC
RET
HD_TX: DB ' ERR_HD',0A0H
HD_TX2: DB 'HDD not found',0A0H
MSG_3: DB 'ERROR...',0A0H
MSDOS_MSG: DB 'File not found...',0A0H
NO_MEMORY: DB 'No RAM-Disk MEM',0A0H
WORDS:
DB 5,'CLEAR' ; ®ç¨áâ¨âì RAM-Disk
DW CLEAR_RAMD_X
DB 3,'CAT' ; ª â «®£ MS-DOS
DW MSDOS_CAT
DB 3,'DIR' ; ª â «®£ MS-DOS
DW MSDOS_CAT
DB 3,'HDD' ; ¯®¤ª«îç¨âì HDD
DW HDD_SET
DB 3,'FDD' ; ¯®¤ª«îç¨âì FDD
DW FDD_SET
DB 3,'RMD' ; ¯®¤ª«îç¨âì RMD
DW RAMD_SET
DB 3,'HDT' ; â¥áâ HDD
DW HDD_PROG
DB 2,'RD' ; â¥áâ RAM-Disk space
DW RAMD_FAT_PROG
DB 4,'SAVE' ; á®åà ­¨âì RAM-Disk
DW SAVE_RMD
DB 4,'LOAD' ; § £à㧨âì RAM-Disk
DW LOAD_RMD
DB 4,'TBON' ; ¢ª«îç¨âì âãà¡®
DW TB_ONOFF
DB 5,'TBOFF' ; ¢ëª«îç¨âì âãà¡®
DW TB_ONOFF
DB 4,'INIT' ; ¨­¨§¨ «¨§ æ¨ï
DW INIT_RMD
DB 8,"SPRINTER"
DW SPR_1
DB 2,"AY"
DW AY8910
DB 0
;SAVE_AUTOEXEC:
; LD C,0FEH
; CALL EXP_FNS
; RET
AY8910:
LD A,0EAH
LD C,0F3H
CALL EXP_FNS
EI
CALL AUTO_1D97
AND A
RET
SPR_1:
LD A,(DE)
INC DE
CP 20H
JR Z,SPR_1
CP "1"
LD C,0F0H
JR Z,SP_1
CP "2"
SCF
RET NZ
LD C,0F1H
SP_1: LD A,(DE)
CP 21H
CCF
RET C
CALL EXP_FNS
EI
CALL AUTO_1D97
AND A
RET
;****************************************************
;*****************************************
; ERRORS
;*****************************************
; 0 - ƒ<E282AC>€Ÿ <20><>Ž<E2809A>Š€ <20><>Žƒ<C5BD>€ŒŒ
; 1 - <20><E2809A><E280A6>‰ ”Ž<E2809D>Œ€ ˆŒ…<C592>ˆ
; 2 - ŠŽ<C5A0> Š€’€‹Žƒ€
;

File diff suppressed because it is too large Load Diff

View File

@ -1,31 +1,35 @@
; File_Start DEFL $
; for INCLUDE DISPLAY "===================================================="
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
;********************************************
; MS-DOS system ; MS-DOS system
;
;******************************************** ;********************************************
; MS-DOS utilites ; MS-DOS utilites
;******************************************** ;********************************************
;************************************************
;* <09>ணࠬ¬  ç⥭¨ï/§ ¯¨á¨ MS-DOS ¤¨áª®¢ *
;* 1. €¤à¥á ¡ãä¥à  - HL *
;* 2. <20>®¬¥à ᥪâ®à  - DE *
;* 3. —¨á«® ᥪâ®à®¢ - B *
;* 4. Š®¬ ­¤  - C *
;* 5. ‘âà ­¨æ  އ“ - A *
;************************************************
HDD_REDIR:
POP AF
CALL HD_CMD
RET NC
JP HDD_ERROR
MSD_R_W_UT: MSD_R_W_UT:
PUSH AF PUSH AF
CALL DISK_REDIR CALL DISK_REDIR
CP 40H CP #40
JR NC,HDD_REDIR JR C,.NOT_HDD
;************************************************
;* <20>®¤¯à®£à ¬¬  ç⥭¨ï/§ ¯¨á¨ MS-DOS ¤¨áª®¢ *
;* 1. €¤à¥á ¡ãä¥à  - HL *
;* 2. <20>®¬¥à ᥪâ®à  - DE *
;* 3. —¨á«® ᥪâ®à®¢ - B *
;* 4. Š®¬ ­¤  - C *
;* 5. ‘âà ­¨æ  އ“ - A *
;************************************************
.HDD: POP AF
;!TEST 06/01/2024 㡨ࠥ¬ «¨è­¨¥ ⥫®¤¢¨¦¥­¨ï
;CALL HD_CMD
SET 6,C
CALL EXP_FNS
;
RET NC
JP HDD_ERROR
;************************************************
.NOT_HDD:
POP AF POP AF
EX AF,AF' EX AF,AF'
LD A,C LD A,C
@ -51,7 +55,7 @@ MSD_R_W_UT:
; EX (SP),HL ; EX (SP),HL
; POP IX ; POP IX
; LD C,12H ; LD C,12H
; LD A,(OPER_DISK) ; LD A,(ZX_VARS.OPER_DISK)
; DI ; DI
; PUSH IY ; PUSH IY
; CALL HD_CMD ; CALL HD_CMD
@ -72,7 +76,7 @@ MSD_R_W_UT:
; EX (SP),HL ; EX (SP),HL
; POP IX ; POP IX
; LD C,13H ; LD C,13H
; LD A,(OPER_DISK) ; LD A,(ZX_VARS.OPER_DISK)
; DI ; DI
; PUSH IY ; PUSH IY
; CALL HD_CMD ; CALL HD_CMD
@ -92,45 +96,51 @@ MSD_R_W_UT:
MSD_cmd4: MSD_cmd4:
PUSH HL PUSH HL
PUSH AF ;PUSH AF ;!TEST 21/2/2024
CALL RESET_WG CALL RESET_WG
POP AF ;POP AF ;!TEST 21/2/2024
POP HL POP HL
LD B,1 LD B,1
LD DE,0 ;!TEST 21/2/2024
; LD DE,0
XOR A
LD D,A
LD E,A
MSD_cmd5: MSD_cmd5:
LD A,0 ; LD A,0
LD (RD_WR_COM),A ; A=0
LD (ZX_VARS.RD_WR_COM),A
EX AF,AF' EX AF,AF'
JR MSD_RWU1 JR MSD_RWU1
MSD_cmd6: MSD_cmd6:
LD A,255 ; A=0
LD (RD_WR_COM),A ;LD A,255
DEC A
LD (ZX_VARS.RD_WR_COM),A
EX AF,AF' EX AF,AF'
JR MSD_RWU1 JR MSD_RWU1
PREPARE1: PREPARE1:
LD (MED_START),A LD (ZX_VARS.MED_START),A
LD (CONT_BUF_ADR),HL LD (ZX_VARS.CONT_BUF_ADR),HL
DI DI
IN A,(PAGE2) IN A,(SLOT2)
LD C,A LD C,A
LD A,SYS_PAGE LD A,SYS_PAGE
OUT (PAGE2),A OUT (SLOT2),A
LD A,(DS_1440-4000H) LD A,(SYS_PAGE.DS_1440-4000H)
AND BIT_MASK_1440 AND SYS_PAGE.DS_1440.IS_SET
SET 0,A SET 0,A
LD (DS_1440-4000H),A LD (SYS_PAGE.DS_1440-4000H),A
LD A,C LD A,C
OUT (PAGE2),A OUT (SLOT2),A
EI EI
CALL Z,RES_1440 CALL Z,RES_1440
CALL NZ,SET_1440 CALL NZ,SET_1440
CALL CALC_SECTOR CALL CALC_SECTOR
LD (CONT_SEC),DE LD (ZX_VARS.CONT_SEC),DE
LD A,(RD_WR_COM) LD A,(ZX_VARS.RD_WR_COM)
RET RET
MSD_RWU1: MSD_RWU1:
@ -142,79 +152,79 @@ MSD_RWU1:
MSD_R_W_LOOP: MSD_R_W_LOOP:
POP HL POP HL
POP BC POP BC
LD A,(MED_START) LD A,(ZX_VARS.MED_START)
INC B INC B
DEC B DEC B
LD DE,(CONT_SEC) LD DE,(ZX_VARS.CONT_SEC)
RET Z RET Z
DEC B DEC B
PUSH BC PUSH BC
PUSH HL PUSH HL
LD (CONT_BUF_ADR),HL LD (ZX_VARS.CONT_BUF_ADR),HL
LD A,(CONT_SEC) LD A,(ZX_VARS.CONT_SEC)
LD (SEC_NUM),A LD (ZX_VARS.SEC_NUM),A
LD A,(CONT_TRK) LD A,(ZX_VARS.CONT_TRK)
CALL Global_trk CALL Global_trk
LD A,(RD_WR_COM) LD A,(ZX_VARS.RD_WR_COM)
OR A OR A
PUSH AF PUSH AF
CALL Z,MSD_3F0E CALL Z,MSD_3F0E
POP AF POP AF
CALL NZ,MSD_3F0A CALL NZ,MSD_3F0A
DI DI
IN A,(PAGE2) IN A,(SLOT2)
LD C,A LD C,A
LD A,SYS_PAGE LD A,SYS_PAGE
OUT (PAGE2),A OUT (SLOT2),A
LD DE,(MS_BPB+SEC_SIZE-4000h) LD DE,(SYS_PAGE.MS_BPB+SEC_SIZE-#4000)
LD A,C LD A,C
OUT (PAGE2),A OUT (SLOT2),A
EI EI
POP HL POP HL
ADD HL,DE ADD HL,DE
LD A,H LD A,H
OR L OR L
JR NZ,MSD_NO_PAGE JR NZ,MSD_NO_PAGE
DI DI
IN A,(PAGE2) IN A,(SLOT2)
LD C,A LD C,A
LD A,SYS_PAGE LD A,SYS_PAGE
OUT (PAGE2),A OUT (SLOT2),A
LD A,(MED_START) LD A,(ZX_VARS.MED_START)
LD HL,RAMD_FAT-4000H LD HL,SYS_PAGE.RAM_TABLE-#4000
LD L,A LD L,A
LD L,(HL) LD L,(HL)
LD A,C LD A,C
OUT (PAGE2),A OUT (SLOT2),A
EI EI
LD A,L LD A,L
LD HL,0C000H LD HL,#C000
LD (MED_START),A LD (ZX_VARS.MED_START),A
MSD_NO_PAGE: MSD_NO_PAGE:
LD (CONT_BUF_ADR),HL LD (ZX_VARS.CONT_BUF_ADR),HL
PUSH HL PUSH HL
DI DI
IN A,(PAGE2) IN A,(SLOT2)
LD C,A LD C,A
LD A,SYS_PAGE LD A,SYS_PAGE
OUT (PAGE2),A OUT (SLOT2),A
LD A,(DS_1440-4000H) LD A,(SYS_PAGE.DS_1440-#4000)
RES 0,A AND %1111'1110
LD (DS_1440-4000H),A LD (SYS_PAGE.DS_1440-#4000),A
LD A,(MSD_SECS-4000h) LD A,(SYS_PAGE.MSD_SECS-#4000)
LD L,A LD L,A
LD A,C LD A,C
OUT (PAGE2),A OUT (SLOT2),A
EI EI
LD A,L LD A,L
LD HL,CONT_SEC LD HL,ZX_VARS.CONT_SEC
INC (HL) INC (HL)
CP (HL) CP (HL)
JP NZ,MSD_R_W_LOOP JP NZ,MSD_R_W_LOOP
LD (HL),0 LD (HL),0
LD HL,CONT_TRK LD HL,ZX_VARS.CONT_TRK
INC (HL) INC (HL)
JP MSD_R_W_LOOP JP MSD_R_W_LOOP
;***************************************** ;*****************************************
@ -226,30 +236,30 @@ MSD_3F0A:
MSD_3F0E: MSD_3F0E:
LD A,128 LD A,128
MSD_3F10: MSD_3F10:
LD (COMAND_WG),A LD (ZX_VARS.COMAND_WG),A
MSD_3F13: MSD_3F13:
LD D,5 ; —ˆ‘‹Ž <20>ŽŽ<E28099><EFBFBD>ˆ LD D,5 ; —ˆ‘‹Ž <20>ŽŽ<E28099><EFBFBD>ˆ
MSD_3F15: MSD_3F15:
PUSH DE PUSH DE
PUSH IX PUSH IX
DI DI
IN A,(PAGE3) IN A,(SLOT3)
EX AF,AF' EX AF,AF'
LD A,(MED_START) LD A,(ZX_VARS.MED_START)
OUT (PAGE3),A OUT (SLOT3),A
AND A AND A
JR Z,NO_OFF_SCR JR Z,NO_OFF_SCR
LD A,0C0H LD A,#C0
OUT (RGADR),A OUT (RGADR),A
NO_OFF_SCR: NO_OFF_SCR:
LD IX,MSD_RET_ADR LD IX,MSD_RET_ADR
LD A,(SEC_NUM) LD A,(ZX_VARS.SEC_NUM)
INC A INC A
OUT (WG_SEC),A OUT (FDC_93.Sector),A
LD HL,(CONT_BUF_ADR) LD HL,(ZX_VARS.CONT_BUF_ADR)
LD C,127 LD C,127
LD A,(COMAND_WG) LD A,(ZX_VARS.COMAND_WG)
OUT (WG_COM),A OUT (FDC_93.Command),A
CP 160 CP 160
JP Z,MSD_3FBA ; ‡€<E280A1>ˆœ …ŠŽ<E28099> JP Z,MSD_3FBA ; ‡€<E280A1>ˆœ …ŠŽ<E28099>
JP MSD_3FD5 ; —<E28099>ˆ…ŠŽ<E28099> JP MSD_3FD5 ; —<E28099>ˆ…ŠŽ<E28099>
@ -257,16 +267,15 @@ MSD_RET_ADR:
LD A,0 LD A,0
OUT (RGADR),A OUT (RGADR),A
EX AF,AF' EX AF,AF'
OUT (PAGE3),A OUT (SLOT3),A
POP IX POP IX
POP DE POP DE
EI EI
IN A,(WG_COM) IN A,(FDC_93.Command)
LD B,A LD B,A
AND 127 AND 127
RET Z RET Z
;MSD_3F39:
MSD_3F39:
LD HL,READ_ONLY_MSG LD HL,READ_ONLY_MSG
AND '@' AND '@'
JR NZ,MSD_3F4B JR NZ,MSD_3F4B
@ -281,7 +290,7 @@ MSD_3F48:
LD HL,DISK_ERROR_MSG LD HL,DISK_ERROR_MSG
MSD_3F4B: MSD_3F4B:
LD A,208 LD A,208
OUT (WG_COM),A OUT (FDC_93.Command),A
LD A,B LD A,B
AND 1 AND 1
JP NZ,AUTO_3EE7 JP NZ,AUTO_3EE7
@ -292,11 +301,11 @@ MSD_3F4B:
RST PRINT_LN RST PRINT_LN
LD HL,AUTO_2A13 LD HL,AUTO_2A13
RST PRINT_LN RST PRINT_LN
IN A,(WG_TRK) IN A,(FDC_93.Track)
CALL AUTO_1DA3 CALL AUTO_1DA3
LD HL,AUTO_2A18 LD HL,AUTO_2A18
RST PRINT_LN RST PRINT_LN
IN A,(WG_SEC) IN A,(FDC_93.Sector)
CALL AUTO_1DA3 CALL AUTO_1DA3
LD HL,AUTO_29FE LD HL,AUTO_29FE
RST PRINT_LN RST PRINT_LN
@ -310,10 +319,10 @@ MSD_3F7B:
JR NZ,MSD_3F7B JR NZ,MSD_3F7B
CALL exit_No_disk CALL exit_No_disk
LD A,7 LD A,7
LD (DOS_ERR_2),A LD (ZX_VARS.DOS_ERR_2),A
JP AUTO_01D3 JP AUTO_01D3
MSD_3F94: MSD_3F94:
LD A,(CONT_TRK) LD A,(ZX_VARS.CONT_TRK)
CALL Global_trk CALL Global_trk
CALL pause_750ms CALL pause_750ms
JP MSD_3F13 JP MSD_3F13
@ -323,7 +332,7 @@ MSD_3FA0:
CALL SWITCH_DT CALL SWITCH_DT
PUSH DE PUSH DE
CALL AUTO_3D98 ; RESET_WG CALL AUTO_3D98 ; RESET_WG
LD A,(CONT_TRK) LD A,(ZX_VARS.CONT_TRK)
CALL Global_trk ; <20>އˆˆŽ<CB86>ˆ<EFBFBD>Ž<E2809A>ˆ CALL Global_trk ; <20>އˆˆŽ<CB86>ˆ<EFBFBD>Ž<E2809A>ˆ
POP DE POP DE
JP MSD_3F15 JP MSD_3F15
@ -331,25 +340,25 @@ MSD_3FA0:
SWITCH_DT: SWITCH_DT:
DI DI
IN A,(PAGE2) IN A,(SLOT2)
LD C,A LD C,A
LD A,SYS_PAGE LD A,SYS_PAGE
OUT (PAGE2),A OUT (SLOT2),A
LD A,(DS_1440-4000H) LD A,(SYS_PAGE.DS_1440-4000H)
BIT 0,A BIT 0,A
JR Z,NO_SW_DT JR Z,NO_SW_DT
XOR BIT_MASK_1440 XOR SYS_PAGE.DS_1440.IS_SET
LD (DS_1440-4000H),A LD (SYS_PAGE.DS_1440-4000H),A
AND BIT_MASK_1440 AND SYS_PAGE.DS_1440.IS_SET
LD A,C LD A,C
OUT (PAGE2),A OUT (SLOT2),A
EI EI
CALL Z,RES_1440 JR Z,RES_1440
CALL NZ,SET_1440 JR SET_1440
RET ;
NO_SW_DT: NO_SW_DT:
LD A,C LD A,C
OUT (PAGE2),A OUT (SLOT2),A
EI EI
RET RET
@ -359,8 +368,8 @@ NO_SW_DT:
MSD_3FBA: MSD_3FBA:
LD B,4 LD B,4
MSD_3FBC: MSD_3FBC:
IN A,(P_DOS_FF) IN A,(FDC_93.DrvCTRL)
AND 192 AND #C0
JR NZ,MSD_3FD1 JR NZ,MSD_3FD1
INC DE INC DE
LD A,E LD A,E
@ -370,8 +379,8 @@ MSD_3FBC:
MSD_RET_IX: MSD_RET_IX:
JP (IX) JP (IX)
MSD_3FCA: MSD_3FCA:
IN A,(P_DOS_FF) IN A,(FDC_93.DrvCTRL)
AND 192 AND #C0
JR Z,MSD_3FCA JR Z,MSD_3FCA
JP M,MSD_RET_IX JP M,MSD_RET_IX
MSD_3FD1: MSD_3FD1:
@ -383,8 +392,8 @@ MSD_3FD1:
MSD_3FD5: MSD_3FD5:
LD B,4 LD B,4
MSD_3FD7: MSD_3FD7:
IN A,(P_DOS_FF) IN A,(FDC_93.DrvCTRL)
AND 192 AND #C0
JR NZ,MSD_3FEC JR NZ,MSD_3FEC
INC DE INC DE
LD A,E LD A,E
@ -394,8 +403,8 @@ MSD_3FD7:
MSD_RET_IX2: MSD_RET_IX2:
JP (IX) JP (IX)
MSD_3FE5: MSD_3FE5:
IN A,(P_DOS_FF) IN A,(FDC_93.DrvCTRL)
AND 192 AND #C0
JR Z,MSD_3FE5 JR Z,MSD_3FE5
JP M,MSD_RET_IX2 JP M,MSD_RET_IX2
MSD_3FEC: MSD_3FEC:
@ -406,288 +415,283 @@ MSD_3FEC:
;**************************************** ;****************************************
RES_1440: RES_1440:
LD A,01h LD A,FDD_Density.SET_720
OUT (0BDh),A OUT (FDD_Density),A
RET RET
SET_1440: SET_1440:
LD A,21h LD A,FDD_Density.SET_1440
OUT (0BDh),A OUT (FDD_Density),A
RET RET
READ_BPB: READ_BPB:
CALL DISK_REDIR CALL DISK_REDIR
CP 40H ; LD C,BIOS.GET_DISK_REDIR
JR NC,HDD_REDIR2 ; CALL EXP_FNS
CP #40
JR NC,.HDD
CP 4 CP 4
JP NC,ERROR_MSDOS JP NC,ERROR_MSG
;
CALL SET_DISK CALL SET_DISK
;
CALL MAIN_BPB CALL .MAIN
RET NC RET NC
JP ERROR_MSDOS JP ERROR_MSG
;
HDD_REDIR2: .HDD: CALL .MAIN
CALL MAIN_BPB
RET NC RET NC
; old hdd
SPACIAL_BPB:
LD IX,0 LD IX,0
LD DE,63 LD DE,63 ;!HARDCODE
LD A,SYS_PAGE LD A,SYS_PAGE
LD HL,MS_BPB LD HL,SYS_PAGE.MS_BPB
LD C,5 ;
LD B,1 LD BC,256*1 + TRDOS_ROM_CMD.READ
CALL MSD_R_W_UT CALL MSD_R_W_UT
CALL BPB_PARAMS ;
CALL .PARAMS
RET NC RET NC
JP ERROR_MSDOS JP ERROR_MSG
;
.MAIN: LD A,SYS_PAGE
LD HL,SYS_PAGE.MS_BPB
LD C,TRDOS_ROM_CMD.READ_BPB
CALL MSD_R_W_UT
MAIN_BPB: ;CALL BPB_PARAMS
LD IX,0 ;RET
LD DE,0 ;
LD A,SYS_PAGE ; LD C,18H
LD HL,MS_BPB ; LD A,(ZX_VARS.OPER_DISK)
LD C,4 ; CALL HD_CMD
LD B,1 ; ;
CALL MSD_R_W_UT ; DI
CALL BPB_PARAMS ; IN A,(SLOT3)
RET ; EX AF,AF'
; LD A,SYS_PAGE
; LD C,18H ; OUT (SLOT3),A
; LD A,(OPER_DISK) ; ;
; CALL HD_CMD ; LD A,(SYS_PAGE.MS_BPB+S_P_T) ; Š®«¨ç¥á⢮ ᥪâ®à®¢ ­  â४
; LD L,A
; DI ; ;
; IN A,(PAGE3) ; EX AF,AF'
; EX AF,AF' ; OUT (SLOT3),A
; LD A,SYS_PAGE ; EI
; OUT (PAGE3),A ; ;
; ; LD A,(ZX_VARS.OPER_DISK)
; LD A,(MS_BPB+S_P_T) ; Š®«¨ç¥á⢮ ᥪâ®à®¢ ­  â४ ; LD C,19H
; LD L,A ; CALL HD_CMD
;
; EX AF,AF'
; OUT (PAGE3),A
; EI
;
; LD A,(OPER_DISK)
; LD C,19H
; CALL HD_CMD
BPB_PARAMS:
.PARAMS:
DI DI
IN A,(PAGE3) IN A,(SLOT3)
EX AF,AF' EX AF,AF'
LD A,SYS_PAGE LD A,SYS_PAGE
OUT (PAGE3),A OUT (SLOT3),A
LD A,(MS_BPB+FORM_CODE) LD A,(SYS_PAGE.MS_BPB+FORM_CODE)
CP 0F0H CP #F0
JP C,ERROR_BPB JP C,.ERROR_BPB
LD HL,MS_BPB+FAT_ID LD DE,SYS_PAGE.MS_BPB+FAT_ID
LD DE,FAT1_MSG LD HL,.FAT1_MSG
LD B,4 LD B,4
R_BPB_L1: .L1: LD A,(DE)
LD A,(DE)
CP ' ' CP ' '
JR NZ,R_BPB_L11 JR NZ,.L11
INC DE INC DE
JR R_BPB_L1 JR .L1
R_BPB_L11: .L11: CP (HL)
CP (HL) JR NZ,.PC_DOS
JR NZ,PC_DOS_BPB
INC HL INC HL
INC DE INC DE
DJNZ R_BPB_L1 DJNZ .L1
LD A,(HL) LD A,(DE)
CP '6' CP '6'
LD HL,81FFH ; FAT16 ä« £ LD HL,#81FF ; FAT16 ä« £
JR Z,BPB_FAT JR Z,.FAT
CP '2' CP '2'
JP NZ,ERROR_BPB JP NZ,.ERROR_BPB
PC_DOS_BPB: .PC_DOS:
LD HL,01FFH ; FAT12 ä« £ LD HL,#01FF ; FAT12 ä« £
BPB_FAT: .FAT: LD (SYS_PAGE.FAT_FLAG),HL
LD (FAT_FLAG),HL
LD A,(MS_BPB+S_P_T) ; Š®«¨ç¥á⢮ ᥪâ®à®¢ ­  â४ LD A,(SYS_PAGE.MS_BPB+S_P_T) ; Š®«¨ç¥á⢮ ᥪâ®à®¢ ­  â४
LD (MSD_SECS),A LD (SYS_PAGE.MSD_SECS),A
BIT 7,H ; BIT 7,H
; LD IX,0
; LD HL,0 ; ¢ëç¨á«¨âì ­ ç «ì­ë© ᥪâ®à FAT
; JR Z,.NO_LD_SPECIAL
LD IX,0 LD IX,(SYS_PAGE.MS_BPB+SPECIAL_SECS)
LD HL,0 ; ¢ëç¨á«¨âì ­ ç «ì­ë© ᥪâ®à FAT LD HL,(SYS_PAGE.MS_BPB+SPECIAL_SECS+2)
JR Z,NO_LD_SPECIAL
LD IX,(MS_BPB+SPECIAL_SECS)
LD HL,(MS_BPB+SPECIAL_SECS+2)
NO_LD_SPECIAL:
;.NO_LD_SPECIAL:
LD BC,0 LD BC,0
LD DE,(MS_BPB+RESERV_SECS) LD DE,(SYS_PAGE.MS_BPB+RESERV_SECS)
ADD IX,DE ADD IX,DE
ADC HL,BC ADC HL,BC
LD (MSD_FAT_SEC),IX ; ­ ç «ì­ë© ᥪâ®à FAT LD (SYS_PAGE.MSD_FAT_SEC),IX ; ­ ç «ì­ë© ᥪâ®à FAT
LD (MSD_FAT_SEC2),HL ; ­ ç «ì­ë© ᥪâ®à FAT LD (SYS_PAGE.MSD_FAT_SEC2),HL ; ­ ç «ì­ë© ᥪâ®à FAT
LD DE,(MS_BPB+S_P_F) ; ç¨á«® ᥪâ®à®¢ ¢ FAT LD DE,(SYS_PAGE.MS_BPB+S_P_F) ; ç¨á«® ᥪâ®à®¢ ¢ FAT
LD BC,0 ;LD BC,0
LD A,(MS_BPB+FATS_NUM) ; ª®«¨ç¥á⢮ FATs LD A,(SYS_PAGE.MS_BPB+FATS_NUM) ; ª®«¨ç¥á⢮ FATs
NEXT_ADD: .NEXT_ADD:
ADD IX,DE ADD IX,DE
ADC HL,BC ADC HL,BC
DEC A DEC A
JR NZ,NEXT_ADD JR NZ,.NEXT_ADD
LD (MSD_CAT_SEC),IX ; ­ ç «ì­ë© ᥪâ®à DIR LD (SYS_PAGE.MSD_CAT_SEC),IX ; ­ ç «ì­ë© ᥪâ®à DIR
LD (MSD_CAT_SEC2),HL ; ­ ç «ì­ë© ᥪâ®à DIR LD (SYS_PAGE.MSD_CAT_SEC2),HL ; ­ ç «ì­ë© ᥪâ®à DIR
LD BC,(MS_BPB+SEC_SIZE) ; <20> §¬¥à ᥪâ®à  LD BC,(SYS_PAGE.MS_BPB+SEC_SIZE) ; <20> §¬¥à ᥪâ®à 
LD A,B
RL C RL C
RL B RLA
RL C RL C
RL B RLA
RL C RL C
RL B RLA
LD C,B LD C,A
LD B,0 ; BC - ç¨á«® ä ©«®¢ëå § ¯¨á¥© ¢ ᥪâ®à¥ LD B,0 ; BC - ç¨á«® ä ©«®¢ëå § ¯¨á¥© ¢ ᥪâ®à¥
LD A,C LD (SYS_PAGE.FilesPerSector),A
LD (F_P_S),A
LD DE,(MS_BPB+FLS_NUM) ; —¨á«® ä ©«®¢ëå § ¯¨á¥© LD DE,(SYS_PAGE.MS_BPB+FLS_NUM) ; —¨á«® ä ©«®¢ëå § ¯¨á¥©
EX DE,HL EX DE,HL
DEC HL DEC HL
XOR A XOR A
NEXT_ADD2: .NEXT_ADD2:
INC A INC A
JR Z,ERROR_BPB JR Z,.ERROR_BPB
SBC HL,BC SBC HL,BC
JR NC,NEXT_ADD2 JR NC,.NEXT_ADD2
EX DE,HL EX DE,HL
LD E,A ; A - ç¨á«® ᥪâ®à®¢ ¢ DIR LD E,A ; A - ç¨á«® ᥪâ®à®¢ ¢ DIR
LD D,0
LD BC,0 LD BC,0
LD (S_P_C),A LD D,B
LD (SYS_PAGE.SectorsPerCluster),A
ADD IX,DE ; <20> ç «® DATA area ADD IX,DE ; <20> ç «® DATA area
ADC HL,BC ADC HL,BC
LD (MSD_DAT_SEC),IX LD (SYS_PAGE.MSD_DAT_SEC),IX
LD (MSD_DAT_SEC2),HL LD (SYS_PAGE.MSD_DAT_SEC2),HL
LD BC,(MS_BPB+SEC_SIZE) ; <20> §¬¥à ᥪâ®à  LD BC,(SYS_PAGE.MS_BPB+SEC_SIZE) ; <20> §¬¥à ᥪâ®à 
LD HL,0 ; D = 0
LD A,(MS_BPB+CLAST_SIZE) LD H,D
LD L,D
LD E,D
LD A,(SYS_PAGE.MS_BPB+CLAST_SIZE)
LD D,A LD D,A
LD A,0 XOR A
NEXT_ADD3: .NEXT_ADD3:
ADD HL,BC ; ‚ëç¨á«¥­¨¥ ¤«¨­ë ª« áâ¥à  ADD HL,BC ; ‚ëç¨á«¥­¨¥ ¤«¨­ë ª« áâ¥à 
ADC A,0 ADC A,E
DEC D DEC D
JR NZ,NEXT_ADD3 JR NZ,.NEXT_ADD3
LD (CLASTER_LEN),HL LD (SYS_PAGE.CLUSTER_LEN),HL
LD B,0 LD B,E
LD C,A LD C,A
LD (CLASTER_LEN2),BC LD (SYS_PAGE.CLUSTER_LEN2),BC
;
LD HL,0 ; DE=0
LD BC,(MS_BPB+S_P_T) EX DE,HL ;LD HL,0
LD A,(MS_BPB+H_P_S) LD BC,(SYS_PAGE.MS_BPB+S_P_T)
BPB_L1: ; ‚›—ˆ‘‹ˆ’œ ŠŽ‹ˆ—…‘’‚Ž …ŠŽ<E28099>Ž <20>ˆˆ<E280B9><EFBFBD> LD A,(SYS_PAGE.MS_BPB+H_P_S)
.BPB_L1:; ‚›—ˆ‘‹ˆ’œ ŠŽ‹ˆ—…‘’‚Ž …ŠŽ<E28099>Ž <20>ˆˆ<E280B9><EFBFBD>
ADD HL,BC ADD HL,BC
DEC A DEC A
JR NZ,BPB_L1 JR NZ,.BPB_L1
LD (S_X_H),HL LD (SYS_PAGE.S_X_H),HL
;
EX AF,AF' EX AF,AF'
OUT (PAGE3),A OUT (SLOT3),A
EI CALL RESTORE_CURRENT_DIR ; [x] new tr-hdd
AND A AND A
EI
RET RET
.ERROR_BPB:
ERROR_BPB:
EX AF,AF' EX AF,AF'
OUT (PAGE3),A OUT (SLOT3),A
SCF SCF
EI EI
RET RET
;
; .ERROR_MSDOS:
ERROR_MSDOS: ; LD HL,MSG_3
LD HL,MSG_3 ; JP AUTO_03E4
JP AUTO_03E4 ;
.FAT1_MSG:
FAT1_MSG: DB 'FAT1' DB 'FAT1'
;******************************************** ;********************************************
READ_NEXT_DIR: READ_NEXT_DIR:
DI DI
IN A,(PAGE3) IN A,(SLOT3)
EX AF,AF' EX AF,AF'
LD A,SYS_PAGE LD A,SYS_PAGE
OUT (PAGE3),A OUT (SLOT3),A
LD DE,(MSD_CONT_SEC) LD DE,(SYS_PAGE.MSD_CONT_SEC)
LD IX,(MSD_CONT_SEC2) LD IX,(SYS_PAGE.MSD_CONT_SEC2)
JR READ_NEXT2 JR READ_NEXT2
;******************************************** ;********************************************
READ_1ST_DIR: READ_1ST_DIR:
DI DI
IN A,(PAGE3) IN A,(SLOT3)
EX AF,AF' EX AF,AF'
LD A,SYS_PAGE LD A,SYS_PAGE
OUT (PAGE3),A OUT (SLOT3),A
LD IX,(MSD_CAT_SEC2) ; LD IX,(SYS_PAGE.MSD_CAT_SEC2)
LD DE,(MSD_CAT_SEC) ; <20>€—€œ<E280B9>…ŠŽ<E28099> Š€’€‹Žƒ€ LD DE,(SYS_PAGE.MSD_CAT_SEC) ; <20>€—€œ<E280B9>…ŠŽ<E28099> Š€’€‹Žƒ€
LD (MSD_CONT_SEC),DE LD (SYS_PAGE.MSD_CONT_SEC),DE
LD (MSD_CONT_SEC2),IX LD (SYS_PAGE.MSD_CONT_SEC2),IX
LD A,(S_P_C) ; …ŠŽ<E28099>Ž Š€’€‹Žƒ… LD A,(SYS_PAGE.SectorsPerCluster) ; …ŠŽ<E28099>Ž Š€’€‹Žƒ…
LD (COUNT_SEC),A LD (SYS_PAGE.COUNT_SEC),A
READ_NEXT2: READ_NEXT2:
EX AF,AF' EX AF,AF'
OUT (PAGE3),A OUT (SLOT3),A
; RET_PAGE3 ; RET_PAGE3
EI EI
LD HL,MS_DIR LD HL,SYS_PAGE.MS_DIR
LD A,SYS_PAGE LD A,SYS_PAGE
LD B,1 LD BC,256*1 + TRDOS_ROM_CMD.READ
LD C,5
CALL MSD_R_W_UT CALL MSD_R_W_UT
DI DI
IN A,(PAGE3) IN A,(SLOT3)
EX AF,AF' EX AF,AF'
LD A,SYS_PAGE LD A,SYS_PAGE
OUT (PAGE3),A OUT (SLOT3),A
LD DE,(MSD_CONT_SEC) LD DE,(SYS_PAGE.MSD_CONT_SEC)
INC DE INC DE
LD (MSD_CONT_SEC),DE LD (SYS_PAGE.MSD_CONT_SEC),DE
LD A,D LD A,D
OR E OR E
JR NZ,READ_NEXT3 JR NZ,READ_NEXT3
LD IX,(MSD_CONT_SEC2) LD IX,(SYS_PAGE.MSD_CONT_SEC2)
INC IX INC IX
LD (MSD_CONT_SEC2),IX LD (SYS_PAGE.MSD_CONT_SEC2),IX
READ_NEXT3: READ_NEXT3:
LD A,(F_P_S) ; ”€‰‹Ž‚ …ŠŽ<E28099> LD A,(SYS_PAGE.FilesPerSector) ; ”€‰‹Ž‚ …ŠŽ<E28099>
LD (COUNT_FL),A LD (SYS_PAGE.COUNT_FL),A
EX AF,AF' EX AF,AF'
OUT (PAGE3),A OUT (SLOT3),A
; RET_PAGE3 ; RET_PAGE3
EI EI
LD HL,MS_DIR LD HL,SYS_PAGE.MS_DIR
AND A AND A
RET RET
@ -704,11 +708,11 @@ CALC_SECT_L1:
PUSH BC PUSH BC
EX DE,HL EX DE,HL
DI DI
IN A,(PAGE3) IN A,(SLOT3)
EX AF,AF' EX AF,AF'
LD A,SYS_PAGE LD A,SYS_PAGE
OUT (PAGE3),A OUT (SLOT3),A
LD BC,(MS_BPB+S_P_T) LD BC,(SYS_PAGE.MS_BPB+S_P_T)
XOR A XOR A
LOOP_TRK: LOOP_TRK:
SBC HL,BC SBC HL,BC
@ -716,14 +720,14 @@ LOOP_TRK:
INC A INC A
JR NZ,LOOP_TRK JR NZ,LOOP_TRK
POP BC POP BC
JP ERROR_BPB JP READ_BPB.ERROR_BPB
SEC_ENDER: SEC_ENDER:
ADD HL,BC ADD HL,BC
LD H,A ; <>…Š LD H,A ; <>…Š
; LD L,L ; …ŠŽ<E28099> ; LD L,L ; …ŠŽ<E28099>
EX AF,AF' EX AF,AF'
OUT (PAGE3),A OUT (SLOT3),A
EI EI
EX DE,HL EX DE,HL
POP BC POP BC
@ -732,8 +736,8 @@ SEC_ENDER:
;************************************************ ;************************************************
REDIR_LINE_CODING: REDIR_LINE_CODING:
LD (MED_START),HL LD (ZX_VARS.MED_START),HL
LD HL,(DOS_CH_ADR) LD HL,(ZX_VARS.DOS_CH_ADR)
LD A,(HL) LD A,(HL)
CP '/' CP '/'
RET Z RET Z
@ -751,18 +755,19 @@ PRINT_HEX_SYM:
PUSH HL PUSH HL
PUSH DE PUSH DE
PUSH BC PUSH BC
AND 0FH AND #0F
ADD A,'0' ADD A,'0'
CP '9'+1 CP '9'+1
JR C,NO_ADD JR C,NO_ADD
ADD A,7 ADD A,7
NO_ADD: NO_ADD:
RST 10H RST #10
POP BC POP BC
POP DE POP DE
POP HL POP HL
RET RET
;******************************************* ;*******************************************
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
DISPLAY "TR_MSD_S.ASZ size: ",/A,$-File_Start
DISPLAY "===================================================="

View File

@ -1,13 +1,16 @@
File_Start DEFL $
DISPLAY "===================================================="
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
DEFINE NEW_RAMDRV_READ 1
DISK_REDIR: DISK_REDIR:
PUSH HL ;PUSH HL
PUSH BC PUSH BC
LD A,(OPER_DISK) LD C,BIOS.GET_DISK_REDIR
AND 3
LD C,0CFH
CALL EXP_FNS CALL EXP_FNS
EI
POP BC POP BC
POP HL ;POP HL
RET RET
R_W_REDIR: R_W_REDIR:
@ -21,7 +24,7 @@ ERROR_DISK:
RECALL_1E70: RECALL_1E70:
CALL RES_1440 CALL RES_1440
LD A,(RD_WR_COM) LD A,(ZX_VARS.RD_WR_COM)
PUSH BC PUSH BC
PUSH HL PUSH HL
CALL READ_TRK_NUM CALL READ_TRK_NUM
@ -35,27 +38,211 @@ RECALL_RAMD:
JR Z,ERROR_DISK JR Z,ERROR_DISK
JP READ_WRITE_RAMD JP READ_WRITE_RAMD
RECALL_MSD: ; RECALL_MSD:
JR ERROR_DISK ; ¯¥à¥å®¤ ­  ®è¨¡ªã ¤¨áª  ; JR ERROR_DISK ; ¯¥à¥å®¤ ­  ®è¨¡ªã ¤¨áª 
TEST_RAMD: TEST_RAMD:
PUSH HL PUSH HL
LD C,0CEH LD C,BIOS.GET_RAMD_ST
CALL EXP_FNS CALL EXP_FNS
EI ;!TEST 06/01/2024 á®å࠭塞 á®áâ®ï­¨¥ ¯à¥à뢠­¨© § ç¥¬-â®
EI
;
POP HL POP HL
RET RET
; ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
; º RD/WR SECTOR HL - BUFER º\
; º CONT_SEC - SEC/TRK FOR READ/WRITE º\
; º COM_RD_WR - ª®¬ ­¤  ç⥭¨¥/§ ¯¨áì º\
; º 0 - ç⥭¨¥, 255 - § ¯¨áì º\
; ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ\
; \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
READ_WRITE_RAMD: RAMD_X12: ; ¯à®¢¥àª  ¤¨áª 
LD (ZX_VARS.OPER_DISK),A
CALL DISK_REDIR
CP 4
JR C,X_AUTO_3DCE
CP 20
RET C
; JR C,RAMD_TEST
;NO_DISK2:
JP AUTO_3EE7 ; NO_DISK
X_AUTO_3DCE:
CALL RES_1440
LD A,(ZX_VARS.OPER_DISK)
JP AUTO_3DCE
;*************************************
RAMD_X14: ; FORMATING
CALL get_disk_type
PUSH AF
PUSH BC
PUSH HL
CALL DISK_REDIR
CP 4
JR C,DISK_FORM
CP 20
JR C,RAMD_FORMAT
JP READ_ONLY
DISK_FORM:
LD A,(ZX_VARS.MED_START+1)
CP #14
JR Z,QVICK_FORMAT
POP HL
POP BC
POP AF
JP AUTO_1EE0
QVICK_FORMAT:
POP HL
POP BC
POP AF
JR Q_FORM_1
RAMD_FORMAT:
SUB 4
CALL TEST_RAMD
JP C,READ_ONLY
CALL NZ,CLEAR_RAMD
POP HL
POP BC
POP AF
LD B,#28 ; à §¬¥à 640K
CALL DISK_REDIR
SUB 4
CALL GET_RAM_BLK ; „…<E280B9>ˆ<20>€ŒŸˆ
; LD C,A ; Š‹ž— RAM-Disk
Q_FORM_1:
LD HL,ZX_VARS.BUFFER ; CLEAR DISK ZX_VARS.BUFFER
LD DE,ZX_VARS.BUFFER+1
LD BC,#FF
LD (HL),0
LDIR
LD DE,0
RAMD_F_LOOP:
LD HL,ZX_VARS.BUFFER
LD B,1
PUSH DE
CALL WRITE_DISK
POP DE
INC E
LD A,E
CP 8
JR NZ,RAMD_F_LOOP
LD HL,2544
LD A,22
JP AUTO_1F55
;*************************************
CLEAR_RAMD_X:
CALL RAMD_SYM
JR NC,CLEAR_RMD_A
DEC DE
LD A,(DE)
CP 13
SCF
RET NZ
CLEAR_RAMD:
CALL DISK_REDIR
;CLEAR_NEXT:
SUB 4
RET C
CP SYS_PAGE.RAMD_KEYS.NUM
CCF
RET C
CLEAR_RMD_A:
PUSH HL
PUSH DE
PUSH BC
LD C,BIOS.FreeMemRMD
CALL EXP_FNS ; ¢ë§¢ âì äã­ªæ¨î
;!TEST 06/01/2024 á®å࠭塞 á®áâ®ï­¨¥ ¯à¥à뢠­¨© § ç¥¬-â®
;EI
;
POP BC
POP DE
POP HL
RET
;*********************************************************
; B - —ˆ‘‹Ž <><EFBFBD>“…Œ<20>ŽŠŽ, A - Š‹ž— RAM-Disk
GET_RMD_A:
GET_RAM_BLK:
LD C,BIOS.GetMemRMD
CALL EXP_FNS ; A,L - Š‹ž— RAM-Disk - ­®¬¥à ¯¥à¢®£® ¡«®ª 
;!TEST 06/01/2024 á®å࠭塞 á®áâ®ï­¨¥ ¯à¥à뢠­¨© § ç¥¬-â®
;EI
;
RET NC
;NO_MEM:
LD HL,NO_MEMORY
JP ERR_EXIT
;*********************************************************
READ_ONLY:
LD HL,READ_ONLY_MSG ; Read only !!
JP ERR_EXIT
FDD_SET:
LD A,(ZX_VARS.OPER_DISK)
LD B,A
LD C,BIOS.FDD_TO_DRV
;!TEST 06/01/2024 á®å࠭塞 á®áâ®ï­¨¥ ¯à¥à뢠­¨© § ç¥¬-â®
JP EXP_FNS
;CALL EXP_FNS
;EI
;RET
;
RAMD_SET:
CALL RAMD_SYM
;RET C
JP C,ERROR_MSG
RAMD_SET1:
PUSH AF
LD A,(ZX_VARS.OPER_DISK)
LD B,A
POP AF
LD C,BIOS.RAMD_TO_DRV
;!TEST 06/01/2024 á®å࠭塞 á®áâ®ï­¨¥ ¯à¥à뢠­¨© § ç¥¬-â®
JP EXP_FNS
;CALL EXP_FNS
;EI
;RET
;
RAMD_SYM:
LD A,(DE)
INC DE
CP ' '
JR Z,RAMD_SYM
AND %1101'1111
CP 'E'
RET C
SUB 'E'
CP SYS_PAGE.RAMD_KEYS.NUM
CCF
RET C
PUSH AF
LD A,(DE)
CP ':'
INC DE
JR Z,RAMD_SYM_OK
DEC DE
CP ' '+1
JR C,RAMD_SYM_OK
POP AF
SCF
RET
RAMD_SYM_OK:
POP AF
RET
;
;======================================================================-
; READ_WRITE_RAMD:
; ;
; CALL DISK_REDIR ; CALL DISK_REDIR
; SUB 4 ; SUB 4
@ -68,14 +255,14 @@ READ_WRITE_RAMD:
; LD HL,RAMD_KEYS ; LD HL,RAMD_KEYS
; ADD A,L ; ADD A,L
; LD L,A ; LD L,A
; IN A,(PAGE3) ; IN A,(SLOT3)
; LD C,A ; LD C,A
; LD A,SYS_PAGE ; LD A,SYS_PAGE
; DI ; DI
; OUT (PAGE3),A ; OUT (SLOT3),A
; LD L,(HL) ; LD L,(HL)
; LD A,C ; LD A,C
; OUT (PAGE3),A ; OUT (SLOT3),A
; EI ; EI
; LD A,L ; 1-st block ; LD A,L ; 1-st block
; POP HL ; POP HL
@ -92,7 +279,7 @@ READ_WRITE_RAMD:
; PUSH DE ; PUSH DE
; PUSH BC ; PUSH BC
; ;
; LD DE,(CONT_SEC) ; LD DE,(ZX_VARS.CONT_SEC)
; LD A,D ; ”ˆ‡ˆ—…‘Šˆ… -> ‹Žƒˆ—…‘Šˆ… !!! ; LD A,D ; ”ˆ‡ˆ—…‘Šˆ… -> ‹Žƒˆ—…‘Šˆ… !!!
; RRCA ; RRCA
; RRCA ; RRCA
@ -106,7 +293,7 @@ READ_WRITE_RAMD:
; AND 0FH ; AND 0FH
; LD D,A ; LD D,A
; ;
; LD A,(RD_WR_COM) ; LD A,(ZX_VARS.RD_WR_COM)
; AND A ; AND A
; JR Z,RAMD_READ ; JR Z,RAMD_READ
; PUSH AF ; PUSH AF
@ -127,7 +314,7 @@ READ_WRITE_RAMD:
; POP HL ; POP HL
; POP AF ; POP AF
; OUT (RGADR),A ; OUT (RGADR),A
; LD DE,(CONT_SEC) ; LD DE,(ZX_VARS.CONT_SEC)
; ;
; LD A,B ; LD A,B
; ;
@ -153,328 +340,259 @@ READ_WRITE_RAMD:
; ;
; LD B,0 ; LD B,0
; ;
; LD (CONT_SEC),DE ; LD (ZX_VARS.CONT_SEC),DE
; AND A ; AND A
; RET ; RET
; ;======================================================================-
;
;***********************************************************************
READ_WRITE_RAMD:
IFN NEW_RAMDRV_READ
; ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
; º RD/WR SECTOR º\
; º HL - BUFFER º\
; º B - Number of sectors º\
; º CONT_SEC - SEC/TRK FOR READ/WRITE º\
; º RD_WR_COM - ª®¬ ­¤  ç⥭¨¥/§ ¯¨áì º\
; º 0 - ç⥭¨¥, 255 - § ¯¨áì º\
; ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ\
; \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
INC B INC B
WD_WR_RAMD_LOOP: .WD_WR_RAMD_LOOP:
DEC B DEC B
RET Z RET Z
PUSH BC PUSH BC
PUSH HL PUSH HL
CALL RD_WR_1SEC CALL .RD_WR_1SEC
POP HL POP HL
CALL RAMD_NEXT_SEC CALL .RAMD_NEXT_SEC
POP BC POP BC
JR WD_WR_RAMD_LOOP JR .WD_WR_RAMD_LOOP
RAMD_NEXT_SEC: .RAMD_NEXT_SEC:
PUSH HL PUSH HL
LD HL,CONT_SEC LD HL,ZX_VARS.CONT_SEC
LD A,16 LD A,16
INC (HL) INC (HL)
CP (HL) CP (HL)
JR NZ,RAMD_NEXT_1 JR NZ,.RAMD_NEXT_1
LD (HL),0 LD (HL),0
INC HL INC HL
INC (HL) INC (HL)
RAMD_NEXT_1: .RAMD_NEXT_1:
POP HL POP HL
LD BC,0100h LD BC,#100
ADD HL,BC ADD HL,BC
RET RET
RD_WR_1SEC: .RD_WR_1SEC:
LD DE,(CONT_SEC) LD DE,(ZX_VARS.CONT_SEC)
CALL PAGE_CALC2 CALL .PAGE_CALC2
DI DI
LD A,(RD_WR_COM) LD A,(ZX_VARS.RD_WR_COM)
AND 0C0H AND #C0
OUT (RGADR),A OUT (RGADR),A
LD A,H LD A,H
CP 0A0H CP #A0
LD A,(RD_WR_COM) LD A,(ZX_VARS.RD_WR_COM)
LD E,0 LD E,0
LD D,C LD D,C
SET 6,D SET 6,D
JR C,RD_WR_C000 JR C,.RD_WR_C000
;RD_WR_4000:
RD_WR_4000:
RES 7,D ; DE -  ¤à¥á ¤ ­­ëå RAMD RES 7,D ; DE -  ¤à¥á ¤ ­­ëå RAMD
LD C,PAGE1 LD C,SLOT1
EX AF,AF' EX AF,AF'
IN A,(C) IN A,(C)
EX AF,AF' EX AF,AF'
OUT (C),B OUT (C),B
;****** <20><EFBFBD>…Œ…™…<E284A2>ˆ… „€<E2809E><E282AC> ***** ; <20><EFBFBD>…Œ…™…<E284A2>ˆ… „€<E2809E><E282AC>
LD BC,100H LD BC,#100
AND A AND A
JR NZ,MOVE_NOT_EX3 JR NZ,.MOVE_NOT_EX3
EX DE,HL EX DE,HL
MOVE_NOT_EX3: .MOVE_NOT_EX3:
LDIR ; à ¡®â âì §¤¥áì ¦¥, ¢ TR-DOS !!! LDIR ; à ¡®â âì §¤¥áì ¦¥, ¢ TR-DOS !!!
AND A AND A
JR NZ,MOVE_NOT_EX4 JR NZ,.MOVE_NOT_EX4
EX DE,HL EX DE,HL
MOVE_NOT_EX4: .MOVE_NOT_EX4:
;******************************* ;*******************
EX AF,AF' EX AF,AF'
OUT (PAGE1),A OUT (SLOT1),A
EX AF,AF' EX AF,AF'
; RET_PAGE1 ; RET_PAGE1
MOVE_RET: .MOVE_RET:
LD A,0 LD A,0
OUT (RGADR),A OUT (RGADR),A
EI EI
RET RET
;
RD_WR_C000: .RD_WR_C000:
SET 7,D SET 7,D
LD C,PAGE3 LD C,SLOT3
EX AF,AF' EX AF,AF'
IN A,(C) IN A,(C)
EX AF,AF' EX AF,AF'
OUT (C),B OUT (C),B
;****** <20><EFBFBD>…Œ…™…<E284A2>ˆ… „€<E2809E><E282AC> ***** ; <20><EFBFBD>…Œ…™…<E284A2>ˆ… „€<E2809E><E282AC>
LD BC,100H LD BC,#100
AND A AND A
JR NZ,MOVE_NOT_EX1 JR NZ,.MOVE_NOT_EX1
EX DE,HL EX DE,HL
MOVE_NOT_EX1: .MOVE_NOT_EX1:
LDIR ; à ¡®â âì §¤¥áì ¦¥, ¢ TR-DOS !!! LDIR ; à ¡®â âì §¤¥áì ¦¥, ¢ TR-DOS !!!
AND A AND A
JR NZ,MOVE_NOT_EX2 JR NZ,.MOVE_NOT_EX2
EX DE,HL EX DE,HL
MOVE_NOT_EX2: ;********************
;******************************* .MOVE_NOT_EX2:
EX AF,AF' EX AF,AF'
OUT (PAGE3),A OUT (SLOT3),A
EX AF,AF' EX AF,AF'
; RET_PAGE3 ; RET_PAGE3
JR MOVE_RET JR .MOVE_RET
;
;********************************************** .PAGE_CALC2:
PAGE_CALC2:
LD A,D ; ”ˆ‡ˆ—…‘Šˆ… -> ‹Žƒˆ—…‘Šˆ… !!! LD A,D ; ”ˆ‡ˆ—…‘Šˆ… -> ‹Žƒˆ—…‘Šˆ… !!!
RRCA RRCA
RRCA RRCA
RRCA RRCA
RRCA RRCA
LD D,A LD D,A
AND 0F0H AND #F0
OR E OR E
LD E,A LD E,A
LD A,D LD A,D
AND 0FH AND #0F
LD D,A LD D,A
PUSH HL PUSH HL
LD C,98h LD C,BIOS.RAMD_CALC_PAGE
CALL DISK_REDIR CALL DISK_REDIR
SUB 4 SUB 4
CALL EXP_FNS ; ¢ëç¨á«¥­¨¥  ¤à¥á  ¨ áâà ­¨æë RAM-Disk CALL EXP_FNS ; ¢ëç¨á«¥­¨¥  ¤à¥á  ¨ áâà ­¨æë RAM-Disk
EI ;!TEST 06/01/2024 á®å࠭塞 á®áâ®ï­¨¥ ¯à¥à뢠­¨© § ç¥¬-â®
;EI
;
LD B,A LD B,A
LD C,H LD C,H
POP HL POP HL
EI ;EI
RET NC RET NC
JP ERROR_DISK JP ERROR_DISK
;********************************************
ELSE
;********************************************* ;********************************************
RAMD_X12: ; ¯à®¢¥àª  ¤¨áª  ; ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
LD (OPER_DISK),A ; º RD/WR SECTOR º\
CALL DISK_REDIR ; º HL - BUFFER º\
CP 4 ; º B - Number of sectors º\
JR C,X_AUTO_3DCE ; º CONT_SEC - SEC/TRK FOR READ/WRITE º\
CP 20 ; º RD_WR_COM - ª®¬ ­¤  ç⥭¨¥/§ ¯¨áì º\
RET C ; º 0 - ç⥭¨¥, 255 - § ¯¨áì º\
; JR C,RAMD_TEST ; ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ\
NO_DISK2: ; \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
JP AUTO_3EE7 ; NO_DISK INC B
DEC B
X_AUTO_3DCE: RET Z
CALL RES_1440 ;
LD A,(OPER_DISK) PUSH BC
JP AUTO_3DCE PUSH HL
; á®å࠭塞 ª®«-¢® ᥪâ®à®¢ ¤«ï ç⥭¨ï
;************************************* LD C,B
RAMD_X14: ; FORMATING ; ­ ªàã稢 ¥¬ áçñâ稪 r/w ᥪâ®à®¢
CALL get_disk_type LD HL,(ZX_VARS.CONT_SEC)
PUSH AF LD D,H
PUSH BC LD E,L
PUSH HL ;!TODO ¯¥à¥¤¥« âì íâã â㯮áâì ­  ¬ â¥¬ â¨ªã
CALL DISK_REDIR LD A,16
CP 4 .loop: INC L
JR C,DISK_FORM CP L
CP 20 JR NZ,.skip
JR C,RAMD_FORMAT INC H
JP READ_ONLY LD L,0
.skip: DJNZ .loop
DISK_FORM: ;
LD A,(MED_START+1) ; á®å࠭塞 ­ ªàã祭­ë© áçñâ稪
CP 14H LD (ZX_VARS.CONT_SEC),HL
JR Z,QVICK_FORMAT ; ”ˆ‡ˆ—…‘Šˆ‰ …ŠŽ<E28099> -> ‹Žƒˆ—…‘Šˆ‰
POP HL LD A,D
POP BC RRCA
POP AF RRCA
JP AUTO_1EE0 RRCA
RRCA
QVICK_FORMAT: LD D,A
POP HL AND #F0
POP BC OR E
POP AF LD E,A
JR Q_FORM_1 LD A,D
AND #0F
RAMD_FORMAT: LD D,A
SUB 4 ; ¢®ááâ ­ ¢«¨¢ ¥¬ ª®«-¢® ᥪâ®à®¢ ¤«ï ç⥭¨ï
LD B,C
CALL TEST_RAMD ;Get RAM Block ID
JP C,READ_ONLY LD A,(ZX_VARS.OPER_DISK)
CALL NZ,CLEAR_RAMD AND 3
LD C,BIOS.GET_DRV_ST ; ­¥ 㡨¢ ¥â DE ¨ B
POP HL CALL EXP_FNS
POP BC JP C,.ERROR
POP AF SUB 4
LD B,28H ; à §¬¥à 640K LD C,BIOS.GET_RAMD_ST ; ­¥ 㡨¢ ¥â DE ¨ B
CALL DISK_REDIR CALL EXP_FNS
SUB 4 JP C,.ERROR
; A = RAM Block ID
CALL GET_RAM_BLK ; „…<E280B9>ˆ<20>€ŒŸˆ EX AF,AF'
; LD C,A ; Š‹ž— RAM-Disk ;
Q_FORM_1: POP HL
LD HL,BUFER ; CLEAR DISK BUFER ; Get command r/w
LD DE,BUFER+1 LD A,(ZX_VARS.RD_WR_COM)
LD BC,0FFh EX AF,AF'
LD (HL),0 LD C,BIOS.BLK_RD_WR
LDIR CALL EXP_FNS
; HL =  ¤à¥á ¡ãä¥à  ¤«ï á«¥¤ãî饣® ᥪâ®à 
LD DE,0 POP BC
RAMD_F_LOOP: JP C,AUTO_3EE7
LD HL,BUFER LD B,0
LD B,1
PUSH DE
CALL WRITE_DISK
POP DE
INC E
LD A,E
CP 8
JR NZ,RAMD_F_LOOP
LD HL,2544
LD A,22
JP AUTO_1F55
;*************************************
CLEAR_RAMD_X:
CALL RAMD_SYM
JR NC,CLEAR_RMD_A
DEC DE
LD A,(DE)
CP 13
SCF
RET NZ
CLEAR_RAMD:
CALL DISK_REDIR
CLEAR_NEXT:
SUB 4
RET C
CP RAMD_KEY_NUM
CCF
RET C
CLEAR_RMD_A:
PUSH HL
PUSH DE
PUSH BC
LD C,93h ; ®ç¨á⪠ RAM-Disk
CALL EXP_FNS ; ¢ë§¢ âì äã­ªæ¨î
EI
POP BC
POP DE
POP HL
RET RET
;********************************************************* .ERROR: POP HL
GET_RMD_A: POP BC
GET_RAM_BLK: ; B - —ˆ‘‹Ž <><EFBFBD>“…Œ<20>ŽŠŽ, A - Š‹ž— RAM-Disk JP AUTO_3EE7 ;Disk error
LD C,92h ; ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
CALL EXP_FNS ; A,L - Š‹ž— RAM-Disk - ­®¬¥à ¯¥à¢®£® ¡«®ª  ; º RD/WR SECTOR º\
EI ; º HL - BUFER º\
RET NC ; º DE - ABS sector ¢ 256b ¡«®ª å º\
NO_MEM: ; º B - ç¨á«® ¤ ­­ëå ¢ 256b ¡«®ª å º\
LD HL,NO_MEMORY ; º A - block RAM º\
JP ERR_EXIT ; º A' - ª®¬ ­¤  ç⥭¨¥/§ ¯¨áì/ç⥭¨¥ ROM Disk º\
; º 0 - read, 255 - write, 70 - read ROM DISK º\
;********************************************************* ; º ** NOT USED TR-DOS VARS ** º\
READ_ONLY: ; ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ\
LD HL,READ_ONLY_MSG ; Read only !! ; \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
JP ERR_EXIT
FDD_SET:
LD A,(OPER_DISK)
LD B,A
LD C,0CCH
CALL EXP_FNS
EI
RET
HDD_SET:
LD C,0
CALL HD_CMD
JP C,HDD_PROG_E
LD A,(OPER_DISK)
LD B,A
LD A,0
LD C,0CDH
CALL EXP_FNS
EI
RET
RAMD_SET:
CALL RAMD_SYM
RET C
RAMD_SET1:
PUSH AF
LD A,(OPER_DISK)
LD B,A
POP AF
LD C,0CBH
CALL EXP_FNS
EI
RET
RAMD_SYM:
LD A,(DE)
INC DE
CP 20H
JR Z,RAMD_SYM
AND 223
CP 'E'
RET C
SUB 'E'
CP 16
CCF
RET C
PUSH AF
LD A,(DE)
CP ':'
INC DE
JR Z,RAMD_SYM_OK
DEC DE
CP 21H
JR C,RAMD_SYM_OK
POP AF
SCF
RET
RAMD_SYM_OK:
POP AF
RET
; RAMD_NEXT_SEC:
; PUSH HL
; LD HL,ZX_VARS.CONT_SEC
; LD A,16
; INC (HL)
; CP (HL)
; JR NZ,.RAMD_NEXT_1
; LD (HL),0
; INC HL
; INC (HL)
; .RAMD_NEXT_1:
; POP HL
; LD BC,#100
; ADD HL,BC
; RET
ENDIF
;***********************************************************************
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
DISPLAY "TR_RMD_S.ASZ size: ",/A,$-File_Start
DISPLAY "===================================================="

601
TRDOS/boot/boot.asm Executable file
View File

@ -0,0 +1,601 @@
IF DEFtrd_boot_small
;======================================================================;
INCLUDE 'inc/rom_routines.inc'
INCLUDE 'Shared_Includes/constants/ZX_VARS.inc'
INCLUDE 'Shared_Includes/constants/zx_char_codes.inc'
INCLUDE 'Shared_Includes/constants/standart_colors.inc'
;======================================================================;
;======================================================================;
collor_A EQU 0x03
collor_B EQU 0x02
collor_N EQU 0x04
collor_M EQU 0x08
collor_T EQU 0x07
org_addr EQU #5d3b
;======================================================================;
; Variables
;======================================================================;
ColumnNumber EQU #70E0
Columns EQU 3
;======================================================================;
;======================================================================;
ORG org_addr
bstart: DW #100 ; line number = 1
DW l1end - l1begin ; line length
l1begin: DB ZX_Token.border, ZX_Token.not, ZX_Token.pi, ":"
DB ZX_Token.randomize, ZX_Token.usr, ZX_Token.val, '"',"23907",'"'
DB ":", ZX_Token.rem, ":", ZX_Token.run
DB '"'
BootName: DB ZX_Char.tab, 10, 32
DB "MAXBOOT v9.1"
.size EQU $-BootName
DB '"', ZX_Char.carriage_return
;======================================================================;
;#70F6 - disk name
;======================================================================;
START_BOOT: ;Permanent current colours, etc, as set up by colour statements.
LD (iy+#53),COLORS.ZX.CYAN ;5d63 fd 36 53 05 . 6 S .
l5d67h: CALL BASIC_FN.x48.cls ;5d67 cd 6b 0d . k .
ADD HL,BC ;5d6a 09 .
; HL = 6801
; read 9 sectors
LD BC,#0905 ;5d6b 01 05 09 . . .
PUSH HL ;5d6e e5 .
CALL #3D13 ;5d6f cd 13 3d . . =
;PR-STRING
LD DE,BootName ;5d72 11 52 5d . R ]
LD C,BootName.size ;5d75 0e 0f . .
CALL #203C ;5d77 cd 3c 20 . <
;CHAN_OPEN
; Open channel 2 (main screen)
LD A,#02 ;5d7a 3e 02 > .
CALL #1601 ;5d7c cd 01 16 . . .
;
POP HL ;5d7f e1 .
LD D,H ;5d80 54 T
LD E,L ;5d81 5d ]
loopDir: LD BC,8 ; ᬥ饭¨¥ ­  ⨯ ä ©«  ;5d82 01 08 00 . . .
DEC (HL) ;5d85 35 5
JR Z,.nextFile ;5d86 28 28 ( (
INC (HL) ;5d88 34 4
JR Z,.EXIT ;5d89 28 2a ( *
;
PUSH HL ;5d8b e5 .
ADD HL,BC ;5d8c 09 .
LD A,(HL) ;5d8d 7e ~
POP HL ;5d8e e1 .
CP "B" ;5d8f fe 42 . B
JR NZ,.nextFile ;5d91 20 1d .
PUSH HL ;5d93 e5 .
;PRINT-A
LD A," " ;5d94 3e 20 >
RST #10 ;5d96 d7 .
; (#5C51) == #5D2B
; (#5D2B) == #09F4
; ¢ë¢®¤ ¨¬¥­¨ ä ©« 
.loopPrint: LD A,(HL) ;5d97 7e ~
RST #10 ;5d98 d7 .
LDI ;5d99 ed a0 . .
JP PE,.loopPrint ;5d9b ea 97 5d . . ]
; ¯®¤áçñâ ª®«®­®ª ¤«ï ¯à ¢¨«ì­®£® ¢ë¢®¤  ¨¬ñ­ ä ©«®¢
LD HL,ColumnNumber ;5d9e 21 e0 70 ! . p
INC (HL) ;5da1 34 4
LD A,(HL) ;5da2 7e ~
.loopColumn: SUB Columns ;5da3 d6 03 . .
JR Z,.ColumnThree ;5da5 28 05 ( .
JR NC,.loopColumn ;5da7 30 fa 0 .
LD A," " ;5da9 3e 20 >
RST #10 ;5dab d7 .
.ColumnThree: LD A," " ;5dac 3e 20 >
RST #10 ;5dae d7 .
;
POP HL ;5daf e1 .
.nextFile: LD C,#10 ;5db0 0e 10 . .
ADD HL,BC ;5db2 09 .
JR loopDir ;5db3 18 cd . .
.EXIT: ;
;;;;;;;;;;;;;;;;;
; B = 0
; <20>¨á®¢ «ª  ªãàá®à   âਡãâ ¬¨. <20>¥à¥¬¥é¥­¨¥ ªãàá®à 
MAIN_LOOP: LD C,B ;5db5 48 H
l5db6h: LD HL,#57F5 ;5db6 21 f5 57 ! . W
LD DE,#000B ;5db9 11 0b 00 . . .
LD A,D ;5dbc 7a z
l5dbdh: LD B,#03 ;5dbd 06 03 . .
l5dbfh: ADD HL,DE ;5dbf 19 .
CP C ;5dc0 b9 .
JR Z,l5dc9h ;5dc1 28 06 ( .
INC A ;5dc3 3c <
DJNZ l5dbfh ;5dc4 10 f9 . .
DEC HL ;5dc6 2b +
JR l5dbdh ;5dc7 18 f4 . .
;
l5dc9h: LD B,#0A ;5dc9 06 0a . .
LD DE,(#70DE) ;5dcb ed 5b de 70 . [ . p
LD (#70DE),HL ;5dcf 22 de 70 " . p
LD A,#05 ;5dd2 3e 05 > .
l5dd4h: LD (DE),A ;5dd4 12 .
INC DE ;5dd5 13 .
LD (HL),#1E ;5dd6 36 1e 6 .
INC HL ;5dd8 23 #
DJNZ l5dd4h ;5dd9 10 f9 . .
LD HL,#5C08 ;5ddb 21 08 5c ! . \
LD (HL),H ;5dde 74 t
l5ddfh: LD A,(HL) ;5ddf 7e ~
OR #20 ;5de0 f6 20 .
SUB #20 ;5de2 d6 20 .
JR Z,l5d67h ;5de4 28 81 ( .
SUB L ;5de6 95 .
LD B,#02 ;5de7 06 02 . .
l5de9h: JR Z,l5e0fh ;5de9 28 24 ( $
DEC A ;5deb 3d =
JR Z,l5e13h ;5dec 28 25 ( %
DEC A ;5dee 3d =
JR Z,l5e11h ;5def 28 20 (
DEC A ;5df1 3d =
JR Z,l5e0dh ;5df2 28 19 ( .
SUB B ;5df4 90 .
JR Z,RUN_BASIC ;5df5 28 2d ( -
SUB #03 ;5df7 d6 03 . .
JR Z,RUN_BASIC ;5df9 28 29 ( )
SUB #06 ;5dfb d6 06 . .
DJNZ l5de9h ;5dfd 10 ea . .
SUB #1E ;5dff d6 1e . .
JR Z,l5e11h ;5e01 28 0e ( .
SUB #0E ;5e03 d6 0e . .
JR Z,l5e0fh ;5e05 28 08 ( .
DEC A ;5e07 3d =
JR Z,l5e13h ;5e08 28 09 ( .
DEC A ;5e0a 3d =
JR NZ,l5ddfh ;5e0b 20 d2 .
l5e0dh: SUB #02 ;5e0d d6 02 . .
l5e0fh: SUB #04 ;5e0f d6 04 . .
l5e11h: ADD A,#02 ;5e11 c6 02 . .
l5e13h: ADD A,C ;5e13 81 .
LD BC,(ColumnNumber) ;5e14 ed 4b e0 70 . K . p
DEC C ;5e18 0d .
INC A ;5e19 3c <
JP M,l5db6h ;5e1a fa b6 5d . . ]
INC C ;5e1d 0c .
CP C ;5e1e b9 .
LD C,A ;5e1f 4f O
JR C,l5db6h ;5e20 38 94 8 .
JR MAIN_LOOP ;5e22 18 91 . .
;
; § ¯ã᪠¢ á¨ª 
; A = 0
RUN_BASIC: LD B,A ;5e24 47 G
LD A,C ;5e25 79 y
INC A ;5e26 3c <
LD C,L ;5e27 4d M
LD HL,#67F9 ;5e28 21 f9 67 ! . g
.loop: ADD HL,BC ;5e2b 09 .
DEC A ;5e2c 3d =
JR NZ,.loop ;5e2d 20 fc .
;
LD DE,BootName ;5e2f 11 52 5d . R ]
LDIR ;5e32 ed b0 . .
JP #3D03 ;5e34 c3 03 3d . . =
;ADD A,B ;5e37 80 .
;XOR D ;5e38 aa .
;DEFB 001h,000h ;5e39 01 00 . .
StartLineNum: DB 0
DW 0
;DB #80
l1end:
EXPORT StartLineNum
EXPORT org_addr
ELSE
;======================================================================;
INCLUDE 'inc/rom_routines.inc'
INCLUDE 'Shared_Includes/constants/ZX_VARS.inc'
INCLUDE 'Shared_Includes/constants/zx_char_codes.inc'
INCLUDE 'Shared_Includes/constants/standart_colors.inc'
;======================================================================;
;=======================================================================
collor_A EQU 0x03
collor_B EQU 0x02
collor_N EQU 0x04
collor_M EQU 0x08
collor_T EQU 0x07
org_addr EQU #5d3b
;=======================================================================
DiskName EQU catBuff + #08F5
.size EQU 8
Columns EQU 3
vROMbootSize EQU bstart
;=======================================================================
ORG org_addr
bstart: DW #100 ; line number = 1
DW l1end-l1begin ; line length
l1begin: DB ZX_Token.randomize,ZX_Token.usr,"0" ; 'rand' 'usr' 0
DB ZX_Char.number
DB #00,#00 : DW start : DB #00 ; start address
DB ZX_Char.carriage_return
l1end: DW #200 ; line number = 2
DW l2end-l2begin ; line length
l2begin: DB ZX_Token.randomize,ZX_Token.usr,"0" ; ':' 'rand' 'usr' 0
DB ZX_Char.number
DB #00,#00 : DW 15619 : DB #00 ; start address
DB ":",ZX_Token.rem,":",ZX_Token.run,'"'
filename: DB "boot ",'"',":" ; ':' 'rem' run
;=======================================================================
;org #5d65
start: LD (memSP),SP
NewDisk: ;CALL clear_screen
LD BC,#0905
LD DE,0
LD HL,catBuff
CALL #3D13
LD A,"a"
LD (main.markPos),A
LD A,1
JP keys.setCP
;
; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ALIGN #10
TXT_BUTTONS:
.prev: DB '<<< PgUp'
.next: DB 'PgDn >>>'
;
main.CurrentPage:
DB 1
main.PagesCounter:
DB 1
; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
main: LD A,(.CurrentPage)
LD (.PagesCounter),A
.nextLoop: CALL PRINT_HELP
LD A,collor_T
LD (var_collor),A
LD HL,#50CC
LD (var_printPos),HL
LD HL,DiskName
LD B,8
.p1: LD A,(HL)
PUSH HL
CALL printChar
POP HL
INC L
DJNZ .p1
; LD A,L
; CP low (catBuff + #08FD)
; JR NZ,.p1
LD HL,#4000
LD (var_printPos),HL
; ¢ëç¨â뢠­¨¥ ª â «®£ 
.buffPointer+1: LD HL,catBuff
.markPos+2: LD BC,"aa"
.l1: LD A,(HL)
DEC A
JR Z,.nextRec
;
JP M,DirShowDone
;
SET 3,L
LD A,(HL)
CP "B"
RES 3,L
JR NZ,.nextRec
; ¤¢¥ á¯¥æ ª­®¯ª¨
LD A,C ; C - ⥪ã騩 ä ©«
CP "y"
JR NC,PRINT_NEXT_BUTTONS ; "::PREV::" "::NEXT::"
;
; ¯à®å®¤­®© ¯à®£®­?
LD A,(.PagesCounter)
DEC A
JR NZ,.nextHiddenRec
; basic file
LD A,C
CP B ; ¢ë¡à ­­ë© ä ©«
LD A,collor_A
JR NZ,.notMarked
; ¢ë¤¥«¥­¨¥ ä ©«  ¨ ª®¯¨à®¢ ­¨¥ ¥£® ¢ áâப㠧 ¯ã᪠
XOR collor_M
;
LD DE,filename
PUSH BC
LD BC,8
LDIR
POP BC
RES 3,L
;
.notMarked: CALL prn_txt
.nextHiddenRec: INC C
.nextRec: LD DE,#10
ADD HL,DE
JR .l1
;
PRINT_NEXT_BUTTONS:
LD A,(main.PagesCounter)
LD (keys.nxtPage),A
DEC A
;JR Z,.noChange
JR Z,keys
LD (main.PagesCounter),A
LD (main.buffPointer),HL
.noChange: ;PUSH AF
;CALL PRINT_HELP
;POP AF
;JP Z,keys
JR keys.toMain
PRINT_HELP: LD HL,#5040
LD (var_printPos),HL
LD A,collor_N
PUSH BC
LD C," "
LD HL,TXT_BUTTONS.prev
CALL prn_txt
;
LD A,collor_N
CALL prn_txt
;
POP BC
RET
;
DirShowDone: XOR A
LD (keys.nxtPage),A
;CALL PRINT_HELP
keys: RES 5,(iy+1)
.w1: BIT 5,(iy+1)
JR Z,.w1
LD A,(iy-#32)
;
CP B
JR Z,exit
CP #0D ; enter
JR Z,exit
CP " " ; space
JP Z,NewDisk
;
CP #04 ; pgUp
LD E,-1
JR Z,.prevPage
;
.pgdn: CP #05 ; pgDn
LD E,1
JR Z,.nextPage
;
.left: CP #08 ; left
JR NZ,.sl
DEC B
JR .c1
;
.sl: CP #0B ; up
JR NZ,.sd
DEC B
DEC B
DEC B
JR .c1
;
.sd: CP #0A ; down
JR NZ,.su
INC B
INC B
INC B
JR .c1
;
.su: CP #09 ; right
JR NZ,.sr
INC B
JR .c1
;
.sr: CP "a"
JR C,keys
CP C
JR NC,keys
LD B,A
;
.c1: LD A,B
CP "a"
JR NC,.sf1
LD A,"a"
.sf1: CP C
JR C,.sf2
LD A,C
DEC A
.sf2: LD (main.markPos),A
.toMain: JP main.nextLoop
; DE - +24 or -24
.nextPage: ;
.nxtPage+1: LD A,0
AND A
JR Z,.skip
XOR A
LD (.nxtPage),A
;
; DE - +24 or -24
.prevPage: LD A,(main.CurrentPage)
ADD A,E
JR Z,.skip
;
.setCP: LD H,A
LD L,A
LD (main.CurrentPage),HL
LD HL,catBuff
LD (main.buffPointer),HL
.skip: CALL clear_screen
JR .toMain
exit: LD A,C
CP "a"
JP Z,NewDisk
memSP+1: LD SP,0
RET
printChar: LD H,A
ADD A,A
ADD A,A
ADD A,A
LD L,A
LD A,H
RLCA
RLCA
RLCA
AND 0x07
ADD A,0x3c
LD H,A
var_printPos+1: LD DE,0x4000
.l1: LD A,(HL)
RRCA
OR (HL)
INC HL
LD (DE),A
INC D
LD (DE),A
INC D
LD A,D
AND 0x07
JR NZ,.l1
LD A,D
SUB 0x08
LD D,A
LD A,E
ADD A,0x20
LD E,A
AND 0x20
JR NZ,.l1
LD HL,(var_printPos)
LD A,H
RRCA
RRCA
RRCA
ADD A,0x50
LD H,A
var_collor+1: LD A,0
LD (HL),A
SET 5,L
XOR collor_A ^ collor_B
LD (HL),A
;
LD HL,var_printPos
LD A,(HL)
ADD A,0x21
AND 0xdf
LD (HL),A
RET NZ
INC HL
LD A,(HL)
ADD A,0x08
LD (HL),A
RET
;
;
clear_screen: XOR A
OUT (0xfe),A
LD (ZX_VARS.ATTR_P),A
LD (ZX_VARS.BORDER),A
JP BASIC_FN.x48.cls
; A - current file
; choose_color: CP B ; ¢ë¡à ­­ë© ä ©«. #C7
; LD A,collor_A
; SCF
; RET NZ
; XOR collor_M
; RET
; A - COLOR
; C - char of text button
; HL - Text
prn_txt: LD (var_collor),A
LD A,C
PUSH HL
CALL printChar
LD A," "
CALL printChar
POP HL
;
.loop: LD A,(HL)
INC HL
PUSH HL
CALL printChar
POP HL
LD A,L
AND 0x07
JR NZ,.loop
;
LD A,(var_printPos)
AND 0x1f
RET Z
LD A," "
PUSH HL
CALL printChar
POP HL
RET
;
;
; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; ALIGN #10
; TXT_BUTTONS:
; .prev: DB '<< PgDn '
; .next: DB '>> PgUp '
; ;
; main.CurrentPage:
; DB 1
; main.PagesCounter:
; DB 1
; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
StartLineNum: DB 0
DW 0
;DB #80
l2end:
;bend:
DISPLAY "printChar ",/A,$-printChar
DISPLAY "code ",/A,$-start
;ds -$&0x0f
;ALIGN #10
;filename EQU $
catBuff EQU #6000 ;$ + (-$&0x0f)
ASSERT l2end < catBuff,"ERROR!!! Code leaks to catBuff"
EXPORT StartLineNum
EXPORT org_addr
;
ENDIF

2
TRDOS/boot/boot.inc Normal file
View File

@ -0,0 +1,2 @@
StartLineNum: EQU 0x00005F2E
org_addr: EQU 0x00005D3B

View File

@ -11,10 +11,10 @@
ORG 0 ORG 0
SPRIN2 EQU 2 ; 1 - ¢ª«î祭¨¥ Sprinter-1 ¯¥à¢®© ¯à®è¨¢ª®© SPRIN2 EQU 2 ; 1 - ¢ª«î祭¨¥ Sprinter-1 ¯¥à¢®© ¯à®è¨¢ª®©
; 2 - ¢ª«î祭¨¥ Sprinter-2 ¯¥à¢®© ¯à®è¨¢ª®© ; 2 - ¢ª«î祭¨¥ Sprinter-2 ¯¥à¢®© ¯à®è¨¢ª®©
INCLUDE 'INC/SPRINT00.INC' ; ª®­áâ ­âë, ¬ ªà®áë.. INCLUDE 'INC/SPRINT00.INC' ; ª®­áâ ­âë, ¬ ªà®áë..
INCLUDE 'INC/CHAR_CODES.INC' INCLUDE 'shared_includes/constants/zx_char_codes.inc'
PORT_JOI EQU 0FFh PORT_JOI EQU 0FFh
;****************************** ;******************************
@ -204,39 +204,41 @@ REST_LOOP:
RESTART_TXT_L EQU $-RESTART_TXT RESTART_TXT_L EQU $-RESTART_TXT
;********************************** ;**********************************
BLOCK #100 - $,255
; ‚믮«­ï¥âáï á  ¤à¥á  #C000
SETUP_TXT: SETUP_TXT:
LD A,CNF_0+D_ROM16ON LD A,CNF_0+D_ROM16ON
OUT (CNF_PORT),A OUT (CNF_PORT),A
LD HL,1000H LD HL,#1000
LD DE,8000H LD DE,#8000
LD BC,3000H LD BC,#3000
LDIR LDIR
LD A,CNF_0+D_ROM16OFF LD A,CNF_0+D_ROM16OFF
OUT (CNF_PORT),A OUT (CNF_PORT),A
LD HL,08005H LD HL,#8005
LD A,0FEh LD A,#FE
LD BC,204Eh LD BC,#204E ;ALL_MODE
OUT (C),A OUT (C),A
LD A,7FH LD A,#7F
IN A,(0FEH) IN A,(#FE)
CPL CPL
AND 1 AND 1
EX AF,AF' EX AF,AF'
LD A,0FFh LD A,#FF
OUT (C),A OUT (C),A
EX AF,AF' EX AF,AF'
JP (HL) JP (HL)
SETUP_TXT_LEN EQU $-SETUP_TXT SETUP_TXT_LEN EQU $-SETUP_TXT
;**********************************
SYSTEM_ID_TXT: SYSTEM_ID_TXT:
DB "NEW_BIOS" DB "NEW_BIOS"
@ -659,20 +661,21 @@ NO_CONFIG_:
POP HL ; ª®­ä¨£ãà æ¨ï POP HL ; ª®­ä¨£ãà æ¨ï
LD A,H LD A,H
CP 0FFH CP #FF
JR NZ,NO_SETUP_1 JR NZ,NO_SETUP_1
LD A,L LD A,L
IF SPRIN2 EQ 2 IF SPRIN2 = 2
CP 0FDH CP #FD
; LD BC,0FFFDH ; Š®­ä¨£ãà æ¨ï Sprinter-2 ; LD BC,0FFFDH ; Š®­ä¨£ãà æ¨ï Sprinter-2
PG_SP1 equ 0ECH PG_SP1 EQU #EC
PG_SP2 equ 0EEH PG_SP2 EQU #EE
PG_AY equ 0EAH PG_AY EQU #EA
ELSE
ELSE
; LD BC,0FFFEH ; Š®­ä¨£ãà æ¨ï Sprinter-1 ; LD BC,0FFFEH ; Š®­ä¨£ãà æ¨ï Sprinter-1
CP 0FEH CP #FE
PG_AY equ 0EAH PG_AY EQU #EA
ENDIF ENDIF
JR NZ,NO_SETUP_2 JR NZ,NO_SETUP_2
; AND A ; AND A
@ -704,19 +707,19 @@ ELSE
LD BC,204Eh ; system_port LD BC,204Eh ; system_port
OUT (C),A OUT (C),A
LD SP,0BFFFH LD SP,#BFFF
LD HL,L_PENTAGON LD HL,L_PENTAGON
CALL SINC_DEF CALL SINC_DEF
LD SP,0BFFFH LD SP,#BFFF
LD HL,L_PENTAGON LD HL,L_PENTAGON
CALL SINC_DEF CALL SINC_DEF
LD HL,SETUP_TXT LD HL,SETUP_TXT
LD DE,0C000H LD DE,#C000
LD BC,SETUP_TXT_LEN LD BC,SETUP_TXT_LEN
LDIR LDIR
CALL 0C000H CALL #C000
JP NO_SETUP_1 JP NO_SETUP_1
GOTO_SPEC: GOTO_SPEC:
@ -735,7 +738,7 @@ NO_SETUP_2:
NO_SETUP_1: NO_SETUP_1:
LD A,(0A8h) LD A,(TABLE_X + 8)
OUT (LPT1_D),A OUT (LPT1_D),A
LD A,0FEh ; ACC-off LD A,0FEh ; ACC-off
@ -743,7 +746,7 @@ NO_SETUP_1:
OUT (C),A OUT (C),A
SND_TEST_RET: SND_TEST_RET:
LD SP,0BFFFH LD SP,#BFFF
LD HL,L_PENTAGON LD HL,L_PENTAGON
CALL SINC_DEF CALL SINC_DEF
@ -1396,8 +1399,9 @@ LOOP_EQ: ;
OUT (LPT1_D),A OUT (LPT1_D),A
RET RET
;
;********************************************** ;**********************************************
; DSS 3C10h,255 ; BLOCK #3C10 - $,255
;KBD_RET: ;KBD_RET:
; LD A,D_ROM16OFF ; LD A,D_ROM16OFF
; OUT (SYS_PORT_OFF),A ; OUT (SYS_PORT_OFF),A
@ -1422,10 +1426,10 @@ LOOP_EQ: ;
; CALL KBD_OFF ; CALL KBD_OFF
; CALL DOS_ON ; CALL DOS_ON
; JR KBD_RET2 ; JR KBD_RET2
;****************************************************** ;******************************************************
BLOCK 3CC0h - $,255 ;******************************************************
BLOCK #3CC0 - $,255
MAGIC_1: ; ‡€ƒ‹“˜Š€ „‹Ÿ MAGIC MAGIC_1: ; ‡€ƒ‹“˜Š€ „‹Ÿ MAGIC
PUSH AF PUSH AF
LD A,D_ROM16OFF LD A,D_ROM16OFF
@ -1579,9 +1583,8 @@ HDD_MSG_LEN EQU $-HDD_MSG
;HDD_MSG_NO: DB "Boot record not found" ;HDD_MSG_NO: DB "Boot record not found"
;HDD_NO_LEN EQU $-HDD_MSG_NO ;HDD_NO_LEN EQU $-HDD_MSG_NO
SAVE_AUTOSTART: SAVE_AUTOSTART:
LD HL,8000H LD HL,#8000
LD DE,HDD_MSG LD DE,HDD_MSG
LD B,HDD_MSG_LEN LD B,HDD_MSG_LEN
SAVE_AUTO_L1: SAVE_AUTO_L1:
@ -1596,7 +1599,7 @@ SAVE_AUTO_L1:
CALL EXP_HDD CALL EXP_HDD
RET C RET C
LD HL,8000H LD HL,#8000
LD A,0 LD A,0
LD DE,1 LD DE,1
LD IX,0 LD IX,0
@ -1701,43 +1704,44 @@ kbd_loop2:
AND A AND A
RET RET
;***********************************************************************;
;!FIXIT not used
BLOCK #3FD0 - $,0
; FN1_RET:
; PUSH AF
; LD A,D_ROM16ON
; OUT (CNF_PORT),A
; POP AF
; RST #18
; JR FN1_RET
BLOCK 3FD0H - $,0 ;***********************************************************************;
FN1_RET: ;!FIXIT not used
PUSH AF BLOCK #3FE0 - $,255
LD A,D_ROM16ON ; SOUND_TEST:
OUT (CNF_PORT),A ; LD A,D_ROM16ON ; AROM16 = 1
POP AF ; OUT (CNF_PORT),A
RST 18H ; JP SND_TEST_RET
JR FN1_RET
;***********************************************************************;
;****************************************** BLOCK #3FE8 - $,255
BLOCK 3FE0H - $,255
SOUND_TEST:
LD A,D_ROM16ON ; AROM16 = 1
OUT (CNF_PORT),A
JP SND_TEST_RET
BLOCK 3FE8H - $,255
HDD_EXE:
EXP_HDD: EXP_HDD:
PUSH AF PUSH AF
LD A,D_ROM16ON LD A,D_ROM16ON
OUT (CNF_PORT),A OUT (CNF_PORT),A
POP AF POP AF
RET RET
;***********************************************************************;
BLOCK 3FF0H-$,255 BLOCK #3FF0-$,255
;***********************************************************************;
BLOCK 3FF8H-$,255 BLOCK #3FF8-$,255
EXP_FNS_RET: EXP_FNS_RET:
PUSH AF PUSH AF
LD A,D_ROM16OFF LD A,D_ROM16OFF
OUT (SYS_PORT_OFF),A OUT (SYS_PORT_OFF),A
JP EXP_FNS JP EXP_FNS
;****************************************** ;***********************************************************************;
BLOCK 4000h-$,255 BLOCK #4000-$,255
; ;

View File

@ -708,14 +708,14 @@ INIT_SYS_ALL:
LD (HL),0 LD (HL),0
LDIR LDIR
LD DE,ZG_ADRESS LD DE,ZG_ADDRESS
LD (WIN_ZG-4000h),DE LD (WIN_ZG-4000h),DE
LD HL,L_SCORPION LD HL,L_SCORPION
LD (CONFIG_ALL-4000h),HL LD (CONFIG_ALL-4000h),HL
LD DE,CNF_0 LD DE,CNF_0
LD (CONFIG_DE-4000h),DE LD (CONFIG_DE-4000h),DE
LD HL,TASK_DATA-4000h ; 㡨âì ¢á¥ § ¤ ç¨ LD HL,TASK_DATA-4000h ; 㡨âì ¢á¥ § ¤ ç¨ ;SYS_PAGE.CURRENT_TASK.ID
LD DE,TASK_DATA+1-4000h LD DE,TASK_DATA+1-4000h
LD BC,0FFH LD BC,0FFH
LD (HL),0 LD (HL),0

View File

@ -4,7 +4,7 @@
MACRO WAIT_HDD MACRO WAIT_HDD
.LL1: .LL1:
LD BC,P_HDST LD BC,IDE.Read.Status
IN A,(C) IN A,(C)
BIT 7,A BIT 7,A
JR NZ,.LL1 JR NZ,.LL1
@ -17,29 +17,28 @@ HD_EXP_EXE:
CALL HD_CMD_X CALL HD_CMD_X
JP HD_EXP_RET JP HD_EXP_RET
HD_CMD: HD_CMD: POP AF
POP AF
CALL HD_CMD_X CALL HD_CMD_X
JP HD_DOS_RET JP HD_DOS_RET
HD_CMD_X: ; C - COMAND ( 5 - RD, 6 - WR ) HD_CMD_X: ; C - COMAND ( 5 - RD, 6 - WR )
PUSH AF PUSH AF
LD A,C ; 0 - INIT, 1 - DIAG LD A,C
AND A AND A
JP Z,HD_CMD_0 ; ¨­¨æ¨ «¨§ æ¨ï JP Z,HD_CMD_0 ; 0 - ¨­¨æ¨ «¨§ æ¨ï
DEC A DEC A
JP Z,HD_CMD_1 ; ?? JP Z,HD_CMD_1 ; 1 - DIAG
DEC A DEC A
JP Z,HD_CMD_2 ; â¥áâ JP Z,HD_CMD_2 ; 2 - â¥áâ
DEC A DEC A
JP Z,HD_CMD_3 ; preread JP Z,HD_CMD_3 ; 3 - preread
DEC A DEC A
JP Z,HD_CMD_4 ; read bpb JP Z,HD_CMD_4 ; 4 - read bpb
DEC A DEC A
JP Z,HD_CMD_5 ; read JP Z,HD_CMD_5 ; 5 - read
DEC A DEC A
JP Z,HD_CMD_6 ; write JP Z,HD_CMD_6 ; 6 - write
DEC A DEC A
JP Z,FN_HDD_PART JP Z,FN_HDD_PART
POP AF POP AF
@ -47,16 +46,15 @@ HD_CMD_X: ; C - COMAND ( 5 - RD, 6 - WR )
RET RET
HD_BPB_PREP: HD_BPB_PREP:
LD D,A LD D,A
IN A,(PAGE3) IN A,(SLOT3)
EX AF,AF' EX AF,AF'
LD A,SYS_PAGE LD A,SYS_PAGE
OUT (PAGE3),A OUT (SLOT3),A
LD A,(HD_IDF_ADR+12) LD A,(SYS_PAGE.HD_IDF_ADR.sectors)
LD E,A LD E,A
EX AF,AF' EX AF,AF'
OUT (PAGE3),A OUT (SLOT3),A
LD A,D LD A,D
LD D,0 LD D,0
LD IX,0 LD IX,0
@ -76,16 +74,16 @@ HD_PREPARE:
HD_PREP_L1: HD_PREP_L1:
LD A,B LD A,B
LD BC,P_S_CNT ; “áâ ­®¢¨âì ç¨á«® ᥪâ®à®¢ ¤«ï ç⥭¨ï LD BC,IDE.Write.Counter ; “áâ ­®¢¨âì ç¨á«® ᥪâ®à®¢ ¤«ï ç⥭¨ï
OUT (C),A OUT (C),A
LD BC,P_S_NUM LD BC,IDE.Write.Sector
OUT (C),L ; …ŠŽ<E28099> OUT (C),L ; …ŠŽ<E28099>
LD BC,P_C_LOW LD BC,IDE.Write.CylinderLow
OUT (C),E ; ¤®à®¦ª  low OUT (C),E ; ¤®à®¦ª  low
LD BC,P_C_HIG LD BC,IDE.Write.CylinderHigh
OUT (C),D ; ¤®à®¦ª  high OUT (C),D ; ¤®à®¦ª  high
LD BC,P_HD_CS LD BC,IDE.Write.DeviceHead
DEC B DEC B
IN A,(C) IN A,(C)
AND 0F0H AND 0F0H
@ -112,19 +110,18 @@ HD_CMD_3: ;
RET C RET C
EXX EXX
LD C,PAGE3 LD C,SLOT3
IN B,(C) IN B,(C)
EXX EXX
OUT (PAGE3),A OUT (SLOT3),A
EX AF,AF' EX AF,AF'
LD A,0C0H LD A,0C0H
OUT (RGADR),A OUT (RGADR),A
LD BC,P_CMD LD BC,IDE.Write.Command
LD A,20H LD A,#20
; OUT (C),A ; OUT (C),A
AND A AND A
RET RET
@ -159,16 +156,16 @@ HD_RD_CMD:
HD_RD_L1: HD_RD_L1:
EXX EXX
LD C,PAGE3 LD C,SLOT3
IN B,(C) IN B,(C)
EXX EXX
OUT (PAGE3),A OUT (SLOT3),A
EX AF,AF' EX AF,AF'
LD A,0C0H LD A,0C0H
OUT (RGADR),A OUT (RGADR),A
LD BC,P_CMD LD BC,IDE.Write.Command
LD A,20H LD A,20H
OUT (C),A OUT (C),A
@ -184,7 +181,7 @@ HD_RET:
EXX EXX
OUT (C),B OUT (C),B
EXX EXX
LD BC,P_ERR LD BC,IDE.Read.Error
IN A,(C) IN A,(C)
AND A AND A
SCF SCF
@ -195,7 +192,7 @@ HD_RET:
RET RET
HD_READ_CONT: HD_READ_CONT:
LD BC,P_DATS LD BC,IDE.Read.Data
HD_RD_CONT1: HD_RD_CONT1:
DUP 16 DUP 16
@ -216,14 +213,14 @@ HD_RD_CONT2:
JR NZ,HD_RD_L2 JR NZ,HD_RD_L2
LD A,SYS_PAGE LD A,SYS_PAGE
OUT (PAGE3),A OUT (SLOT3),A
EX AF,AF' EX AF,AF'
LD HL,RAMD_FAT LD HL,SYS_PAGE.RAM_TABLE
LD L,A LD L,A
LD A,(HL) LD A,(HL)
OUT (PAGE3),A OUT (SLOT3),A
EX AF,AF' EX AF,AF'
LD HL,0C000H LD HL,#C000
JR HD_RD_L2 JR HD_RD_L2
;*********************************************** ;***********************************************
@ -243,13 +240,13 @@ HD_WR_CMD:
RET C RET C
EXX EXX
LD C,PAGE3 LD C,SLOT3
IN B,(C) IN B,(C)
EXX EXX
OUT (PAGE3),A OUT (SLOT3),A
EX AF,AF' EX AF,AF'
LD BC,P_CMD LD BC,IDE.Write.Command
LD A,30H LD A,30H
OUT (C),A OUT (C),A
@ -262,7 +259,7 @@ HD_WR_L2:
;####################################### ;#######################################
IF HDD_TYPE IF HDD_TYPE
LD BC,P_DATS+100H LD BC,IDE.Read.Data+100H
LD D,32 LD D,32
HD_WR_CONT1: HD_WR_CONT1:
DUP 16 DUP 16
@ -274,7 +271,7 @@ HD_WR_CONT1:
;####################################### ;#######################################
ELSE ELSE
LD D,64 LD D,64
LD BC,P_DATS+100H LD BC,IDE.Read.Data+100H
HD_WR_LOOP: HD_WR_LOOP:
@ -316,15 +313,15 @@ HD_WR_LOOP:
JR NZ,HD_WR_L2 JR NZ,HD_WR_L2
LD A,SYS_PAGE LD A,SYS_PAGE
OUT (PAGE3),A OUT (SLOT3),A
EX AF,AF' EX AF,AF'
LD HL,RAMD_FAT LD HL,SYS_PAGE.RAM_TABLE
LD L,A LD L,A
LD A,(HL) LD A,(HL)
OUT (PAGE3),A OUT (SLOT3),A
EX AF,AF' EX AF,AF'
LD HL,0C000H LD HL,#C000
JR HD_WR_L2 JR HD_WR_L2
;******************************************************** ;********************************************************
@ -333,14 +330,14 @@ HD_CMD_1:
POP AF POP AF
HD_CMD1_EX: HD_CMD1_EX:
ld a,0A0h ld a,0A0h
LD BC,P_HD_CS LD BC,IDE.Write.DeviceHead
OUT (C),A OUT (C),A
LD A,90h ; DIAGNOSTICS LD A,90h ; DIAGNOSTICS
CALL HD_CMD_EXE CALL HD_CMD_EXE
AND A AND A
BIT 0,A BIT 0,A
RET Z RET Z
LD BC,P_ERR LD BC,IDE.Read.Error
IN A,(C) IN A,(C)
CP 1 CP 1
RET Z RET Z
@ -354,7 +351,7 @@ HD_CMD_2:
LD E,0 LD E,0
LD BC,P_HD_CS LD BC,IDE.Write.DeviceHead
LD A,0A0H LD A,0A0H
OUT (C),A OUT (C),A
@ -364,7 +361,7 @@ HD_CMD_2:
SET 0,E SET 0,E
NO_HDD1: NO_HDD1:
LD BC,P_HD_CS LD BC,IDE.Write.DeviceHead
LD A,0B0H LD A,0B0H
OUT (C),A OUT (C),A
@ -383,24 +380,22 @@ NO_HDD2:
TEST_HDD_DRV: TEST_HDD_DRV:
LD HL,01FEH LD HL,01FEH
LD BC,P_S_CNT LD BC,IDE.Write.Counter
OUT (C),L OUT (C),L
LD BC,P_S_NUM LD BC,IDE.Write.Sector
OUT (C),H OUT (C),H
LD BC,P_S_CNT+256 LD BC,IDE.Write.Counter+256
IN A,(C) IN A,(C)
CP L CP L
RET NZ RET NZ
LD BC,P_S_NUM+256 LD BC,IDE.Write.Sector+256
IN A,(C) IN A,(C)
CP H CP H
RET RET
HD_CMD_0: HD_CMD_0:
POP AF POP AF
LD BC,IDE.Write.DeviceHead
LD BC,P_HD_CS
LD A,0A0H LD A,0A0H
OUT (C),A OUT (C),A
@ -412,14 +407,14 @@ HD_C0_L3:
WAIT_HDD WAIT_HDD
LD BC,P_CMD LD BC,IDE.Write.Command
LD A,0ECH LD A,0ECH
OUT (C),A OUT (C),A
WAIT_HDD WAIT_HDD
;HD_C0_L1: ;HD_C0_L1:
; ;
; LD BC,P_HDST ; LD BC,IDE.Read.Status
; IN A,(C) ; IN A,(C)
; BIT 7,A ; BIT 7,A
; JR NZ,HD_C0_L1 ; JR NZ,HD_C0_L1
@ -431,7 +426,7 @@ HD_C0_L3:
RET RET
HD_ABSENT: HD_ABSENT:
LD BC,P_HD_CS LD BC,IDE.Write.DeviceHead
LD A,0B0H LD A,0B0H
OUT (C),A OUT (C),A
@ -442,40 +437,40 @@ HD_ABSENT:
RET RET
HD_C0_L2: HD_C0_L2:
LD BC,P_DATS LD BC,IDE.Read.Data
LD HL,HD_IDF_ADR LD HL,SYS_PAGE.HD_IDF_ADR
IN A,(PAGE3) IN A,(SLOT3)
LD D,A LD D,A
LD A,SYS_PAGE LD A,SYS_PAGE
OUT (PAGE3),A OUT (SLOT3),A
INIR INIR
INIR INIR
;HD_C0_L4: ;HD_C0_L4:
; LD BC,P_HDST ; LD BC,IDE.Read.Status
; IN A,(C) ; IN A,(C)
; BIT 7,A ; BIT 7,A
; JR NZ,HD_C0_L4 ; JR NZ,HD_C0_L4
LD A,(HD_IDF_ADR+12) ; ç¨á«® ᥪâ®à®¢ LD A,(SYS_PAGE.HD_IDF_ADR.sectors) ; ç¨á«® ᥪâ®à®¢
LD C,A LD C,A
LD B,0 LD B,0
LD HL,0 LD HL,0
LD A,(HD_IDF_ADR+6) ; ç¨á«® £®«®¢®ª LD A,(SYS_PAGE.HD_IDF_ADR.heads) ; ç¨á«® £®«®¢®ª
LOOP_XX: LOOP_XX:
ADD HL,BC ADD HL,BC
DEC A DEC A
JR NZ,LOOP_XX JR NZ,LOOP_XX
LD (HD_IDF_ADR+4),HL LD (SYS_PAGE.HD_IDF_ADR.sec_cyl),HL
WAIT_HDD WAIT_HDD
LD BC,P_HD_CS LD BC,IDE.Write.DeviceHead
DEC B DEC B
IN A,(C) IN A,(C)
AND 010H AND 010H
LD B,A LD B,A
LD A,(HD_IDF_ADR+6) ; ç¨á«® £®«®¢®ª LD A,(SYS_PAGE.HD_IDF_ADR.heads) ; ç¨á«® £®«®¢®ª
DEC A DEC A
AND 0FH AND 0FH
@ -483,22 +478,22 @@ LOOP_XX:
OR B OR B
LD H,A LD H,A
LD A,(HD_IDF_ADR+99) LD A,(SYS_PAGE.HD_IDF_ADR+99) ;!HARDCODE
BIT 1,A BIT 1,A
JR Z,HD_C0_NO_LBA JR Z,HD_C0_NO_LBA
SET 6,H SET 6,H
HD_C0_NO_LBA: HD_C0_NO_LBA:
LD BC,P_HD_CS LD BC,IDE.Write.DeviceHead
OUT (C),H OUT (C),H
LD A,(HD_IDF_ADR+12) ; ç¨á«® ᥪâ®à®¢ LD A,(SYS_PAGE.HD_IDF_ADR.sectors) ; ç¨á«® ᥪâ®à®¢
LD BC,P_S_CNT LD BC,IDE.Write.Counter
OUT (C),A OUT (C),A
LD A,D LD A,D
OUT (PAGE3),A OUT (SLOT3),A
LD A,91H ; SET HDD PARAMETERS LD A,91H ; SET HDD PARAMETERS
CALL HD_CMD_EXE CALL HD_CMD_EXE
@ -512,7 +507,7 @@ HD_C0_NO_LBA:
HD_CMD_EXE: HD_CMD_EXE:
CALL HD_WAIT CALL HD_WAIT
RET C RET C
LD BC,P_CMD LD BC,IDE.Write.Command
OUT (C),A OUT (C),A
HD_WAIT: HD_WAIT:
PUSH DE PUSH DE
@ -522,7 +517,7 @@ HD_WAIT:
LD DE,0 LD DE,0
HD_WAIT1: HD_WAIT1:
LD BC,P_HDST LD BC,IDE.Read.Status
IN A,(C) IN A,(C)
BIT 7,A BIT 7,A
JR Z,HD_W_EXIT JR Z,HD_W_EXIT
@ -565,7 +560,7 @@ HD_CALC_SECS:
RET NZ ; ®è¨¡ª , ᫨誮¬ ¡®«ì让 HDD.. RET NZ ; ®è¨¡ª , ᫨誮¬ ¡®«ì让 HDD..
PUSH BC PUSH BC
LD BC,P_HD_CS LD BC,IDE.Write.DeviceHead
DEC B DEC B
IN A,(C) IN A,(C)
BIT 6,A BIT 6,A
@ -577,14 +572,14 @@ HD_CALC_SECS:
PUSH IX PUSH IX
POP HL POP HL
IN A,(PAGE3) IN A,(SLOT3)
LD C,A LD C,A
LD A,SYS_PAGE LD A,SYS_PAGE
OUT (PAGE3),A OUT (SLOT3),A
LD A,C LD A,C
LD (COPY_PAGE3),A LD (SYS_PAGE.COPY_SLOT3),A
LD BC,(HD_IDF_ADR+4) ; ç¨á«® ᥪâ®à®¢ ­  樫¨­¤à¥ LD BC,(SYS_PAGE.HD_IDF_ADR.sec_cyl) ; ç¨á«® ᥪâ®à®¢ ­  樫¨­¤à¥
; HL,DE - ­®¬¥à ᥪâ®à  ; HL,DE - ­®¬¥à ᥪâ®à 
; BC - ç¨á«® ᥪâ®à®¢ ­  樫¨­¤à¥ ; BC - ç¨á«® ᥪâ®à®¢ ­  樫¨­¤à¥
@ -609,7 +604,7 @@ NO_ADD: INC DE
DIV_END: ; DE - १ã«ìâ â, HL - ®áâ â®ª DIV_END: ; DE - १ã«ìâ â, HL - ®áâ â®ª
; DE - 樫¨­¤à ; DE - 樫¨­¤à
LD A,(HD_IDF_ADR+12) ; A - ç¨á«® ᥪâ®à®¢ ­  ¤®à®¦ª¥ LD A,(SYS_PAGE.HD_IDF_ADR.sectors) ; A - ç¨á«® ᥪâ®à®¢ ­  ¤®à®¦ª¥
; HL - ­®¬¥à ᥪâ®à  ¢ 樫¨­¤à¥ ; HL - ­®¬¥à ᥪâ®à  ¢ 樫¨­¤à¥
LD B,0 LD B,0
LD C,A LD C,A
@ -626,8 +621,8 @@ HD_CALC_LOOP2:
INC L INC L
LD H,A ; HL - HEAD,SEC LD H,A ; HL - HEAD,SEC
LD A,(COPY_PAGE3) LD A,(SYS_PAGE.COPY_SLOT3)
OUT (PAGE3),A OUT (SLOT3),A
POP BC POP BC
AND A AND A
@ -636,11 +631,11 @@ HD_CALC_LOOP2:
FN_HDD_PART: FN_HDD_PART:
POP AF POP AF
BIT 0,A BIT 0,A
LD A,#21 ; !HARDCODE LD A,IDE.Chanel.Primary
JR Z,.SET_CH JR Z,.SET_CH
LD A,#01 ; !HARDCODE LD A,IDE.Chanel.Secondary
.SET_CH: .SET_CH:
OUT (#BC),A ; !HARDCODE IDE.Chanel.Choose OUT (IDE.Chanel.Set),A
RET RET
; DB 'HDD_DRV_END' ; DB 'HDD_DRV_END'

View File

@ -868,7 +868,7 @@ LP_BEG_P:
; for low printer & save ; for low printer & save
WIN_GET_ZG: ; DE -  ¤à¥á ªã¤  ¯¥à¥á« âì ä®­â WIN_GET_ZG: ; DE -  ¤à¥á ªã¤  ¯¥à¥á« âì ä®­â
LD HL,ZG_ADRESS LD HL,ZG_ADDRESS
LD BC,800H LD BC,800H
LDIR LDIR
AND A AND A
@ -1837,19 +1837,22 @@ WIN_PUT_SYM: ; DE -
CALL LP_END_P CALL LP_END_P
RET RET
WIN_MOVE_WIN: ; HL - à §¬¥à ®ª­  ; HL - à §¬¥à ®ª­ 
; DE - ¯®«®¦¥­¨¥ ®ª­  ; DE - ¯®«®¦¥­¨¥ ®ª­ 
AND A ; A - ­®¬¥à ®ª­  ; A - ­®¬¥à ®ª­ 
SCF ; IX - ­®¢®¥ ¯®«®¦¥­¨¥ ®ª­  ; IX - ­®¢®¥ ¯®«®¦¥­¨¥ ®ª­ 
WIN_MOVE_WIN:
AND A
SCF
RET NZ RET NZ
PUSH IX PUSH IX
PUSH HL PUSH HL
LD B,0FFH LD B,0FFH ;!HARDCODE SHARED_PAGE
LD IX,0C000H LD IX,0C000H
CALL WIN_COPY_WIN1 CALL WIN_COPY_WIN1
POP HL POP HL
POP DE POP DE
LD B,0FFH LD B,0FFH ;!HARDCODE SHARED_PAGE
LD IX,0C000H LD IX,0C000H
CALL WIN_REST_WIN1 CALL WIN_REST_WIN1
AND A AND A

View File

@ -33,16 +33,15 @@ PIC_S MACRO pg,cnt,adr
ALIGN 8 ALIGN 8
LP_SCR_MNU: LP_SCR_MNU:
; ;
; LP_S 040h,14,040E7H ; LP_S %0100'0000,14,#40E7
; ; LP_S %0100'0000,14,#4807
; LP_S 040h,14,04807H ; LP_S %0100'0000,14,#4827
; LP_S 040h,14,04827H ; LP_S %0100'0000,14,#4847
; LP_S 040h,14,04847H ; LP_S %0100'0000,14,#4867
; LP_S 040h,14,04867H ; LP_S %0100'0000,14,#4887
; LP_S 040h,14,04887H ; LP_S %0100'0000,14,#48A7
; LP_S 040h,14,048A7H ; LP_S %0100'0000,14,#48C7
; LP_S 040h,14,048C7H ; LP_S %0100'0000,14,#48E7
; LP_S 040h,14,048E7H
; ;
; DEFB 0FFh,0,0,0 ; DEFB 0FFh,0,0,0
@ -50,43 +49,43 @@ LP_SCR_80:
DB 40,32,0,0,1BH,0,0,0 DB 40,32,0,0,1BH,0,0,0
DB 0,0,0,0,0,0,0,0 DB 0,0,0,0,0,0,0,0
; LP_S 01100010B,40,4000H ; LP_S %0110'0010,40,4000H
; LP_S 01100010B,40,4028H ; LP_S %0110'0010,40,4028H
; LP_S 01100010B,40,4050H ; LP_S %0110'0010,40,4050H
; LP_S 01100010B,40,4078H ; LP_S %0110'0010,40,4078H
; LP_S 01100010B,40,40A0H ; LP_S %0110'0010,40,40A0H
; LP_S 01100010B,40,40C8H ; LP_S %0110'0010,40,40C8H
; ;
; LP_S 01100010B,40,4800H ; LP_S %0110'0010,40,4800H
; LP_S 01100010B,40,4828H ; LP_S %0110'0010,40,4828H
; LP_S 01100010B,40,4850H ; LP_S %0110'0010,40,4850H
; LP_S 01100010B,40,4878H ; LP_S %0110'0010,40,4878H
; LP_S 01100010B,40,48A0H ; LP_S %0110'0010,40,48A0H
; LP_S 01100010B,40,48C8H ; LP_S %0110'0010,40,48C8H
; ;
; LP_S 01100010B,40,5000H ; LP_S %0110'0010,40,5000H
; LP_S 01100010B,40,5028H ; LP_S %0110'0010,40,5028H
; LP_S 01100010B,40,5050H ; LP_S %0110'0010,40,5050H
; LP_S 01100010B,40,5078H ; LP_S %0110'0010,40,5078H
; LP_S 01100010B,40,50A0H ; LP_S %0110'0010,40,50A0H
; LP_S 01100010B,40,50C8H ; LP_S %0110'0010,40,50C8H
; ;
; LP_S 01100100B,40,4000H ; LP_S %0110'0100,40,4000H
; LP_S 01100100B,40,4028H ; LP_S %0110'0100,40,4028H
; LP_S 01100100B,40,4050H ; LP_S %0110'0100,40,4050H
; LP_S 01100100B,40,4078H ; LP_S %0110'0100,40,4078H
; LP_S 01100100B,40,40A0H ; LP_S %0110'0100,40,40A0H
; LP_S 01100100B,40,40C8H ; LP_S %0110'0100,40,40C8H
; ;
; LP_S 01100100B,40,4800H ; LP_S %0110'0100,40,4800H
; LP_S 01100100B,40,4828H ; LP_S %0110'0100,40,4828H
; LP_S 01100100B,40,4850H ; LP_S %0110'0100,40,4850H
; LP_S 01100100B,40,4878H ; LP_S %0110'0100,40,4878H
; LP_S 01100100B,40,48A0H ; LP_S %0110'0100,40,48A0H
; LP_S 01100100B,40,48C8H ; LP_S %0110'0100,40,48C8H
; ;
; LP_S 01100100B,40,5000H ; LP_S %0110'0100,40,5000H
; LP_S 01100100B,40,5028H ; LP_S %0110'0100,40,5028H
; ;
; DEFB 0FFh,0,0,0 ; DEFB 0FFh,0,0,0
; ;
@ -94,43 +93,43 @@ LP_SCR_40:
DB 40,32,0,0,7BH,0,0,0 DB 40,32,0,0,7BH,0,0,0
DB 0,0,0,0,0,0,0,0 DB 0,0,0,0,0,0,0,0
; ;
; LP_S 01000100B,40,5050H ; LP_S %0100'0100,40,5050H
; LP_S 01000100B,40,5078H ; LP_S %0100'0100,40,5078H
; LP_S 01000100B,40,50A0H ; LP_S %0100'0100,40,50A0H
; LP_S 01000100B,40,50C8H ; LP_S %0100'0100,40,50C8H
; ;
; LP_S 01000110B,40,4000H ; LP_S %0100'0110,40,4000H
; LP_S 01000110B,40,4028H ; LP_S %0100'0110,40,4028H
; LP_S 01000110B,40,4050H ; LP_S %0100'0110,40,4050H
; LP_S 01000110B,40,4078H ; LP_S %0100'0110,40,4078H
; LP_S 01000110B,40,40A0H ; LP_S %0100'0110,40,40A0H
; LP_S 01000110B,40,40C8H ; LP_S %0100'0110,40,40C8H
; ;
; LP_S 01000110B,40,4800H ; LP_S %0100'0110,40,4800H
; LP_S 01000110B,40,4828H ; LP_S %0100'0110,40,4828H
; LP_S 01000110B,40,4850H ; LP_S %0100'0110,40,4850H
; LP_S 01000110B,40,4878H ; LP_S %0100'0110,40,4878H
; LP_S 01000110B,40,48A0H ; LP_S %0100'0110,40,48A0H
; LP_S 01000110B,40,48C8H ; LP_S %0100'0110,40,48C8H
; ;
; LP_S 01000110B,40,5000H ; LP_S %0100'0110,40,5000H
; LP_S 01000110B,40,5028H ; LP_S %0100'0110,40,5028H
; LP_S 01000110B,40,5050H ; LP_S %0100'0110,40,5050H
; LP_S 01000110B,40,5078H ; LP_S %0100'0110,40,5078H
; LP_S 01000110B,40,50A0H ; LP_S %0100'0110,40,50A0H
; LP_S 01000110B,40,50C8H ; LP_S %0100'0110,40,50C8H
; ;
; LP_S 01001000B,40,4000H ; LP_S %0100'1000,40,4000H
; LP_S 01001000B,40,4028H ; LP_S %0100'1000,40,4028H
; LP_S 01001000B,40,4050H ; LP_S %0100'1000,40,4050H
; LP_S 01001000B,40,4078H ; LP_S %0100'1000,40,4078H
; LP_S 01001000B,40,40A0H ; LP_S %0100'1000,40,40A0H
; LP_S 01001000B,40,40C8H ; LP_S %0100'1000,40,40C8H
; ;
; LP_S 01001000B,40,4800H ; LP_S %0100'1000,40,4800H
; LP_S 01001000B,40,4828H ; LP_S %0100'1000,40,4828H
; LP_S 01001000B,40,4850H ; LP_S %0100'1000,40,4850H
; LP_S 01001000B,40,4878H ; LP_S %0100'1000,40,4878H
; ;
; DEFB 0FFh,0,0,0 ; DEFB 0FFh,0,0,0
; ;
@ -138,68 +137,66 @@ LP_SCR_32:
DB 32,24,4,4,30H,1,0,0 DB 32,24,4,4,30H,1,0,0
DB 0,0,0,0,0,0,0,0 DB 0,0,0,0,0,0,0,0
; ;
; LP_S 040h,32,04000H ; LP_S %040h',32,4000H
; LP_S 040h,32,04020H ; LP_S %040h',32,4020H
; LP_S 040h,32,04040H ; LP_S %040h',32,4040H
; LP_S 040h,32,04060H ; LP_S %040h',32,4060H
; LP_S 040h,32,04080H ; LP_S %040h',32,4080H
; LP_S 040h,32,040A0H ; LP_S %040h',32,40A0H
; LP_S 040h,32,040C0H ; LP_S %040h',32,40C0H
; LP_S 040h,32,040E0H ; LP_S %040h',32,40E0H
; ;
; LP_S 040h,32,04800H ; LP_S %040h',32,4800H
; LP_S 040h,32,04820H ; LP_S %040h',32,4820H
; LP_S 040h,32,04840H ; LP_S %040h',32,4840H
; LP_S 040h,32,04860H ; LP_S %040h',32,4860H
; LP_S 040h,32,04880H ; LP_S %040h',32,4880H
; LP_S 040h,32,048A0H ; LP_S %040h',32,48A0H
; LP_S 040h,32,048C0H ; LP_S %040h',32,48C0H
; LP_S 040h,32,048E0H ; LP_S %040h',32,48E0H
; ;
; LP_S 040h,32,05000H ; LP_S %040h',32,5000H
; LP_S 040h,32,05020H ; LP_S %040h',32,5020H
; LP_S 040h,32,05040H ; LP_S %040h',32,5040H
; LP_S 040h,32,05060H ; LP_S %040h',32,5060H
; LP_S 040h,32,05080H ; LP_S %040h',32,5080H
; LP_S 040h,32,050A0H ; LP_S %040h',32,50A0H
; LP_S 040h,32,050C0H ; LP_S %040h',32,50C0H
; LP_S 040h,32,050E0H ; LP_S %040h',32,50E0H
;
; LP_S 0FFh,0,0
; ;
; LP_S %0FFh',0,0;
LP_SCR_64: LP_SCR_64:
DB 32,24,4,4,9BH,0,0,0 DB 32,24,4,4,9BH,0,0,0
DB 0,0,0,0,0,0,0,0 DB 0,0,0,0,0,0,0,0
; ;
; LP_S 06Ah,32,04000H ; LP_S %06Ah',32,4000H
; LP_S 06Ah,32,04020H ; LP_S %06Ah',32,4020H
; LP_S 06Ah,32,04040H ; LP_S %06Ah',32,4040H
; LP_S 06Ah,32,04060H ; LP_S %06Ah',32,4060H
; LP_S 06Ah,32,04080H ; LP_S %06Ah',32,4080H
; LP_S 06Ah,32,040A0H ; LP_S %06Ah',32,40A0H
; LP_S 06Ah,32,040C0H ; LP_S %06Ah',32,40C0H
; LP_S 06Ah,32,040E0H ; LP_S %06Ah',32,40E0H
; ;
; LP_S 06Ah,32,04800H ; LP_S %06Ah',32,4800H
; LP_S 06Ah,32,04820H ; LP_S %06Ah',32,4820H
; LP_S 06Ah,32,04840H ; LP_S %06Ah',32,4840H
; LP_S 06Ah,32,04860H ; LP_S %06Ah',32,4860H
; LP_S 06Ah,32,04880H ; LP_S %06Ah',32,4880H
; LP_S 06Ah,32,048A0H ; LP_S %06Ah',32,48A0H
; LP_S 06Ah,32,048C0H ; LP_S %06Ah',32,48C0H
; LP_S 06Ah,32,048E0H ; LP_S %06Ah',32,48E0H
; ;
; LP_S 06Ah,32,05000H ; LP_S %06Ah',32,5000H
; LP_S 06Ah,32,05020H ; LP_S %06Ah',32,5020H
; LP_S 06Ah,32,05040H ; LP_S %06Ah',32,5040H
; LP_S 06Ah,32,05060H ; LP_S %06Ah',32,5060H
; LP_S 06Ah,32,05080H ; LP_S %06Ah',32,5080H
; LP_S 06Ah,32,050A0H ; LP_S %06Ah',32,50A0H
; LP_S 06Ah,32,050C0H ; LP_S %06Ah',32,50C0H
; LP_S 06Ah,32,050E0H ; LP_S %06Ah',32,50E0H
; ;
; LP_S 0FFh,0,0 ; LP_S %0FFh',0,0
PIC_320X256_1: PIC_320X256_1:
DB 40,32,0,0,20H,0,8,0 DB 40,32,0,0,20H,0,8,0
DB 0,0,0,0,0,0,0,0 DB 0,0,0,0,0,0,0,0

View File

@ -1,4 +1,4 @@
ZG_ADRESS: ZG_ADDRESS:
DB 000h,07Eh,07Eh,06Ch,010h,038h,010h,000h,0FFh,000h,0FFh,00Fh,03Ch,03Fh,07Fh,018h DB 000h,07Eh,07Eh,06Ch,010h,038h,010h,000h,0FFh,000h,0FFh,00Fh,03Ch,03Fh,07Fh,018h
DB 080h,002h,018h,066h,07Fh,03Eh,000h,018h,018h,018h,000h,000h,000h,000h,000h,000h DB 080h,002h,018h,066h,07Fh,03Eh,000h,018h,018h,018h,000h,000h,000h,000h,000h,000h
DB 000h,030h,06Ch,06Ch,030h,000h,038h,060h,018h,060h,000h,000h,000h,000h,000h,006h DB 000h,030h,06Ch,06Ch,030h,000h,038h,060h,018h,060h,000h,000h,000h,000h,000h,006h

View File

@ -3,7 +3,7 @@
SERVICE: SERVICE:
LD HL,SR_TAB LD HL,SR_TAB
LD DE,SR_MENU LD DE,SR_MENU
LD BC,SR_LEN LD BC,SR_MENU.Size
PUSH HL PUSH HL
CALL RUN_MENU ;09f3 CALL RUN_MENU ;09f3
POP HL POP HL
@ -30,9 +30,8 @@ SR_MENU:
DC 'TURBO ON ' DC 'TURBO ON '
DC 'Clear RAM' DC 'Clear RAM'
DC 'RETURN' DC 'RETURN'
DC ' ' ; ¬ àª¥à ª®­æ  DC " " ; ¬ àª¥à ª®­æ 
.Size EQU $-SR_MENU
SR_LEN EQU $-SR_MENU
;***************************** ;*****************************
@ -109,7 +108,7 @@ CLEAR_RAM:
RST 18h RST 18h
IFDEF ZX_BIOS IFDEF ZX_BIOS
; ¯à¨ ®ç¨á⪥ ¯ ¬ï⨠¨§ ¬¥­î ᯥªâà㬠 ¯®«®¬ ¥âáï ¢®§¢à â ¢ DSS ¯® CAD, ¯®í⮬㠮⪫îç ¥¬ ¢®§¢à â ; ¯à¨ ®ç¨á⪥ ¯ ¬ï⨠¨§ ¬¥­î ᯥªâà㬠 ¯®«®¬ ¥âáï ¢®§¢à â ¢ DSS ¯® CAD, ¯®í⮬㠮⪫îç ¥¬ ¢®§¢à â
LD A,#EE ;!HARDCODE Conf_port.RET_PORT LD A,#EE ;!HARDCODE ACEX.RET_PORT
LD BC,0*256 + #F8 ;!HARDCODE BIOS.SET_PORTS LD BC,0*256 + #F8 ;!HARDCODE BIOS.SET_PORTS
CALL #3D13 ;!HARDCODE ToBIOS_3D13 CALL #3D13 ;!HARDCODE ToBIOS_3D13
ENDIF ENDIF
@ -177,7 +176,7 @@ IS_MENU:
DC 'Pentagon 512' DC 'Pentagon 512'
DC 'Restart ' DC 'Restart '
DC 'RETURN' DC 'RETURN'
DC ' ' ; ¬ àª¥à ª®­æ  DC " " ; ¬ àª¥à ª®­æ 
.Size EQU $-IS_MENU .Size EQU $-IS_MENU
;****************************** ;******************************
@ -218,10 +217,10 @@ SPRINTER_2X:
JP RESET_1 ; á¡à®á ¡¥§ ¯¥à¥§ £à㧪¨ JP RESET_1 ; á¡à®á ¡¥§ ¯¥à¥§ £à㧪¨
AY8910: AY8910:
LD D,#35 ;LD D,#35
CALL CMOS_RD ;CALL CMOS_RD
OR 1 ;OR 1
CALL CMOS_WR ;CALL CMOS_WR
LD BC,204Eh ; port all_mode LD BC,204Eh ; port all_mode
IN A,(C) IN A,(C)
@ -232,10 +231,10 @@ AY8910:
JR SPRINTER_ALL JR SPRINTER_ALL
SPRINTER_1: SPRINTER_1:
LD D,35H ;LD D,35H
CALL CMOS_RD ;CALL CMOS_RD
AND 0FEh ;AND 0FEh
CALL CMOS_WR ;CALL CMOS_WR
LD BC,204Eh LD BC,204Eh
IN A,(C) IN A,(C)
@ -627,12 +626,12 @@ SCORPION:
PENTAGON: PENTAGON:
CALL CNF_PN_320 CALL CNF_PN_320
LD DE,CNF_2+D_TBON LD DE,CNF_1+D_TBON
JR CONFIG_SET1 JR CONFIG_SET1
PENTAGON512: PENTAGON512:
CALL CNF_PN_320 CALL CNF_PN_320
LD DE,CNF_2+D_TBON+CNF_512 LD DE,CNF_1+D_TBON+CNF_512
; JR CONFIG_SET1 ; JR CONFIG_SET1
CONFIG_SET1: CONFIG_SET1:
@ -691,7 +690,7 @@ UTILIT:
CALL DOS_ON CALL DOS_ON
LD A,0 ; DETECT_HDD LD A,0 ; DETECT_HDD
CALL HDD_EXE CALL EXP_HDD
CALL DOS_OFF CALL DOS_OFF
JR C,DISK_UTILIT JR C,DISK_UTILIT

View File

@ -277,9 +277,9 @@ ERR_TST_M:
;************************************** ;**************************************
CALL_DOS_MOVE: CALL_DOS_MOVE:
LD DE,5C00H-DOS_PROG_LEN LD DE,DOS_PROG.Exec
LD HL,DOS_PROG LD HL,DOS_PROG
LD BC,DOS_PROG_LEN LD BC,DOS_PROG.Size
LDIR LDIR
RET RET
; ;
@ -295,34 +295,36 @@ CALL_DOS1:
LD (5C63H),DE LD (5C63H),DE
LD (5C65H),DE LD (5C65H),DE
CALL CALL_DOS_MOVE CALL CALL_DOS_MOVE
JP 5C00H-DOS_PROG_LEN JP DOS_PROG.Exec
CALL_DOS: CALL_DOS:
PUSH HL PUSH HL
PUSH DE PUSH DE
PUSH BC PUSH BC
PUSH AF PUSH AF
CALL CALL_DOS_MOVE CALL CALL_DOS_MOVE
LD A,13H LD A,#13 ; #13 ¨§ AUTO_1303
LD (5C00H-DOS_PROG_LEN+DOS_PROG_A),A LD (DOS_PROG.Patch),A
POP AF POP AF
POP BC POP BC
POP DE POP DE
POP HL POP HL
JP 5C00H-DOS_PROG_LEN JP DOS_PROG.Exec
DOS_PROG: DOS_PROG:
PUSH AF DISP #5C00 - DOS_PROG.Size ;!HARDCODE
XOR A .Exec: PUSH AF
OUT (SYS_PORT_OFF),A XOR A
POP AF OUT (SYS_PORT_OFF),A
CALL 3D03H POP AF
DOS_PROG_A EQU $-DOS_PROG-1 .Patch+2: CALL #3D03
PUSH AF PUSH AF
LD A,0 LD A,0
OUT (CNF_PORT),A OUT (CNF_PORT),A
POP AF POP AF
RET RET
DOS_PROG_LEN EQU $-DOS_PROG .Size EQU $ - .Exec
ENT
CONT_PROG: CONT_PROG:
LD HL,1AFDH LD HL,1AFDH
@ -334,7 +336,4 @@ CONT_PROG:
LD A,0E8H LD A,0E8H
LD (DE),A LD (DE),A
JP SW_ROM JP SW_ROM
;

View File

@ -3,27 +3,28 @@
DEVICE ZXSPECTRUM128 DEVICE ZXSPECTRUM128
ORG 0 ORG 0
INCLUDE 'INC/SPRINT00.INC' ; ª®­áâ ­âë, ¬ ªà®áë.. ;INCLUDE 'INC/SPRINT00.INC' ; ª®­áâ ­âë, ¬ ªà®áë..
;****************************** INCLUDE 'shared_includes/constants/sp2000.INC' ; ª®­áâ ­âë, ¬ ªà®áë..
; ***** BEGIN EXPANSION ***** ; ***************************
;****************************** ; ***** BEGIN EXPANSION *****
; ***************************
START: START:
DI DI
HALT HALT
;*************************** ;***********************************************************************;
BLOCK #10-$,255 BLOCK #10-$,255
RET RET
;*************************** ;***********************************************************************;
BLOCK #38-$,255 BLOCK #38-$,255
EI EI
RETI RETI
;*************************** ;***********************************************************************;
BLOCK #66-$,#C9 BLOCK #66-$,#C9
RETN RETN
;*************************** ;***********************************************************************;
BLOCK #100-$,255 BLOCK #100-$,255
INCLUDE 'EXP/EXP_HDD.ASM' INCLUDE 'ZX_EXP/EXP_HDD.ASM'
; INCLUDE 'EXP_KBD.ASZ' ; INCLUDE 'EXP_KBD.ASZ'
;GLOBAL_RESET: ;GLOBAL_RESET:
@ -38,50 +39,58 @@ START:
; PUSH HL ; PUSH HL
; DI ; DI
; RET ; RET
;***********************************************************************;
BLOCK #3FD0-$,255 BLOCK #3FD0-$,255
; PUSH AF
; LD A,D_ROM16OFF
; OUT (SYS_PORT_ON),A
; POP AF
; HD_CMD_XR_RET:
; RET
PUSH AF ;***********************************************************************;
LD A,D_ROM16OFF BLOCK #3FD7-$,255
OUT (SYS_PORT_ON),A
POP AF
HD_CMD_XR_RET:
RET
HD_CMD_XR: HD_CMD_XR:
JP HD_CMD JP HD_CMD
;************************ ;***********************************************************************;
;!FIXIT not used
BLOCK #3FE0-$,255 BLOCK #3FE0-$,255
SND_TEST_RET: ; SND_TEST_RET:
LD A,D_ROM16OFF ; LD A,D_ROM16OFF
OUT (SYS_PORT_OFF),A ; OUT (SYS_PORT_OFF),A
JP SND_TEST_RET ; JP SND_TEST_RET
;*************************** ;***********************************************************************;
BLOCK #3FE8-$,255 BLOCK #3FE8-$,255
HD_EXP_RET: HD_EXP_RET:
PUSH AF PUSH AF
LD A,D_ROM16OFF LD A,CNF_PORT.ZX_BIOS
OUT (SYS_PORT_ON),A ;!TEST
;OUT (SYS_PORT_ON),A
OUT (CNF_PORT),A
;
JP HD_EXP_EXE JP HD_EXP_EXE
;***********************************************************************;
BLOCK #3FF0-$,255 BLOCK #3FF0-$,255
HD_DOS_RET: HD_DOS_RET:
PUSH AF PUSH AF
DI DI
LD A,D_ROM16OFF LD A,CNF_PORT.ZX_BIOS
OUT (SYS_PORT_OFF),A OUT (SYS_PORT.OFF),A
JR HD_CMD_XR JR HD_CMD_XR
;***********************************************************************;
BLOCK #3FF8-$,255
EXP_FNS_RET: EXP_FNS_RET:
PUSH AF PUSH AF
LD A,D_ROM16OFF LD A,CNF_PORT.ZX_BIOS
OUT (SYS_PORT_OFF),A OUT (SYS_PORT.OFF),A
JP HD_CMD_XR_RET //JP HD_CMD_XR_RET
RET
;****************************************** ;***********************************************************************;
BLOCK #4000-$,255 BLOCK #4000-$,255
; ;
; ;

View File

@ -1,203 +0,0 @@
; ZX Spectrum char codes
; By Marcos Cruz (programandala.net)
; ---------------------------------------------------------------------
; Characters (new format)
ZX_Char:
; Not used equ 0x00
; Not used equ 0x01
; Not used equ 0x02
; Not used equ 0x03
; Not used equ 0x04
; Not used equ 0x05
.caps equ 0x06 ; toggle caps lock
.print_comma equ 0x06 ; (when printed)
.edit equ 0x07 ; edit
.esc equ 0x07 ; escape
.cursor_left equ 0x08
.backspace equ 0x08
.right equ 0x09 ; cursor right
.cursor_down equ 0x0A
.cursor_up equ 0x0B
.delete_left equ 0x0C ; delete (backspace)
.form_feed equ 0x0C ; used for printing
.carriage_return equ 0x0D ; enter key
.extended_mode equ 0x0E ;
.number equ 0x0E ;
.graphics equ 0x0F ; toggle graphics mode
.ink equ 0x10
.paper equ 0x11
.flash equ 0x12
.bright equ 0x13
.inverse equ 0x14
.over equ 0x15
.at equ 0x16
.tab equ 0x17 ; tab (screen only)
; Not used equ 0x18
; Not used equ 0x19
; Not used equ 0x1A
; Not used equ 0x1B
; Not used equ 0x1C
; Not used equ 0x1D
; Not used equ 0x1E
; Not used equ 0x1F
.space equ 0x20
; Standart symbols
; #21 ! #22 " #23 # #24 $ #25 % #26 & #27 , #28 (
; #29 ) #2A * #2B + #2C , #2D - #2F . #2F / #30 0
; #31 1 #32 2 #33 3 #34 4 #35 5 #36 6 #37 7 #38 8
; #39 9 #3A : #3B ; #3C < #3D = #3E > #3F ? #40 @
; #41 A #42 B #43 C #44 D #45 E #46 F #47 G #48 H
; #49 I #4A J #4B K #4C L #4D M #4E N #4F O #50 P
; #51 Q #52 R #53 S #54 T #55 U #56 V #57 W #58 X
; #59 Y #5A Z #5B [ #5C / #5D ] #5E ^ #5F _ #60 ?
; #61 a #62 b #63 c #64 d #65 e #66 f #67 g #68 h
; #69 i #6A j #6B k #6C l #6D m #6E n #6F o #70 p
; #71 q #72 r #73 s #74 t #75 u #76 v #77 w #78 x
; #79 y #7A z #7B { #7C | #7D } #7E ~
.copyright equ 0x7F ; copyright sign
; ---------------------------------------------------------------------
; User Defined Graphics
; 0 1 2 3 4 5 6 7
;| | | #| |# | |# #| | | | #| |# | |# #|
;| | | | | | | | | #| | #| | #| | #|
; 8 9 A B C D E F
;| | | #| |# | |# #| | | | #| |# | |# #|
;|# | |# | |# | |# | |# #| |# #| |# #| |# #|
ZX_UDG:
.block_0 equ 0x80
.block_1 equ 0x81
.block_2 equ 0x82
.block_3 equ 0x83
.block_4 equ 0x84
.block_5 equ 0x85
.block_6 equ 0x86
.block_7 equ 0x87
.block_8 equ 0x88
.block_9 equ 0x89
.block_A equ 0x8A
.block_B equ 0x8B
.block_C equ 0x8C
.block_D equ 0x8D
.block_E equ 0x8E
.block_F equ 0x8F
.a equ 0x90
.b equ 0x91
.c equ 0x92
.d equ 0x93
.e equ 0x94
.f equ 0x95
.g equ 0x96
.h equ 0x97
.i equ 0x98
.j equ 0x99
.k equ 0x9A
.l equ 0x9B
.m equ 0x9C
.n equ 0x9D
.o equ 0x9E
.p equ 0x9F
.q equ 0xA0
.r equ 0xA1
.s equ 0xA2
.t equ 0xA3 ; token SPECTRUM in 128 basic
.u equ 0xA4 ; token PLAY in 128 basic
; ---------------------------------------------------------------------
; Tokens
ZX_Token
.spectrum equ 0xA3 ; UDG T in 48 basic
.play equ 0xA4 ; UDG U in 48 basic
.rnd equ 0xA5
.inkey_dollar equ 0xA6
.pi equ 0xA7
.fn equ 0xA8
.point equ 0xA9
.screen_dollar equ 0xAA
.attr equ 0xAB
.at equ 0xAC
.tab equ 0xAD
.val_dollar equ 0xAE
.code equ 0xAF
.val equ 0xB0
.len equ 0xB1
.sin equ 0xB2
.cos equ 0xB3
.tan equ 0xB4
.asn equ 0xB5
.acs equ 0xB6
.atn equ 0xB7
.ln equ 0xB8
.exp equ 0xB9
.int equ 0xBA
.sqr equ 0xBB
.sgn equ 0xBC
.abs equ 0xBD
.peek equ 0xBE
.in equ 0xBF
.usr equ 0xC0
.str_dollar equ 0xC1
.chr_dollar equ 0xC2
.not equ 0xC3
.bin equ 0xC4
.or equ 0xC5
.and equ 0xC6
.less_or_equal equ 0xC7
.greater_or_equal equ 0xC8
.not_equal equ 0xC9
.line equ 0xCA
.then equ 0xCB
.to equ 0xCC
.step equ 0xCD
.def_fn equ 0xCE
.cat equ 0xCF
.format equ 0xD0
.move equ 0xD1
.erase equ 0xD2
.open_channel equ 0xD3
.close_channel equ 0xD4
.merge equ 0xD5
.verify equ 0xD6
.beep equ 0xD7
.circle equ 0xD8
.ink equ 0xD9
.paper equ 0xDA
.flash equ 0xDB
.bright equ 0xDC
.inverse equ 0xDD
.over equ 0xDE
.out equ 0xDF
.lprint equ 0xE0
.llist equ 0xE1
.stop equ 0xE2
.read equ 0xE3
.data equ 0xE4
.restore equ 0xE5
.new equ 0xE6
.border equ 0xE7
.continue equ 0xE8
.dim equ 0xE9
.rem equ 0xEA
.for equ 0xEB
.go_to equ 0xEC
.go_sub equ 0xED
.input equ 0xEE
.load equ 0xEF
.list equ 0xF0
.let equ 0xF1
.pause equ 0xF2
.next equ 0xF3
.poke equ 0xF4
.print equ 0xF5
.plot equ 0xF6
.run equ 0xF7
.save equ 0xF8
.randomize equ 0xF9
.if equ 0xFA
.cls equ 0xFB
.draw equ 0xFC
.clear equ 0xFD
.return equ 0xFE
.copy equ 0xFF
; ---------------------------------------------------------------------

File diff suppressed because it is too large Load Diff