4,451

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

Niestety, nie pomyślałem o tym, ofiara jestem. A teraz takiej możliwości nie mam :(

[ Dodano: 13.11.2004 03:38:52 ]

.. odpaliłem na początek emu - UltraXE (oczywiście z emulacją 65c816)... i krzak (tak?>:D)

No zawsze jest możliwość, że transfer z Atari na peceta się nie udał i plik binarny ma błedy transmisji :/ Proponuję przeliczyć sumy kontrolne, mogę udostępnić tu listing programu, który to robi.

PS. Self test może wywalać wszystko na czerwono, on po prostu nie działa, nie napisałem jeszcze nowego self testu, po prostu :>

4,452

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

Obrazek wygląda na double Sweet 16  :mrgreen:

Czyli to samo, ale dużo wolniej  ;)

Jak to, "stanie"? A przy PIO co robi?

4,455

(14 odpowiedzi, napisanych Software, Gry - 8bit)

Ja zawsze mam problem jak na ekranie 1000x700 pomiescic wszystkie wymagane informacje (program, ze 2 podglady pamieci, rejestrow, timerow,...). Na Atari to musi byc masakra.

Panowie, bez jaj. Po co to wszystko mieć na ekranie? To - wartości rejestrów, stany znaczników, operacje wykonywane przez rozkazy - widzi się po prostu na generowanym przez debugger listingu kodu. Debugger, który nie może pomieścić istotnych informacji na ekranie 1024x768 może potrzebny jest przy łamaniu cudzych programów, ale do śledzenia własnych wystarczy 40x24 (= debugger MAE).

Poza tym, ale to moja prywatna opinia, jeśli ktoś się uczy asemblera, to uzależnianie się od debuggera na tym etapie jest największą krzywdą, jaką sobie można zrobić na przyszłość. Albowiem do wykrywania błędów we własnych programach wcale nie jest potrzebny debugger, tylko umiejętność analizy kodu, a w wyrobieniu tej umiejętności debugger akurat przeszkadza, bo odmóżdża już na samym wstępie.

4,456

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

Wrzucę tu linka.

Well, here:

http://82.210.159.30/xlos.zip

There are two binaries, xlos.bin is earlier and it's interrupt routines are at the same place as in the original XL OS rev. B.

In the xlos2.bin the IRQ and NMI routines are moved to new locations. This version will be developed further and I would prefer this version to be tested.

Ok, what it should already do:

1) start up successfully ;-)
2) the CPU native mode should be now available without switching interrupts off;
3)  there's a test for extended linear memory, peek(591) should return a number of *additional* (i.e. beyond the first 64k) 64k memory segments;
4) the FP functions should be a bit faster than in the original;
5) the boot drive number is no longer initialized inside the BOOT routine, it is done while initializing other disk related variables. The new device can now effectively change the boot drive number simply updating the DUNIT.

The vectors I've described previously (in the "specifications") should be correctly initialized at reset time and work properly. This wasn't yet tested.

The OS revision number is BB 01.90. The release date is the Independence Day.

There are changes all around the first 4k of ROM, in the FP ROM and at the end of the second ROM block too. The interrupt vectors located in RAM will point to different locations. The ROM-based vector tables may contain different values. Some of the jump table entries may be changed as well.

Ok, what does not work:

1) The Self Test will definitely not work correctly;
2) the rev. number, OS release date etc. is not available in the second ROM part ($d800-$ffff, close to the top of memory, I don't remember the address);
3) the second ROM block checksum is available at $FFDE, not $FFF8;
4) Encounter (the game) probably will not work due to different ROM checksums; this is fixable.

I already have this version of ROM (the xlos2.bin) in my computer and it starts up properly and appears to work correctly. Please test and report problems. Thanks.

Polish version:

Panowie, chyba rozumiecie po angielsku :-)

[ Dodano: 13.11.2004 02:33:20 ]

The problem for me is, I can't read polish

So what about learning some polish finally? The language is quite easy ... and polish :D

[ Dodano: 13.11.2004 02:48:20 ]

When I read about this new OS, I read sometimes that there isn't enough room in the original OS. But it must be possible to have a bigger ROM somewhere between $10000 - $FFFFF and run 16-bit code from there...

Well, there is some place even in the original OS.

:rolleyes: UDMA jest bez sensu, ale zwykłe DMA może zwiększyć transfer - teoretycznie oczywiście - do 1,77 MB/s.

