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
ENDM
DEFINE START_PAUSE #0000
DEFINE START_PAUSE #0001
INCLUDE 'shared_includes/constants/sp2000.inc'
INCLUDE 'inc/char_codes.inc'
INCLUDE 'shared_includes/constants/zx_char_codes.inc'
;[^]..................................................................................................................... SP2000 [^]
; -----------------------
@ -922,6 +922,7 @@ NMI_POINT:
; ENT
;SWAP_ROM
RAM_ROUTINES:
L006B: PUSH AF ; Save AF and BC.
PUSH BC ;
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.
EI ;
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 >>>>>>>>>>>>>>>>>>>>>>>>>;
; ===============================
@ -1143,8 +1146,8 @@ L0137: LD B,D ; Complete setting up the sound chip registers.
OUT (C),A ;
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 BC,L006B.Size; There are eighty eight bytes to copy.
LD HL,RAM_ROUTINES ; The source is in this ROM.
LD BC,RAM_ROUTINES.Size ; There are eighty eight bytes to copy.
LDIR ; Copy the block of bytes.
LD A,#CF ; Load A with the code for the Z80 instruction 'RST #08'.
@ -10027,7 +10030,7 @@ L2584: CALL L28BE ; Reset Cursor Position.
; --------------
; Show Main Menu
; --------------
BLOCK #259F-$,#FF; áâ ­¤ àâ­ë©  ¤à¥á
L259F: LD HL,TSTACK ; #5BFF.
LD (OLDSP),HL ; #5B81.
@ -10555,7 +10558,7 @@ L27EB:
M_COM: BYTE 6,0
WORD TRDOS
BYTE 1
WORD HARDWARE ;ISDOS
WORD HARDWARE
BYTE 2
WORD L286C
BYTE 3
@ -10635,24 +10638,35 @@ L281C: LD HL,#EC0D ; Editor flags.
; JP L1AF1 ; Run the tape loader.
L2831:
ED_COM: BYTE 10 ; Number of entries.
;
BYTE #0B ; Key code: Cursor up.
DEFW L272E ; MENU-UP handler routine.
BYTE #0A ; Key code: Cursor dow
;
BYTE #0A ; Key code: Cursor down
DEFW L2731 ; MENU-DOWN handler routine.
;
BYTE #0D ; Key code: Enter.
DEFW L2717 ; MENU-SELECT handler routine.
;
BYTE '8' ; ­  ᨭª«¥à-¤¦®©á⨪¥ ¢­¨§
DEFW L2731 ; MENU-DOWN handler routine.
;
BYTE '9' ; ­  ᨭª«¥à-¤¦®©á⨪¥ ¢¢¥àå
DEFW L272E ; MENU-UP handler routine.
;
;
BYTE '0' ; ­  ᨭª«¥à-¤¦®©á⨪¥ enter
DEFW L2717 ; MENU-SELECT handler routine.
;
BYTE '6' ; ­  ᨭª«¥à-¤¦®©á⨪¥ ¢«¥¢® Page Up
DEFW LEFT_E ; MENU-PageUp
;
BYTE #08 ; Key code: Cursor left
DEFW LEFT ; MENU-PageUp
;
BYTE '7' ; [x] ¡ë«® 7
DEFW RIGHT_E ; MENU-PageDown
;
BYTE #09 ; Key code: Cursor right
DEFW RIGHT ; MENU-PageDown

File diff suppressed because it is too large Load Diff

