Edytor asemblera Atari

Edytor asemblera Atari
Oryginalni autorzy Kathleen O'Brien
Deweloperzy Mikrosystemy Shepardsona
Pierwsze wydanie 1981 ; 42 lata temu ( 1981 )
Platforma Atari 8-bit
Rozmiar 8 KB
Typ Monter
Licencja Własne oprogramowanie

Atari Assembler Editor (czasami pisany jako Atari Assembler/Editor ) to system programistyczny oparty na kartridżach ROM , wydany przez Atari, Inc. w 1981 roku. Służy do edytowania, składania i debugowania programów 6502 dla 8-bitowej rodziny Atari w domu komputery bez potrzeby stosowania dodatkowych narzędzi. Został zaprogramowany przez Kathleen O'Brien z Shepardson Microsystems , firmy, która napisała Atari BASIC , a Assembler Editor ma wiele wspólnych koncepcji projektowych z tym językiem.

Czas montażu jest długi, co sprawia, że ​​kaseta jest trudna w użyciu w przypadku większych programów. W instrukcji Atari poleciło Assembler Editor jako narzędzie do pisania podprogramów przyspieszających Atari BASIC , które byłyby znacznie mniejsze niż pełne aplikacje. Atari Macro Assembler był oferowany jako alternatywa o lepszej wydajności i większej liczbie funkcji, takich jak makra, ale był oparty na dysku, chroniony przed kopiowaniem i nie zawierał edytora ani debuggera. Pomimo rekomendacji, oprogramowanie komercyjne zostało napisane przy użyciu Assembler Editor, takie jak gry Eastern Front (1941) , Caverns of Mars , Galahad and the Holy Grail oraz Kid Grid .

kod źródłowy oryginalnego edytora asemblera została przyznana firmie Optimized Systems Software , która dostarczyła oparty na nim EASMD .

Rozwój

Assembler Editor został napisany przez Kathleen O'Brien z Shepardson Microsystems . Firma została zatrudniona przez Atari do pomocy w dopasowaniu Microsoft 6502 BASIC do 8KB ROM , z czym borykali się programiści Atari. Zamiast tego Bill Wilkinson zasugerował zaprojektowanie całkowicie nowej wersji języka BASIC, który stał się Atari BASIC .

Podczas gdy Atari BASIC był pisany, głównie przez Paula Laughtona, męża O'Briena, O'Brien pracował nad Assembler Editor. Został napisany przez wbicie kodów do dziurkacza , przepuszczenie taśmy przez nagrywarkę EPROM , a następnie przetestowanie powstałej pamięci ROM na Atari 800. Kartridż został ukończony przed Atari BASIC, a O'Brien spędził trochę czasu pracując nad fragmentami ten projekt też.

systemu operacyjnego komputera Atari włączono wiele typowych procedur , w tym funkcje matematyczne zmiennoprzecinkowe . Zostały one napisane przez O'Brien, pierwszy zmiennoprzecinkowy kod matematyczny, nad którym pracowała. Niska wydajność kluczowych funkcji dotknęła zarówno Atari BASIC, jak i Assembler Editor i była tematem, o którym często pisał Wilkinson.

Detale

Assembler Editor to dwuprzebiegowy asembler 6502 w kasecie 8 KB . Zarówno kod źródłowy, jak i wynikowy mogą znajdować się w pamięci jednocześnie, umożliwiając wielokrotną edycję, składanie i uruchamianie wynikowego kodu bez dostępu do dysku lub napędu taśmowego.

Edytować

Kaseta uruchamia się w trybie EDIT. Programista wprowadza wiersze kodu asemblera do edytora podobnego do Atari BASIC . Tekst źródłowy musi być poprzedzony numerem linii lub jest interpretowany jako polecenie. Podobnie jak Atari BASIC, Assembler Editor zawierał ENTER , którego można było użyć do łączenia plików w jeden większy program. W przeciwieństwie do Atari BASIC, Assembler Editor zawiera polecenia do automatycznego tworzenia numerów linii z odstępami, a także do zmiany numeracji linii i ich masowego usuwania . Polecenie ZNAJDŹ jest przydatne podczas pracy z etykietami.

