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