76

(8 odpowiedzi, napisanych Programowanie - 8 bit)

Program pobiera kolejne parametry i wypisuje je w kolejnych liniach. Na koniec wyświetla ile parametrów podano. Kod od "noarg" odpowiada za wyświetlenie liczby podanych argumentów. "nosupp" wyświrtla komunikat o niewłaściwym DOS-ie. "print" wyświetla parametr.

Poprawiłem funkcję "getpar". Pierwotna wersja zwracała pod SDX długość argumentu o 3 bajty krótszą niż pod DOS-em II+/D. SpartaDOS przy obliczaniu długości parametru nie uwzględnia początkowej nazwy urządzenia ("Dn:").

        opt ?+

iccmnd  =   $0342
icbufa  =   $0344
icbufl  =   $0348
ciov    =   $e456

fr0     =   $d4
inbufp  =   $f3
lbuff   =   $0580
ifp     =   $d9aa
fasc    =   $d8e6

        org $2000
start   jsr getpar
        bcs nosupp
        beq noarg
        jsr print
        inc argc
        jmp start

noarg   lda #<argc_s
        ldy #>argc_s
        ldx #argc_l
        jsr print
        lda argc
        sta fr0
        lda #$00
        sta fr0+1
        jsr ifp
        jsr fasc
        ldy #$ff
?lp     iny
        lda (inbufp),y
        bpl ?lp
        and #$7f
        sta (inbufp),y
        iny
        lda #$9b
        sta (inbufp),y
        iny
        tya
        tax
        lda inbufp
        ldy inbufp+1
        bne print

nosupp  lda #<bdos_s
        ldy #>bdos_s
        ldx #bdos_l

print   sta icbufa
        sty icbufa+1
        stx icbufl
        ldx #$00
        stx icbufl+1
        lda #$09
        sta iccmnd
        jmp ciov

argc_s  .by "Liczba parametrow:"
argc_l  =   *-argc_s
bdos_s  .by "Nie ten DOS"
bdos_l   =  *-bdos_s
argc    .by 0

; Get Parameter for DOS II+/D
; Results:
;       C=1 - neither DOS II+/D nor SDX
;       Z=1 - no more parameters
;   If Z=0 & C=0:
;       AY - pointer to parameter
;       X  - length of parameter

Getpar  lda $0700
        asl
        cmp #'D'*2
        beq ?d2p
        cmp #'S'*2
        beq ?sdx
        sec
        rts

?d2p    lda #<?d2dp     ; Init for
        ldx #>?d2dp     ; DOS II+/D
        jsr ?stdos

        lda $13c3
        sta ?cur

        ldy $0348
        lda $1b00
        cmp #'M'
        beq ?dec
        lda $1b01
        cmp $13c3
        beq ?skp
?dec    dey
        dey
?skp    lda #$9b
        sta $1b02,y

?dos2d  ldy #$00        ; DOS II+/D
?nxt    lda $1b03,y
        iny
        cmp #$20
        beq ?fnd
        cmp #$9b
        bne ?nxt
        php
        ldx #$03
?ccr    lda ?cur,x
        sta $0580,x
        dex
        bpl ?ccr
        bmi ?aex

?fnd    ldx #<$1b03
        stx $f3
        ldx #>$1b03
        stx $f4
        jsr $dba5
        jsr $14b9
        ldx #$ff
?mv     inx
        lda $1b00,x
        sta $0580,x
        cmp #$20
        beq ?pel
        cmp #$9b
        bne ?mv
?pel    lda #$9b
        sta $0580,x
        php
?aex    lda #<$0580
        ldy #>$0580
        plp
        clc
        rts

?cur    .by "D :" $9b

?sdx    lda #<?spx      ; Init for
        ldx #>?spx      ; SpartaDOS
        jsr ?stdos
        ldy #$04
        lda ($0a),y
        sta ?spdos+1
        iny
        lda ($0a),y
        sta ?spdos+2
        lda $0a
        adc #$20        ; C=0
        sta ?lo+1
        lda $0b
        adc #$00
        sta ?hi+1

?spdos  jsr 0           ; SpartaDOS
        php
?lo     lda #$00
?hi     ldy #$00
        inx
        inx
        inx
        plp
        clc
        rts

?stdos  sta ?ad+1
        stx ?ad+2
        ldy #$02
?ad     lda 0,y
        sta getpar,y
        dey
        bpl ?ad
        rts

?d2dp   jmp ?dos2d
?spx    jmp ?spdos
        .en

77

(8 odpowiedzi, napisanych Programowanie - 8 bit)

Niestety nie jest i trzeba się trochę nakombinować. W zasadzie wszystko, czego potrzebujesz, jest opisane, więc jak raz napiszesz własną procedurę, to będziesz miał święty spokój. :-)

78

(8 odpowiedzi, napisanych Programowanie - 8 bit)