Instrukcje są wymienione w kolejności, w jakiej będą umieszczane w pamięci. Punkt początkowy instrukcji jest określony dyrektywą *= , więc na przykład kod przeznaczony do umieszczenia na specjalnej „stronie szóstej” byłby poprzedzony linią *= $0600 . Nazwy zmiennych można przypisywać do określonych adresów, co często było łączone z przyrostem *= *+1 w celu bezpośredniego zakodowania przesunięć w tabelach.

Wartości następujące po instrukcjach są zwykle interpretowane jako „wartość pod tym adresem pamięci”, ale rzeczywistą wartość liczbową można podać jako „bezpośredni operand”, dodając do niej skrót, na przykład LDA # 12 , który ładuje akumulator wartością dziesiętną 12. Szesnastkowy jest oznaczony znakiem dolara, LDA #$12 ładuje akumulator 12 szesnastkowo lub 18 dziesiętnie. Adresowanie pośrednie jest obsługiwane przy użyciu nawiasów; LDA (600 $) wykorzystuje wartości w lokalizacji 600 $, 601 $ do utworzenia 16-bitowego adresu, a następnie ładuje akumulator wartością znalezioną w tej lokalizacji.

Błędy są zgłaszane za pomocą kodów numerycznych, które można sprawdzić w instrukcji, w sumie jest ich około 50.

Gromadzić się

Kod można złożyć w dowolnym momencie, wpisując w edytorze polecenie ASM .

Assembler Editor był powszechnie wyśmiewany jako najwolniejszy asembler na platformie. Wiele z tego wynikało z tego, że dzielił znaczną część kodu edytora z Atari BASIC, który również został napisany przez Shepardson Microsystems. Atari BASIC był znany z bardzo powolnych procedur używanych do konwersji stałych numerycznych w kodzie na wewnętrzną reprezentację, która wykorzystywała dziesiętne kodowane binarnie (BCD) w systemie operacyjnym Atari . Oznaczało to, że wszystkie liczby, nawet numery linii, musiały zostać przekonwertowane na BCD. Co dziwne, oznaczało to również, że 1E2 był legalnym numerem linii.

Odpluskwić

Debuger , a właściwie monitor , jest uruchamiany za pomocą polecenia BUG . Polecenie X powraca do trybu EDIT. Debuger umożliwia przeglądanie i zmianę rejestrów i lokalizacji pamięci, śledzenie kodu, jednoetapowe i dezasemblację .

Przykładowy kod

