This commit is contained in:
Anatoliy Belyanskiy 2023-06-15 17:23:24 +10:00
parent ecd6c7f5fd
commit 8037fd59ce
10 changed files with 1066 additions and 0 deletions

4
.gitmodules vendored Normal file
View File

@ -0,0 +1,4 @@
[submodule "Shared_Includes"]
branch = main
path = Shared_Includes
url = https://github.com/Tolik-Trek/Shared_Includes.git

71
DOS_EQU.ASM Normal file
View File

@ -0,0 +1,71 @@
VERSION EQU #00
CHDISK EQU #01
CURDISK EQU #02
DSKINFO EQU #03
G_ENTRY EQU #04
BOOTDSK EQU #09
CREATE EQU #0A
CREAT_N EQU #0B
ERASE EQU #0D
DELETE EQU #0E
MOVE EQU #0F
RENAME EQU #10
OPEN EQU #11
CLOSE EQU #12
READ EQU #13
WRITE EQU #14
MOVE_FP EQU #15
ATTRIB EQU #16
GET_D_T EQU #17
PUT_D_T EQU #18
F_FIRST EQU #19
F_NEXT EQU #1A
MKDIR EQU #1B
RMDIR EQU #1C
CHDIR EQU #1D
CURDIR EQU #1E
SYSTIME EQU #21
SETTIME EQU #22
WAITKEY EQU #30
SCANKEY EQU #31
ECHOKEY EQU #32
CTRLKEY EQU #33
EDIT EQU #34
K_CLEAR EQU #35
SETWIN EQU #38
SETWIN1 EQU #39
SETWIN2 EQU #3A
SETWIN3 EQU #3B
FREEMEM EQU #3C
GETMEM EQU #3D
RETMEM EQU #3E
SETMEM EQU #3F
EXEC EQU #40
EXIT EQU #41
WAIT EQU #42
GSWITCH EQU #43
DOSNAME EQU #44
SETVMOD EQU #50
GETVMOD EQU #51
LOCATE EQU #52
CURSOR EQU #53
SELPAGE EQU #54
SCROLL EQU #55
CLEAR EQU #56
RDCHAR EQU #57
WRCHAR EQU #58
WINCOPY EQU #59
WINREST EQU #5A
PUTCHAR EQU #5B
PCHARS EQU #5C
RES_PRN EQU #5D
CTRLPRN EQU #5E
PRINT EQU #5F

13
Original/A.BAT Normal file
View File

@ -0,0 +1,13 @@
@echo Assembling . . .
@c:\asm\as80 -i -x3 -l -n ramdrive.asm
@if errorlevel=3 goto error
@goto good
:error
@echo -----------------------------------------------------------------------
@echo ³ ERROR ERROR ³
@echo -----------------------------------------------------------------------
@goto quit
:good
@del ramdrive.exe
@ren ramdrive.bin ramdrive.exe
:quit

25
Original/CREATE.BAT Normal file
View File

@ -0,0 +1,25 @@
@if %1x == x goto usage
@echo @echo Assembling . . . > a.bat
@echo @c:\asm\as80 -i -x3 -l -n %1.asm >> a.bat
@echo @if errorlevel=3 goto error >> a.bat
@echo @goto good >> a.bat
@echo :error >> a.bat
@echo @echo ----------------------------------------------------------------------- >> a.bat
@echo @echo ³ ERROR ERROR ³ >> a.bat
@echo @echo ----------------------------------------------------------------------- >> a.bat
@echo @goto quit >> a.bat
@echo :good >> a.bat
@echo @del %1.exe >> a.bat
@echo @ren %1.bin %1.exe >> a.bat
@echo :quit >> a.bat
@echo ÿ
@echo Project has been created.
@echo ÿ
@goto quit
:usage
@echo ÿ
@echo Usage:
@echo ÿ
@echo CREATE.BAT PROJECT_NAME
@echo ÿ
:quit

71
Original/DOS_EQU.ASM Normal file
View File