Po uruchomieniu magazynu włóż drugą dyskietkę (Syzygy6b.atr) i wtedy wczytaj artykuł.

79

(8 odpowiedzi, napisanych Programowanie - 8 bit)

Polecam artykuł w Syzygy #6: "Wiersz poleceń w DOSie II+/D". Początkowo traktuje tylko o tytułowym DOS-ie, ale na końcu jest opis uniwersalny. Do artykułu dołączony jest plik z przykładami.
http://ftp.pigwa.net/stuff/collections/ … ny/Syzygy/

80

(111 odpowiedzi, napisanych Programowanie - 8 bit)

Przecinki rozwiązują problem. Sprawdziłem to zanim napisałem. W dokumentacji stoi, że można używać spacji lub przecinków. Akurat przecinków nie lubię - łatwiej w spację trafić. Zmiana dokumentacji nie jest rozwiązanie. ;-)

81

(16 odpowiedzi, napisanych Zloty)

Cyprian napisał/a:

dobry to był sztab,

Draco i As jeszcze z pewnością się z Tobą nie zgodzą co do użytego czasu przeszłego. ;-)

82

(111 odpowiedzi, napisanych Programowanie - 8 bit)

Trudno mi uwierzyć, że nikt nie zetknął się poniższym problemem, ale próba asemblacji:

    opt l+

w    =   31

    org $0600
    .byte -w-1 -w -w+1
    .byte 256-w-1 256-w 256-w+1
    .by   -w-1 -w -w+1
    .by   256-w-1 256-w 256-w+1
    .byte -w-1
    .byte 256-w-1
    .by   -w-1
    .by   256-w-1
    .byte 1 2 3 4
    .by   1 2 3 4
    .en

wypluwa błędy:

$ mads test.asm 
        .byte 256-w-1 256-w 256-w+1
test.asm (7) ERROR: Undeclared label W256 (BANK=0)
test.asm (7) ERROR: Value out of range (-1031 must be between 0 and 255)
        .byte 1 2 3 4
test.asm (14) ERROR: Value out of range (1234 must be between 0 and 255)
Writing listing file...

Listing:

mads 2.1.5
     1                     opt l+
     2
     3 = 001F            w    =   31
     4
     5                     org $0600
     6 FFFF> 0600-060F> A3        .byte -w-1 -w -w+1
     7 0601 F9                .byte 256-w-1 256-w 256-w+1
     8 0602 C1 C2            .by   -w-1 -w -w+1
     9 0604 E0 E1 E2            .by   256-w-1 256-w 256-w+1
    10 0607 E0                .byte -w-1
    11 0608 E0                .byte 256-w-1
    12 0609 E0                .by   -w-1
    13 060A E0                .by   256-w-1
    14 060B D2                .byte 1 2 3 4
    15 060C 01 02 03 04            .by   1 2 3 4
    16                     .en

Jak zapisać w jednym wierszu przy użyciu dyrektywy ".byte" lub ".by" liczby ujemne i dlaczego ".byte 1 2 3 4" łączy rozdzielone cyfry w jedną liczbę?

83

(115 odpowiedzi, napisanych Zloty)

Pin, zdaje się, że miałeś swój udział w tych 26 latach dośwaidczenia. ;-)

Poza tym zlot jest w lipcu, więc styczniowa pogoda na pewno nie będzie przeszkadzać.

Co do loga, to stare było mocno 8-bitowe i bardzo atarowskie. A nowe? Nowe po prostu jest. Widać, że Tiger miał gorszy dzień.

84

(16 odpowiedzi, napisanych Zloty)

Vasco/Tristesse napisał/a:

Ej, ale wyrolowali Was na rachunku i znowu tam idziecie?

Kto wyrolował Draco i Aleksa nie jest takie pewne, np. szisza była, ale ci, którzy z niej korzystali, nie poczuli się do uregulowania za nią rachunku.

85

(34 odpowiedzi, napisanych Sprzęt - 8bit)

AS... napisał/a:

Kup replikę toms-a 720 od Zaxon-a

Kup replikę Roleksa i chwal się, że masz oryginał.

86

(34 odpowiedzi, napisanych Sprzęt - 8bit)

ravek130xe napisał/a:

Czy to normalne że boot error wyświetla się nawet jak nie ma.dyskietki w stacji?

Tak. Komunikat będzie pojawiać się z mniejszą częstotliwością, ale będzie.

ravek130xe napisał/a:

Wyszlo 138. Czyli błąd

Czy Twoja stacja jest ustawiona jako pierwsza?https://www.atari-computermuseum.de/bilder/xl/conn_1050.PNG
Pod Altirrą formatowanie się powiodło. ;-)

87

(34 odpowiedzi, napisanych Sprzęt - 8bit)

perinoid napisał/a:

możesz zabootować z niego komputer do DOS-a a potem sformatować dyskietkę

DOS niepotrzebny. Wystarczy Basic: :-)