4,458

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

Wrzucę tu linka.

4,459

(23 odpowiedzi, napisanych Bałagan)

ostatnio dużo flaszek poszło ...

To się chłopie nazywa kac, a nie dół  :twisted:

4,460

(14 odpowiedzi, napisanych Software, Gry - 8bit)

No, jest MAE, które ma edytor, kompilator i debugger w jednym. Debugger ma, jak każdy debugger, opcje śledzenia programu, aczkolwiek nie powiem, żebym kiedykolwiek z niej korzystał.

4,461

(16 odpowiedzi, napisanych Bałagan)

No kiedyś oglądałem przypadkiem w telewizji jakiś amerykański program, coś w rodzaju naszego 997, tam dwóch facetów balowało całe popołudnie i wieczór, po czym w stanie skrajnego upojenia wsiedli do samochodu i po jakimś czasie rozbili go, a jak przyjechała policja i zmierzyła im zawartość, to się okazało, że obaj mają po pół promila.

4,462

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

Draco, when the first alpha will be sent to betatesters?

It can be sent even now. But there's the usual problem: I have no connectivity between my Atari and the internet ... I'll have to visit someone soon :-)

[ Dodano: 11.11.2004 22:01:28 ]

"Don't know for others but I'll probably finish preparing Doom for Atari XL/XE tonight." ;)

Hehe, dobrze by było, żeby napisanie Dooma było takie proste jak paru procedur przerwań ...  ;)

(4 English people: it was not a joke).

[ Dodano: 11.11.2004 22:03:02 ]

a po to, że ten topic jest lekcją angielskiego z native speakerem (wyjaśnienie: to taki człowiek, który potrafi po swojemu, ale nie idzie mu po naszemu). :twisted:

Wynika z tego, że większość ludzi na grupach pl.* to native speakerzy  :twisted:

No cóż, jak tak, to pewnie w końcu trzeba będzie zaimplementować DMA  ;)

4,464

(30 odpowiedzi, napisanych Miejsca w sieci)

Podobno średnia waga mieszkańca Filadelfii, wliczając noworodki, to 105 kilogramów.

4,465

(13 odpowiedzi, napisanych Miejsca w sieci)

No ja nie stanowię konkurencji dla kolegów, bo nie posiadam pliku wymiany  :cry:  ale może znajdzie się chętny na kopię jednogigowej partycji swap? Tanio sprzedam, za stówę  :mrgreen:

Obawiam się, że nawet tak nasz interfejs lekko sio2ide odsadza: "SIO2IDE ma transfer rzędu 32 kbps, a KMK wyciąga tylko 40 KBps"

:mrgreen:

4,467

(51 odpowiedzi, napisanych Software, Gry - 8bit)

Na Falconie pod MiNT-em mamy coś takiego, że nie katalog, ale całą patrycję można zaszyfrować i nikt tego nie złamie, bo używa się do tego algorytmów regularnej kryptografii. Ale szybkość takiego dysku jest pożal się ...

Inna metoda zahasłowania "katalogu" to multijuzerność taka jak pod Unixem: flagi katalogu ustawiasz na rwx------ i nikt kto nie zna twojego hasła się do tegoż katalogu nie dostanie (za wyjątkiem ruta, rzecz jasna).

Casper, specyfki ściągnąłem, ale na razie tylko przejrzałem z grubsza, bo siedzę chwilowo nad czymś innym, patrz:

http://atariarea.histeria.pl/forum/view ... 8866#28866

Uwagi, wzajemnie.

4,468

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

4) Are there users that already have written some special programs for the 65816 maybe even a new/patches OS ?

Don't know for others but I'll probably finish preparing 65c816 OS ROM tonight.

[ Dodano: 11.11.2004 05:51:56 ]
Here is some specification, if you're interested:

The 65c816 XL/XE OS revision
============================

I. Targets
----------

1) make possible to use the 65c816 native mode on Atari XL/XE computers without problems and with interrupts enabled. The XL/OS rev. B does not contain any sensible values at the place where the 65c816 expects the native interrupt vectors, hence the crashes.

2) make the memory mapped at extra addresses ($010000-$ffffff) accessible and usable for programs. Running code in this memory requires switching to native mode, and for native mode see above.