@ -0,0 +1,71 @@
VERSION EQU #00
CHDISK EQU #01
CURDISK EQU #02
DSKINFO EQU #03
G_ENTRY EQU #04
BOOTDSK EQU #09
CREATE EQU #0A
CREAT_N EQU #0B
ERASE EQU #0D
DELETE EQU #0E
MOVE EQU #0F
RENAME EQU #10
OPEN EQU #11
CLOSE EQU #12
READ EQU #13
WRITE EQU #14
MOVE_FP EQU #15
ATTRIB EQU #16
GET_D_T EQU #17
PUT_D_T EQU #18
F_FIRST EQU #19
F_NEXT EQU #1A
MKDIR EQU #1B
RMDIR EQU #1C
CHDIR EQU #1D
CURDIR EQU #1E
SYSTIME EQU #21
SETTIME EQU #22
WAITKEY EQU #30
SCANKEY EQU #31
ECHOKEY EQU #32
CTRLKEY EQU #33
EDIT EQU #34
K_CLEAR EQU #35
SETWIN EQU #38
SETWIN1 EQU #39
SETWIN2 EQU #3A
SETWIN3 EQU #3B
FREEMEM EQU #3C
GETMEM EQU #3D
RETMEM EQU #3E
SETMEM EQU #3F
EXEC EQU #40
EXIT EQU #41
WAIT EQU #42
GSWITCH EQU #43
DOSNAME EQU #44
SETVMOD EQU #50
GETVMOD EQU #51
LOCATE EQU #52
CURSOR EQU #53
SELPAGE EQU #54
SCROLL EQU #55
CLEAR EQU #56
RDCHAR EQU #57
WRCHAR EQU #58
WINCOPY EQU #59
WINREST EQU #5A
PUTCHAR EQU #5B
PCHARS EQU #5C
RES_PRN EQU #5D
CTRLPRN EQU #5E
PRINT EQU #5F

260
Original/RAMDRIVE.ASM Normal file
View File

