Aktualizacja:
3 V 2020




== Karty CPU ==
* Opis
* Pliki
== ELSA ==
* Opis
* Lista zmian
* Pliki
== IDE Plus ==
* Opis
* Pliki
== Let's Emu! ==
* Opis
* Pliki
== CP/Emu ==
* Opis
* Pliki
== Poprawki ==
* Pliki
== 65C816 XL OS ==
* Opis
* Lista zmian
* Lista zgodności
* Pliki
== Rozmaitości ==
* Pliki
== U-BASIC ==
* Opis
* Pliki
== MultiBASIC ==
* Opis
* Lista zmian
* Pliki
== SysInfo ==
* Opis
* Pliki

















 

ELSA, lista zmian

0.9c

  • pod SpartaDOS X asembler, przed wyjściem do DOS-u, będzie zapisywał kod statusu do zmiennej systemowej ERRNO: 0 w przypadku powodzenia lub wartość niezerową w przypadku błędu. Przy błędzie we/wy będzie to systemowy kod błędu, a przy błędzie asemblacji wartość dodatnia większa od 1. To pozwala na obsługę błędów w skryptach wsadowych przy użyciu konstrukcji warunkowej IF ERROR (tj. na SDX w wersji późniejszej niż 4.49-release, bo przedtem IF ERROR reaguje tylko na błędy o kodach większych od 127).
  • dla następujących rozkazów: BCC, BCS, BEQ, BNE, BPL, BMI, BVC, BVS zdefiniowano implikowany tryb adresowania, dzięki czemu można ich łatwo użyć do zamaskowania rozkazu jednobajtowego. W tej roli są szybsze o 1 cykl niż BIT zp i nie generują zbędnego odczytu.
  • implikowany tryb adresowania w tym samym celu dodano też do rozkazu BIT, żeby można go było łatwo użyć do zamaskowania rozkazu dwubajtowego.
  • program głupiał, jeśli za dyrektywą .zp znajdował się komentarz.
  • program akceptował dyrektywy wpisane bez poprzedzającej kropki (np. org $2000), poprawiono.
  • dodano dyrektywę .align.
  • dodano presudoinstrukcje JSR (abs) and JSL [abs].

0.9b

  • zapomniało się dodać dyrektywę .hex do listy dyrektyw generujących dane do listingu.
  • zapomniało się wyzerować deltę dodawaną do (albo odejmowana od) danych generowanych przez dyrektywy .byte/.cbyte/.sbyte, co powodowało propagację tejże delty na wszystkie następujące dyrektywy .byte (i spółkę).
  • jeśli taka dyrektywa zawiera tylko tę deltę, asembler wyrzuci błąd.
  • z listy komunikatów błędów usunięto duplikat.
  • wynik mnożenia i dzielenia musi być zawsze typu "wartość", a nigdy typu "adres", niezależnie od typów wejściowych.
  • poprawiono błąd, który czasami powodował wpisanie śmieci do typu etykiety (symptom: błąd "UNDEFINED" dla etykiety, która została nienagannie zdefiniowana). <

