Demonstracyjna wersja systemu OS-9 dla BCC-01

Podobne dokumenty
OS-9 modułowy, wielozadaniowy system czasu rzeczywistego

opracowano na podstawie: HI-WAVE Product Manual, Hiware, 1999 Marek Wnuk Wrocław, 2002

Wyświetlacz alfanumeryczny LCD zbudowany na sterowniku HD44780

Pakiet HI-CROSS firmy Hiware

Programowanie Mikrokontrolerów

RS868v3 module configuration

IdyllaOS. Prosty, alternatywny system operacyjny. Autor: Grzegorz Gliński. Kontakt:

Spis treœci. Co to jest mikrokontroler? Kody i liczby stosowane w systemach komputerowych. Podstawowe elementy logiczne

Telemetria. PTIB 2 semestr. Instrukcja do ćwiczenia GPRS i licznik energii elektrycznej

Przestrzeń pamięci. Układy dekoderów adresowych

Procesy pojęcia podstawowe. 1.1 Jak kod źródłowy przekształca się w proces

UTK ARCHITEKTURA PROCESORÓW 80386/ Budowa procesora Struktura wewnętrzna logiczna procesora 80386

CompactPCI. PCI Industrial Computers Manufacturers Group (PICMG)

2. Architektura mikrokontrolerów PIC16F8x... 13

Moduł wspierający diagnostykę i sprzętowe debugowanie

ICD Interfejs BDM dla CPU32. Marek Wnuk

Uniwersytet Zielonogórski Wydział Elektrotechniki, Informatyki i Telekomunikacji. Sieci komputerowe Laboratorium 8

Podstawowa konfiguracja routerów. Interfejsy sieciowe routerów. Sprawdzanie komunikacji w sieci. Podstawy routingu statycznego

ZADANIE.01 Cisco.&.Juniper Wprowadzenie do ZiMSK (budowa sieci, połączenie konsolowe, usuwanie konfiguracji urządzeń)

Procesory rodziny x86. Dariusz Chaberski

Technika mikroprocesorowa I Studia niestacjonarne rok II Wykład 2

Struktura i działanie jednostki centralnej

Rejestry procesora. Nazwa ilość bitów. AX 16 (accumulator) rejestr akumulatora. BX 16 (base) rejestr bazowy. CX 16 (count) rejestr licznika

Sygnały DRQ i DACK jednego kanału zostały użyte do połączenia kaskadowego obydwu sterowników.

Projekt prostego procesora

Laboratorium - Przechwytywanie i badanie datagramów DNS w programie Wireshark

INSTRUKCJA UŻYTKOWNIKA MPCC

Współpraca procesora ColdFire z pamięcią

Technika Mikroprocesorowa Laboratorium 5 Obsługa klawiatury

1. Wstęp Różnice pomiędzy mikrokontrolerami ST7 a ST7LITE Rdzeń mikrokontrolerów ST7FLITE... 15

Błąd pamięci karty graficznej lub Uszkodzona lub źle podpięta karta graficzna

LABORATORIUM SIECI. Zakład Cyberbezpieczeństwa IT PW. Instrukcja do ćwiczenia: Switching, VLAN & Trunking Przedmiot: Sieci Lokalne (LAN)

Użycie AVR Studio do kompilacji AVRUB

Rejestr HKEY_LOCAL_MACHINE

CPU. Architektura FLAGS Bit: dr Paweł Kowalczyk; DPTNS, KFCS UŁ. SI 16 bit. 16 bit. 16 bit.

MODBUS RTU wersja M1.14 protokół komunikacyjny wyświetlaczy LDN

DZT Licznik energii elektrycznej Sieć trójfazowa 4-przewodowa Połączenie bezpośrednie 100A Wyjście impulsowe oraz RS485/Modbus.

dokument DOK wersja 1.0

LabVIEW PLATFORMA EDUKACYJNA Lekcja 5 LabVIEW i Arduino konfiguracja środowiska i pierwszy program