@ -0,0 +1,260 @@
ORG #8100-512
INCLUDE "DOS_EQU.ASM"
PAGE3 EQU #E2
CR EQU 13
LF EQU 10
EN EQU 00
DB "EXE" ;EXE ID
DB #00 ;EXE VERSION
DW #0200 ;CODE OFFSET LOW
DW #0000 ;CODE OFFSET HIGH
DW #0000 ;END-BEG ;PRIMARY LOADER
DW #0000 ;
DW #0000 ;RESERVED
DW #0000 ;
DW #8100 ;LOAD ADDRESS
DW #8100 ;START ADDRESS
DW #BFFF ;STACK ADDRESS
DS 490
BEG LD HL,MS0
LD C,PCHARS
RST #10
DI
LD BC,#00CE
NEXTRD LD A,B
PUSH BC
RST #08
POP BC
OR A
JR Z,FNDRD
INC B
LD A,B
CP #10
JR NZ,NEXTRD
JP NORAMD
FNDRD PUSH BC
LD C,#C2 ;GET MEMORY
LD B,45
RST #08
POP BC
JP C,NOMEM
PUSH AF
LD C,A
LD A,B
LD B,C
LD C,#C9
RST #08
POP AF
LD C,PAGE3
IN B,(C)
OUT (C),A
PUSH BC
LD HL,#C000
LD DE,#C001
LD BC,#3FFF
LD (HL),L
LDIR
LD HL,BPB
LD DE,#C000
LD BC,BPBEND-BPB
LDIR
LD HL,#AA55
LD (#C200-2),HL
LD HL,#C200
LD (HL),#F9
INC L
LD (HL),#FF
INC L
LD (HL),#FF
INC L
LD (HL),#00
LD HL,#C200+(512*5)
LD (HL),#F9
INC L
LD (HL),#FF
INC L
LD (HL),#FF
INC L
LD (HL),#00
POP BC
OUT (C),B
LD HL,MS1
LD C,PCHARS
RST #10
LD B,#00
EXITT LD C,#41
RST #10
DI
HALT
NORAMD LD HL,MS2
LD C,PCHARS
RST #10
LD B,1
JP EXITT
NOMEM LD HL,MS3
LD C,PCHARS
RST #10
LD B,1
JP EXITT
;
; RAMDRIVE 720
; RAMDRIVE E:720
; 0 1 2 3 4 5 6 7 8 9 A B C D E F
;
;GETPARM LD A,#FF
; LD (RDRIVE),A
; LD (RSIZE),A
; LD D,XH
; LD E,XL
; EX DE,HL
; LD E,(HL)
; INC HL
; LD D,0
; EX DE,HL
; ADD HL,DE
; LD (HL),0
;NEXTPRM EX DE,HL
; LD DE,BUFFER
; LD C,GSWITCH
; RST #10
; EX DE,HL ;SAVE HL IN DE
; LD HL,BUFFER
; LD A,(HL)
; INC HL
; OR A
; RET Z
; CP "/"
; JR NZ,NOSLASH
; LD A,(HL)
; INC HL
; CALL UPPER
; CALL ATOHEX
; JP C,ILLEGAL
; LD (RDRIVE),A
; LD A,(HL)
; OR A
; JR Z,NEXTPRM
; JP ILLEGAL
;
;NOSLASH CP ":"
; JP NZ,NOSIZER
; LD IX,0
;NDIG LD C,XL
; LD B,XH
; ADD IX,IX ;X2
; ADD IX,IX ;X4
; ADD IX,BC ;X5
; ADD IX,IX ;X10
; JP C,ILLEGAL
; LD A,(HL)
; OR A
; JR Z,ENDSZ
; CALL UPPER
; CP "K"
; JR Z,ENDSZ
; CALL ATODEC
; LD C,A
; LD B,0
; ADD IX,BC
; JR NDIG
;ENDSZ LD A,XL
; LD C,A
; LD B,XH
; SRL B
; RR C
; SRL B
; RR C
; SRL B
; RR C
; SRL B
; RR C
; AND #0F
; JR Z,L101
; INC BC
;L101 LD A,B
; OR A
; JP NZ,ILLEGAL
; LD A,C
; LD (RSIZE),A
; JP NEXTPRM
;NOSIZER JP ILLEGAL
;ATODEC CP "0"
; RET C
; CP ":"
; CCF
; RET C
; SUB "0"
; RET
;ATOHEX CP "0"
; RET C
; CP ":"
; JR NC,TRYHEX
; SUB "0"
; AND A
; RET
;TRYHEX CALL UPPER
; CP "A"
; RET C
; CP "G"
; CCF
; RET C
; SUB "A"
; RET
;UPPER CP "a"
; RET C
; CP "z"+1
; RET NC
; SUB #20
; RET
MS0 DB "RAMDRIVE DRIVER (C) 1999 PETERS Plus ltd.",CR,LF,CR,LF,EN
MS1 DB "RAM DISK created",CR,LF,EN
MS2 DB "No free RAM-DISK",CR,LF,EN
MS3 DB "No free memory, for create RAM-DISK",CR,LF,EN
MS4 DB "Illegal parametr",CR,LF,EN
MS5 DB "Usage : RAMDRIVE [/drive 0...F] [:size]",CR,LF,EN
; Area for boot sector [512Bytes]
BPB DB #EB,#3C,#90 ; +00 JMP
DB "DOS_X.XX" ; +03 DOS NAME
; Block Parameters BIOS
DW #0200 ; +0B BYTE PER SECTOR
DB 1 ; +0D SECTORS PER CLUSTER
DW 1 ; +0E RESERVE SECTORS
DB 2 ; 1 ; +10 AMOUNT FATS
DW 112 ; +11 FILES IN DIRECTORY
DW 1440 ; +13 ALL SECTORS ON DISK
DB #FA ; +15 ID FORMAT
DW 5 ; +16 SIZE FAT IN SECTORS
DW 9 ; +18 SECTOR PER TRACK
DW 2 ; +1A AMOUNT SIDES
DW 0,0 ; +1C HIDDEN SECTORS
DW 0,0 ; +20 ALL SECTORS BIG
DW #0080 ; +24 PHISICAL DRIVE NUMBER
DB #29 ; +26 EXTENDED RECORD SIGNATURE
DW #104B,#D765 ; +27 SERIAL VOLUME NUMBER
DB "NO NAME ";+2B DISK LABEL
DB "FAT12" ; +36 FAT ID
BPBEND
; DEFS 453,0
; end boot sector

BIN
Original/RAMDRIVE.EXE Normal file

Binary file not shown.

355
Original/RAMDRIVE.LST Normal file
View File

@ -0,0 +1,355 @@
AS80 Assembler for i8080 [1.31]. Page 1
-------------------------------- RAMDRIVE.ASM --------------------------------
331 lines read, no errors in pass 1.
7f00 = ORG #8100-512
INCLUDE "DOS_EQU.ASM"
0000 = VERSION EQU #00
0001 = CHDISK EQU #01
0002 = CURDISK EQU #02
0003 = DSKINFO EQU #03
0004 = G_ENTRY EQU #04
0009 = BOOTDSK EQU #09
000a = CREATE EQU #0A
000b = CREAT_N EQU #0B
000d = ERASE EQU #0D
000e = DELETE EQU #0E
000f = MOVE EQU #0F
0010 = RENAME EQU #10
0011 = OPEN EQU #11
0012 = CLOSE EQU #12
0013 = READ EQU #13
0014 = WRITE EQU #14
0015 = MOVE_FP EQU #15
0016 = ATTRIB EQU #16
0017 = GET_D_T EQU #17
0018 = PUT_D_T EQU #18
0019 = F_FIRST EQU #19
001a = F_NEXT EQU #1A
001b = MKDIR EQU #1B
001c = RMDIR EQU #1C
001d = CHDIR EQU #1D
001e = CURDIR EQU #1E
0021 = SYSTIME EQU #21
0022 = SETTIME EQU #22
0030 = WAITKEY EQU #30
0031 = SCANKEY EQU #31
0032 = ECHOKEY EQU #32
0033 = CTRLKEY EQU #33
0034 = EDIT EQU #34
0035 = K_CLEAR EQU #35
0038 = SETWIN EQU #38
0039 = SETWIN1 EQU #39
003a = SETWIN2 EQU #3A
003b = SETWIN3 EQU #3B
003c = FREEMEM EQU #3C
003d = GETMEM EQU #3D
003e = RETMEM EQU #3E
003f = SETMEM EQU #3F
0040 = EXEC EQU #40
0041 = EXIT EQU #41
0042 = WAIT EQU #42
0043 = GSWITCH EQU #43
0044 = DOSNAME EQU #44
0050 = SETVMOD EQU #50
0051 = GETVMOD EQU #51
0052 = LOCATE EQU #52
0053 = CURSOR EQU #53
AS80 Assembler for i8080 [1.31]. Page 2
-------------------------------- RAMDRIVE.ASM --------------------------------
0054 = SELPAGE EQU #54
0055 = SCROLL EQU #55
0056 = CLEAR EQU #56
0057 = RDCHAR EQU #57
0058 = WRCHAR EQU #58
0059 = WINCOPY EQU #59
005a = WINREST EQU #5A
005b = PUTCHAR EQU #5B
005c = PCHARS EQU #5C
005d = RES_PRN EQU #5D
005e = CTRLPRN EQU #5E
005f = PRINT EQU #5F
00e2 = PAGE3 EQU #E2
000d = CR EQU 13
000a = LF EQU 10
0000 = EN EQU 00
7f00 : 455845 DB "EXE" ;EXE ID
7f03 : 00 DB #00 ;EXE VERSION
7f04 : 0002 DW #0200 ;CODE OFFSET LOW
7f06 : 0000 DW #0000 ;CODE OFFSET HIGH
7f08 : 0000 DW #0000 ;END-BEG ;PRIMARY LOADER
7f0a : 0000 DW #0000 ;
7f0c : 0000 DW #0000 ;RESERVED
7f0e : 0000 DW #0000 ;
7f10 : 0081 DW #8100 ;LOAD ADDRESS
7f12 : 0081 DW #8100 ;START ADDRESS
7f14 : ffbf DW #BFFF ;STACK ADDRESS
7f16 : 00000000000000.. DS 490
8100 : 219281 BEG LD HL,MS0
8103 : 0e5c LD C,PCHARS
8105 : d7 RST #10
8106 : f3 DI
8107 : 01ce00 LD BC,#00CE
810a : 78 NEXTRD LD A,B
810b : c5 PUSH BC
810c : cf RST #08
810d : c1 POP BC
810e : b7 OR A
810f : 2809 JR Z,FNDRD
8111 : 04 INC B
8112 : 78 LD A,B
8113 : fe10 CP #10
8115 : 20f3 JR NZ,NEXTRD
8117 : c37c81 JP NORAMD
811a : c5 FNDRD PUSH BC
811b : 0ec2 LD C,#C2 ;GET MEMORY
811d : 062d LD B,45
811f : cf RST #08
8120 : c1 POP BC
8121 : da8781 JP C,NOMEM
8124 : f5 PUSH AF
8125 : 4f LD C,A
8126 : 78 LD A,B
8127 : 41 LD B,C
8128 : 0ec9 LD C,#C9
812a : cf RST #08
812b : f1 POP AF
812c : 0ee2 LD C,PAGE3
812e : ed40 IN B,(C)
AS80 Assembler for i8080 [1.31]. Page 3
-------------------------------- RAMDRIVE.ASM --------------------------------
8130 : ed79 OUT (C),A
8132 : c5 PUSH BC
8133 : 2100c0 LD HL,#C000
8136 : 1101c0 LD DE,#C001
8139 : 01ff3f LD BC,#3FFF
813c : 75 LD (HL),L
813d : edb0 LDIR
813f : 214982 LD HL,BPB
8142 : 1100c0 LD DE,#C000
8145 : 013b00 LD BC,BPBEND-BPB
8148 : edb0 LDIR
814a : 2155aa LD HL,#AA55
814d : 22fec1 LD (#C200-2),HL
8150 : 2100c2 LD HL,#C200
8153 : 36f9 LD (HL),#F9
8155 : 2c INC L
8156 : 36ff LD (HL),#FF
8158 : 2c INC L
8159 : 36ff LD (HL),#FF
815b : 2c INC L
815c : 3600 LD (HL),#00
815e : 2100cc LD HL,#C200+(512*5)
8161 : 36f9 LD (HL),#F9
8163 : 2c INC L
8164 : 36ff LD (HL),#FF
8166 : 2c INC L
8167 : 36ff LD (HL),#FF
8169 : 2c INC L
816a : 3600 LD (HL),#00
816c : c1 POP BC
816d : ed41 OUT (C),B
816f : 21c081 LD HL,MS1
8172 : 0e5c LD C,PCHARS
8174 : d7 RST #10
8175 : 0600 LD B,#00
8177 : 0e41 EXITT LD C,#41
8179 : d7 RST #10
817a : f3 DI
817b : 76 HALT
817c : 21d381 NORAMD LD HL,MS2
817f : 0e5c LD C,PCHARS
8181 : d7 RST #10
8182 : 0601 LD B,1
8184 : c37781 JP EXITT
8187 : 21e681 NOMEM LD HL,MS3
818a : 0e5c LD C,PCHARS
818c : d7 RST #10
818d : 0601 LD B,1
818f : c37781 JP EXITT
;
; RAMDRIVE 720
; RAMDRIVE E:720
; 0 1 2 3 4 5 6 7 8 9 A B C D E F
;
;GETPARM LD A,#FF
AS80 Assembler for i8080 [1.31]. Page 4
-------------------------------- RAMDRIVE.ASM --------------------------------
; LD (RDRIVE),A
; LD (RSIZE),A
; LD D,XH
; LD E,XL
; EX DE,HL
; LD E,(HL)
; INC HL
; LD D,0
; EX DE,HL
; ADD HL,DE
; LD (HL),0
;NEXTPRM EX DE,HL
; LD DE,BUFFER
; LD C,GSWITCH
; RST #10
; EX DE,HL ;SAVE HL IN DE
; LD HL,BUFFER
; LD A,(HL)
; INC HL
; OR A
; RET Z
; CP "/"
; JR NZ,NOSLASH
; LD A,(HL)
; INC HL
; CALL UPPER
; CALL ATOHEX
; JP C,ILLEGAL
; LD (RDRIVE),A
; LD A,(HL)
; OR A
; JR Z,NEXTPRM
; JP ILLEGAL
;
;NOSLASH CP ":"
; JP NZ,NOSIZER
; LD IX,0
;NDIG LD C,XL
; LD B,XH
; ADD IX,IX ;X2
; ADD IX,IX ;X4
; ADD IX,BC ;X5
; ADD IX,IX ;X10
; JP C,ILLEGAL
; LD A,(HL)
; OR A
; JR Z,ENDSZ
; CALL UPPER
; CP "K"
; JR Z,ENDSZ
; CALL ATODEC
; LD C,A
; LD B,0
; ADD IX,BC
; JR NDIG
;ENDSZ LD A,XL
; LD C,A
; LD B,XH
; SRL B
; RR C
; SRL B
; RR C
AS80 Assembler for i8080 [1.31]. Page 5
-------------------------------- RAMDRIVE.ASM --------------------------------
; SRL B
; RR C
; SRL B
; RR C
; AND #0F
; JR Z,L101
; INC BC
;L101 LD A,B
; OR A
; JP NZ,ILLEGAL
; LD A,C
; LD (RSIZE),A
; JP NEXTPRM
;NOSIZER JP ILLEGAL
;ATODEC CP "0"
; RET C
; CP ":"
; CCF
; RET C
; SUB "0"
; RET
;ATOHEX CP "0"
; RET C
; CP ":"
; JR NC,TRYHEX
; SUB "0"
; AND A
; RET
;TRYHEX CALL UPPER
; CP "A"
; RET C
; CP "G"
; CCF
; RET C
; SUB "A"
; RET
;UPPER CP "a"
; RET C
; CP "z"+1
; RET NC
; SUB #20
; RET
8192 : 52414d44524956.. MS0 DB "RAMDRIVE DRIVER (C) 1999 PETERS Plus ltd.",CR,
81c0 : 52414d20444953.. MS1 DB "RAM DISK created",CR,LF,EN
81d3 : 4e6f2066726565.. MS2 DB "No free RAM-DISK",CR,LF,EN
81e6 : 4e6f2066726565.. MS3 DB "No free memory, for create RAM-DISK",CR,LF,EN
820c : 496c6c6567616c.. MS4 DB "Illegal parametr",CR,LF,EN
821f : 5573616765203a.. MS5 DB "Usage : RAMDRIVE [/drive 0...F] [:size]",CR,LF
; Area for boot sector [512Bytes]
8249 : eb3c90 BPB DB #EB,#3C,#90 ; +00 JMP
824c : 444f535f582e5858 DB "DOS_X.XX" ; +03 DOS NAME
AS80 Assembler for i8080 [1.31]. Page 6
-------------------------------- RAMDRIVE.ASM --------------------------------
; Block Parameters BIOS
8254 : 0002 DW #0200 ; +0B BYTE PER SECTOR
8256 : 01 DB 1 ; +0D SECTORS PER CLUSTER
8257 : 0100 DW 1 ; +0E RESERVE SECTORS
8259 : 02 DB 2 ; 1 ; +10 AMOUNT FATS
825a : 7000 DW 112 ; +11 FILES IN DIRECTORY
825c : a005 DW 1440 ; +13 ALL SECTORS ON DISK
825e : fa DB #FA ; +15 ID FORMAT
825f : 0500 DW 5 ; +16 SIZE FAT IN SECTORS
8261 : 0900 DW 9 ; +18 SECTOR PER TRACK
8263 : 0200 DW 2 ; +1A AMOUNT SIDES
8265 : 00000000 DW 0,0 ; +1C HIDDEN SECTORS
8269 : 00000000 DW 0,0 ; +20 ALL SECTORS BIG
826d : 8000 DW #0080 ; +24 PHISICAL DRIVE NUMBER
826f : 29 DB #29 ; +26 EXTENDED RECORD SIGNATURE
8270 : 4b1065d7 DW #104B,#D765 ; +27 SERIAL VOLUME NUMBER
8274 : 4e4f204e414d45.. DB "NO NAME ";+2B DISK LABEL
827f : 4641543132 DB "FAT12" ; +36 FAT ID
8284 : BPBEND
; DEFS 453,0
; end boot sector
No errors in pass 2.
Wrote binary from address $7f00 through $8283.
Total size 900 bytes.

266
RAMDRIVE.ASM Normal file
View File

@ -0,0 +1,266 @@
ORG #8100-512
INCLUDE "DOS_EQU.ASM"
PAGE3 EQU #E2
CR EQU 13
LF EQU 10
EN EQU 00
DB "EXE" ;EXE ID
DB #00 ;EXE VERSION
DW #0200 ;CODE OFFSET LOW
DW #0000 ;CODE OFFSET HIGH
DW #0000 ;END-BEG ;PRIMARY LOADER
DW #0000 ;
DW #0000 ;RESERVED
DW #0000 ;
DW #8100 ;LOAD ADDRESS
DW #8100 ;START ADDRESS
DW #BFFF ;STACK ADDRESS
DS 490
BEG LD HL,MS0
LD C,PCHARS
RST #10
DI
LD BC,#00CE ; <20>®«ã祭¨¥ ¨¤¥­â¨ä¨ª â®à  ¡«®ª , ­ §­ ç¥­­®£® ­  RAM-Disk
NEXTRD LD A,B ; ­®¬¥à RAM-Disk-  0..15
PUSH BC
RST #08
POP BC
OR A
JR Z,FNDRD
INC B
LD A,B
CP #10
JR NZ,NEXTRD
JP NORAMD
FNDRD PUSH BC
LD C,#C2 ; ¢ë¤¥«¥­¨¥ ¡«®ª  އ“
LD B,45 ; § ¯à è¨¢ ¥¬®¥ ç¨á«® áâà ­¨æ އ“ (45 = 720 kb)
RST #08
POP BC
JP C,NOMEM
PUSH AF
LD C,A
LD A,B ; ­®¬¥à RAM-Disk-  0..15 - ᮮ⢥âáâ¢ã¥â RAM-Disk- ¬ ®â e: ¤® t:
LD B,C ; ¨¤¥­â¨ä¨ª â®à ¡«®ª 
LD C,#C9 ; ­ §­ ç¨âì ¡«®ª ¯ ¬ï⨠RAM-Disk-ã
RST #08
POP AF
LD C,PAGE3
IN B,(C)
OUT (C),A
PUSH BC
LD HL,#C000
LD DE,#C001
LD BC,#3FFF
LD (HL),L
LDIR
LD HL,BPB ;boot sector [512Bytes]
LD DE,#C000
LD BC,BPBEND-BPB
LDIR
LD HL,#AA55
LD (#C200-2),HL
LD HL,#C200
LD (HL),#F9
INC L
LD (HL),#FF
INC L
LD (HL),#FF
INC L
LD (HL),#00
LD HL,#C200+(512*5)
LD (HL),#F9
INC L
LD (HL),#FF
INC L
LD (HL),#FF
INC L
LD (HL),#00
POP BC
OUT (C),B
LD HL,MS1
LD C,PCHARS
RST #10
LD B,#00
EXITT LD C,#41
RST #10
DI
HALT
NORAMD LD HL,MS2
LD C,PCHARS
RST #10
LD B,1
JP EXITT
NOMEM LD HL,MS3
LD C,PCHARS
RST #10
LD B,1
JP EXITT
;
; RAMDRIVE 720
; RAMDRIVE E:720
; 0 1 2 3 4 5 6 7 8 9 A B C D E F
;
;GETPARM LD A,#FF
; LD (RDRIVE),A
; LD (RSIZE),A
; LD D,XH
; LD E,XL
; EX DE,HL
; LD E,(HL)
; INC HL
; LD D,0
; EX DE,HL
; ADD HL,DE
; LD (HL),0
;NEXTPRM EX DE,HL
; LD DE,BUFFER
; LD C,GSWITCH
; RST #10
; EX DE,HL ;SAVE HL IN DE
; LD HL,BUFFER
; LD A,(HL)
; INC HL
; OR A
; RET Z
; CP "/"
; JR NZ,NOSLASH
; LD A,(HL)
; INC HL
; CALL UPPER
; CALL ATOHEX
; JP C,ILLEGAL
; LD (RDRIVE),A
; LD A,(HL)
; OR A
; JR Z,NEXTPRM
; JP ILLEGAL
;
;NOSLASH CP ":"
; JP NZ,NOSIZER
; LD IX,0
;NDIG LD C,XL
; LD B,XH
; ADD IX,IX ;X2
; ADD IX,IX ;X4
; ADD IX,BC ;X5
; ADD IX,IX ;X10
; JP C,ILLEGAL
; LD A,(HL)
; OR A
; JR Z,ENDSZ
; CALL UPPER
; CP "K"
; JR Z,ENDSZ
; CALL ATODEC
; LD C,A
; LD B,0
; ADD IX,BC
; JR NDIG
;ENDSZ LD A,XL
; LD C,A
; LD B,XH
; SRL B
; RR C
; SRL B
; RR C
; SRL B
; RR C
; SRL B
; RR C
; AND #0F
; JR Z,L101
; INC BC
;L101 LD A,B
; OR A
; JP NZ,ILLEGAL
; LD A,C
; LD (RSIZE),A
; JP NEXTPRM
;NOSIZER JP ILLEGAL
;ATODEC CP "0"
; RET C
; CP ":"
; CCF
; RET C
; SUB "0"
; RET
;ATOHEX CP "0"
; RET C
; CP ":"
; JR NC,TRYHEX
; SUB "0"
; AND A
; RET
;TRYHEX CALL UPPER
; CP "A"
; RET C
; CP "G"
; CCF
; RET C
; SUB "A"
; RET
;UPPER CP "a"
; RET C
; CP "z"+1
; RET NC
; SUB #20
; RET
MS0 DB "RAMDRIVE DRIVER (C) 1999 PETERS Plus ltd.",CR,LF,CR,LF,EN
MS1 DB "RAM DISK created",CR,LF,EN
MS2 DB "No free RAM-DISK",CR,LF,EN
MS3 DB "No free memory, for create RAM-DISK",CR,LF,EN
MS4 DB "Illegal parametr",CR,LF,EN
MS5 DB "Usage : RAMDRIVE [/drive 0...F] [:size]",CR,LF,EN
; Area for boot sector [512Bytes]
BPB DB #EB,#3C,#90 ; +00 JMP
DB "DOS_X.XX" ; +03 DOS NAME
; Block Parameters BIOS
DW #0200 ; +0B BYTE PER SECTOR
DB 1 ; +0D SECTORS PER CLUSTER
DW 1 ; +0E RESERVE SECTORS
DB 2 ; 1 ; +10 AMOUNT FATS
DW 112 ; +11 FILES IN DIRECTORY
DW 1440 ; +13 ALL SECTORS ON DISK
DB #FA ; +15 ID FORMAT
DW 5 ; +16 SIZE FAT IN SECTORS
DW 9 ; +18 SECTOR PER TRACK
DW 2 ; +1A AMOUNT SIDES
DW 0,0 ; +1C HIDDEN SECTORS
DW 0,0 ; +20 ALL SECTORS BIG
DW #0080 ; +24 PHISICAL DRIVE NUMBER
DB #29 ; +26 EXTENDED RECORD SIGNATURE
DW #104B,#D765 ; +27 SERIAL VOLUME NUMBER
DB "NO NAME " ; +2B DISK LABEL
DB "FAT12" ; +36 FAT ID
BPBEND
; DEFS 453,0
; end boot sector

1
Shared_Includes Submodule

@ -0,0 +1 @@
Subproject commit 6e27011b6259b0256ce65d91a53ef1185223eafa