3) provide some more extra services related to the 65c816 such as new interrupt vectors, basic memory management routines etc.

4) develop new system of entry points: current mechanism of making ROM calls is difficult to use, when the code resides above the address $FFFF.

5) update the FP routines and make them somehow faster (low priority).

6) remove the SelfTest and replace it with something more sensible.
Provide extra testing routines too.

7) prepare a 65c816-aware, loadable version of Atari BASIC (last).

8) possibly expand the printer handler, so that it could be directly used with other printers than Atari printers (low priority).

9) fix known bugs.

II. Victims
-----------

To achieve this, possibly some code that actually resides in the ROM will have to be removed. Order of doing this:

1) the removal/rewrite of the SelfTest will already release some place
right before the charset 2.

2) the actual OS code can be "compressed" using new 65c816 instructions and addressing modes. This already takes place.

3) it is expected that larger ROM areas can be reclaimed by removal of the C: (cassette recorder) handler and all the related code.

4) 1k of ROM can be reclaimed by removing the charset 2. I'd like to
avoid that.

III. Interrupt considerations
-----------------------------

The native interrupt services impose a good deal of problems. Because of the lack of free ROM space, we basically have to put things together so that the same interrupt routines serve for both native and emulation
modes.

We presume that:

1) all interrupts execute in bank 0 (both code and data); the interrupt
routine resets the B register and restores it upon exit.

2) all interrupts operate on the "real" zero-page ($0000-$00FF); the
interrupt routine resets the D register and restores it upon exit.

3) all interrupts operate on user stack; the interrupt routine does not
realloc itself to the system stack.

4) all system interrupt routines must be perfectly executable in emulation mode.

5) no system interrupt routine switches ever from native mode to emulation or backwards.

6) the same return code may be used for both native and emulation routines (this is even a must for NMI->SYSVBL->EXITVBL sequence).

Disadvantages:

1) big interrupt overhead in the native mode; the CPU state must be
accurately saved no matter what, and the 65c816 has much more registers and much more processing states than 6502. In the case of DLI the registers do not have to be saved, but the service routine must be executed in some predefined state. This takes a lot of cycles too.

2) slower interrupt processing for the 8-bit code is used.

Advantages:

1) no double interrupt service routines - we're short of ROM space!

2) stable interrupt overhead in the user selected CPU mode: the OS does not switch emulation/native modes beyond the user control (except for system call).

3) the user can employ the same interrupt routines for both modes.

At the other hand, the interrupt overhead is reduced in the emulation mode thanks to new instructions and addressing modes. For example, the NMI serivce routine, which takes 32 cycles on 6502, is shortened to 26 cycles on 65c816. Similarly the EXITVBL routine is reduced from 23 to 19 cycles, and other savings take place inside the actual SYSVBL. All this does not balance the increased interrupt overhead in the native mode, reduces it however.

IV. New system call mechanism
-----------------------------

The old system call mechanism present in the XL OS, based on a jump table and JSR calls, has a limitation that makes its usage problematic with new, 65c816 programs, which can possibly store the code beyond the 64k boundary.

Namely, the JSR instruction has a 16-bit argument, and thus cannot cross the 64k bank boundary. As a result, when you make a JSR $E459 call while your program is executing in the bank 0 (and on 6502 this is always the case), the call will reach its destination, i.e. the $00E459, where the actual ROM procedure resides. However, doing the same in bank 1 makes the  call go to $01E459, which is not the place where it should actually find itself.

At the other hand, the 65c816 offers a JSL call, jump to subroutine long, which accepts 24-bit address as an argument and stores a 24-bit return address on the stack. However, the ROM routines expect a 16-bit return address to be stored, and we have to keep this behaviour to maintain compatibility with older programs. Thus, the JSL instruction cannot be used to call the system.

Providing an alternative jump table (for long calls) would solve the
problem, but first of all it would be a great waste of ROM space. Not to
mention the fact, that the jumptable metod is not considered very
flexible, as you can never change the vectors which are in ROM, thus you can't patch the OS with software, when necessary.

a) The new calling method

The new calling method is based on the COP instruction handler. COP
generates an unmaskable software interrupt, quite similar to the TRAP
instruction on the Motorola 68k. The COP accepts a constant (immediate)  argument. The instructions with the arguments of the value from $80 to $FF are reserved by the WDC for future usage, possibly for new instructions. The rest, i.e. the range from $00 to $7f, is available for our definition.