6757
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 @@
;
; for INCLUDE
File_Start DEFL $
DISPLAY "===================================================="
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
;********************************************
; MS-DOS system
;
;********************************************
; MS-DOS utilites
;********************************************
MSD_R_W_UT:
PUSH AF
CALL DISK_REDIR
CP #40
JR C,.NOT_HDD
;************************************************
;* <09>ணࠬ¬  ç⥭¨ï/§ ¯¨á¨ MS-DOS ¤¨áª®¢ *
;* <20>®¤¯à®£à ¬¬  ç⥭¨ï/§ ¯¨á¨ MS-DOS ¤¨áª®¢ *
;* 1. €¤à¥á ¡ãä¥à  - HL *
;* 2. <20>®¬¥à ᥪâ®à  - DE *
;* 3. —¨á«® ᥪâ®à®¢ - B *
;* 4. Š®¬ ­¤  - C *
;* 5. ‘âà ­¨æ  އ“ - A *
;************************************************
HDD_REDIR:
POP AF
CALL HD_CMD
.HDD: POP AF
;!TEST 06/01/2024 㡨ࠥ¬ «¨è­¨¥ ⥫®¤¢¨¦¥­¨ï
;CALL HD_CMD
SET 6,C
CALL EXP_FNS
;
RET NC
JP HDD_ERROR
MSD_R_W_UT:
PUSH AF
CALL DISK_REDIR
CP 40H
JR NC,HDD_REDIR
;************************************************
.NOT_HDD:
POP AF
EX AF,AF'
LD A,C
@ -51,7 +55,7 @@ MSD_R_W_UT:
; EX (SP),HL
; POP IX
; LD C,12H
; LD A,(OPER_DISK)
; LD A,(ZX_VARS.OPER_DISK)
; DI
; PUSH IY
; CALL HD_CMD
@ -72,7 +76,7 @@ MSD_R_W_UT:
; EX (SP),HL
; POP IX
; LD C,13H
; LD A,(OPER_DISK)
; LD A,(ZX_VARS.OPER_DISK)
; DI
; PUSH IY
; CALL HD_CMD
@ -92,45 +96,51 @@ MSD_R_W_UT:
MSD_cmd4:
PUSH HL
PUSH AF
;PUSH AF ;!TEST 21/2/2024
CALL RESET_WG
POP AF
;POP AF ;!TEST 21/2/2024
POP HL
LD B,1
LD DE,0
;!TEST 21/2/2024
; LD DE,0
XOR A
LD D,A
LD E,A
MSD_cmd5:
LD A,0
LD (RD_WR_COM),A
; LD A,0
; A=0
LD (ZX_VARS.RD_WR_COM),A
EX AF,AF'
JR MSD_RWU1
MSD_cmd6:
LD A,255
LD (RD_WR_COM),A
; A=0
;LD A,255
DEC A
LD (ZX_VARS.RD_WR_COM),A
EX AF,AF'
JR MSD_RWU1
PREPARE1:
LD (MED_START),A
LD (CONT_BUF_ADR),HL
LD (ZX_VARS.MED_START),A
LD (ZX_VARS.CONT_BUF_ADR),HL
DI
IN A,(PAGE2)
IN A,(SLOT2)
LD C,A
LD A,SYS_PAGE
OUT (PAGE2),A
OUT (SLOT2),A
LD A,(DS_1440-4000H)
AND BIT_MASK_1440
LD A,(SYS_PAGE.DS_1440-4000H)
AND SYS_PAGE.DS_1440.IS_SET
SET 0,A
LD (DS_1440-4000H),A
LD (SYS_PAGE.DS_1440-4000H),A
LD A,C
OUT (PAGE2),A
OUT (SLOT2),A
EI
CALL Z,RES_1440
CALL NZ,SET_1440
CALL CALC_SECTOR
LD (CONT_SEC),DE
LD A,(RD_WR_COM)
LD (ZX_VARS.CONT_SEC),DE
LD A,(ZX_VARS.RD_WR_COM)
RET
MSD_RWU1:
@ -142,34 +152,34 @@ MSD_RWU1:
MSD_R_W_LOOP:
POP HL
POP BC
LD A,(MED_START)
LD A,(ZX_VARS.MED_START)
INC B
DEC B
LD DE,(CONT_SEC)
LD DE,(ZX_VARS.CONT_SEC)
RET Z
DEC B
PUSH BC
PUSH HL
LD (CONT_BUF_ADR),HL
LD A,(CONT_SEC)
LD (SEC_NUM),A
LD A,(CONT_TRK)
LD (ZX_VARS.CONT_BUF_ADR),HL
LD A,(ZX_VARS.CONT_SEC)
LD (ZX_VARS.SEC_NUM),A
LD A,(ZX_VARS.CONT_TRK)
CALL Global_trk
LD A,(RD_WR_COM)
LD A,(ZX_VARS.RD_WR_COM)
OR A
PUSH AF
CALL Z,MSD_3F0E
POP AF
CALL NZ,MSD_3F0A
DI
IN A,(PAGE2)
IN A,(SLOT2)
LD C,A
LD A,SYS_PAGE
OUT (PAGE2),A
LD DE,(MS_BPB+SEC_SIZE-4000h)
OUT (SLOT2),A
LD DE,(SYS_PAGE.MS_BPB+SEC_SIZE-#4000)
LD A,C
OUT (PAGE2),A
OUT (SLOT2),A
EI
POP HL
ADD HL,DE
@ -177,44 +187,44 @@ MSD_R_W_LOOP:
OR L
JR NZ,MSD_NO_PAGE
DI
IN A,(PAGE2)
IN A,(SLOT2)
LD C,A
LD A,SYS_PAGE
OUT (PAGE2),A
LD A,(MED_START)
LD HL,RAMD_FAT-4000H
OUT (SLOT2),A
LD A,(ZX_VARS.MED_START)
LD HL,SYS_PAGE.RAM_TABLE-#4000
LD L,A
LD L,(HL)
LD A,C
OUT (PAGE2),A
OUT (SLOT2),A
EI
LD A,L
LD HL,0C000H
LD (MED_START),A
LD HL,#C000
LD (ZX_VARS.MED_START),A
MSD_NO_PAGE:
LD (CONT_BUF_ADR),HL
LD (ZX_VARS.CONT_BUF_ADR),HL
PUSH HL
DI
IN A,(PAGE2)
IN A,(SLOT2)
LD C,A
LD A,SYS_PAGE
OUT (PAGE2),A
LD A,(DS_1440-4000H)
RES 0,A
LD (DS_1440-4000H),A
LD A,(MSD_SECS-4000h)
OUT (SLOT2),A
LD A,(SYS_PAGE.DS_1440-#4000)
AND %1111'1110
LD (SYS_PAGE.DS_1440-#4000),A
LD A,(SYS_PAGE.MSD_SECS-#4000)
LD L,A
LD A,C
OUT (PAGE2),A
OUT (SLOT2),A
EI
LD A,L
LD HL,CONT_SEC
LD HL,ZX_VARS.CONT_SEC
INC (HL)
CP (HL)
JP NZ,MSD_R_W_LOOP
LD (HL),0
LD HL,CONT_TRK
LD HL,ZX_VARS.CONT_TRK
INC (HL)
JP MSD_R_W_LOOP
;*****************************************
@ -226,30 +236,30 @@ MSD_3F0A:
MSD_3F0E:
LD A,128
MSD_3F10:
LD (COMAND_WG),A
LD (ZX_VARS.COMAND_WG),A
MSD_3F13:
LD D,5 ; —ˆ‘‹Ž <20>ŽŽ<E28099><EFBFBD>ˆ
MSD_3F15:
PUSH DE
PUSH IX
DI
IN A,(PAGE3)
IN A,(SLOT3)
EX AF,AF'
LD A,(MED_START)
OUT (PAGE3),A
LD A,(ZX_VARS.MED_START)
OUT (SLOT3),A
AND A
JR Z,NO_OFF_SCR
LD A,0C0H
LD A,#C0
OUT (RGADR),A
NO_OFF_SCR:
LD IX,MSD_RET_ADR
LD A,(SEC_NUM)
LD A,(ZX_VARS.SEC_NUM)
INC A
OUT (WG_SEC),A
LD HL,(CONT_BUF_ADR)
OUT (FDC_93.Sector),A
LD HL,(ZX_VARS.CONT_BUF_ADR)
LD C,127
LD A,(COMAND_WG)
OUT (WG_COM),A
LD A,(ZX_VARS.COMAND_WG)
OUT (FDC_93.Command),A
CP 160
JP Z,MSD_3FBA ; ‡€<E280A1>ˆœ …ŠŽ<E28099>
JP MSD_3FD5 ; —<E28099>ˆ…ŠŽ<E28099>
@ -257,16 +267,15 @@ MSD_RET_ADR:
LD A,0
OUT (RGADR),A
EX AF,AF'
OUT (PAGE3),A
OUT (SLOT3),A
POP IX
POP DE
EI
IN A,(WG_COM)
IN A,(FDC_93.Command)
LD B,A
AND 127
RET Z
MSD_3F39:
;MSD_3F39:
LD HL,READ_ONLY_MSG
AND '@'
JR NZ,MSD_3F4B
@ -281,7 +290,7 @@ MSD_3F48:
LD HL,DISK_ERROR_MSG
MSD_3F4B:
LD A,208
OUT (WG_COM),A
OUT (FDC_93.Command),A
LD A,B
AND 1
JP NZ,AUTO_3EE7
@ -292,11 +301,11 @@ MSD_3F4B:
RST PRINT_LN
LD HL,AUTO_2A13
RST PRINT_LN
IN A,(WG_TRK)
IN A,(FDC_93.Track)
CALL AUTO_1DA3
LD HL,AUTO_2A18
RST PRINT_LN
IN A,(WG_SEC)
IN A,(FDC_93.Sector)
CALL AUTO_1DA3
LD HL,AUTO_29FE
RST PRINT_LN
@ -310,10 +319,10 @@ MSD_3F7B:
JR NZ,MSD_3F7B
CALL exit_No_disk
LD A,7
LD (DOS_ERR_2),A
LD (ZX_VARS.DOS_ERR_2),A
JP AUTO_01D3
MSD_3F94:
LD A,(CONT_TRK)
LD A,(ZX_VARS.CONT_TRK)
CALL Global_trk
CALL pause_750ms
JP MSD_3F13
@ -323,7 +332,7 @@ MSD_3FA0:
CALL SWITCH_DT
PUSH DE
CALL AUTO_3D98 ; RESET_WG
LD A,(CONT_TRK)
LD A,(ZX_VARS.CONT_TRK)
CALL Global_trk ; <20>އˆˆŽ<CB86>ˆ<EFBFBD>Ž<E2809A>ˆ
POP DE
JP MSD_3F15
@ -331,25 +340,25 @@ MSD_3FA0:
SWITCH_DT:
DI
IN A,(PAGE2)
IN A,(SLOT2)
LD C,A
LD A,SYS_PAGE
OUT (PAGE2),A
LD A,(DS_1440-4000H)
OUT (SLOT2),A
LD A,(SYS_PAGE.DS_1440-4000H)
BIT 0,A
JR Z,NO_SW_DT
XOR BIT_MASK_1440
LD (DS_1440-4000H),A
AND BIT_MASK_1440
XOR SYS_PAGE.DS_1440.IS_SET
LD (SYS_PAGE.DS_1440-4000H),A
AND SYS_PAGE.DS_1440.IS_SET
LD A,C
OUT (PAGE2),A
OUT (SLOT2),A
EI
CALL Z,RES_1440
CALL NZ,SET_1440
RET
JR Z,RES_1440
JR SET_1440
;
NO_SW_DT:
LD A,C
OUT (PAGE2),A
OUT (SLOT2),A
EI
RET
@ -359,8 +368,8 @@ NO_SW_DT:
MSD_3FBA:
LD B,4
MSD_3FBC:
IN A,(P_DOS_FF)
AND 192
IN A,(FDC_93.DrvCTRL)
AND #C0
JR NZ,MSD_3FD1
INC DE
LD A,E
@ -370,8 +379,8 @@ MSD_3FBC:
MSD_RET_IX:
JP (IX)
MSD_3FCA:
IN A,(P_DOS_FF)
AND 192
IN A,(FDC_93.DrvCTRL)
AND #C0
JR Z,MSD_3FCA
JP M,MSD_RET_IX
MSD_3FD1:
@ -383,8 +392,8 @@ MSD_3FD1:
MSD_3FD5:
LD B,4
MSD_3FD7:
IN A,(P_DOS_FF)
AND 192
IN A,(FDC_93.DrvCTRL)
AND #C0
JR NZ,MSD_3FEC
INC DE
LD A,E
@ -394,8 +403,8 @@ MSD_3FD7:
MSD_RET_IX2:
JP (IX)
MSD_3FE5:
IN A,(P_DOS_FF)
AND 192
IN A,(FDC_93.DrvCTRL)
AND #C0
JR Z,MSD_3FE5
JP M,MSD_RET_IX2
MSD_3FEC:
@ -406,288 +415,283 @@ MSD_3FEC:
;****************************************
RES_1440:
LD A,01h
OUT (0BDh),A
LD A,FDD_Density.SET_720
OUT (FDD_Density),A
RET
SET_1440:
LD A,21h
OUT (0BDh),A
LD A,FDD_Density.SET_1440
OUT (FDD_Density),A
RET
READ_BPB:
CALL DISK_REDIR
CP 40H
JR NC,HDD_REDIR2
; LD C,BIOS.GET_DISK_REDIR
; CALL EXP_FNS
CP #40
JR NC,.HDD
CP 4
JP NC,ERROR_MSDOS
JP NC,ERROR_MSG
;
CALL SET_DISK
CALL MAIN_BPB
;
CALL .MAIN
RET NC
JP ERROR_MSDOS
HDD_REDIR2:
CALL MAIN_BPB
JP ERROR_MSG
;
.HDD: CALL .MAIN
RET NC
SPACIAL_BPB:
; old hdd
LD IX,0
LD DE,63
LD DE,63 ;!HARDCODE
LD A,SYS_PAGE
LD HL,MS_BPB
LD C,5
LD B,1
LD HL,SYS_PAGE.MS_BPB
;
LD BC,256*1 + TRDOS_ROM_CMD.READ
CALL MSD_R_W_UT
CALL BPB_PARAMS
;
CALL .PARAMS
RET NC
JP ERROR_MSDOS
MAIN_BPB:
LD IX,0
LD DE,0
LD A,SYS_PAGE
LD HL,MS_BPB
LD C,4
LD B,1
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
CALL BPB_PARAMS
RET
;CALL BPB_PARAMS
;RET
;
; LD C,18H
; LD A,(OPER_DISK)
; LD A,(ZX_VARS.OPER_DISK)
; CALL HD_CMD
; ;
; DI
; IN A,(PAGE3)
; IN A,(SLOT3)
; EX AF,AF'
; LD A,SYS_PAGE
; OUT (PAGE3),A
;
; LD A,(MS_BPB+S_P_T) ; Š®«¨ç¥á⢮ ᥪâ®à®¢ ­  â४
; OUT (SLOT3),A
; ;
; LD A,(SYS_PAGE.MS_BPB+S_P_T) ; Š®«¨ç¥á⢮ ᥪâ®à®¢ ­  â४
; LD L,A
;
; ;
; EX AF,AF'
; OUT (PAGE3),A
; OUT (SLOT3),A
; EI
;
; LD A,(OPER_DISK)
; ;
; LD A,(ZX_VARS.OPER_DISK)
; LD C,19H
; CALL HD_CMD
BPB_PARAMS:
.PARAMS:
DI
IN A,(PAGE3)
IN A,(SLOT3)
EX AF,AF'
LD A,SYS_PAGE
OUT (PAGE3),A
OUT (SLOT3),A
LD A,(MS_BPB+FORM_CODE)
CP 0F0H
JP C,ERROR_BPB
LD A,(SYS_PAGE.MS_BPB+FORM_CODE)
CP #F0
JP C,.ERROR_BPB
LD HL,MS_BPB+FAT_ID
LD DE,FAT1_MSG
LD DE,SYS_PAGE.MS_BPB+FAT_ID
LD HL,.FAT1_MSG
LD B,4
R_BPB_L1:
LD A,(DE)
.L1: LD A,(DE)
CP ' '
JR NZ,R_BPB_L11
JR NZ,.L11
INC DE
JR R_BPB_L1
R_BPB_L11:
CP (HL)
JR NZ,PC_DOS_BPB
JR .L1
.L11: CP (HL)
JR NZ,.PC_DOS
INC HL
INC DE
DJNZ R_BPB_L1
LD A,(HL)
DJNZ .L1
LD A,(DE)
CP '6'
LD HL,81FFH ; FAT16 ä« £
JR Z,BPB_FAT
LD HL,#81FF ; FAT16 ä« £
JR Z,.FAT
CP '2'
JP NZ,ERROR_BPB
JP NZ,.ERROR_BPB
PC_DOS_BPB:
LD HL,01FFH ; FAT12 ä« £
BPB_FAT:
LD (FAT_FLAG),HL
.PC_DOS:
LD HL,#01FF ; FAT12 ä« £
.FAT: LD (SYS_PAGE.FAT_FLAG),HL
LD A,(MS_BPB+S_P_T) ; Š®«¨ç¥á⢮ ᥪâ®à®¢ ­  â४
LD (MSD_SECS),A
LD A,(SYS_PAGE.MS_BPB+S_P_T) ; Š®«¨ç¥á⢮ ᥪâ®à®¢ ­  â४
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 HL,0 ; ¢ëç¨á«¨âì ­ ç «ì­ë© ᥪâ®à FAT
JR Z,NO_LD_SPECIAL
LD IX,(MS_BPB+SPECIAL_SECS)
LD HL,(MS_BPB+SPECIAL_SECS+2)
NO_LD_SPECIAL:
LD IX,(SYS_PAGE.MS_BPB+SPECIAL_SECS)
LD HL,(SYS_PAGE.MS_BPB+SPECIAL_SECS+2)
;.NO_LD_SPECIAL:
LD BC,0
LD DE,(MS_BPB+RESERV_SECS)
LD DE,(SYS_PAGE.MS_BPB+RESERV_SECS)
ADD IX,DE
ADC HL,BC
LD (MSD_FAT_SEC),IX ; ­ ç «ì­ë© ᥪâ®à FAT
LD (MSD_FAT_SEC2),HL ; ­ ç «ì­ë© ᥪâ®à FAT
LD (SYS_PAGE.MSD_FAT_SEC),IX ; ­ ç «ì­ë© ᥪâ®à FAT
LD (SYS_PAGE.MSD_FAT_SEC2),HL ; ­ ç «ì­ë© ᥪâ®à FAT
LD DE,(MS_BPB+S_P_F) ; ç¨á«® ᥪâ®à®¢ ¢ FAT
LD BC,0
LD DE,(SYS_PAGE.MS_BPB+S_P_F) ; ç¨á«® ᥪâ®à®¢ ¢ FAT
;LD BC,0
LD A,(MS_BPB+FATS_NUM) ; ª®«¨ç¥á⢮ FATs
NEXT_ADD:
LD A,(SYS_PAGE.MS_BPB+FATS_NUM) ; ª®«¨ç¥á⢮ FATs
.NEXT_ADD:
ADD IX,DE
ADC HL,BC
DEC A
JR NZ,NEXT_ADD
JR NZ,.NEXT_ADD
LD (MSD_CAT_SEC),IX ; ­ ç «ì­ë© ᥪâ®à DIR
LD (MSD_CAT_SEC2),HL ; ­ ç «ì­ë© ᥪâ®à DIR
LD (SYS_PAGE.MSD_CAT_SEC),IX ; ­ ç «ì­ë© ᥪâ®à 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 B
RLA
RL C
RL B
RLA
RL C
RL B
LD C,B
RLA
LD C,A
LD B,0 ; BC - ç¨á«® ä ©«®¢ëå § ¯¨á¥© ¢ ᥪâ®à¥
LD A,C
LD (F_P_S),A
LD (SYS_PAGE.FilesPerSector),A
LD DE,(MS_BPB+FLS_NUM) ; —¨á«® ä ©«®¢ëå § ¯¨á¥©
LD DE,(SYS_PAGE.MS_BPB+FLS_NUM) ; —¨á«® ä ©«®¢ëå § ¯¨á¥©
EX DE,HL
DEC HL
XOR A
NEXT_ADD2:
.NEXT_ADD2:
INC A
JR Z,ERROR_BPB
JR Z,.ERROR_BPB
SBC HL,BC
JR NC,NEXT_ADD2
JR NC,.NEXT_ADD2
EX DE,HL
LD E,A ; A - ç¨á«® ᥪâ®à®¢ ¢ DIR
LD D,0
LD BC,0
LD (S_P_C),A
LD D,B
LD (SYS_PAGE.SectorsPerCluster),A
ADD IX,DE ; <20> ç «® DATA area
ADC HL,BC
LD (MSD_DAT_SEC),IX
LD (MSD_DAT_SEC2),HL
LD (SYS_PAGE.MSD_DAT_SEC),IX
LD (SYS_PAGE.MSD_DAT_SEC2),HL
LD BC,(MS_BPB+SEC_SIZE) ; <20> §¬¥à ᥪâ®à 
LD HL,0
LD A,(MS_BPB+CLAST_SIZE)
LD BC,(SYS_PAGE.MS_BPB+SEC_SIZE) ; <20> §¬¥à ᥪâ®à 
; D = 0
LD H,D
LD L,D
LD E,D
LD A,(SYS_PAGE.MS_BPB+CLAST_SIZE)
LD D,A
LD A,0
NEXT_ADD3:
XOR A
.NEXT_ADD3:
ADD HL,BC ; ‚ëç¨á«¥­¨¥ ¤«¨­ë ª« áâ¥à 
ADC A,0
ADC A,E
DEC D
JR NZ,NEXT_ADD3
JR NZ,.NEXT_ADD3
LD (CLASTER_LEN),HL
LD B,0
LD (SYS_PAGE.CLUSTER_LEN),HL
LD B,E
LD C,A
LD (CLASTER_LEN2),BC
LD HL,0
LD BC,(MS_BPB+S_P_T)
LD A,(MS_BPB+H_P_S)
BPB_L1: ; ‚›—ˆ‘‹ˆ’œ ŠŽ‹ˆ—…‘’‚Ž …ŠŽ<E28099>Ž <20>ˆˆ<E280B9><EFBFBD>
LD (SYS_PAGE.CLUSTER_LEN2),BC
;
; DE=0
EX DE,HL ;LD HL,0
LD BC,(SYS_PAGE.MS_BPB+S_P_T)
LD A,(SYS_PAGE.MS_BPB+H_P_S)
.BPB_L1:; ‚›—ˆ‘‹ˆ’œ ŠŽ‹ˆ—…‘’‚Ž …ŠŽ<E28099>Ž <20>ˆˆ<E280B9><EFBFBD>
ADD HL,BC
DEC A
JR NZ,BPB_L1
LD (S_X_H),HL
JR NZ,.BPB_L1
LD (SYS_PAGE.S_X_H),HL
;
EX AF,AF'
OUT (PAGE3),A
EI
OUT (SLOT3),A
CALL RESTORE_CURRENT_DIR ; [x] new tr-hdd
AND A
EI
RET
ERROR_BPB:
.ERROR_BPB:
EX AF,AF'
OUT (PAGE3),A
OUT (SLOT3),A
SCF
EI
RET
ERROR_MSDOS:
LD HL,MSG_3
JP AUTO_03E4
FAT1_MSG: DB 'FAT1'
;
; .ERROR_MSDOS:
; LD HL,MSG_3
; JP AUTO_03E4
;
.FAT1_MSG:
DB 'FAT1'
;********************************************
READ_NEXT_DIR:
DI
IN A,(PAGE3)
IN A,(SLOT3)
EX AF,AF'
LD A,SYS_PAGE
OUT (PAGE3),A
LD DE,(MSD_CONT_SEC)
LD IX,(MSD_CONT_SEC2)
OUT (SLOT3),A
LD DE,(SYS_PAGE.MSD_CONT_SEC)
LD IX,(SYS_PAGE.MSD_CONT_SEC2)
JR READ_NEXT2
;********************************************
READ_1ST_DIR:
DI
IN A,(PAGE3)
IN A,(SLOT3)
EX AF,AF'
LD A,SYS_PAGE
OUT (PAGE3),A
LD IX,(MSD_CAT_SEC2) ;
LD DE,(MSD_CAT_SEC) ; <20>€—€œ<E280B9>…ŠŽ<E28099> Š€’€‹Žƒ€
LD (MSD_CONT_SEC),DE
LD (MSD_CONT_SEC2),IX
LD A,(S_P_C) ; …ŠŽ<E28099>Ž Š€’€‹Žƒ…
LD (COUNT_SEC),A
OUT (SLOT3),A
LD IX,(SYS_PAGE.MSD_CAT_SEC2)
LD DE,(SYS_PAGE.MSD_CAT_SEC) ; <20>€—€œ<E280B9>…ŠŽ<E28099> Š€’€‹Žƒ€
LD (SYS_PAGE.MSD_CONT_SEC),DE
LD (SYS_PAGE.MSD_CONT_SEC2),IX
LD A,(SYS_PAGE.SectorsPerCluster) ; …ŠŽ<E28099>Ž Š€’€‹Žƒ…
LD (SYS_PAGE.COUNT_SEC),A
READ_NEXT2:
EX AF,AF'
OUT (PAGE3),A
OUT (SLOT3),A
; RET_PAGE3
EI
LD HL,MS_DIR
LD HL,SYS_PAGE.MS_DIR
LD A,SYS_PAGE
LD B,1
LD C,5
LD BC,256*1 + TRDOS_ROM_CMD.READ
CALL MSD_R_W_UT
DI
IN A,(PAGE3)
IN A,(SLOT3)
EX AF,AF'
LD A,SYS_PAGE
OUT (PAGE3),A
OUT (SLOT3),A
LD DE,(MSD_CONT_SEC)
LD DE,(SYS_PAGE.MSD_CONT_SEC)
INC DE
LD (MSD_CONT_SEC),DE
LD (SYS_PAGE.MSD_CONT_SEC),DE
LD A,D
OR E
JR NZ,READ_NEXT3
LD IX,(MSD_CONT_SEC2)
LD IX,(SYS_PAGE.MSD_CONT_SEC2)
INC IX
LD (MSD_CONT_SEC2),IX
LD (SYS_PAGE.MSD_CONT_SEC2),IX
READ_NEXT3:
LD A,(F_P_S) ; ”€‰‹Ž‚ …ŠŽ<E28099>
LD (COUNT_FL),A
LD A,(SYS_PAGE.FilesPerSector) ; ”€‰‹Ž‚ …ŠŽ<E28099>
LD (SYS_PAGE.COUNT_FL),A
EX AF,AF'
OUT (PAGE3),A
OUT (SLOT3),A
; RET_PAGE3
EI
LD HL,MS_DIR
LD HL,SYS_PAGE.MS_DIR
AND A
RET
@ -704,11 +708,11 @@ CALC_SECT_L1:
PUSH BC
EX DE,HL
DI
IN A,(PAGE3)
IN A,(SLOT3)
EX AF,AF'
LD A,SYS_PAGE
OUT (PAGE3),A
LD BC,(MS_BPB+S_P_T)
OUT (SLOT3),A
LD BC,(SYS_PAGE.MS_BPB+S_P_T)
XOR A
LOOP_TRK:
SBC HL,BC
@ -716,14 +720,14 @@ LOOP_TRK:
INC A
JR NZ,LOOP_TRK
POP BC
JP ERROR_BPB
JP READ_BPB.ERROR_BPB
SEC_ENDER:
ADD HL,BC
LD H,A ; <>…Š
; LD L,L ; …ŠŽ<E28099>
EX AF,AF'
OUT (PAGE3),A
OUT (SLOT3),A
EI
EX DE,HL
POP BC
@ -732,8 +736,8 @@ SEC_ENDER:
;************************************************
REDIR_LINE_CODING:
LD (MED_START),HL
LD HL,(DOS_CH_ADR)
LD (ZX_VARS.MED_START),HL
LD HL,(ZX_VARS.DOS_CH_ADR)
LD A,(HL)
CP '/'
RET Z
@ -751,18 +755,19 @@ PRINT_HEX_SYM:
PUSH HL
PUSH DE
PUSH BC
AND 0FH
AND #0F
ADD A,'0'
CP '9'+1
JR C,NO_ADD
ADD A,7
NO_ADD:
RST 10H
RST #10
POP BC
POP DE
POP HL
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:
PUSH HL
;PUSH HL
PUSH BC
LD A,(OPER_DISK)
AND 3
LD C,0CFH
LD C,BIOS.GET_DISK_REDIR
CALL EXP_FNS
EI
POP BC
POP HL
;POP HL
RET
R_W_REDIR:
@ -21,7 +24,7 @@ ERROR_DISK:
RECALL_1E70:
CALL RES_1440
LD A,(RD_WR_COM)
LD A,(ZX_VARS.RD_WR_COM)
PUSH BC
PUSH HL
CALL READ_TRK_NUM
@ -35,27 +38,211 @@ RECALL_RAMD:
JR Z,ERROR_DISK
JP READ_WRITE_RAMD
RECALL_MSD:
JR ERROR_DISK ; ¯¥à¥å®¤ ­  ®è¨¡ªã ¤¨áª 
; RECALL_MSD:
; JR ERROR_DISK ; ¯¥à¥å®¤ ­  ®è¨¡ªã ¤¨áª 
TEST_RAMD:
PUSH HL
LD C,0CEH
LD C,BIOS.GET_RAMD_ST
CALL EXP_FNS
;!TEST 06/01/2024 á®å࠭塞 á®áâ®ï­¨¥ ¯à¥à뢠­¨© § ç¥¬-â®
EI
;
POP HL
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
; SUB 4
@ -68,14 +255,14 @@ READ_WRITE_RAMD:
; LD HL,RAMD_KEYS
; ADD A,L
; LD L,A
; IN A,(PAGE3)
; IN A,(SLOT3)
; LD C,A
; LD A,SYS_PAGE
; DI
; OUT (PAGE3),A
; OUT (SLOT3),A
; LD L,(HL)
; LD A,C
; OUT (PAGE3),A
; OUT (SLOT3),A
; EI
; LD A,L ; 1-st block
; POP HL
@ -92,7 +279,7 @@ READ_WRITE_RAMD:
; PUSH DE
; PUSH BC
;
; LD DE,(CONT_SEC)
; LD DE,(ZX_VARS.CONT_SEC)
; LD A,D ; ”ˆ‡ˆ—…‘Šˆ… -> ‹Žƒˆ—…‘Šˆ… !!!
; RRCA
; RRCA
@ -106,7 +293,7 @@ READ_WRITE_RAMD:
; AND 0FH
; LD D,A
;
; LD A,(RD_WR_COM)
; LD A,(ZX_VARS.RD_WR_COM)
; AND A
; JR Z,RAMD_READ
; PUSH AF
@ -127,7 +314,7 @@ READ_WRITE_RAMD:
; POP HL
; POP AF
; OUT (RGADR),A
; LD DE,(CONT_SEC)
; LD DE,(ZX_VARS.CONT_SEC)
;
; LD A,B
;
@ -153,328 +340,259 @@ READ_WRITE_RAMD:
;
; LD B,0
;
; LD (CONT_SEC),DE
; LD (ZX_VARS.CONT_SEC),DE
; AND A
; 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
WD_WR_RAMD_LOOP:
.WD_WR_RAMD_LOOP:
DEC B
RET Z
PUSH BC
PUSH HL
CALL RD_WR_1SEC
CALL .RD_WR_1SEC
POP HL
CALL RAMD_NEXT_SEC
CALL .RAMD_NEXT_SEC
POP BC
JR WD_WR_RAMD_LOOP
JR .WD_WR_RAMD_LOOP
RAMD_NEXT_SEC:
.RAMD_NEXT_SEC:
PUSH HL
LD HL,CONT_SEC
LD HL,ZX_VARS.CONT_SEC
LD A,16
INC (HL)
CP (HL)
JR NZ,RAMD_NEXT_1
JR NZ,.RAMD_NEXT_1
LD (HL),0
INC HL
INC (HL)
RAMD_NEXT_1:
.RAMD_NEXT_1:
POP HL
LD BC,0100h
LD BC,#100
ADD HL,BC
RET
RD_WR_1SEC:
LD DE,(CONT_SEC)
CALL PAGE_CALC2
.RD_WR_1SEC:
LD DE,(ZX_VARS.CONT_SEC)
CALL .PAGE_CALC2
DI
LD A,(RD_WR_COM)
AND 0C0H
LD A,(ZX_VARS.RD_WR_COM)
AND #C0
OUT (RGADR),A
LD A,H
CP 0A0H
LD A,(RD_WR_COM)
CP #A0
LD A,(ZX_VARS.RD_WR_COM)
LD E,0
LD D,C
SET 6,D
JR C,RD_WR_C000
RD_WR_4000:
JR C,.RD_WR_C000
;RD_WR_4000:
RES 7,D ; DE -  ¤à¥á ¤ ­­ëå RAMD
LD C,PAGE1
LD C,SLOT1
EX AF,AF'
IN A,(C)
EX AF,AF'
OUT (C),B
;****** <20><EFBFBD>…Œ…™…<E284A2>ˆ… „€<E2809E><E282AC> *****
LD BC,100H
; <20><EFBFBD>…Œ…™…<E284A2>ˆ… „€<E2809E><E282AC>
LD BC,#100
AND A
JR NZ,MOVE_NOT_EX3
JR NZ,.MOVE_NOT_EX3
EX DE,HL
MOVE_NOT_EX3:
.MOVE_NOT_EX3:
LDIR ; à ¡®â âì §¤¥áì ¦¥, ¢ TR-DOS !!!
AND A
JR NZ,MOVE_NOT_EX4
JR NZ,.MOVE_NOT_EX4
EX DE,HL
MOVE_NOT_EX4:
;*******************************
.MOVE_NOT_EX4:
;*******************
EX AF,AF'
OUT (PAGE1),A
OUT (SLOT1),A
EX AF,AF'
; RET_PAGE1
MOVE_RET:
.MOVE_RET:
LD A,0
OUT (RGADR),A
EI
RET
RD_WR_C000:
;
.RD_WR_C000:
SET 7,D
LD C,PAGE3
LD C,SLOT3
EX AF,AF'
IN A,(C)
EX AF,AF'
OUT (C),B
;****** <20><EFBFBD>…Œ…™…<E284A2>ˆ… „€<E2809E><E282AC> *****
LD BC,100H
; <20><EFBFBD>…Œ…™…<E284A2>ˆ… „€<E2809E><E282AC>
LD BC,#100
AND A
JR NZ,MOVE_NOT_EX1
JR NZ,.MOVE_NOT_EX1
EX DE,HL
MOVE_NOT_EX1:
.MOVE_NOT_EX1:
LDIR ; à ¡®â âì §¤¥áì ¦¥, ¢ TR-DOS !!!
AND A
JR NZ,MOVE_NOT_EX2
JR NZ,.MOVE_NOT_EX2
EX DE,HL
MOVE_NOT_EX2:
;*******************************
;********************
.MOVE_NOT_EX2:
EX AF,AF'
OUT (PAGE3),A
OUT (SLOT3),A
EX AF,AF'
; RET_PAGE3
JR MOVE_RET
;**********************************************
PAGE_CALC2:
JR .MOVE_RET
;
.PAGE_CALC2:
LD A,D ; ”ˆ‡ˆ—…‘Šˆ… -> ‹Žƒˆ—…‘Šˆ… !!!
RRCA
RRCA
RRCA
RRCA
LD D,A
AND 0F0H
AND #F0
OR E
LD E,A
LD A,D
AND 0FH
AND #0F
LD D,A
PUSH HL
LD C,98h
LD C,BIOS.RAMD_CALC_PAGE
CALL DISK_REDIR
SUB 4
CALL EXP_FNS ; ¢ëç¨á«¥­¨¥  ¤à¥á  ¨ áâà ­¨æë RAM-Disk
EI
;!TEST 06/01/2024 á®å࠭塞 á®áâ®ï­¨¥ ¯à¥à뢠­¨© § ç¥¬-â®
;EI
;
LD B,A
LD C,H
POP HL
EI
;EI
RET NC
JP ERROR_DISK
;********************************************
ELSE
;*********************************************
RAMD_X12: ; ¯à®¢¥àª  ¤¨áª 
LD (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,(OPER_DISK)
JP AUTO_3DCE
;*************************************
RAMD_X14: ; FORMATING
CALL get_disk_type
PUSH AF
;********************************************
; ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
; º RD/WR SECTOR º\
; º HL - BUFFER º\
; º B - Number of sectors º\
; º CONT_SEC - SEC/TRK FOR READ/WRITE º\
; º RD_WR_COM - ª®¬ ­¤  ç⥭¨¥/§ ¯¨áì º\
; º 0 - ç⥭¨¥, 255 - § ¯¨áì º\
; ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ\
; \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
INC B
DEC B
RET Z
;
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,(MED_START+1)
CP 14H
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,28H ; à §¬¥à 640K
CALL DISK_REDIR
SUB 4
CALL GET_RAM_BLK ; „…<E280B9>ˆ<20>€ŒŸˆ
; LD C,A ; Š‹ž— RAM-Disk
Q_FORM_1:
LD HL,BUFER ; CLEAR DISK BUFER
LD DE,BUFER+1
LD BC,0FFh
LD (HL),0
LDIR
LD DE,0
RAMD_F_LOOP:
LD HL,BUFER
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
;*********************************************************
GET_RMD_A:
GET_RAM_BLK: ; B - —ˆ‘‹Ž <><EFBFBD>“…Œ<20>ŽŠŽ, A - Š‹ž— RAM-Disk
LD C,92h
CALL EXP_FNS ; A,L - Š‹ž— RAM-Disk - ­®¬¥à ¯¥à¢®£® ¡«®ª 
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,(OPER_DISK)
LD B,A
LD C,0CCH
; á®å࠭塞 ª®«-¢® ᥪâ®à®¢ ¤«ï ç⥭¨ï
LD C,B
; ­ ªàã稢 ¥¬ áçñâ稪 r/w ᥪâ®à®¢
LD HL,(ZX_VARS.CONT_SEC)
LD D,H
LD E,L
;!TODO ¯¥à¥¤¥« âì íâã â㯮áâì ­  ¬ â¥¬ â¨ªã
LD A,16
.loop: INC L
CP L
JR NZ,.skip
INC H
LD L,0
.skip: DJNZ .loop
;
; á®å࠭塞 ­ ªàã祭­ë© áçñâ稪
LD (ZX_VARS.CONT_SEC),HL
; ”ˆ‡ˆ—…‘Šˆ‰ …ŠŽ<E28099> -> ‹Žƒˆ—…‘Šˆ‰
LD A,D
RRCA
RRCA
RRCA
RRCA
LD D,A
AND #F0
OR E
LD E,A
LD A,D
AND #0F
LD D,A
; ¢®ááâ ­ ¢«¨¢ ¥¬ ª®«-¢® ᥪâ®à®¢ ¤«ï ç⥭¨ï
LD B,C
;Get RAM Block ID
LD A,(ZX_VARS.OPER_DISK)
AND 3
LD C,BIOS.GET_DRV_ST ; ­¥ 㡨¢ ¥â DE ¨ B
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
JP C,.ERROR
SUB 4
LD C,BIOS.GET_RAMD_ST ; ­¥ 㡨¢ ¥â DE ¨ B
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
JP C,.ERROR
; A = RAM Block ID
EX AF,AF'
;
POP HL
; Get command r/w
LD A,(ZX_VARS.RD_WR_COM)
EX AF,AF'
LD C,BIOS.BLK_RD_WR
CALL EXP_FNS
EI
; HL =  ¤à¥á ¡ãä¥à  ¤«ï á«¥¤ãî饣® ᥪâ®à 
POP BC
JP C,AUTO_3EE7
LD B,0
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
.ERROR: POP HL
POP BC
JP AUTO_3EE7 ;Disk error
; ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
; º RD/WR SECTOR º\
; º HL - BUFER º\
; º DE - ABS sector ¢ 256b ¡«®ª å º\
; º B - ç¨á«® ¤ ­­ëå ¢ 256b ¡«®ª å º\
; º A - block RAM º\
; º A' - ª®¬ ­¤  ç⥭¨¥/§ ¯¨áì/ç⥭¨¥ ROM Disk º\
; º 0 - read, 255 - write, 70 - read ROM DISK º\
; º ** NOT USED TR-DOS VARS ** º\
; ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ\
; \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
; 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

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

View File

@ -708,14 +708,14 @@ INIT_SYS_ALL:
LD (HL),0
LDIR
LD DE,ZG_ADRESS
LD DE,ZG_ADDRESS
LD (WIN_ZG-4000h),DE
LD HL,L_SCORPION
LD (CONFIG_ALL-4000h),HL
LD DE,CNF_0
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 BC,0FFH
LD (HL),0

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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