home *** CD-ROM | disk | FTP | other *** search
/ Syzygy Magazine 6 / Syzygy_Magazine_6_1999___pl_Disk_2_of_3_Side_B.atr / sparta1.arc / SPARTA01.DOC next >
Text File  |  1999-02-20  |  20KB  |  1 lines

  1. Serce systemu Sparta DOS X.¢¢¢Najwaəniejsze dla systemu SDX procedury, wektory i inne obiekty przepisywane s⇧¢podczas zimnego startu do obszaru RAM przeznaczonego standardowo dla DOS-u,¢czyli pod adres $0700. Takie rozwi⇧zanie umoəliwia  atw⇧ zmian❎ wektorw i¢procedur, co stanowi o elastyczno③ci systemu.¢¢Obszar ten dzieli si❎ na kilka cz❎③ci - w pierwszej znajduj⇧ si❎ tablice i¢zmienne.¢¢W opisie podano nazw❎, warto③⇨ bezpo③rednio po zainicjowaniu DOS-u, d ugo③⇨ i¢adres zmiennej. UWAGA: warto③ci te s⇧ aktualne jeszcze przed odczytem¢sterownikw systemowych zawartych w pliku konfiguracyjnym (CONFIG.SYS)!¢¢¢s_flag   dta 'S'     ($0700)  Sdx FLAG.¢¢Symboliczna nazwa SDX.¢¢¢s_ver    dta b($40)  ($0701)  Sdx VERsion¢¢Numer wersji SDX w kodzie BCD.¢¢¢...      dta b($00)¢¢        Znak zarezerwowany.¢¢¢sioidx   dta b($FF) (9)  ($070F)  Sector IO InDeX.¢¢Tablica zamiany numerw DSK:¢¢¢siohand  dta a($00) (4)  ($0718)  Sector IO HANDler.¢¢Tablica adresw handlerw SIO.¢¢¢slvtab   dta b($FF) (16) ($0720)  System LeVel TABle.¢¢Tablica warto③ci SYSLEVEL dla kana w IO SDX. Warto③⇨ $FF oznacza kana ¢zamkni❎ty.¢¢¢ldftab   dta b($00) x16  ($0730)  Logical Disk Format adress TABle¢¢Tablica adresw procedur obs uguj⇧cych logiczne formaty dyskietek.¢¢¢devtab   dta b($FF) (16) ($0740)  DEVice TABle¢¢Tablica urz⇧dze dla kana u IO SDX. Warto③⇨ $FF oznacza kana  zamkni❎ty.¢¢¢handtab  dta a(0)   (16) ($0750)¢¢Tablica adresw sterownikw urz⇧dze SDX.¢¢¢siocbidx equ $0760  (1)   Sdx IOCB InDeX¢¢Numer aktualnie uəywanego kana u IO.¢¢¢device   equ $0761  (1)   Aktualnie uəywane urz⇧dzenie SDX. Cztery starsze to¢numer typu urz⇧dzenia (0-DSK:,1-CLK: itd.). Cztery m odsze bity to numer¢kolejny urz⇧dzenia.¢¢¢name     equ $762  (11)¢¢Nazwa pliku 8+3.¢¢¢names    equ $76D  (11)¢¢Nazwa pliku 8+3 dla operacji zmiany nazwy.¢¢¢opmode   equ $778  (1)   OPen MODE¢¢Tryb otwarcia pliku:¢x4-odczyt,x8-zapis,xC-zapis i odczyt, 0x-plik,1x-katalog.¢¢¢fatr1    equ $779  (1)   File ATtRibutes 1¢¢Zadane przez uəytkownika atrybuty dla pliku dla jego odszukania¢¢¢fatr2    equ $77A  (1)   File ATtRibutes 2¢¢Atrybuty dla zamiany lub utworzenia pliku.¢¢¢date     equ $77B  (3)¢¢Data utworzenia pliku.¢¢¢time     equ $77E  (3)¢¢Czas utworzenia pliku.¢¢¢dateset  equ $781  (1)   DATE SET flag¢¢Flaga zmiany czasu i daty dla pliku. Gdy rəne od zera pozostaj⇧ bez zmian.¢Kasowane po uəyciu¢¢¢faux1    equ $782  (1)¢¢Bajty pomocnicze.¢¢¢faux2    equ $783  (1)¢faux3    equ $784  (1)¢faux4    equ $785  (1)¢faux5    equ $786  (1)¢¢¢syscall  equ $787  (1)   SYStem CALL flag.¢¢Gdy wywo ywane s⇧ procedury SIO przez uəytkownika to z warto③ci⇧ $FF.¢¢¢dirbuf   equ $789  (23)  DIRectory entry BUFfer.¢¢Wpis katalogowy ostatnio otwartego pliku. Zawiera on :¢¢¢dirfatr  equ $789  (1)   DIR File ATtRibuts¢¢Atrybuty pliku.¢¢¢dirf1sec equ $78A  (2)   DIR File 1st map SECtor.¢¢Pierwszy sektor mapy sektorw pliku.¢¢¢dirflen  equ $78C  (3)   DIR File LENght¢¢D ugo③⇨ pliku.¢¢¢dirfname equ $78F  (11)  DIR File NAME. ¢Nazwa pliku.¢¢¢dirfdate equ $79A  (3)   DIR File DATE. ¢Data utworzenia pliku.¢¢¢dirftime equ $79D  (3)   DIR File TIME. ¢Czas utworzenia pliku.¢¢path     equ $7A0  (64)¢¢⇦cieəka dost❎pu do pliku.¢¢dosvect  equ $7E0  (16)  DOS VECTors¢¢Wektor i skoki do najwaəniejszych procedur SDX.¢¢Teraz omwi❎ wektory i skoki do najwaəniejszych procedur SDX.¢¢         org $703¢¢kernel   equ $800¢err_84   equ $854¢lsiomain equ $865¢¢jkernel  jmp kernel      ($703)  Jump to KERNEL¢¢Skok do j⇧dra systemu.¢¢¢jpsio    jmp err_84      ($706)  Jump to Physical Sector IO¢¢Skok do fizycznych operacji sektorowych¢¢¢jmisc    jmp err_84      ($709)  Jump to MISCellaneous functions¢¢Skok do funkcji pomocniczych¢¢¢jlsio    jmp lsiomain    ($70C)  Jump Logical Sector IO¢¢Skok do logicznych operacji sektorowych¢¢Skoki te wskazuj⇧ na əywotne procedury SDX, bez w⇧tpienia najwaəniejsz⇧ z nich¢jest procedura KERNEL steruj⇧ca urz⇧dzeniami SDX.¢¢Procedur❎ KERNEL wywo uje si❎ z numerem funkcji w Y, urz⇧dzeniem w DEVICE i¢kana em SDX IOCB w SIOCBIDX.¢¢         org $800¢¢slvtab   equ $720¢devtab   equ $740¢handtab  equ $750¢device   equ $761¢siocbidx equ $760¢¢kernel   cpy #$08        Na pocz⇧tku procedura porwnuje rozkaz z liczb⇧ 8.¢         bcs e0835       Numerami 0-7 oznaczone s⇧ te funkcje ktre wymagaj⇧¢                         kana u otwartego.¢         ldx siocbidx    Dla nich teə ustawiane jest urz⇧dzenie,¢         lda devtab,x¢         sta device      a gdy ono nie istnieje wywo ywany jest b ⇧d.¢         bmi err_85¢         cpy #$07        Gdy rozkazem nie jest CLOSE nast❎puje wywo anie¢         bne jhandler    sterownika urz⇧dzenia.¢         lda #$FF¢         sta slvtab,x    Gdy chodzi o rozkaz CLOSE, kana  jest zamykany.¢         sta devtab,x¢jhandler lda device      Teraz nast❎puje obliczenie indeksu adresu sterownika¢         and #$70        wed ug numeru urz⇧dzenia.¢         lsr @¢         lsr @¢         lsr @¢         tax¢         lda handtab,x   Pobranie i ustawienie adresu,¢         sta e0833+1¢         lda handtab+1,x¢         sta e0833+2¢         beq err_84      a gdy brak adresu wywo ywany jest b ⇧d,¢e0833    jmp $0000       w przeciwnym wypadku nast❎puje wywo anie i koniec¢                           procedury.¢e0835    lda #$FF        Gdy operacje wymagaj⇧ zamkni❎tego kana u, procedura¢         sta siocbidx    ustawia kana  nieaktywny.¢         jsr jhandler    Wywo uje procedur❎ sterownika,¢         pha             zapami❎tuje zwrcon⇧ warto③⇨ i¢         ldx siocbidx¢         bmi e084F       sprawdza czy kana  zosta  otwarty (przez OPEN).¢         lda device      Gdy si❎ tak sta o ustawia urz⇧dzenie i poziom¢         sta devtab,x    systemu w odpowiednich tablicach.¢         lda syslevel¢         sta slvtab,x¢¢e084F    pla             Na kocu od③wierza warto③⇨ zwrcon⇧ przez handler i¢         rts             koczy dzia anie.¢¢err_85   lda #$85        Channel or IOCB not open.¢         rts¢err_84   lda #$84        No device handler installed.¢         sec¢         rts¢¢Procedura KERNEL korzysta z tablicy adresw sterownikw ktra ma posta⇨:¢¢           org $750¢¢conhand  equ $BE6¢prnhand  equ $BE9¢carhand  equ $BC4¢¢handtab  dta a($0000)    DSK: ($750) HANDler adress TABle.¢         dta a($0000)    CLK:    Tablica wektorw procedur obs ugi urz⇧dze.¢         dta a(carhand)  CAR:    Po zimnym starcie istniej⇧ tylko trzy¢         dta a(conhand)  CON:    sterowniki.¢         dta a(prnhand)  PRN:¢         dta a($0000)    COM:¢         dta a($0000)    Reserved.¢         dta a($0000)    Reserved.¢¢Nast❎pn⇧ waən⇧ cz❎③ci⇧ SDX jest procedura wywo uj⇧ca sterowniki czytaj⇧ce¢sektory. Swoje wektory wpisuj⇧ tu np.: SIO.SYS - obs uguj⇧ce z ⇧cze szeregowe¢jak i RAMDISK.SYS obs uguj⇧ce ramdyski. Uniezaleənia to system od fizycznego¢formatu dyskw bowiem wszystkie one rozpoznaj⇧ komendy bloku DCB.¢¢Procedura ma dwa pocz⇧tki Jeden uəytkownika, a drugi systemu.¢¢           org $0860¢¢siohand  equ $0718¢syscall  equ $0787¢shndidx  equ $0A1E¢¢lsiouser lda #$00        Logical Sector IO for USER. Dla odrənienia kasuje¢         sta syscall     flag❎ wywo ania systemowego.¢lsiomain ldx #$00        Logical Sector IO MAIN procedure. Na pocz⇧tku¢                         procedura kasuje i¢e0867    stx shndidx     zapami❎tuje indeks wywo ywanego sterownika.¢         lda siohand,x   Nast❎pnie pobiera adres sterownika.¢         sta e0879+1¢         lda siohand+1,x¢         sta e0879+2¢         beq e087D       A gdy jest on nieobecny pobierany jest nast❎pny.¢e0879    jsr $0000       Teraz sterownik jest wywo ywany, a gdy sw⇧¢         bcc e0888       dzia alno③⇨ zakoczy  prawid owo procedura koczy¢                           si❎.¢e087D    ldx shndidx     W innym przypadku zwi❎kszany jest indeks¢         inx¢         inx¢         cpx #$08        i porwnywany z maksymalnym.¢         bne e0867       Gdy jest mniejszy procedura si❎ powtarza.¢         lda #$8A        Gdy wi❎kszy nast❎puje b ⇧d Drive not present.¢e0888    cmp #$00        Dla ustawienia znacznikw nast❎puje porwnanie z¢         rts             zerem i koniec procedury.¢¢Procedury JMISC i JPSIO omwione b❎d⇧ wraz z sterownikiem DSK:  adowanym z¢plikiem SPARTA.SYS. Teraz omwi❎ wektory DOSVECT zawieraj⇧ce inne waəne¢procedury SDX.¢¢         org $7E0¢¢p_rts    equ $857¢ext_on   equ $88B¢ext_off  equ $8B9¢ext_sw   equ $8E0¢hdosini  equ $92F¢cio_     equ $975¢edit_    equ $9A2¢crunch_  equ $9AE¢dos_     equ $9BA¢mdosvect equ $A000¢¢jhdosini jmp hdosini     ($7E0) Jump to Hard DOS INItiation¢¢Skok do bezwarunkowej inicjacji DOSu.¢¢¢vdos     dta a(dos_)     ($7E3) Vector to DOS¢¢Wektor wej③cia do DOS-u wskazywany po③rednio przez DOSVEC ($0A)¢¢¢vcio     dta a(cio_)     ($7E5) Vector to CIO¢¢Wektor wej③cia do CIO.¢¢¢vedit    dta a(edit_)    ($7E7) Vector to EDITor¢¢Wektor wej③cia do edytora.¢¢¢vcrunch  dta a(crunch_)  ($7E9) Vector to CRUNCH line. Wektor wej③cia do¢procedury obrbki wst❎pnej wiersza polece.¢¢¢jtemp    jmp $0000       ($7EB) Jump to TEMPorary procedure.¢¢¢jmdvect  jmp mdosvect    ($7EE) Jump to Move DOS VECTors. Skok do procedury¢                                inicjuj⇧cej t⇧ tabel❎ adresow⇧.¢¢¢jext_on  jmp ext_on      ($7F1) Jump to EXTended memory ON. Skok do procedury¢                                w ⇧czaj⇧cej pami❎⇨ ext.¢¢¢jext_off jmp ext_off     ($7F4) Jump to EXTended memory OFf. Skok do procedury¢                                wy ⇧czaj¢⇧cej ext.¢¢¢jext_sw  jmp ext_sw      ($7F7) Jump to EXTended memory SWich. Skok do¢                                procedury prze ⇧czaj⇧cej ext.¢¢¢jcar_sw  jmp p_rts       ($7FA) Jump to CARtridge ON. Skok do procedury¢                                prze ⇧czaj⇧cej¢biblotek❎ SDX.¢¢¢jcar_old jmp p_rts       ($7FD) Jump to CARtridge OFf. Skok do procedury¢                                w ⇧czaj⇧cej poprzednie ustawienie bibloteki.¢¢¢Ostatnie dwa skoki zawieraj⇧ skoki do rozkazw RTS, nie jest to przypadek, te¢procedury instalowane s⇧ tylko podczas wywo ywania programu komend⇧ X.¢¢¢         org $92F    Hard DOS INItiation.¢¢gintlk   equ $3FA¢jcar_old equ $7FD¢jcar_on  equ $85B¢abank    equ $CFFF¢trig3    equ $D013¢portb    equ $D301¢cart_of  equ $D508¢cbank_1  equ $D5E1¢¢hdosini  lda portb       Na pocz⇧tku procedura wy ⇧cza wewn❎trzny BASIC,¢         ora #$02¢         sta portb¢         sta cbank_1     ustawia bank 1 modu u (biblotek❎ procedur) i wy ⇧cza¢         sta cart_of     inny zainstalowany modu .¢         lda #$00¢         sta abank       Nastepnie wy ⇧cza bank pami❎ci axlon.¢         lda trig3¢         sta gintlk      Teraz ustawia zmienne systemowe obecno③ci modu u.¢         jsr jcar_on     W ⇧cza modu .¢         jsr _INITZ      Wykonuje inicjowanie systemu.¢         jmp jcar_old    Wy ⇧cza modu .¢¢Z t⇧ cz❎③ci⇧ zwi⇧zana jest procedura DOSINIP ktr⇧ wskazuje wektor DOSINI ($C).¢¢         org $91B    DOS INItiation process.¢¢iniflg   equ $47¢dosflg   equ $A78¢vdos     equ $7E3¢¢dosinip  lda iniflg      Z pocz⇧tku procedura sprawdza flag❎ inicjowania i¢         bmi e092E       gdy jest ona ustawiona procedura si❎ koczy.¢         pha             Teraz flaga jest zapami❎tywana i wywo ywane jest¢         jsr jhdosini    twarde inicjowanie.¢         pla             Nast❎pnie przypominana jest warto③⇨ flagi i¢         bne e092E       gdy jest ona rəna od zera procedura si❎ koczy.¢         bit dosflg      W przeciwnym przypadku sprawdzana jest flaga wywo a-¢         bpl e092E       nia DOSu i gdy jest ona ustawiona¢         jmp (vdos)      DOS jest wywo ywany w innym przypadku procedura si❎¢e092E    rts             koczy.¢¢Inn⇧ waən⇧ procedur⇧ cz❎sto wywo ywan⇧ przez programy w sercu SDX jest jcar_on¢w ⇧czaj⇧ca modu . Wyst❎puje ona w parze z jcar_of.¢¢         org $858    Jump CARtridge OFf.¢¢jcar_sw  equ $7FA¢¢jcar_of  lda #$00        Wywo uj⇧ one podprogram jcar_sw z innym parametrem.¢         dta b($2C) bit¢jcar_on  lda #$FF   ($85B) Jump CARtridge ON.¢         jmp jcar_sw¢¢Nast❎pne dwie procedury maj⇧ prawie identyczny przebieg. W ⇧czaj⇧ one 1 bank¢modu u, wywo uj⇧ odpowiedni⇧ procedur❎ biblioteczn⇧ i wy ⇧czaj⇧ modu .¢¢         org $9AE¢¢jcar_old equ $7FD¢jcar_on  equ $85B¢_CRUNCH  equ $B9FB¢¢crunch_  jsr jcar_on     ($9AE)¢         jsr _CRUNCH¢         jmp jcar_old¢¢         org $9BA¢¢jcar_on  equ $85B¢_DOS     equ $A119¢¢dos_     jsr jcar_on     ($9BA)¢         jmp _DOS¢¢Nast❎pne procedury maj⇧ znaczenie czysto pomocnicze. S⇧ one wskazywane skokami¢z COMTAB i natychmiast skacz⇧ dalej pod odpowiednie wektory.¢¢¢         org $9B7    Jump DOS_¢¢vdos     equ $7E3¢¢jdos_    jmp (vdos)      Jest to skok po③redni wskazywany przez COMTAB.¢¢         org $9AB    Jump CRUNCH_¢¢vcrunch  equ $7E9¢¢jcrunch_ jmp (vcrunch)   Jest to skok po③redni wskazywany przez COMTAB+3.¢(zcrname)¢¢Nast❎pna procedura do ktrej istnieje skok w tablicy DOSVECT to MDOSVECT ktra¢to inicjuje w a③nie t⇧ tablic❎.¢¢         cbank 1¢         org $A000   Move DOS VECTors.¢¢dosvect  equ $7E0¢clsalsys equ $A1B5¢tdosvect equ $A00F¢¢mdosvect jsr clsalsys    Procedura wywo uje funkcj❎ CLSALSYS ktra zamyka¢         ldx #$1F        wszystkie kana y IO ATARI OS.¢eA005    lda tdosvect,x  Nast❎pnie przepisuje tablic❎ wektorw i skokw pod¢         sta dosvect,x   jej w a③ciwy obszar.¢         dex             Wygl⇧d tablicy opisany by  wcze③niej.¢         bpl eA005¢         rts¢¢¢Nast❎pne trzy procedury opisane skokami w tabeli s⇧ odpowiedzialne za¢prze ⇧czanie bankw pami❎ci main i ext. Dla wszystkich trzech procedur¢parametrem jest indeks wywo ywanej pami❎ci niesiony w A. Rejstry X,Y i F przez¢procedury zostaj⇧ zachowane.¢¢         org $88B    EXTended memory ON¢¢ext_sw   equ $8E0¢pbext    equ $906    (T_+4)¢tempx0   equ $A1F¢extidx_t equ $A21¢pbext_t  equ $A31¢calext_i equ $A41¢extidx   equ $A42¢portb    equ $D301¢¢ext_on   php             Na pocz⇧tku odk adana na stos jest flaga procesora.¢         sei             Nast❎pnie wy ⇧czane s⇧ przerwania IRQ i odk adany na¢         pha             stos indeks wywo ywanej pami❎ci.¢         stx tempX0      Teraz zapami❎tywany jest rejestr X.¢         ldx calext_i    Nast❎pnie procedura pobiera i zwi❎ksza indeks¢         inc calext_i    wywo a.¢         lda pbext       W odpowiedniej tablicy zapami❎tywana jest warto③⇨¢         sta pbext_t,x   wywo uj⇧ca pami❎⇨ main (indeks 0).¢         lda extidx      Teraz zapami❎tywany jest rwnieə indeks poprzedniego¢e08A0    sta extidx_t,x  wywo ania. I gdy by o to wywo anie pami❎ci MAIN¢         bne e08AB¢         lda portb       ustawiony zostaje powtrnie rejestr PBEXT dla¢         sta pbext       pami❎ci main wed ug warto③ci PORTB.¢e08AB    pla             Teraz pobrany zostaje indeks nowej pami❎ci i¢         cmp extidx      gdy jest nie rwny poprzedniemu wywo aniu¢         beq e08B4¢         jsr ext_sw      procedura prze ⇧cza banki.¢e08B4    ldx tempX0      W ostatnim etapie zostaje przywrcony rejestr X i F¢         plp             procesora i procedura si❎ koczy.¢         rts¢¢         org $8B9    EXTended memory OFF¢¢ext_sw   equ $8E0¢pbext    equ $906    (T_+4)¢tempx0   equ $A1F¢extidx_t equ $A21¢pbext_t  equ $A31¢calext_i equ $A41¢extidx   equ $A42¢¢ext_off  php             Na wst❎pnie zapami❎tane zostaj⇧ rejestry F,X i A.¢         sei¢         pha¢         stx tempX0¢         dec calext_i    Nast❎pnie zmniejszony i pobrany zostaje indeks¢         ldx calext_i    wywo a.¢         lda extidx_t,x  Teraz porwnane zostaje bierz⇧ce i poprzednie¢         cmp extidx      ustawienie pami❎ci i gdy s⇧ rəne¢         beq e08D0¢         jsr ext_sw      prze ⇧czony zostaje bank pami❎ci.¢e08D0    ldx calext_i    Nast❎pnie ponownie ustawiona zostaje warto③⇨ uakty-¢         lda pbext_t,x   wniaj⇧ca pami❎⇨ main.¢         sta pbext¢         ldx tempX0      W ostatnim etapie procedura od③wierza rejsetry X, F¢         pla             i A i koczy dzia anie.¢         plp¢         rts¢¢         org $8E0    EXTended memory SWich.¢¢axext    equ $902    (T_+0)¢pbext    equ $906    (T_+4)¢extmask  equ $91F    (T_+1D)¢tempx1   equ $A20¢extidx   equ $A42¢abank    equ $CFFF¢portb    equ $D301¢¢ext_sw   php             Na wst❎pie zapami❎tane zostaj⇧ rejestry F i X i¢         sei¢         sta extidx      ustawiony zostaje indeks aktualnie uəywanej pami❎ci.¢         stx tempX1¢         tax¢         lda pbext,x     Teraz nast❎puje uaktywnienie danej pami❎ci¢         eor portb¢         and extmask     tylko wobec bitw waənych w standardzie ATARI oraz¢         eor portb¢         sta portb¢         lda axext,x     w standardzie AXLON.¢         sta abank¢         ldx tempX1      W ostatnim etapie przywrcone zostaj⇧ rejestry X¢         plp             i F i procedura si❎ koczy.¢         rts¢¢Wykorzystywane w tych procedurach tablice s⇧ bardzo waəne dla SDX i ich¢procedur dlatego teə wskazywane s⇧ symbolem T_.¢¢T_       equ $902¢¢axext    dta b($00),b($00),b($00),b($00) ($902)¢pbext    dta b($FF),b($00),b($AF),b($00) ($906)¢¢portb_t  dta b($E3),b($A3),b($C3),b($83) ($90A)¢         dta b($E1),b($A1),b($C1),b($81)¢         dta b($63),b($23),b($43),b($03)¢         dta b($61),b($21),b($41),b($01)¢¢extmask  dta b($FF) ($91A)  Maska bitw waənych dla pami❎ci EXTENDED. Dla¢pami❎ci none ma warto③⇨ 0, dla OSRAM 1, a dla banked jest kopi⇧ rejestru pbmask¢($A74).¢¢W przestrzeni adresowej $700-$CC4 znajduj⇧ si❎ teə inne waəne dla SDX procedury.¢Oto one:¢¢Procedura obs ugi przerwa. Poniewaə SDX uəywa pami❎ci pod ATARI OS, a procedury¢IRQ i NMI mieszcz⇧ si❎ w a③nie w tym obszarze dla zapobieəenia zawieszenia si❎¢systemu podczas zimnego startu komputera wektory NMIVEC i IRQVEC pod ROM-em¢zostaj⇧ ustawione na t⇧ w a③nie procedur❎. Rodzaj przerwa sygnalizowany jest¢bitem Carry.¢¢¢         org $9F1    NMI and IRQ.¢¢irts     equ $A15¢portb    equ $D301¢NMIVEC   equ $FFFA¢IRQVEC   equ $FFFE¢¢nmi      sec             Ustawia znacznik NMI.¢           dta b($24) bit¢irq      clc        ($9F3) Ustawia znacznik IRQ.¢         pha             Nast❎pnie procedura zapami❎tuje A,¢         txa¢         tsx             S, oraz X.¢         pha¢         lda portb       Teraz zapami❎tuje ustawienie PORTB,¢         pha¢         ora #$01        w ⇧cza ATARI OS.¢         sta portb¢         lda <irts-1     Nast❎pnie na stos odk ada adres powrotu z¢         pha             przerwania na w asn⇧ procedur❎ kocz⇧c⇧.¢         lda >irts-1¢         pha¢         inx             Zwi❎ksza o dwa indeks stosu i odczytuje z niego¢         inx             warto③⇨ F, ktr⇧ ponownie odk ada na stos.¢         lda $0100,x¢         pha¢         bcc e0A12¢         jmp (NMIVEC)    Teraz procedura wykonuje skok do odpowiednich proce-¢e0A12    jmp (IRQVEC)    dur systemowych.¢¢irts     pla     ($A15)  Przy powrocie z przerwania o③wierzane s⇧ warto③ci¢         sta portb       PORTB,¢         pla¢         tax             X i¢         pla             A po czym procedura si❎ koczy.¢         rti¢¢Inn⇧ waən⇧ procedur⇧ zachowan⇧ dla zgodno③ci z poprzednimi wersjami SDX jest¢funkcja  aduj⇧ca COMMAND.COM (DOS Shell) i wykonanie polecenia z wiersza¢polece LBUF w COMTAB. Moəna j⇧ wywo a⇨ poprzez wektor VXCOMLD ($FFD2).¢¢¢         org $9C0    Jump LoaD Comman.COM¢¢jcar_old equ $7FD¢jcar_on  equ $85B¢ldccom   equ $A13C¢portb    equ $D301¢¢jldccom  lda portb       Na pocz⇧tku procedura w ⇧cza ATARI OS,¢         ora #$01¢         sta portb¢         jsr jcar_on     nast❎pnie w ⇧cza modu ,¢         lda #$01¢         jsr ldccom       aduje COMMAND.COM z rozkazem.¢         jmp jcar_old    Na kocu wy ⇧cza modu  i koczy dzia anie.¢¢Nast❎pne procedury znajduj⇧ce si❎ w obszarze serca systemu ($0700-$0CC4) s⇧¢cz❎③ciami sk adowymi trzech sterownikw zdefiniowanych dla SDX od samego¢pocz⇧tku. To znaczy CAR:, CON: i PRN: i omwione zostan⇧ wraz z tymi¢sterownikami, a takəe pomocniczych procedur wywo uj⇧cych _CIO, _CRUNCH i _EDIT¢i zostan⇧ one z nimi omwione.¢¢           end of doc.¢