Architektura systemu komputerowego. Działanie systemu komputerowego. Przerwania. Obsługa przerwań (Interrupt Handling)

Komputery klasy PC. Dariusz Chaberski

Programowanie niskopoziomowe

MIKROKONTROLERY - ŁADOWANIE KODU

PROCESORY ARM TRUDNO ZNALEŹĆ PROCESORY O TAK LICZNYCH, ORYGINALNYCH, NOWYCH, POMYSŁOWYCH ROZWIĄZANIACH!

OS-9 modułowy, wielozadaniowy system czasu rzeczywistego

Architektura systemu komputerowego

Moduł mikrokontrolera PROTON (v1.1)

Podstawy technologii informacyjnej. Beata Kuźmińska

Struktura systemów komputerowych

Architektura komputera. Cezary Bolek. Uniwersytet Łódzki. Wydział Zarządzania. Katedra Informatyki. System komputerowy

Wstęp Architektura... 13

3 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK SP.06 Rok akad. 2011/ / 22

DZT WEJŚCIE Napięcie znamionowe: (U n

SmartDRIVE protokół transmisji szeregowej RS-485

Systemy plików i zarządzanie pamięcią pomocniczą. Struktura pliku. Koncepcja pliku. Atrybuty pliku

Interfejsy: Ethernet do połączenia z siecią LAN Serial do połączenia z siecią WAN. pełną konfigurację urządzenia. Zadanie

ICD Wprowadzenie. Wprowadzenie. Czym jest In-Circuit Debugger? 2. O poradniku 3. Gdzie szukać dodatkowych informacji? 4

Podstawy Techniki Mikroprocesorowej

Architektura systemu komputerowego

MS Visual Studio 2005 Team Suite - Performance Tool

Moduł uruchomieniowy mikrokontrolera MC68HC912B32

Systemy operacyjne system przerwań

URZĄDZENIA WEJŚCIA-WYJŚCIA

Moduł Ethernetowy. instrukcja obsługi. Spis treści

Kod produktu: MP-W7100A-RS232

Tworzenie sterowników dla FreeBSD. Michał Hajduk

Opis instalacji i konfiguracji programu HW Virtual Serial Port z kasą PS3000Net

Magistrala systemowa (System Bus)

petla:... ; etykieta określa adres w pamięci kodu (docelowe miejsce skoku) DJNZ R7, petla

Programowanie mikrokontrolerów. 8 listopada 2007

UW-DAL-MAN v2 Dotyczy urządzeń z wersją firmware UW-DAL v5 lub nowszą.

ZADANIE.01 Cisco.&.Juniper Wprowadzenie do ZiMSK (budowa sieci, połączenie konsolowe, usuwanie konfiguracji urządzeń) 1h

Architektura typu Single-Cycle

Ćwiczenia z S Komunikacja S z miernikiem parametrów sieci PAC 3200 za pośrednictwem protokołu Modbus/TCP.

Ćwiczenie Konfiguracja statycznych oraz domyślnych tras routingu IPv4

GND(VSS) i VCC - masa i zasilanie. V0 - regulacja kontrastu

Architektura mikroprocesorów z rdzeniem ColdFire

Główne pytania. Sieci komputerowe Router sprzętowy WAN, LAN - CISCO Co to jest? Po co nam routing? Jak go zrealizować? Czy można lepiej?

Instrukcja podstawowego uruchomienia sterownika PLC LSIS serii XGB XBC-DR20SU

PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO

A Machine Architecture that is Really Intuitive and Easy. Dane: notacja dwójkowa, zapis w kodzie dopełnieniowym

IEEE Centronics

Technika mikroprocesorowa I Wykład 2

Kurs Zaawansowany S7. Spis treści. Dzień 1

Wstęp do informatyki. Architektura co to jest? Architektura Model komputera. Od układów logicznych do CPU. Automat skończony. Maszyny Turinga (1936)

System mikroprocesorowy i peryferia. Dariusz Chaberski

ZiMSK. mgr inż. Artur Sierszeń mgr inż. Łukasz Sturgulewski ZiMSK 1

ARCHITEKTURA PROCESORA,

Wstęp do informatyki. System komputerowy. Magistrala systemowa. Architektura komputera. Cezary Bolek

LCD (Liquid Crystal Display)

Kod produktu: MP-W7100A-RS485

m e d i a s e r v i c e Moduł kamery JPEG z komunikacją szeregową CJ0706A

Zwory na płycie z łączem szeregowym ustawienie zworek dla programowania.

PBS. Wykład Organizacja zajęć. 2. Podstawy obsługi urządzeń wykorzystywanych podczas laboratorium.

Informator techniczny

Instalacja sterownika portu USB

WPROWADZENIE Mikrosterownik mikrokontrolery

STM32Butterfly2. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107

ZADANIE.02 Podstawy konfiguracji (interfejsy) Zarządzanie konfiguracjami 1,5h

Transkrypt:

W-w 28.06.2001 Demonstracyjna wersja systemu OS-9 dla BCC-01 Wykonał: Grzegorz Goc ARR semestr 8 Prowadzący: dr inż. Marek Wnuk

Wstęp i założenia projektowe Celem projektu było uruchomienie systemu OS-9 na uniwersalnym pakiecie BCC-01 wyposażonym w mikrokontroler MC68332 (CPU32). Zadanie powinno być zrealizowane w kilku etapach: 1. rozpoznanie sposobów inicjacji OS-9 2. załadowanie i uruchomienia OS-9 poprzez BDM 3. załadowanie i uruchomienie OS-9 poprzez S-Rekordy 4. wypalenie układu EPROM umożliwiającego uruchomienie OS-9 w systemie wbudowanym BCC-01 OS-9 jest wielozadaniowym systemem operacyjnych szeroko stosowanym w przemyśle. Cechuje się on dużą skalowalnością i. modułowością. Własności te umożliwiają dobór konfiguracji systemu idealnie dostosowanej do wymagań bez dodatkowych nadmiarowych elementów zarówno w małych systemach wbudowanych jak również w dużych systemach dyskowych. OS-9 koncepcyjne zbliżony jest do systemu QNX Neutrino. Należy jednak zaznaczyć iż OS-9 pierwotnie przeznaczony był dla procesorów Motorola, natomiast QNX Neutrino dla architektury x86. Pochodzenie w przypadku obu systemów determinuje pewne ich własności (struktury wewnętrzne, reprezentacja danych itp.). W tym względzie OS-9 przewyższa konkurenta. Mikrokontroler MC68332 (w dokumentacji Motoroli oznaczany również ogólniej jako CPU32) należy do rodziny 68K. Według szacowań (CHIP 6/2001 edycja polska) aktualnie na świecie istnieje ponad miliard instalacji wykorzystujących ten mikrosterownik. Ponadto procesory rodziny 68K były stosowane w komputerach osobistych Amiga, Atari ST/TT, Apple Macintosh, Sun, NeXT i innych jak również w komputerach przemysłowych z magistralą VME (aktualnie nowe konstrukcje bazowane są na PowerPC). M68K swoją architekturą jak również listą rozkazową przewyższają konkurencję zorientowaną na mikrokod (CISC). W związku z popularnością rodziny (oraz polityką firmy Motorola), dostępny jest duży zestaw narzędzi i dokumentacji zarówno w języku angielskim i polskim. MC68332 jest mikrokontrolerem bazowanym na procesorze MC68020, pierwszym w pełni 32 bitowym przedstawicielem rodziny. Należy zaznaczyć iż już MC68000 wewnętrznie można uznać za konstrukcję 32 bitową, natomiast magistrale zewnętrzne były 16 bitowe. MC68332 w stosunku do MC68020 pozbawiony jest niektórych złożonych trybów adresowania.

Opis istotnych dla projektu cech BCC-01 oraz używanych narzędzi Płytka BCC-01 01 (dalej zwana BCC-01) standartowo wyposażona była w 256KB RAMu jak również EPROM 256KB zawierający monitor firmy Motorola umożliwiający ładowanie S-Rekordów czyli odpowiednio spreparowanych plików (zwykle posiadających rozszerzenia.snn gdzie nn określa typ procesora, tutaj.s28 ) zawierających odwzorowanie zawartości pamięci wraz z adresami w formacie umożliwiającym przesłanie ich jako ASCII poprzez łącze szeregowe. Wbudowany standartowo monitor komunikuje się poprzez łącze szeregowe z programem emulującym terminal. Jako parametry komunikacji należy ustawić 19200bps, 8N1 (8 bitów w znaku, bez parzystości, 1 bit stopu). Używany był emulator terminala ProComm pracujący w środowisku M$-DOS. Działał on doskonale również z Win95/98, nie funkcjonował jednak w środowisku Win NT/2000. Ponadto podczas realizacji zadania wykorzystany był pakiet HiWare współpracujący z BCC-01 za pomocą BDM (Background Debug Mode), trybu emulacji i śledzenia mikrokontrolera. W celu użycia BDM należy skorzystać z łącza równoległego komputera. Pierwotnie kod wymagany do załadowania OS-9 przygotowany i przetestowany został w środowisku Asm-One 1.29 dla AmigaOS 2.0/3.9, ostatecznie skompilowany przy pomocy asemblera r68 i linkera l68 na komputerze modułowym PEP (eldorado.ict.pwr.wroc.pl) pracującym w środowisku OS-9 wersja 2.4. Problemy uruchomieniowe Podczas uruchamiania BDM w środowisku HiWare wystąpiły poważne problemy uniemożliwiające nawiązanie współpracy z BCC-01. Rozwiązanie ich okazało się najtrudniejszą częścią projektu. W przypadku braku łączności poprzez BDM należy sprawdzić czy spełnione są poniższe warunki: - Środowisko HiWare Tools w dostepnej wersji (tj. wersji 5.2.6) nie współpracuje poprawnie z M$ Win 2000/NT. Objawia się to poprzez niemożność nawiązania łączności, wynika to prawdopodobnie z wbudowanego w Win2000/NT mechanizmu ochrony pamięci, które to pojęcie jest całkowicie obce systemowi Win95/98. - Aby dołączyć BCC-01 poprzez BDM do portu równoległego komputera należy zastosować kabel zakończony z jednej strony łączem DB-25 męskim, z drugiej strony łączem DB-25 żeńskim. Połączenia pinów muszą być wykonane jeden do jednego. Zastosowanie przejściówki DB25 żeńska- DB25 żeńska i kabla do łączenia komputerów poprzez porty równoległe nie spełnia tego warunku ze względu na wewnętrzne skrzyżowanie linii sterujących. - Należy zwrócić szczególną uwagę czy Win98 zainstalował obsługę łącza równoległego (Plug&Pray). Ponieważ nie korzystałem wcześniej z łącza równoległego Win98 nie uznał za stosowne zainstalowanie sterownika portu. Zajętość portu sprawdza on w chwili swojego startu. W sytuacji kiedy najpierw uruchomiony był Win a następnie włączone zostało zasilanie BCC-01 łączność nie była nawiązywana z wyżej wymienionego powodu. Problem rozwiązał się

przypadkowo kiedy ponownie uruchomiłem komputer i doinstalował się sterownik portu. - Ponadto należy dla środowiska HiWare utworzyć odpowiednie pliki konfiguracyjne. Oto zawartość plików reset.cmd, startup.cmd, forcebdm.cmd dla opisanej powyżej konfiguracji BCC-01. Autor: dr inż. Marek Wnuk <ciąć tutaj> // Ten plik zawiera komendy dla HI-WAVE wykonywane przy uruchamianiu // interfejsu ICD dla BDM. // Inicjalizuje on niektore rejestry w MC68332 aby umozliwic dostep // do pamieci. // Dodatkowo zawiera komendy pozwalajace przechwycic wszystkie // przerwania przez ustawienie w tablicy wektorow wskaznika na // instrukcje "BGND" // dla plytki BCC (MW) ww 0xFFFFFA20 0x0006 ww 0xFFFFFA04 0x7F00 ww 0xFFFFFA00 0x42CF // SYPCR, System protection // SYNCR, Synthesizer control // MCR, Module configuration // ustawianie chip select-ow ww 0xFFFFFA44 0x3FFF // CSPAR0, Chip select and pin assignment ww 0xFFFFFA46 0x03BF // CSPAR1, Chip select and pin assignment ww 0xF7FFFA48 0x0604 // CSBART, Boot cs 64k blok ne EVB ww 0xF7FFFA4A 0x68f0 // CSORBT, Boot cs options // CSBAR0/CSOR0-CSBAR10/CSOR10 wl 0xFFFFFA4C 0x00035030 // cs0 : RAM WRITE U na BCC wl 0xFFFFFA50 0x00033030 // cs1 : RAM WRITE L na BCC wl 0xFFFFFA54 0x00036830 // cs2 : RAM READ UL na BCC wl 0xFFFFFA58 0x00000000 // cs3 : Nieuzywany wl 0xFFFFFA5C 0x00000000 // cs4 : Nieuzywany wl 0xFFFFFA60 0x00000000 // cs5 : Nieuzywany wl 0xFFFFFA64 0x00000000 // cs6 : Nieuzywany wl 0xFFFFFA68 0x00000000 // cs7 : Nieuzywany wl 0xFFFFFA6C 0x00000000 // cs8 : Nieuzywany wl 0xFFFFFA70 0xEFF8D830 // cs9 : LCD wl 0xFFFFFA74 0x00000000 // cs10: Nieuzywany //ww 0xfffffa17 0x00F7 //ww 0xfffffa15 0x0010 // PEPAR - sygnaly sterujace // DDRE - PORTE.4 - wyjscie RS A6 0 // inicjalizacja listy stosu (0 => A6) CATCHTRAPS 2 255 // przechwycenie wszystkich przerwan TERMINAL 0x40 // initializacja emulacji terminala <ciąć tutaj>

Opis cech OS-9 istotnych w realizacji projektu Aby zainicjować działanie OS-9 w przypadku użycia S-Rekordów należy załadować procedurę bootującą jak również wymagane moduły systemowe w obszar pamięci nie kolidujący z wbudowanym monitorem. Kernel systemu po uruchomieniu przeszukuje dostępną pamięć i odnajduje poprzez nazwę inne moduły systemowe. Podstawowe parametry pracy systemu zawarte są w module init. Jak wspomniałem powyżej OS-9 jest systemem o budowie modułowej. Każdy moduł rozpoczyna się nagłówkiem: _msync: dc.w $4afc ;$0000 znacznik modulu _msysrev: dc.w $0001 ;$0002 numer wersji systemu _msize: dc.l END-START ;$0004 wielkosc modulu w bajtach _mowner: dc.l $00000000 ;$0008 wlasciciel _name: dc.l modname-start ;$000C offset do nazwy modulu _maccess: dc.w $0555 ;$0010 zezwolenia na dostep _mtylan: dc.w $0c01 ;$0012 typ i jezyk (w kernel $c001) _mattrev: dc.w $a000 ;$0014 atrybuty i wersja modulu _medit: dc.w $0001 ;$0016 numer edycji modulu _musage: dc.l $00000000 ;$0018 offset do komentarzy _msymbol: dc.l $00000000 ;$001C offset tablicy symboli _mident: dc.w $0000 ;$0020 kod identyfikacyjny modulu _mspare: dc.w 0,0,0,0,0,0 ;$0022 zarezerwowalne _mparity: dc.w 0 ;$002E suma kontrolna Suma kontrolna liczona jest w następujący sposób: makecksum: ;oblizenie sumy kontrolnej lea START(pc),a0 ;zaladuj poczatek modulu lea _mparity(pc),a1 ;adres pola sumy kontrolnej moveq #-1,d0 ;ustw d1 na -1 move.w #(_mparity-start),d1 ;licnik dlugosci tablicy asr.w #1,d1 ;podziel przez 2 loop: move.w (a0)+,d2 ;pobirz wartosc eor.w d2,d0 ;xor dbf d1,loop move.w d0,(a1) rts Po standartowej części nagłówka wspólnej dla wszystkich typów modułów występuje część specyficzna dla danego typu. Część modułu wykonywalnego (prog) w tym jądra systemu: _mexec dc.l s-start ;$0030 ;offset do kodu wykonywalnego _mexcpt dc.l 0 ;$0034 ;obsluga Trap _mdata dc.l 0 ;$0038 ;wielkosc obszaru danych _mstack dc.l 0 ;$003C ;rozmiar stosu _midata dc.l 0 ;$0040 ;wskaznik inicjacji danych _midref dc.l 0 ;$0044 ;wskaźnik inicjacji wskaznikow

Moduł init nie jest wykonywalny. Dalsza część modułu init, po standartowym nagłówku zbudowana jest w następujący sposób: _reserved1: dc.l 0 ;$0030 nie uzywane _mpollsz: dc.w 32 ;$0034 wielkoc tablicy przerwan _mdvcnt: dc.w 0 ;$0036 wielkosc tablicy urzadzen _mprocs: dc.w 64 ;$0038 wielkoc tablicy procesow (64) _mpaths: dc.w 64 ;$003A wielkosc tablicy sciezek (64) _msysparam: dc.w 0 ;$003C offset do stringu parametrow modulu startowego (zwykle Sysgo) _msysgo: dc.w sname-start ;$003E offset do nazwy modulu startowego _msysdrive: dc.w 0 ;$0040 offset do nazwy domyslnej sciezki roboczej _mconsol: dc.w 0 ;$0042 offset do nazwa standartowej sciezki I/O _mextens: dc.w 0 ;$0044 offset do nazwy modulu rozszezajacego _mclock: dc.w 0 ;$0046 offset do nazwy modulu zegara systemowego _mslice: dc.w 2 ;$0048 ilosc taktow na segment czasu _mip_id: dc.w $0000 ;$004A interprocesor ID _msite: dc.l $00000000 ;$004C kod instalacji _minstall: dc.w 0 ;$0050 offset do nazwy instalacji _mcputyp: dc.l 300 ;$0052 typ procesora CPU32 _mos9lvl: dc.b 2,2,3,0 ;$0056 poziom,wersja,edycja systemu _mos9rev: dc.w 0 ;$005A offset do nazwy poziom/rewizji systemu _msyspri: dc.w 0 ;$005C startowy priorytet systemowy _mminpty: dc.w 0 ;$005E startowy prog priorytetu _maxage: dc.w 0 ;$0060 maksymalny wiek procesu _reserved2: dc.l 0 ;$0062 nie uzywane _mevents: dc.w $0000 ;$0066 poczatkowy rozmiar tablicy zdarzen (0) _mcompat: dc.b $00 ;$0068 znaczniki kompatybilnosci _reserved3: dc.b $0f ;$0069 nie uzywane _mmemlist: dc.w memtable-start ;$006A offset do tablicy opisu pamieci _mstacksz: dc.w 256 ;$006C wielkosc stosu dla IRQ w długich słowach min=256 (1KB) _mcoldretry: dc.w 20 ;$006E ilosc ponowien dla chd przy starcie _reserved4: dc.l 0,0,0,0,0 ;$0070 nie uzywane ;----------------------------------------------------------------------------- modname: sname: dc.b "init",0,0 dc.b "Sysgo",0 memtable: dc.w 01 ;typ pamieci 01=SYS RAM dc.w 255 ;priorytet wyzszy pierwszy dc.w 1 ;dostep 1=USER 2=PARITY 4=ROMSEARCH dc.w 256 ;rozmar bloku dc.l $10000 ;poczatek blkou pamieci dc.l $40000 ;koniec bloku pamieci 256 kilo dc.w 0 ;offset string opisujacy dc.w 0 ;zarezerwowane musi byc zero dc.l 0 ;tanslacja adresu dc.l 0 ;zarezerwowane dc.l 0 ;zarezerwowane dc.l 0 ;terminator listy crcfield dc.l 0 ;pole dla CRC Powyższa tablica memtable opisuje obszary pamięci dostępne dla systemu.w tym przypadku dostępny jest jeden obszar (tablica zakończona jest przez długie słowo o wartości 0).

Po utworzeniu modułu init należy jeszcze przygotować procedurę bootującą jądro. Procedura ta powinna uruchomić kod zawarty w module kernel z odpowiednimi parametrami podanymi w rejestrach: d0.l Total RAM d1.b MPUType (#300) d2.b trapflag for db (#0) d3.l system startup 0-cold (1-quick) d4-d7/a2-a3 clear (a0) kernel entry (a1) boot rom entry (start) (a4) free RAM list (a5) exc jump table (a6) system globals data ptr - 0(vbr) (a7) ROM map Realizacja Projektu W systemie OS-9 możemy skorzystać ze standartowego kompilatora i linkera do utworzenia modułu init. Przygotowany kod w przypadku BCC-01 wygląda następująco: nam Init: OS-9 Configuration Module for BCC-01 Edition equ 2 current edition number Typ_Lang set (Systm<<8)+0 Attr_Rev set (ReEnt<<8)+0 psect init,typ_lang,attr_rev,edition,0,0 _INITMOD equ 1 flag reading init module CPUTyp set 68040 cpu type (68008/68000/68010) Level set 1 OS-9 Level One Vers set 2 Version 2.4 Revis set 4 Edit set 1 Edition IP_ID set 0 interprocessor identification code Site set 0 installation site code MDirSz set 128 initial module directory size (unused) PollSz set 32 IRQ polling table size (fixed) DevCnt set 32 device table size (fixed) Procs set 64 initial process table size (divisible by 64) Paths set 64 initial path table size (divisible by 64) Slice set 2 ticks per time slice SysPri set 128 initial system priority MinPty set 0 initial system minimum executable priority MaxAge set 0 initial system maximum natural age limit MaxMem set 0 top of RAM (unused) Events set 0 initial event table size (divisible by 8) Compat set 0 version smoothing byte Compat2 set 0 version smoothing byte StackSz set 1024 IRQ Stack Size in bytes (must be 1k <= StackSz < 256k) ColdRetrys set 0 number of retries for coldstart's "chd" before failing * Compat flag bit definitions SlowIRQ equ 1 xxxxxxx1 save all regs during IRQ processing NoStop equ 1<<1 xxxxxx1x don't use 'stop' instruction NoGhost equ 1<<2 xxxxx1xx don't retain Ghost memory modules NoBurst equ 1<<3 xxxx1xxx don't enable 68030 cache burst mode ZapMem equ 1<<4 xxx1xxxx wipe out memory that is allocated/freed NoClock equ 1<<5 xx1xxxxx don't start system clock during coldstart * Compat2 flag bit definitions ExtC_I equ 1<<0 xxxxxxx1 external instruction cache is coherent ExtC_D equ 1<<1 xxxxxx1x external data cache is coherent OnC_I equ 1<<2 xxxxx1xx on-chip instruction cache is coherent OnC_D equ 1<<3 xxxx1xxx on-chip data cache is coherent

DDIO equ 1<<7 1xxxxxxx don't disable data caching when in I/O use defsfile (any above definitions may be overridden in defsfile) * Special for BCC CPUTyp set 68300 cpu type DevCnt set 64 device table size (fixed) ColdRetrys set 20 number of retries for coldstart's "chd" before failing ExtCache equ ExtC_I!ExtC_Dexternal caches are absent Compat2 set 0 * Memory list definitions MemType macro dc.w \1,\2,\3,\4>>4 type, priority, access, search block size dc.l \5,\6 low, high limits (where it appears on local address bus) dc.w \7,0 offset to description string (zero if none), reserved dc.l \8,0,0 address translation adjustment (for DMA, etc.), reserved ifne \#-8 must have exactly eight arguments fail wrong number of arguments to MemType macro endc endm * Configuration module body dc.l MaxMem (unused) dc.w PollSz IRQ polling table dc.w DevCnt device table size dc.w Procs initial process table size dc.w Paths initial path table size dc.w SysParam parameter string for first executable module dc.w SysStart first executable module name offset dc.w SysDev system default device name offset dc.w ConsolNm standard I/O pathlist name offset dc.w 0 Customization module name offset dc.w ClockNm clock module name offset dc.w Slice number of ticks per time slice dc.w IP_ID interprocessor identification dc.l Site installation site code dc.w MainFram installation name offset dc.l CPUTyp specific 68000 family processor in use dc.b Level,Vers,Revis,Edit OS-9 Level dc.w OS9Rev OS-9 revision string offset dc.w SysPri initial system priority dc.w MinPty initial system minimum executable priority dc.w MaxAge maximum system natural age limit dc.l MDirSz module directory size (unused) dc.w Events initial event table size (number of entries) dc.b Compat version change smooth byte dc.b Compat2 version change smooth byte #2 dc.w MemList memory definitions dc.w StackSz/4 IRQ stack size (in longwords) dc.w ColdRetrys coldstart's "chd" retry count dc.w 0,0,0,0,0 reserved dc.w 0,0,0,0,0 reserved * Configuration name strings OS9Rev dc.b "OS-9/68K V",Vers+'0',".",Revis+'0',0 * The remaining names are defined in the "systype.d" macro CONFIG * memory list definitions for init module (user adjustable) align MemList MemType SYSRAM,255,B_USER+B_PARITY,$10000,$00010000,$00040000,OnRAM,0 dc.l 0 end of list OnRAM dc.b "RAM",0 ends Procedura ładująca system została zrealizowana następująco:

psect boot,257,0,0,0,boot RAM_MEM equ $10000 RAM_SIZE equ $30000 ROM_MEM equ 0 ROM_SIZE equ $10000 use defsfile BOOT clr.l d0 *zerowanie VBR movec d0,vbr ori.w #%11100000000,sr *maska przerwan na 111 obsluga tylko NMI *ustawienie tablicy wektorow przerwan move.w #(254-1),d0 *licznik petli movea.l #8,a0 *adres pierwszego ustawianego wektora w tablicy lea BadExeption(pc),a1 *adres procedury obslugi bledu przerwania loop1 move.l a1,(a0) *zapisz do wektora adres procedury dbf d0,loop1 *czy koniec petli *odszukaj kernel i skocz lea KERNELMOD(pc),a0 *adres modulu kernela adda.l #$30,a0 RAM: move.l #RAM_MEM,a4 ;zaladuj do a4 adres poczatku ramu move.l #0,(a4) ; wskaznik na nastepny blok ;zapisz 0 pod poczatkowy adres move.l #RAM_SIZE,d0 ;zaladuj rozmiar ramu do d0 move.l d0,4(a4) ;wielkosc bloku ;drugie pole w ram ustaw na rozmiar ROM move.l #ROM_SIZE,-(sp) ;rozmiar romu odluz na stos move.l #ROM_MEM,-(sp) ;adres romu odluz na stos move.l #TotRAM,d0 move.l #MPUType,d1 moveq.l #0,d2 move.l d2,d4 move.l d2,d5 move.l d2,d6 move.l d2,d7 move.l d2,a2 move.l d2,a3 move.l #0,d3 lea BOOT(pc),a1 move.l #8,a5 move.l d2,a6 move.l d2,a7 jmp(a0) BadExeption bra * ;zaladuj do d0 rozmiar ramu ;zaladuj typ proca do d1 ;zero do d2 ;zero do d4 ;zero do d5 ;zero do d6 ;zero do d7 ;zero do a2 ;zero do a3 ;typ resetu do d3 (cold) ;boot rom entry ;exc jump table ;VBR ;ROM map *skok do kernela ENDBOOT dc.l 0 *CRC do wyliczenia KERNELMOD * tutaj nalezy dolinkowac modul kernela