Retrocomputing

OS-9 Level II for Dragon 128 (Beta)

The Dragon 128 was an unfinished project at the time Dragon Data went bankrupt. It was designed to have from 256 KB RAM up to 768 KB, and run OS-9 Level II.

The disks listed below come from the Dragon Archive. They have been converted from the DMK format to DSK to make them easier to use in other emulators. The Pascal and C compilers are the same as was sold for the Dragon 64, but the BASIC09 on the system disk is a modified 80-column edition.

OS-9 C Compiler (beta-c-compiler.dsk) (327,680 bytes)
Two-pass compiler (cc1). Configured to use /d0 for include files.
OS-9 Graphics Demo and Source (beta-graphicsdemo.dsk) (327,680 bytes)
Sources for the graphics driver including OS-9 DEFS files.
OS-9 Level 2 v1.1 System Disk (beta-os9-system.dsk) (327,680 bytes)
Contains an early version of Level II. OS9p2 is edition 13. /d0/sys/errmsg is an executable module.
OS-9 On The Dragon 128 V1.pdf (OS-9_On_The_Dragon_128_V1.pdf) (30,786,172 bytes)
OS-9 Pascal Compiler (beta-pascal.dsk) (327,680 bytes)
Identical to the version sold for Dragon 64.

Basic09 modifications

The screen device driver has many graphics operations. Dragon Data had therefore made modifications to add the graphics primitives as extra keywords in Basic09. The application looks for a sub-routine module called "graphics". These are then available directly.

PROCEDURE fill2
DIM col:INTEGER
FOR col=0 TO 2
  gclear
  CSET(8,1,2,4)
  graphics
  if col = 2 then 
    move(142,142)
    circle(74)
  endif
  MOVE(20,200)
  COLOUR(2)
  DRAW(" T0 D40 T-90 D20 T-90 D20 T90 D20 T90 D140 T90 D40 T90 D20")
NEXT col
END 

Disk format

In the DMK format the disk images have 1274 sectors and 16 sectors per track according to the identification sector. 80 tracks x 16 sectors would give 1280 so there are 6 sectors missing. After the conversion to DSK format six unformatted sectors appeared in the first track and I moved them to the end to make it possible to read the disk. I then increased the number of sectors to 1280 and did a dcheck to verify integrity. Additionally, according to the disk attributes the disks are single-sided double density.

If you disassemble the device descriptor for /D0, then you'll see why the disk has this strange format. Track 0 has only 10 sectors.

         nam   d0
         ttl   os9 device descriptor

tylg     set   Devic+Objct   
atrv     set   ReEnt+rev
rev      set   $01
         mod   eom,name,tylg,atrv,mgrnam,drvnam
         fcb   $FF mode byte
         fcb   $0F extended controller address
         fdb   $FCE0  physical controller address
         fcb   initsize-*-1  initilization table size
         fcb   $01 device type:0=scf,1=rbf,2=pipe,3=scf
         fcb   $00 drive number
         fcb   $03 step rate
         fcb   $00 drive device type
         fcb   $01 media density:0=single,1=double
         fdb   $0028 number of cylinders (tracks)
         fcb   $02 number of sides
         fcb   $00 verify disk writes:0=on
         fdb   $0010 # of sectors per track
         fdb   $000A # of sectors per track (track 0)
         fcb   $04 sector interleave factor
         fcb   $08 minimum size of sector allocation
initsize equ   *
name     equ   *
         fcs   /d0/
         fcb   $00 ?
mgrnam   equ   *
         fcs   /RBF/
drvnam   equ   *
         fcs   /wd2797/
         emod
eom      equ   *