mirror of
https://github.com/Tolik-Trek/RAM-Drive.git
synced 2026-06-15 01:11:32 +03:00
355 lines
14 KiB
Plaintext
355 lines
14 KiB
Plaintext
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.
|
||
|