Assembly Language
Extended Directory
By Wes NewellFor some time now I have been unhappy with only having eleven spaces, including filename extension, to use for disk directory filenames. This forced me to undertake the task of trying to modify the DOS to accept longer filenames. Well, after many long and sleepless days and nights, I finally completed the job. The following Assembler source code will produce the program to modify DOS 2.0S.
The following advantages will be noticed:
1 Filenames to a maximum of 27 characters.
2. Any ASCII character from decimal 48 to 122 is legal anywhere within the filename, even the first character.
These are the disadvantages:
1. The modified DOS will not read the directory of the old DOS and vice versa. The directory can be changed to allow either DOS to read the other.
2. Allows 60 files maximum. That's four less than the current DOS 2.0S.
3. The disk format will take up seven more sectors, leaving 700 free sectors instead of 707.
4. Because DOS.SYS and DUP.SYS will both be modified, I have changed the name of DUP.SYS to dup.sys (lower case) to keep from loading one system with the other.
Example
If you boot with the old DOS and put a diskette with the modified DOS on it into the drive and call up DOS, the system will not see DUP.SYS since it has been changed to dup.sys. Therefore the system will return control back to you. This works in reverse if you boot with the modified DOS.If you are happy with the filename structure as it is now, wait until you have a hundred diskettes or so and a thousand different files and try to remember what CRUNCH CRCHO means. Calling the file Crunch_Crumble_ and_Chomp would be so much easier, and you still have the three-character extender left over.
I will not go into detail as to how the program works but I think you will be happy with the results.
Also included with this article is a program that will automatically convert your directory to the modified version, provided you have copied the files to a diskette that was formatted using the modified DOS.
0000 45 .PAGE
50 ;COPYRIGHT 1982 W. NEWELL
60 ;NEWELL INDUSTRIES
0000 0100 *= $4000 ;ORG AND RUN ADDRESS
4000 A91A 0110 LDA #$1A ;FROM THIS LINE TO
4002 8D3B09 0120 STA $093B ;LINE 1170 MODIFIES
4005 8DA522 0130 STA $22A5 ;THE DOS AND DUP
4008 8D3624 0140 STA $2436 ;SYSTEMS
400B A918 0150 LDA #$1B
400D 8D7309 0160 STA $0973
4010 8D1E0C 0170 STA $0C1E
4013 8DB50E 0180 STA $0EB5
4016 8D6D0F 0190 STA $0F6D
4019 8DEF30 0200 STA $30EF
401C 8D0924 0210 STA $2409
401F A921 0220 LDA #$21
4021 8DCE0D 0230 STA $0DCE
4024 8D660E 0240 STA $0E66
4027 A960 0250 LDA #$60
4029 8D2D0F 0260 STA $0F2D
402C A920 0270 LDA #$20
402E 8D390F 0280 STA $0F39
4031 8D900B 0290 STA $0B90
4034 A9A0 0300 LDA #$A0
4036 8D8E0B 0310 STA $0B8E
4039 8D9B0B 0320 STA $0B9B
403C A906 0330 LDA #$06
403E 8DBF0B 0340 STA $0B8F
4041 A99D 0350 LDA #$9D
4043 BD910B 0360 STA $0B91
4046 A90B 0370 LDA #$0B
4048 8D920B 0380 STA $0B92
404B A9EA 0390 LDA #$EA
404D 8D930D 0400 STA $0B93
4050 A904 0410 LDA #04
4052 8D9C0B 0420 STA $0B9C
4055 A9A9 0430 LDA #$A9
4057 8D9D0B 0440 STA $0B9D
405A A900 0450 LDA #$00
405C 8D9E0D 0460 STA $0B9E
405F A907 0470 LDA #$07
4061 8D9C12 0480 STA $129C
4064 A930 0490 LDA #$30
4066 8DE00E 0500 STA $0EEA
4069 A97A 0510 LDA #$7A
406B 8DEE0E 0520 STA $0EEE
406E A91D 0530 LDA #$1D
4070 8D430E 0540 STA $0E43
4073 8DAF22 0550 STA $22AF
4076 8D5324 0560 STA $2453
4079 A918 0570 LDA #$18
407B 8DDF0E 0580 STA $0EDF
407E 8D0B0F 0590 STA $0F0B
4081 8D9B22 0600 STA $229B
4084 8DDB30 0610 STA $30DB
4087 A91C 0620 LDA #$1C
4089 8D110F 0630 STA $0F11
408C A924 0640 LDA #$24
408E 8DC223 0650 STA $23C2
4091 A92E 0660 LDA #$2E
4093 8DF824 0670 STA $24FB
4096 A923, 0680 LDA #$23
4096 8DFA24 0690 STA $24FA
409B A90 1 0700 LDA #$01
409D 8DCC23 0710 STA $23CC
40A0 BDD923 0720 STA $23D9
40A3 8D2A24 0730 STA $242A
40A6 8D4724 0740 STA $2447
40A9 8D3A24 0750 STA $243A
40AC A925 0760 LDA #$25
40AE 8DD123 0770 STA $23D1
40B1 8DDA23 0780 STA $23DA
40B4 8D0A24 0790 STA $240A
40B7 8D2b24 0800 STA $242B
40BA 8D4824 0810 STA $2448
40BD 8D3B24 0820 STA $243B
40C0 A943 0830 LDA #$43
40C2 8D4423 0840 STA $2344
40C5 A94F 0850 LDA #$4F
40C7 8D4523 0860 STA $2345
40CA A950 0870 LDA #$50
40CC 8D4623 0880 STA $2346
40CF A959 0890 LDA #$59
40D1 8D4723 0900 STA $2347
40D4 A949 0910 LDA #$49
40D6 8D4823 0920 STA $2348
40D9 A94E 0930 LDA #$4E
40DD 8D4923 0940 STA $2349
40DE 8D4D23 0950 STA $234D
40E1 A947 0960 LDA #$47
40E2 8D4A23 0970 STA $234A
40E6 A92D 0980 LDA #$2D
40E8 8D4B23 0990 STA $234B
40EB A944 1000 LDA #$44
40ED 8D4C23 1010 STA $234C
40F0 8D5C24 1020 STA $245C
40F3 A93A 1030 LDA #$3A
40F5 8D4E23 1040 STA $234E
40F8 A94D 1050 LDA #$4D
40FA 8D2324 1060 STA $2423
40FD 8DC524 1070 STA $24C5
4100 8DD224 1080 STA $24D2
4103 A94C 1090 LDA #$4C
4105 8D3124 1100 STA $2431
4108 8D4324 1110 STA $2443
410B 8D4E24 1120 STA $244E
410E 8D5924 1130 STA $2459
4111 8D6A24 1140 STA $246A
4114 8D8624 1150 STA $2486
4117 8DD524 1160 STA $24D5
411A 8DC52D 1170 STA $2DC5
411D A9EA 1180 LDA #$EA ;THIS SECTION
411F 8DBA0D 1190 STA $0DBA ;MODIFIES THE VTOC
4122 8D8B0D 1200 STA $0D8B ;FOR 60 FILENAMES
4125 A90E 1210 LDA #$0E
4127 8D9B0D 1220 STA $0D9B
412A A90F 1230 LDA #$0F
412C 8D400F 1240 STA $0F40
412F A98C 1250 LDA #$BC
4131 8D620D 1260 STA $0D62
4134 A000 1270 LDY #0
4136 B97641 1280 LOOP1 LDA MOD,Y ;CHANGES DUP.SYS
4139 993218 1290 STA $1832,Y ;TO dup.SYS
413C CE3 1300 INY
413D C007 1310 CPY #7
413F D0F5 1320 BNE LOOP1
4141 A000 1365 LDY #0
4143 B95141 1370 LOOP2 LDA MESG,Y ;NEW MENU TITLE
4146 99101F 1380 STA $1F10,Y
4149 C8 1390 INY
414A C025 1400 CPY #37
414C D0F5 1410 BNE LOOP2
414E 4C0030 1415 JMP $3000 ;BACK TO DOS
4151 44 1420 MESG .BYTE "DOS 2.0S MOD. DIRECTORY W.NEWELL 6/82"
4152 4F
4153 53
4154 20
4155 32
4156 2E
4157 30
4158 53
4159 20
415A 4D
415D 4F
415C 44
415D 2E
415E 20
415F 44
4160 49
4161 52
4162 45
4163 43
4164 54
4165 4F
4166 52
4167 59
4168 20
4169 57
416A 2E
416B 4E
416C 45
416D 57
416E 45
416F 4C
4170 4C
4171 20
4172 36
4173 2F
4174 38
4175 32
4176 64 1430 MOD .BYTE "dup.SYS"
4177 75
4178 70
4179 2E
417A 53
417B 59
417C 53