Bengt Holgersson
<559>
· Text 2058 · w8 · kommentar
1986-06-18 22:22
Ärende: Mera UFD-PATCH
Jag hämtade filen med TYPE,H UFDDOS.CHR ,konverterade och skalade bort
allt skräp som låg i slutet och sparade sedan ned det i Intelhexformat
(för PROMMISEN).
Sedan gjorde jag de patchar som <560> föreslagit och provade.
Jag fick ett underligt fel när jag laddade program:
Programmet kom in helt i sin ordning men sedan fick jag ERROR 43
(Skivan skrivskyddad)!! Javisst var den skrivskyddad men det borde ju
inte spela någon roll vid läsning av en fil.
Testade följande:
1 OPEN 'FILNAMN.EXT' ASFILE 1%
2 CLOSE 1%
RUN
ERROR 43 IN LINE 2
Överföringsfel från Stockholm ?
Hämtade filen en gång till.
Jämförde. IDENTISKA !
???
OK! Fram med dissasemblern (inte boken utan programmet) och titta på
eländet. Kolla speciellt CLOSE-rutinerna. Jämför med lite andra vari-
anter av DOS (det finns några stycken vid det här laget)
Detta är de ändringar jag kom fram till:
Adress Gammal Ny
6553H D0H 35H Se text 2040
656BH D0H 35H Se text 2040
6681H CDH FCH Ändra CALL nnnn till CALL M,nnnn (Mer estetiskt)
6764H DOH 35H Se text 2040
678AH 10H 0CH Se text 2040 (Jag har ABC830 som DR_)
6CF4H 28H C8H Ändra JR Z,nn till RET Z + NOP
6CF5H 08H 00H - " -
Den sista ändringen var den som avhjälpte mitt problem (den fullstän-
diga orsaken har jag inte haft energi nog att utröna)
Jag tror att det kan ha berott på att DOS-et ville uppdatera segment-
sektorn även vid läsning ?
Om någon annan har grävt djupare och löst problemet på något annat
sätt vänligen skriv ett par rader om det.
Övriga iakttagelser:
Orsaken till att det gamla LIB-programmet ej fungerar är troligtvis
att det kör med gammal adressering av sektorer (Sektor x 32)
Antingen kan man ändra i LIB-programmet, byta LIB-program eller
så kan man ändra i enhetslistan så att DOS-et kör med gammal adress-
ering. (Ändra i enhetslistan i RAM på adress 65408 och framåt)
Detta kan vara bra även för andra program som läser sektorer direkt
t.ex. diskeditorer, kopieringsprogram m.m.
Så här beskrivs en enhet: (Så vitt jag kan förstå!)
Byte: Hex: Binärt: Kommentar:
0 ADH xxyyyyyy x=kontrollertyp y=kortvalsadress
1 00H ?x??yyyy ?=vet ej x=flagga för gammal adressering
y=klusterstorlek (2**y)
2 4DH Första tecken i enhetsnamn 'M'
3 4FH Andra - " - 'O'
M.v.h Bengt Holgersson