atarionline.pl MAD-Pascal - Początki - Forum Atarum

Jeśli chcesz wziąć udział w dyskusjach na forum - zaloguj się. Jeżeli nie masz loginu - poproś o członkostwo.

  • :
  • :

Vanilla 1.1.4 jest produktem Lussumo. Więcej informacji: Dokumentacja, Forum.

    • 1: CommentAuthorPecet
    • CommentTime18 Jan 2019
     
    dzięki bocian, zawsze coś nowego.
    I sorry, za ewentualne zamieszanie.
    • 2: CommentAuthorMADRAFi
    • CommentTime18 Jan 2019
     
    Bardzo duze podziekowania Bocianowi za wskazanie bledow.
    DLI juz dziala jak powinna. Bylem dosyc blisko rozwiazania.

    Jak zwykle wszystko rozbija sie o znajomosc platformy :)
    • 3: CommentAuthorMADRAFi
    • CommentTime19 Jan 2019 zmieniony
     
    Tebe,
    Czy mozesz powiedziec kiedy MAD-Pascal bedzie obslugiwal nastepujaca deklaracje tablicy?

    type
    Tmytype = record
    price: byte;
    quantity: word;
    end;

    var
    item: array[0..20] of Tmytype;



    Nieukrywam ze byloby to bardzo oczekiwane i pomocne.
    • 4:
       
      CommentAuthorbocianu
    • CommentTime19 Jan 2019
     
    Też się przychylam!
    Może czas na wersję 1.6 ;)
    • 5: CommentAuthorkski
    • CommentTime21 Jan 2019
     
    Podpinam się pod ten wątek. Po dodaniu kolejnego bloku asm dostaję błąd przy kompilacji.

    Error: Out of resources, ASMBLOCK

    Jest ograniczenie ilości asm'ów? Nie da się tego zmienić/ominąć?

    Dzięki.
    • 6: CommentAuthortebe
    • CommentTime21 Jan 2019 zmieniony
     
    zmień linię

    AsmBlock: array [0..255] of string;

    na

    AsmBlock: array [0..4095] of string;

    i ponownie skompiluj, powinno pomóc, na ASMBLOCK
    • 7: CommentAuthorkski
    • CommentTime21 Jan 2019
     
    Pomogło. Dzięki.
    • 8: CommentAuthorMADRAFi
    • CommentTime23 Jan 2019 zmieniony
     
    Zaczynam miec problemy z iloscia pamieci :)
    Przekodowalem wiec program na biblioteke b_crt i wylaczylem system.

    No i teraz nie bardzo wiem / rozumiem jak wyglada sytuacja z zainicjalizowaniem wlasnych procedur vbl i dli.

    Jak powinna wygladac sekwencja krokow?
    Wydawalo mi sie ze to sie robi poprzez wywolanie

    SetIntVec(iDLI, @dlic);
    SetIntVec(iVBL, @vblc);


    Przykladowy listing:
    program SystemOff_test;
    {$librarypath '../Libs/lib/';'../Libs/blibs/';'../Libs/base/'}
    uses atari, b_utils, b_system, b_crt, sysutils;


    const
    CHARSET_ADDRESS = $4000;
    DISPLAY_LIST_ADDRESS_MENU = CHARSET_ADDRESS + $400;
    DISPLAY_LIST_ADDRESS_CONSOLE = DISPLAY_LIST_ADDRESS_MENU + $100;
    TXT_ADDRESS = $5000;
    SCROLL_ADDRESS = TXT_ADDRESS + $400; //$F0;
    GFX_ADDRESS = $8000;


    {$r 'systemoff_res.rc'}

    var
    oldvbl, olddli: pointer;


    {$i 'interrupts.inc'}

    {
    --------------------------------------------------------------------------------
    MAIN LOOP
    --------------------------------------------------------------------------------
    }

    begin
    SystemOff;
    SetCharset (Hi(CHARSET_ADDRESS)); // when system is off
    // savmsc:= TXT_ADDRESS;
    // Waitframe;
    // SDLSTL := DISPLAY_LIST_ADDRESS_MENU;
    //
    // GetIntVec(iVBL, oldvbl);
    // GetIntVec(iDLI, olddli);
    //
    // //
    // SetIntVec(iVBL, @vblc);
    // SetIntVec(iDLI, @dlic);
    // nmien:= $c0;


    //

    lmargin:= 0;
    rmargin:= 0;


    CRT_Init;
    CRT_WriteCentered('Loading...'~);

    repeat
    until CRT_Keypressed;

    // restore system
    // SetIntVec(iVBL, oldvbl);
    // SetIntVec(iDLI, olddli);
    // nmien:= $40;
    end.

    • 9: CommentAuthortebe
    • CommentTime23 Jan 2019
     
    SetIntVec działa kiedy system jest włączony, kiedy go wyłączysz wszystko w Twoich rękach

    main	lda:cmp:req 20

    sei
    mva #0 nmien
    sta dmactl

    mva #$fe portb

    mwa #nmi nmivec

    mva #$40 nmien

    jmp *

    /* ----------------------------------------------------------- */

    .local NMI
    bit nmist
    bpl vbl

    dli rti

    vbl sta nmist

    sta regA
    stx regX
    sty regY

    inc cloc

    mwa #dlist dlptr
    mva #scr40 dmactl

    lda regA
    ldx regX
    ldy regY
    rti
    .endl
    • 10: CommentAuthorMADRAFi
    • CommentTime23 Jan 2019
     
    wlasnie to "wszystkow twoich rekach" mnie przerasta ;)

    Ogolnie wydaje mi sie ze za malo to opisane jest i udokumentowane. Przydalby sie przeklad dolaczony do mad-pascala z obszernym komentarzem.

    Cos tam odczytuje, ale czy moglbym prosic o ten sam kod ale w Pascalu? :)
    • 11:
       
      CommentAuthorbocianu
    • CommentTime23 Jan 2019
     
    W blibs masz przykład jak ustawić przerwania bez os'a:
    ->link<-
    • 12: CommentAuthortebe
    • CommentTime23 Jan 2019
     
    pasintro.pas

    tam jest "wtłoczony" ten kod ASM do procedury Pascala SystemOFF

    sposób programowania z włączonym systemem różni się od tego sposobu z wyłączonym, to są dwie drogi, włączony OS to jak gotowy framework

    framework dla wyłączonego systemu przygotował Bocianu w swojej bibliotece BLIBS (B_SYSTEM.PAS)
    • 13: CommentAuthortebe
    • CommentTime23 Jan 2019
     
    jest jeszcze inny sposób, możesz skorzystać z pamięci dodatkowej, wtedy nie ma potrzeby wyłączać systemu

    wszelkie dane ładujesz do pamięci dodatkowej i stamtąd przepisujesz do konkretnych buforów pamięci podstawowej
    • 14: CommentAuthormono
    • CommentTime23 Jan 2019 zmieniony
     
    Istnieje jeszcze 3-cia droga (w teorii, bo być może nie macie jej w Pascalu). Korzysta z niej TurboBASIC XL oraz SpartaDOS X.
    Metoda polega na stworzeniu przelotek przy podniesionym ROM-ie dla:
    - przerwań IRQ i NMI,
    - tablicy wektorów
    które będą na czas wykorzystania mechanizmów OS-a opuszczać ROM, wywoływać co trzeba, a po powrocie odtwarzać konfigurację PORTB. Ten mechanizm działa też podczas korzystania z rozszerzonej pamięci bankowanej.
    Trzeba pamiętać przy tym, że wszystkie bufory, dane które są potrzebne dla procedur OS-a muszą być w pamięci podstawowej (ROM nie sięgnie do pamięci którą ma pod sobą).

    Edit: @tebe: Z ciekawości:
    - czy włączasz BASIC jak korzystasz z funkcji trygonometrycznych które tam są?
    - czy można wykorzystać z MadPascalem szybkie pakiety procedur?
    • 15: CommentAuthortebe
    • CommentTime23 Jan 2019 zmieniony
     
    nie znałem tej możliwości SDX

    MadPascal ma swoje pakiety, m.in. obsługuje standard IEEE-754 (32bit, typ SINGLE/FLOAT), MadPascal nie korzysta z Atari Basic

    jest też dostępna implementacja dla 65816 typu DOUBLE (64bit), mam taki pomysł aby umieścić ten kod w Weronice i korzystać z niego jak koprocesor (https://www.freepascal.org/docs-html/prog/progsu91.html#x99-980001.3.8 {$e}), tyle że na razie nie potrafię nawet stwierdzić czy Weronika jest zainstalowana, czy nie (dysponuję kartem Weronika)
    • 16: CommentAuthorMADRAFi
    • CommentTime23 Jan 2019
     
    Ok, Bocianiu jak zwykle okazal sie pomocny i ogarnalem juz te przerwania.
    Po prostu nie bylo dla mnie jasne ze to sa 2 oddzielne drogi i inaczej sie inicjalizuje vbl i dli bez systemu.
    • 17: CommentAuthortatqoo
    • CommentTime27 Jan 2019
     
    Dopnę się z pytaniem. Ma ktoś gotową receptę jak skonfigurować Notepad++ żeby się nie męczyc z kompilacją i uruchamianiem?. Pewnie z pluginem NPPExec, ale może być jakkolwiek.
    • 18: CommentAuthortatqoo
    • CommentTime27 Jan 2019
     
    Na razie w NPPExec wymysliłem tylko coś takiego:

    @setlocal
    SET MP = C:\ZZ_PRIV\MadPascal\mp.exe
    SET MADS = C:\ZZ_PRIV\MadPascal\mads.exe
    NPP_SAVE // save current file
    cd $(CURRENT_DIRECTORY) // go to directory of the current file
    "$(MP)" "$(FILE_NAME)"
    "$(MADS)" "$(NAME_PART).a65" -x -i:C:\ZZ_PRIV\MadPascal\base
    • 19: CommentAuthortebe
    • CommentTime27 Jan 2019
     
    cd $(CURRENT_DIRECTORY)
    mpas.bat $(FILE_NAME)


    mpas.bat
    @echo off

    d:\!Delphi\PAS6502\SP.exe %1

    if exist %~dp1%~n1.a65 (

    mads.exe %~dp1%~n1.a65 -xli:d:\!Delphi\Pas6502\base\

    if exist %~dp1%~n1.obx altirra %~dp1%~n1.obx
    )
    • 20: CommentAuthortatqoo
    • CommentTime28 Jan 2019
     
    Dzięki Tebe. Czy trzeba ustawiać zmienną PATH jakoś specjalnie dodatkowo?
    • 21: CommentAuthortebe
    • CommentTime28 Jan 2019
     
    PATH (Zaawansowane ustawienia systemu -> Zmienne środowiskowe)
    mam ustawione na katalog w którym trzymam wszystkie takie BAT-y albo inne przydatne programy, w tym MadAssembler
    • 22: CommentAuthorMADRAFi
    • CommentTime31 Jan 2019 zmieniony
     
    Moj kod troche zajmuje w pamieci i pojawil sie problem jej alokowania.

    To jest obecna sytuacja:

    ZPFREE: $0000..$007F
    ZPFREE: $00D8..$00FF
    STRINGS SIZE: $013D
    STRINGS : $B800..$B93D
    LOCATIONS SIZE: $010D
    LOCATIONS : $BA00..$BB0D
    ITEMS SIZE: $00F4
    ITEMS : $BC00..$BCF4

    SYSTEM: $21DA..$23AF
    B_UTILS: $23B0..$2406
    B_SYSTEM: $2407..$24F9
    SYSUTILS: $24FA..$2530
    B_CRT: $2531..$2A14
    CODE: $2000..$5240
    DATA: $5241..$747C


    Alokacja wyglada nastepujaco:
    FREE_TOP = $8000;

    CHARSET_ADDRESS = FREE_TOP;
    DISPLAY_LIST_ADDRESS_MENU = CHARSET_ADDRESS + $400;
    DISPLAY_LIST_ADDRESS_CONSOLE = DISPLAY_LIST_ADDRESS_MENU + $100;
    TXT_ADDRESS = DISPLAY_LIST_ADDRESS_CONSOLE + $100;
    SCROLL_ADDRESS = TXT_ADDRESS + $400;
    GFX_ADDRESS = $A000;
    STRINGS_ADDRESS = GFX_ADDRESS + $1800;
    LOCATIONS_ADDRESS = STRINGS_ADDRESS + $200;
    ITEMS_ADDRESS = LOCATIONS_ADDRESS + $200;



    Problem jest taki ze mam czarny ekran.
    Gdy umieszcze GFX_ADDRESS wczesniej - obraz jest wyswietlany ale grafika jest ucieta.

    Dodatkowo jeszcze bede musial wcisnac jakies 3 adresy pod grafike (160x100) i RMT player z modulem.

    Bede wdzieczny za pomoc :)
    • 23: CommentAuthortebe
    • CommentTime31 Jan 2019
     
    pamięć obrazu dla ANTIC-a jest adresowana na 12 bitach, maks 4KB blok zaadresuje

    jeśli masz większy blok pamięci do wyświetlenia, to układa się oba adresy tak aby zachodziły na siebie

    $A010 (102 linie, 102*40+16 = 4096), $B000 (kolejne 102 linie), obszar ciągły, 204 linie maks, dalej już bez dziury się nie uda
    • 24: CommentAuthorMADRAFi
    • CommentTime31 Jan 2019 zmieniony
     
    to ze jest linit 4kb to wiem juz. Ale nadal czegos nie rozumiem :)

    o czym tu piszesz

    tebe:

    jeśli masz większy blok pamięci do wyświetlenia, to układa się oba adresy tak aby zachodziły na siebie


    nie rozumiem tez dlaczego grafika umieszoczna pod adresem $9000 wyswietla sie

    a wszystko polozone powyzej (przesuniete o 4kb) juz nie.
    • 25: CommentAuthortebe
    • CommentTime31 Jan 2019
     
    co 4 KB trzeba załadować od nowa licznik LMS (12bit)

    dlist:
    dta $4e,a($a010) ; -> LMS -> $A010
    :101 dta $e ; razem z LMS to 102 linie
    dta $4e,a($b000) ; nowy LMS -> $B000
    :101 dta $e ; razem z LMS to kolejne 102 linie
    dta $41,a(dlist) ; w sumie wyświetlimy 204 linie
    • 26: CommentAuthorMADRAFi
    • CommentTime31 Jan 2019
     
    Wydaje mi sie ze wlasnie tak mam:

    dl_start
    dta DL_DLI + DL_BLANK8
    dta DL_MODE_160x192G4 + DL_LMS, a(GFX_ADDRESS)
    :99 dta DL_MODE_160x192G4
    dta DL_DLI + DL_BLANK8
    dta DL_MODE_40x24T2 + DL_LMS, a(TXT_ADDRESS)
    :5 dta DL_MODE_40x24T2
    dta DL_DLI + DL_BLANK8
    dta DL_MODE_40x24T2 + DL_HSCROLL + DL_LMS, a(SCROLL_ADDRESS)
    dta DL_JVB, a(dl_start)
    • 27: CommentAuthortebe
    • CommentTime31 Jan 2019
     
    wydaje się OK, więc może być problem z adresem samej DLIIST-y w pamięci, jest umiejscowienie też nie jest dowolne

    Pascal nie pozwala ustalić adresu dla stałych, więc lepiej przepisać je pod wskazany adres, wtedy będziesz miał kontrolę nad adresem DLIST-y (chyba że umieścisz DLIST w RESOURCE, choćby jako blok ASM)
    • 28: CommentAuthorMADRAFi
    • CommentTime31 Jan 2019
     
    moje dlisty sa resoursami w bloku asm

    DISPLAY_LIST_ADDRESS_MENU rcasm 'dlist_menu.asm'
    DISPLAY_LIST_ADDRESS_CONSOLE rcasm 'dlist_console.asm'


    Kazda z nich definiuje rozne dli i vbl, a nawet kilka dli :)
    • 29: CommentAuthortebe
    • CommentTime1 Feb 2019
     
    Bez listingu się nie obejdzie
    • 30: CommentAuthorMADRAFi
    • CommentTime2 Feb 2019 zmieniony
     
    Usunalem swoje glupoty, bo znalazlem blad :)
    • 31: CommentAuthorkski
    • CommentTime12 Feb 2019
     
    Czy są jakieś reguły/ograniczenia użycia "zagnieżdżonych" modułów w mad pascalu (lub pascalu w ogóle)?
    Podczas rozwijania programu (kilkanaście modułów) zaczeły mi się pojawiać błędy podczas kompilacji: Duplicate identifier 'nazwa modułu' lub inne całkiem bez sensu. Oczywiście dalsze moduły używają poprzednich itp.
    Załączam przykład pusty program 10 modułów.

    Przy kompilacji otrzymuję

    Mad Pascal Compiler version 1.5.7 [2018/07/15] for 6502
    Compiling main.pas
    UNIT2.pas (7,9) Error: Duplicate identifier 'UNIT1'
    D:\atariworkspace\bobleman4>mads.exe main.a65 -x -i:d:\MadPascal\base -o:main.xex
    ZPFREE: $0000..$007F
    ZPFREE: $00D8..$00FF
    ; ----------------------------
    main.a65 (169) ERROR: Missing .ENDL
    .....

    Main.a65 jest ucięty.

    Z góry dziękuję za pomoc.
    • 32: CommentAuthorMADRAFi
    • CommentTime12 Feb 2019
     
    W przykladzie jedynie unit2 stwarza problem. Gdy wykomentujesz linie "uses unit1" to calosc sie kompiluje.

    BTW uses powinien byc przd slowem kluczowym "implementation"
    Dlaczego tak sie dzieje, to moze Tebe odpowie:)
    • 33: CommentAuthorkski
    • CommentTime12 Feb 2019
     
    Jak zostawię uses unit1 w unit2, a usunę jakiś inny uses w innym unicie to też się kompiluje. Tak jakby się coś przepełniło.

    Niby czemu uses powinno być przed implementation.
    • 34: CommentAuthortebe
    • CommentTime12 Feb 2019 zmieniony
     
    jest OK to co napisał kski, zabezpieczenie w kompilatorze przed powtórzeniem w linii kilka razy tego samego unitu zgłasza ten błąd, bo sprawdza całą listę nie rozróżniając kolejnych unitów
    • 35: CommentAuthorMADRAFi
    • CommentTime12 Feb 2019
     
    Probowal ktos uzywac xbios z poziomu MP?

    Jestem w stanie odczytac wersje xbios, otworzyc katalog. nie moge sobie poradzic z prawidlowym przekazaniem nazwy pliku.
    Staram sie w 1 programie uruchomic kolejny komenda Xbios_load_file

    ldy <fname
    ldx >fname
    jmp xBIOS_LOAD_FILE


    probowalem juz przekazywac tablice typu byte jako fname. Niestety bez skutku.
    Jakies sugestie?
    • 36: CommentAuthortebe
    • CommentTime13 Feb 2019
     
    sysutils

    function DeleteFile(var FileName: TString): Boolean; assembler;
    asm
    { txa:pha

    sec ; iocheck on
    jsr @openfile.lookup
    bmi stop

    lda #33
    sta iccmd,x
    lda FileName
    add #1
    sta icbufa,x
    lda FileName+1
    adc #0
    sta icbufa+1,x
    lda #$00
    sta icax1,x
    sta icax2,x
    jsr ciov

    stop sty MAIN.SYSTEM.IOResult

    bpl ok

    lda #false
    seq

    ok lda #true
    sta Result

    pla:tax
    };
    end;
    • 37: CommentAuthortebe
    • CommentTime13 Feb 2019
     
    MP po poprawce dla USES
    • 38: CommentAuthorMADRAFi
    • CommentTime13 Feb 2019
     
    Nie wiem czy to ja zle rozumiem i nie znam assemblera czy nie umiem do xbiosa wyslac odpowiednio danych

    Najpierw mam zaladowac przy uzyciu lda filename+1?
    Jezeli tak to jak to sie robi (wczytanie pod address)

    bo takie cos nie dziala:
    procedure xbios_loadfile(filename: TString);assembler;
    asm {
    ldy <filename+1
    ldx >filename+1
    jmp xBIOS_LOAD_FILE

    };
    end;
    • 39: CommentAuthortebe
    • CommentTime13 Feb 2019 zmieniony
     
    a dlaczego używasz '<' , '>' ? to jest odpowiednik jak '#<' , '#>' czyli tryb natychmiastowy (immediate)

    STRING jest opisywany przez wskaźnik, przekazałeś do XBIOS-a adres wskaźnika, jeśli już chcesz tym sposobem to daj '<adr.filename+1' , '>adr.filename+1'

    a jeśli przez wskaźnik to
    lda filename
    clc
    adc #1
    tay
    lda filename+1
    adc #0
    tax


    MadPascal oprócz wskaźnika odkłada też adres bezwzględny dla tablic o rozmiarze nie przekraczającym 256 bajtów, a taką tablicą jest 'STRING: array [0..255] of Char'

    podglądając plik *.A65 można to zauważyć

    adr.FILENAME	= DATAORIGIN+$007A
    .var FILENAME = adr.FILENAME .word


    powyżej podałem przykład funkcji DeleteFile z SysUtils, tam jest przekazanie parametru (jako VAR) i jego obsługa z poziomu ASM

    VAR jest bardziej ekonomiczne w warunkach Atari 8-bit, bo tylko wskaźnik jest przekazywany, Twoje podejście rezerwuje pamięć dla wskaźnika i całego ciągu, który jest kopiowany do nowej lokalizacji
    • 40: CommentAuthorkski
    • CommentTime13 Feb 2019
     
    Dzięki Tebe to było ekspresowe. Działa.
    • 41: CommentAuthorMADRAFi
    • CommentTime13 Feb 2019 zmieniony
     
    Tebe, dzieki wielkie.

    Probowalem roznych rzeczy, nadal po wywolaniu xbios_load_file na ekranie pojawia sie boot error :(

    xBIOS                      = $800;
    xBIOS_VERSION = xBIOS+$02;
    xBIOS_LOAD_FILE = xBIOS+$06;



    procedure xbios_loadfile(var filename: TString);assembler;
    asm {
    lda filename
    clc
    adc #1
    tay
    lda filename+1
    adc #0
    tax
    jmp xBIOS_LOAD_FILE
    };
    end;
    • 42: CommentAuthortebe
    • CommentTime13 Feb 2019 zmieniony
     
    JMP zmień na JSR i dodaj zachowanie rejestru X, MP używa rejestru X do zarządzania stosem programowym

    txa
    pha

    lda filename
    clc
    adc #1
    tay
    lda filename+1
    adc #0
    tax
    jsr xBIOS_LOAD_FILE

    pla
    tax

    nazwa pliku (FILENAME) dużymi literami np. 'D:PLIK.DAT', pierwsza litera odnosi się do urządzenia D-isk, chociaż nie wiem czy XBIOS tego wymaga w końcu działa tylko z dyskietką i nie instaluje swojego handlera

    jeśli to nie zadziała to wina XXL-a, na 100% ;)
    • 43: CommentAuthormono
    • CommentTime13 Feb 2019
     
    asm {
    lda filename
    clc
    adc #1
    tay
    lda filename+1
    adc #0
    tax
    jmp xBIOS_LOAD_FILE
    };

    Skoro wiadomo, że to powędruje do XY to czy nie można by było:
    asm {
    ldy filename
    ldx filename+1
    inx
    sne
    iny
    jmp xBIOS_LOAD_FILE
    };

    Niby drobiazg, bo to nie jest żadna krytyczna czasowo procedura, ale trochę kłuje w oczy :)
    Wiem, czepiam się.
    • 44: CommentAuthorMADRAFi
    • CommentTime13 Feb 2019
     
    No ja bym na to nie wpadl.
    Wszystko sie rozbijalo o duze litery nazwy pliku chyba :D, bo zadzialal poprzedni kod jak to zmienilem.

    Nie wywoluje tez procedury bezposrednio ze stringiem tylko przez zmienna teraz.

    Ogolnie pomoc Tebe okazala sie nieoceniona! :)
    • 45: CommentAuthortebe
    • CommentTime13 Feb 2019 zmieniony
     
    my tu mamy podstawy a Ty reprezentujesz poziom wyższy Mono :), poza tym bez JMP-ów tutaj to ma wrócić do procki pascalowej i zakończyć się po bożemu a nie w pół drogi

    p.s.
    pomyliłeś kolejność w Y jest młodszy, powinno być INY ...
    • 46: CommentAuthortebe
    • CommentTime13 Feb 2019 zmieniony
     
    MADRAFi zajrzyj do przykładów MP, katalog FILE

    i plik 'file.pas', po jego kompilacji dostaniesz taką notkę

    file.pas (9) Note: Only uppercase letters preceded by the drive symbol, like 'D:FILENAME.EXT' or 'S:'

    możesz też obejrzeć pozostałe przykłady, tak wiem zależy Ci na pamięci więc wybrałeś XBios-a ale jakby to jest też taka procka w SYSTEM jak ReadSector :)

    XBios nie korzysta z OS więc wygrywa :)

    p.s.
    gdzie ładujesz kod XBIOS-a, bo w sumie można zrobić z tego unit dla potomności :)
    • 47: CommentAuthorMADRAFi
    • CommentTime13 Feb 2019
     

    mono:

    Skoro wiadomo, że to powędruje do XY to czy nie można by było


    Nie wiem, moze i mozna by bylo. Ale twoj kod niestety nie dziala :)
    pokazuje sie boot error
    • 48: CommentAuthorxxl
    • CommentTime13 Feb 2019
     
    bo jest literowka. zamiast inx powinno byc iny a zamiast inx - iny. jak nizej

    asm {
    ldy filename
    ldx filename+1
    iny
    sne
    inx
    jmp xBIOS_LOAD_FILE
    };
    • 49: CommentAuthortebe
    • CommentTime13 Feb 2019 zmieniony
     
    txa
    pha

    ldy filename
    ldx filename+1
    iny
    sne
    inx
    jsr xBIOS_LOAD_FILE

    pla
    tax


    p.s.
    XXL nie chciałbyś poszerzyć grono odbiorców XBIOS-a tworząc odpowiedni UNIT dla Mad Pascala :) ?
    • 50: CommentAuthorxxl
    • CommentTime13 Feb 2019
     
    gdybym mial wskazywac wlasciwa i kompetentna osobe to bylby to Bocianu.