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.