eksperyment uważam za udany w miarę - aplikacja buduje się pod Lazarusem (1.6), zarówno na Windows XP jak i pod Linux (Mint 17)
musiałam kilka drobiazgów zmienić, aby dostosować się do filozofii Laz (ot, choćby nazwa projektu) ale to są detale i assemblerek ruszył praktycznie od razu; generowane przez oryginalną aplikację pod dosbox pliki *.hex są treścią identyczne z tymi z Linux
skan-karta-86.png
przyznam szczerze, zupełnie przypadkiem w oko mi wpadła zerowa data i czas w listingach pod Linux i taka dziwaczna pod Win, w sumie to na takie drobiazgi nie zwracam uwagi;
listing pod XP pisze:Kod: Zaznacz cały
forum microgeek.eu - assembler mikroprocesora 6800 . Data= 65.00.00 Godz.= 00:65:00 Strona= 1
llisting pod Linux pisze:Kod: Zaznacz cały
forum microgeek.eu - assembler mikroprocesora 6800 . Data= 0.00.00 Godz.= 00:00:00 Strona= 1
i to jest tak, że do zbierania daty i czasu program korzysta z przerwania 21h, a w helpie wyraźnie napisali, że w systemach nie-dosowych to wywołanie jest wydmuszką;
http://lazarus-ccr.sourceforge.net/docs ... msdos.html no i trzeba było deko program zmienić; procedurki do tekstowego daty/czasu są teraz takie:
Kod: Zaznacz cały
procedure GiveDateStr ( var OutDateString : DateString ) ;
begin
OutDateString := FormatDateTime( 'yyyy.mm.dd', Now );
end;
procedure GiveTimeStr ( var OutTimeString : TimeString ) ;
begin
OutTimeString := FormatDateTime( 'hh:nn:ss', Now );
end;
no i jest jeszcze jedna zasadzka, gdyby kto chciał to sobie na przykład na Raspberry PI skompilować (bo Lazarus/FPC na tym też chodzą),
że w dosh.inc jest kompilacja warunkowa i taka rewitalizacja będzie wymagała także kompilacji warunkowej tej aplikacji, albo zupełnego wyrugowania wszelkich dos-owych odniesień
dosh.inc pisze:Kod: Zaznacz cały
{$ifdef cpui386}
{Interrupt}
Procedure Intr(intno: byte; var regs: registers);
Procedure MSDos(var regs: registers);
{$endif cpui386}
całość w załączniku, moje zmiany skomentowane
-- edit --
aha i jeszcze drobiazg i łatwy to modyfikacji - względem nowego FPC wystąpił tam konflikt na poziomie słów kluczowych języka, jeden ze składników rekordu wariantowego IdentifierRecord został nazwany Class a to zastrzeżone dla składni Pascala, no więc siermiężne przemianowanie na Class_ pomogło, no to chyba wszystkie zmiany
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.