Edytor asemblera Atari
Oryginalni autorzy | Kathleen O'Brien |
---|---|
Deweloperzy | Mikrosystemy Shepardsona |
Pierwsze wydanie | 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
- Podręcznik użytkownika Atari Assembler Editor (PDF) . Atari. 1981.
- Haga, James (2 sierpnia 2009). „Osobista historia szybkości kompilacji, część 1” . Programowanie w XXI wieku .
- Kathleen O'Brien, Kevin Savetz (13 marca 2015). Kathleen O'Brien, OSS (podcast).
- Wetmore, Russ (listopad 1983). „Recenzja 8-bitowych asemblerów Atari” . Hi-Res . Tom. 1, nie. 1.
- Wilkinson, Bill (1982). Wewnątrz Atari DOS . Zoptymalizowane oprogramowanie systemowe, Inc. ISBN 0-942386-02-7 . Źródło 2009-04-04 .
Linki zewnętrzne
- Assembler Editor w Atari Mania, w tym podręcznik
- Informacje o Atari Macro Assembler