Poniżej znajduje się kod 6502 dla Hello World! napisany dla edytora asemblera:

 
 
 
 
 
 
 
 
 
          
 
 
       
       
       
       
       
       
       
       
       
       
       
       
 
         
         
 
       
      
          
 
 
 
      
   0    
       
       
       
       
       
       
      0      
       
          
       
 
 
 
          
              
 
 
 
   
 
 
 
       
      
      10  ; WITAJ.ASM   20  ; ---------   30  ;  40  ; TEN PROGRAM MONTAŻU ATARI   50  ; WYDRUKUJE "HELLO WORLD"   60  ; KOMUNIKAT NA EKRANIE   70  ;  0100  ; CIO RÓWNA SIĘ   0110  ; ===========   0120  *=  $0340  ;POCZĄTEK IOCB  0130  IOCB  0140  ;  0150  ICHID  *=  *+  1  ;MANIPULATOR URZĄDZENIA  0160  ICDNO  *=  *+  1  ;NUMER URZĄDZENIA   0170  ICCOM  *=  *+  1  ;KOMENDA WE/WY  0180  ICSTA  *=  *+  1  ;STATUS WE/WY  0190  ICBAL  *=  *+  1 ;   ADRES  BUFORA LSB  0200  ICBAH  *=  *+  1  ;  ADRES  BUFORA MSB  0210  ICPTL  *  =  *  +  1  ;  PROCEDURA BUFOROWA  LSB  0220  ICPTH  *  =  *+  1  ICBLH  *=  *+  1  ;MSB BUFOR LEN  0250  ICAX1  *=  *+  1  ;AUX BYTE 1  0260  ICAX2  *=  *+  1  ;AUX BYTE 1  0270  ;  0280  GETREC  =  5  ;POBIERZ REJESTR TEKSTÓW  0290  PUTREC  =  9  ;POBIERZ REJESTR TEKSTÓW  0300  ;  0310  CIOV  =  $E456  ;WEKTOR WPISU CIO  0320  RUNAD  =  $02E0  ;URUCHOM ADRES  0330  EOL  =  $9B  ;KONIEC LINII  0340  ;  0350  ; KONFIGURACJA DLA CIO   0360  ; -------------   0370  *=  $0600  0380  START  LDX  #  ;IOCB 0  0390  LDA  #  PUTREC  ;WANT OUTPUT  0400  STA  ICCOM  ,  X  ;problem CMD  0410  LDA  #  MSG  &  255  ;młodszy bajt MSG  0420  STA  ICBAL  ,  X  ; INTO ICBAL   0430  LDA  #  MSG  /  256  ;HIGH BYTE  0440  STA  ICBAH  ,  X  ; INTO ICBAH   0450  LDA  #  ;DŁUGOŚĆ MSG  0460  STA  ICBLH  ,  X  ; WYSOKI BAJT   0470  LDA  #  $FF  ;255 DŁUGOŚĆ ZNAKÓW  0480  STA  ICBLL  ,  X  ; MNIEJSZY BAJT   0490  ;  0500  ; ZADZWOŃ DO CIO, ABY WYDRUKOWAĆ   0510  ; -----------------   0520  JSR  CIOV  ;CALL CIO  0530  RTS  ;WYJŚCIE DO DOS  0540  ;  0550  ; NASZE PRZESŁANIE   0560  ; -----------   0570  MSG  .BAJT  "WITAJ ŚWIECIE!"  ,  EOL  0580  ;  0590  ; ADRES PRACY INIT   0600  ; ----------------   0610  *=  RUNAD  0620  .WORD  START  0630  .END 

Te polecenia można wprowadzać interaktywnie w celu złożenia kodu, wejścia do debuggera, uruchomienia programu, a następnie wyjścia z debuggera po jego zakończeniu:

ASM BUG G600 X

Dziedzictwo

Krótko po tym, jak Shepardson dostarczył Assembler Editor i Atari BASIC do Atari, Bob Shepardson, właściciel, postanowił wrócić do jednoosobowej firmy. O'Brien, Laughton i Wilkinson założyli własną firmę Optimized Systems Software (OSS), aby kontynuować rozwój produktów Atari. Licencjonowali oryginalny kod źródłowy BASIC, Assembler Editor i Atari DOS , który wspólnie napisali.

W 1981 OSS wydał ulepszoną wersję Assembler Editor, EASMD na dyskietce . EASMD został zastąpiony przez MAC/65 w 1982 roku. MAC/65 był jednym z najszybszych asemblerów na platformie. Znaczna część ulepszonej wydajności MAC/65 jest wynikiem tokenizacji linii kodu podczas ich wprowadzania — tak jest w przypadku Atari BASIC — w celu zmniejszenia ilości pracy potrzebnej podczas montażu.

Assembler Editor nadal był dostępny na Atari i zyskał na popularności, gdy cena spadła do 10 lub 5 USD w drugiej połowie lat 80.

Zobacz też

Cytaty

Bibliografia

Linki zewnętrzne