mirror of
https://github.com/Tolik-Trek/RAM-Drive.git
synced 2026-06-15 09:21:33 +03:00
Setup
This commit is contained in:
parent
ecd6c7f5fd
commit
8037fd59ce
4
.gitmodules
vendored
Normal file
4
.gitmodules
vendored
Normal 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
71
DOS_EQU.ASM
Normal 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
13
Original/A.BAT
Normal 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
25
Original/CREATE.BAT
Normal 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
71
Original/DOS_EQU.ASM
Normal 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
260
Original/RAMDRIVE.ASM
Normal 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
BIN
Original/RAMDRIVE.EXE
Normal file
Binary file not shown.
355
Original/RAMDRIVE.LST
Normal file
355
Original/RAMDRIVE.LST
Normal 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
266
RAMDRIVE.ASM
Normal 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
1
Shared_Includes
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit 6e27011b6259b0256ce65d91a53ef1185223eafa
|
||||
Loading…
Reference in New Issue
Block a user