b) The new OS vectors in RAM

The COP handler residing in ROM defines five new vectors in the memory. All of them are 24-bit long. These are:

VCOPE    $000256-$000258
VCOPN    $000259-$00025B

Two COP interrupt vectors, for the emulation and native mode
respectively. The first is not used by OS for now, it simply points to
the RTI instruction. The reason for that is, that being in emulation mode
you do not really need the new calling mechanism, you may happily use the old one, as you cannot run code behind the first 64k anyways.

The other vector, VCOPN, points to the system handler. If you change this vector, you must end your code with a JMP to the old location, or RTI if you bypass the ROM completely.

VCOP0    $00025C-$00025E
VCOPU    $00025F-$000261
VCOPC    $000262-$000264

These are secondary vectors jumped through by the system handler (the one pointed to by VCOPN). The code pointed to by them is called with a JSL instruction and must be ended with RTL (or a JMP to the old location).

The first vector is called, when a COP #$00 is executed. This instruction
is reserved for the usage of the operating system, details below.

The second vector is called when any COP instruction with an argument
range $01-$7F is executed. The third vector is called when the reserved COP instructions are executed (i.e. argument range $80-$FF).

The long vector at $000018 points to the argument of the instruction that caused the call (i.e. if COP #$00 was executed, the vector points to the "#$00" part of the instruction).

All the secondary vectors are called with D=0 and B=0. The VCOP0 vector is called with 8-bit registers. The VCOPU and VCOPC vectors are called with 16-bit registers. The contents of the CPU registers is unmodified and should be the same as when the COP interrupt occurred. The handler residing at the primary vector (VCOPN) is responsible upon exiting for restoring the CPU context to the state being actual prior to the call.

c) Special meaning of the COP #$00 instruction

The COP #$00 instruction has been defined as a system emulation
interrupt. The ROM handler residing behind it accepts a 16-bit address
pointing to a location within the bank 0 (first 64k), calls it with a JSR
instruction, and returns the results of the call to you. Upon exit, the
registers contain values returned by the OS. The P register bits returned by OS are preserved except for bits M and X, which are restored to the state prior to the call.

Here's an example of a system call using new calling method:

    sep #$30    ;set 8-bit registers
    ldx #$10    ;select IOCB #1
    lda #$0c    ;command: CLOSE
    sta >iccmd,x    ;store
    pea jciomain    ;push the OS function address
    cop #$00    ;call the OS
    pla        ;pop the argument off the stack
    pla


CHANGE LOG
==========

11.XI.2004.

- OS version number changed to BB 01.99;
- completed the COP handler;
- fixed bug in NMIENBL: enable the VBL after the flags are updated;
- setting the boot drive number moved from BOOT (after the PBI devices initialization) to the DISKINIT (before the PBI devices initialization);
- wrote a large part of this document;

10.XI.2004.

- the P: handler optimized with new 65c816 instructions, so that the
native interrupt vectors could fit well at the end of the ROM. Serial
number etc. removed on the same purpose.
- implemented NMI and IRQ pre-handler for native mode.
- SYSVBL modified (stack access)
- wrote most of the COP handler
- wrote most of this document

[ Dodano: 11.11.2004 05:53:18 ]
PS. Dely, wiem, to powinno iść do działu Software ... :/

4,469

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

Tu nie ma co rozpracowywać, to jest opisane w każdej lepszej instrukcji deweloperskiej dla Atari ST.

4,470

(11 odpowiedzi, napisanych Software, Gry - 8bit)

drac030 a nie szybciej bylo by pisac program na kartce papieru?

Nie, bo ten program miał jednak już na średnio zaawansowanym etapie parę kilobajtów długości ;p Więc każdorazowe wklepywanie do BASIC-a trwałoby jeszcze dłużej.

4,471

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

Klawiatury od Megi albo TT mają tę jedną wadę, że za cholerę ich nigdzie kupić się nie da

Było sprzedawać? :twisted:

Te co sprzedałem były POPSUTE (i sprzedałem je jako popsute). Mam jeszcze jedną dobrą, ale przy Falconie.

[ Dodano: 06.11.2004 18:14:50 ]

Klawisze - najprawdopodobniej AKI, jeśli nie uda mi się zdobyć klawiatury od Mega.

A jak ci się uda?