10 D=1:REM Numer stacji dyskietek
15 DIM C$(11):C=ADR(C$)
20 POKE 768,4:POKE 769,D
25 FOR A=770 TO 777:READ B:POKE A,B:NEXT A
30 FOR A=C TO C+10:READ B:POKE A,B:NEXT A
35 ? USR(C)
40 END
45 DATA 33,64,0,4,248,0,128,0
50 DATA 104,32,89,228,132,212,169,0,133,213,96

"1" oznacza powodzenie, wszystko równe albo powyżej 128 - błąd.

Maszin kąd pałerd baj KUBEK. ;-)

88

(2 odpowiedzi, napisanych Bałagan)

Jest rondo Dżeka Tramiela oraz bardziej polski ;-) Łódzki Technopark im. Jacka Trzmiela.
https://goo.gl/maps/VCGHTjP6gGAtfbDM9

89

(34 odpowiedzi, napisanych Sprzęt - 8bit)

Stację sobie zatrzymaj i poszukaj zasilacza. Kabel SIO kupisz u Lotharka.

90

(119 odpowiedzi, napisanych Fabryka - 8bit)

tebe napisał/a:

znak '*' na końcu ciągu oznacza invers

OR $80, czy EOR $FF? Pisz jak dla koderów, a nie klikaczy jakiegoś - za przeproszeniem - MadPascala. ;-)

91

(28 odpowiedzi, napisanych Zloty)

AS... napisał/a:

Lizzard

Co mi pan tutaj drugie "z" imputujesz? Ty ... (bez "c")! :)

92

(11 odpowiedzi, napisanych Fabryka - 8bit)

mono napisał/a:

Fajny byłby ogólny sterownik powiedzmy CIO.SYS który pozwalałby na obsługę dowolnego urządzenia CIO za pomocą infrastruktury SDX. Bo to by załatwiło kwestię przelotek i używania różnych N:, H:, O: czy co tam kto wymyśli. Aż dziw, że nikt dotąd nie napisał - może się nie da...?

Pewnie się da, tylko po co, skoro istnieje gotowa procedura CIO w systemie operacyjnym, do której wejście jest powszechnienie znane przez $E456. :-)

93

(11 odpowiedzi, napisanych Fabryka - 8bit)

Rezerwuję U i Y! :-]

94

(136 odpowiedzi, napisanych Zloty)

Vasco/Tristesse napisał/a:

No i pojawiły się sugestie, aby w 2024 zacząć jednak od czwartku.

To nie są sugestie, tylko uprzejme - jeszcze - prośby. ;-)

Vasco/Tristesse napisał/a:

Ciągle się waham...

Jak w dowcipie o bacy i jego żonie po weselu?

95

(11 odpowiedzi, napisanych Fabryka - 8bit)

Pin napisał/a:

Myślę, że pomiędzy N: a DN: jest różnica i nie powinno to stanowić problemu.

Nie ma różnicy. Zarówno "N:", jak i "DN:" jest odwołaniem do tego samego dysku.

Aby FujiNet był obsługiwany przez SpartaDOS X, musi być dodane urządzenie (np. "NET:"). Rzecz w tym, że jest już siedem urządzeń, więc w tabeli urządzeń pozostało niewiele miejsca na nowe.

Pin napisał/a:

Może po prostu to urządzenie (Fujinet) niech ma dla przykładu V: - nie było czegoś takiego raczej.

Czy oznaczenie "V:" wzięło się z tego, że Twój palec akurat wylądował na tej literze? :-)

96

(136 odpowiedzi, napisanych Zloty)

Sześciu Króli ;-) przypada w sobotę, więc zatrudnieni na etacie mogą spróbować odebrać dzień wolny w piątek, co będzie z korzyścią dla ich puli urlopowej.

Mateoos, wpisz już teraz 5 stycznia w plan urlopowy, bo ktoś Ci w robocie zajmie termin. ;-)

97

(28 odpowiedzi, napisanych Zloty)

Impreza zamknięta ogłoszona publicznie? Wpadaj! Everyone is invited! :-)

98

(28 odpowiedzi, napisanych Zloty)

Też się wstępnie zapowiadam.

99

(57 odpowiedzi, napisanych Kupię / Sprzedam / Zamienię Atari)

O tempora! O mores! Ludzie dopominają się f**ków w skrolach dla siebie. :-)

drygol napisał/a:

Lizard, paka w drodze :)

Mam nadzieję, że kurier nie zostawi jej obok paczkomatu zamiast w środku. Dzisiaj tak właśnie zagubioną przesyłkę znalazłem. Nie do mnie, ale strach jest. ;-)

100

(229 odpowiedzi, napisanych Bałagan)

VLX napisał/a:

Trochę nierozsądnie. Jeśli w jakimś wypadku stracisz głowę, to przepadną Ci te hasła. ;)

Wtedy jego zmartwieniem będzie, aby mu nie nakapało do środka.