0.9a

  • nieco (5-10%) przyśpieszono procedurę przeszukującą tablicę symboli.
  • inaczej niż to było udokumentowane, dyrektywa .lc mogła wyłączyć listing włączony przez przełącznik /L w wierszu poleceń.
  • zmieniono procedurę budowania pliku ELSA.EXE na coś szybszego (rezygnując ze starego skryptu konsolidującego napisanego w MultiBASIC-u) i solidniejszego (poprawki w relokatorze),
  • większość funkcji I/O obsługuje teraz błędy automatycznie, co pozwoliło pozbyć się sprawdzania statusu w wielu miejscach w programie.
  • skracanie skokow Jxx będzie sugerowane rownież dla 6502.
  • skracanie skoku JMP będzie sugerowane dla wszystkich procesorów oprócz 6502.
  • rozkaz JMP/JSR/Jxx z adresem docelowym znajdujacym się tuż za sobą będzie powodował wyświetlenie ostrzeżenia.
  • poprawki literówek i ogólne upiększenia komunikatów.
  • zawartość bufora linii kodu źródłowego będzie kasowana po powrocie z dyrektywy .include
  • poprawki do formatowania listingu, żeby był zwięźlejszy i jednocześnie czytelniejszy.
  • .byte, .cbyte, .sbyte, .word, .dbyte, .long, .tbyte, .float generują teraz dane do listingu.
  • tak samo robi .dc, ale ta dyrektywa wyświetla tylko 11 pierwszych bajtów generowanego bloku.
  • parametry .dc można teraz oddzielać także przecinkiem (opróćz spacji).
  • poprawiono błąd fazy, który pojawiał się, gdy DEW/DWA było użyte z etykietą deklarowaną w dalszej części kodu.
  • poprawiono literówkę w kodzie rozwijającym pseudorozkaz RRA, która skutkowała umieszczeniem w buforze wyjściowym opkodu $09 (ORA #) zamiast $c9 (CMP #).
  • przy okazji napisano od nowa kod rozwijający presudorozkazy ASR, B2H, PHR, PLR, RLA i RRA.
  • parametry dyrektywy .opt były rozpoznawane tylko wtedy, kiedy wpisano je małymi literami.
  • dodano .opt f- na wypadek dołączania pliku binarnego (przy użyciu dyrektywy .bin) z dysku, na którym system plików nie przechowuje dokładnej informacji o długosci plików (jak np. system plików AtariDOS). Potem dobrze jest zrobić .opt f+
  • dodano .opt w- do wyłączania ostrzeżeń (warnings) podczas asemblacji. Domyślne jest w+, /Q podane w wierszu poleceń ma wyższy priorytet.
  • zmieniono działanie dyrektywy .float, żeby jako parametry mogła przyjmować zarówno stałe zmiennoprzecinkowe jak i wyrażenia stałoprzecinkowe.
  • dodano pseudoetykiety __M65C802__ i __M65C816__ jako aliasy do istniejących __M65802__ i __M65816__ (które poprzednio były niewłaściwie opisane w dokumentacji).
  • dodano przełącznik /R do wiersza poleceń.

0.9 (pierwsza dostępna publicznie wersja)

  • zaimplementowano presudorozkazy RCC, RCS, REQ, RGE, RLT, RNE, RMI, RPL, RVC, RVS (Repeat last instruction if Carry clear... itd.), SCC, SCS, SEQ, SGE, SLT, SNE, SMI, SPL, SVC, SVS (Skip next instruction if Carry Clear itd.), INW, DEW, DWA, B2H, ADD, SUB, PHR, PLR, ECC, ECS, EEQ, EGE, ELT, ENE, EMI, EPL, EVC, EVS (Exit subroutine if Carry Clear itd.), ASR, RRA, RLA.
  • składnia rozkazu PEA dostosowana do tego, co jest w innych asemblerach :), tj. PEA #$xxxx, PEA ($xx), PEA $xxxx, dwa ostatnie to PEI i PER w MAE.
  • zaimplementowano dysrektywy .zp, .code, .ifdef, .ifndef, .ll (listowanie tylko następującej linijki programu), .el, *** (odpowiednio .else i .endif, dla wstecznej zgodności z MAE), [ i ], .rept, .endr, powiązaną pseudoetykietę __REPT__ i (tak samo powiązany) operator #.
  • dyrektywy .if można w końcu zagnieżdżać.
  • zaimplementowano logiczne AND (&&), logiczne OR (!!) i jednoargumentowy operator negacji (!).
  • zrobiono porządki w implementacji dyrektywy set.
  • zaimplementowano seudoetykiety __ASIZE__, __ISIZE__ (rozmiar, odpowiednio, akumulatora i rejestrów XY w bitach), __M65C02__, __M65SC02__, __M65802__, które sygnalizują wybrany procesor 65C02, W65SC02 i 65C802; oraz .65c02 (lub .c02), .65sc02, .65c802, które wybierają te procesory w kodzie źródłowym.
  • zrobiono porządki w kodzie identyfikującym pseudoetykiety.
  • ulepszono dyrektywę .error, która teraz dziala tak samo jak .print, z wyjątkiem tego, ze również przerywa asemblację z komunikatem o błędzie "USER-DEFINED".
  • ostrzeżenia będą wyświetlane tylko w drugim przebiegu asemblacji.
  • test na rodzaj CPU został usunięty: moduł inicjujący będzie teraz polegał tylko na informacji zwróconej przez OS.
  • kiedy w systemie nie ma funkcji kmalloc(), albo gdy pamięć liniowa jest zajęta, program użyje podstawowych 64k do budowania tablicy symboli (na co pozostaje około 20k).
  • przełączniki w wierszu poleceń mogą być teraz poprzedzane ukośnikiem, n.p. /D zamiast -D.
  • zaimplementowano przełącznik /M definiujący domyślnie wybrany procesor (można to potem zmienić w kodzie źródłowym).
  • nazwę pliku wynikowego można teraz podać w wierszu poleceń.
  • bibliotekę PRINTF zastąpiono nową wersją, która nie używa systemowego pakietu FP (zwalniając tym samym znaczną część strony zerowej) i jest w stanie przedstawiać 32-bitowe liczby całkowite w zapisie dziesiętnym lub szesnastkowym.
  • poprawiono garść mniejszych błędów tu i tam.

0.8

  • zaimplementowano pseudoetykiety __M6502__, __M65816__, __RSSIZE__ i cały wewnętrzny mechanizm do definiowania nowych.
  • dodano ostrzeżenie, które się będzie wyświetlać, kiedy wartość zostanie obcięta o jeden albo dwa bajty.
  • zaimplementowano dyrektywy .if/.else/.endif (na razie nie można ich zagnieżdżać).
  • poprawiono błąd w dyrektywie .end
  • zaimplementowano dykretywy .rsset i .rs
  • poprawiono błąd w obliczaniu wartości parametrów dyrektywy .word w pierwszym przebiegu asemblacji.
  • poprawiono błąd w dyrektywie .cbyte: np. w .cbyte 0,0,0,0,0 asembler ustawiał bit 7 każdego kolejnego bajtu zamiast robić to tylko z ostatnim.
  • zaimplementowano dyrektywy .rb i .rw

http://drac030.atari8.info © KMK
free counters