4,472

(28 odpowiedzi, napisanych Bałagan)

Już ktoś za czasów Atari magazynu, z tejże redakcji powiedział, że MyDOS jest SpartaDOSem dla ubogich. :) I ja sie z tym zgadzam.

Jak znam życie, to Prof albo ja, bo tylko my dwaj mieliśmy Spartę X wtedy.
:lol:

[ Dodano: 06.11.2004 10:12:19 ]
A propos featur AtariDOS FS: dopisanie czegoś na końcu pliku to jeszcze jest pryszcz. Proszę z pliku otwartego do odczytu przeczytać jakąś porcję (parę kilobajtów) a potem COFNĄĆ "głowicę" o np. 1 kilobajt wstecz.

Życzę powodzenia. Nawet pomijając fakt, że AtariDOS i pochodne (w tym MyDOS) nie mają takiej funkcji, to w formacie AtariDOS jest to w ogóle niemożliwe, bo sektor zawiera link tylko do sektora następnego, ale do poprzedniego - już nie.

Innymi słowy format AtariDOS w zasadzie wyklucza implementację funkcji seek() - bo cofanie oznacza konieczność prawie każdorazowego odczytu pliku od początku.

A format Sparty tego ograniczenia nie ma :) I Sparta ma seek().

4,473

(8 odpowiedzi, napisanych Bałagan)

Jak ktos lubi ciekawe wiazanki to polecam komiks Preacher w wersji angielskiej (polskiej nie czytalem, ale watpie zeby zachowali jakosc oryginalu)

Ja jestem pod wrażeniem (wczoraj oglądanego) filmu "51 Stan". Wiązanki są co prawda (bardzo, bardzo) mało urozmaicone, ale za to 2/3 z nich jest wygłaszana jakimś dziwnym angielskim - pewnie gwarą z okolic Liverpoolu. Czy też raczej "Liver-fakking-poolu", bo taka wersja nazwy też pada ;) Goście mówią np. "fock" zamiast "f**k", "looh" zamiast "look" itp.

[ Dodano: 06.11.2004 09:52:29 ]
PS. Mam kłopoty z poprawnym zdefiniowaniem, jaki to rodzaj filmu, ale skłaniam się ku zdaniu, że komedia.

A zmywacz ZIOŁOWY co zawiera jako substancję czynną? Nie spiryt przypadkiem?  :D

4,475

(11 odpowiedzi, napisanych Software, Gry - 8bit)

eheh tyle ze kolega ma to na kasetach oryginalnych i chce sobie pograc na real atari+magnet ;)

A propos przypadków masochizmu  ;)  przypomniało mi się ostatnio, jak pisałem swój pierwszy większy program w asemblerze.

Sprzęt: Atari 65XE, monitor Neptun M156B, magnetofon XC12 standard.

Oprogramowanie deweloperskie: EASMD (na jednej kasecie), Cassette-Translator (na drugiej kasecie), Buldoger Copy (na trzeciej kasecie), loader z wykrzyknikiem (na czwartej kasecie).

Dodatkowo: jedna kaseta na kod źrodłowy i jedna na wynikowy.

Kaset miałem tyle, żeby uniknąć zbytniego przewijania - to znaczy tylko do początku.

Proces przebiegał tak:

1) najpierw wczytywałem Cassette-Translator: albowiem EASMD nie chciał działać na OS-ie od XL/XE, a nic innego nie miałem.
2) potem wczytywałem EASMD
3) potem źrodłówkę - długie przerwy między rekordami
4) potem następowały poprawki kodu, pisanie nowych procedur itp., czyli najprzyjemniejsza część
5) nową źródłówkę nagrywałem na kasetę ze źródłówką - w dwóch kopiach, długie przerwy między rekordami
6) asemblowanie na inną kasetę - znowu długie przerwy
7) loader z wykrzyknikiem nie chciał tego wczytywać, więc teraz wczytywało się Buldoger Copy
8) spod Buldoger Copy zapis z krótkimi przerwami, na kasetę z loaderem - uprzednio ustawioną w odpowiednim miejscu
9) przewinięcie tejże do początku, START/OPTION, pstryk/pstryk
10) ładowanie programu, sprawdzenie czy działa jak powinien
11) na ogół nie działał, tylko wykrzaczał się prędzej czy później
12) goto 1

To były czasy! :-)