changeset 46:60432af73b7e

Moved boot modules into 3rdparty directory
author boisy
date Sat, 20 Apr 2002 13:37:42 +0000
parents 2ce754e62499
children c1c7f1cb1560
files level2/modules/boot_kenton.asm level2/modules/boot_rampak.asm level2/modules/boot_rom.asm level2/modules/boot_tc3.asm level2/modules/boot_wd1002.asm level2/modules/makefile
diffstat 6 files changed, 6 insertions(+), 1249 deletions(-) [+]
line wrap: on
line diff
--- a/level2/modules/boot_kenton.asm	Sat Apr 20 13:36:45 2002 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,305 +0,0 @@
-********************************************************************
-* Boot - Ken-Ton Boot module
-*
-* $Id$
-*
-* This module allows booting from a hard drive that uses RGB-DOS
-* and is controlled by a Ken-Ton SCSI controller.
-*
-* It was later modified to handle hard drives with sector sizes
-* larger than 256 bytes, and works on both 256 byte and larger drives,
-* so it should totally replace the old Ken-Ton boot module.
-*
-* Instructions followed by +++ in the comment field were added for this fix.
-*
-* Ed.    Comments                                       Who YY/MM/DD
-* ------------------------------------------------------------------
-* 1      Original Roger Krupski distribution version
-* 1b     Added code to allow booting from any sector    BGP 96/??/??
-*        size hard drive
-
-
-         nam   Boot
-         ttl   Ken-Ton Boot module
-
-         ifp1
-         use   defsfile
-         use   rbfdefs
-         endc
-
-tylg     set   Systm+Objct
-atrv     set   ReEnt+rev
-rev      set   2
-edition  set   1
-
-* Hard Disk Interface registers for the Ken-ton and RGB HDI
-dataport equ   $FF74
-status   equ   dataport+1
-select   equ   dataport+2
-reset    equ   dataport+3
-
-* Status register equates
-req      equ   $01
-busy     equ   $02
-msg      equ   $04
-cmd      equ   $08
-inout    equ   $10
-ack      equ   $20
-sel      equ   $40
-rst      equ   $80
-
-*SCSI common command set
-c$rstr   equ   1
-c$rdet   equ   3
-c$rblk   equ   8
-c$wblk   equ   10
-
-* Optional command
-c$ststop equ   $1b                     park head
-
-* misc
-errsta   equ   2
-bsybit   equ   8
-
-****************************************************
-bootdrv  equ   0
-****************************************************
-
-         mod   eom,name,tylg,atrv,start,size
-
-* Data equates; subroutines must keep data in stack
-v$cmd    rmb   1
-v$addr0  rmb   1
-v$addr1  rmb   2
-v$blks   rmb   1
-v$opts   rmb   1
-v$error  rmb   4
-
-blockloc rmb   2                       pointer to memory requested
-blockimg rmb   2                       duplicate of the above
-bootloc  rmb   3                       sector pointer; not byte pointer
-bootsize rmb   2                       size in bytes
-size     equ   .
-
-name     fcs   /Boot/
-         fcb   edition
-
-start    clra
-         ldb   #size
-clean    pshs  a
-         decb
-         bne   clean
-         tfr   s,u                     get pointer to data area
-         pshs  u                       save pointer to data area
-
-         lda   #$d0                    forced interrupt; kill floppy activity
-         sta   $FF48                   command register
-         clrb
-pause    decb
-         bne   pause
-         lda   $FF48                   clear controller
-         clr   $FF40                   make sure motors are turned off
-         sta   $FFD9                   fast clock
-
-* Recalibrate hard drive
-         lbsr  restore
-
-* Request memory for LSN0
-         ldd   #1
-         os9   F$SRqMem                request one page of RAM
-         bcs   error
-         bsr   getpntr
-
-* Get LSN0 into memory
-         clrb                          MSB sector
-         ldx   #0                      LSW sector
-         bsr   mread
-         bcs   error
-         ldd   bootsize,u
-         beq   error
-         pshs  d
-
-* Return memory
-         ldd   #$100
-         ldu   blockloc,u
-         os9   F$SRtMem
-         puls  d
-         os9   F$BtMem
-         bcs   error
-         bsr   getpntr
-         std   blockimg,u
-
-* Get os9boot into memory
-         ldd   bootsize,u
-         leas  -2,s                    same as a PSHS D
-getboot  std   ,s
-         ldb   bootloc,u               MSB sector location
-         ldx   bootloc+1,u             LSW sector location
-         bsr   mread
-         ldd   bootloc+1,u             update sector location by one to 24bit word
-         addd  #1
-         std   bootloc+1,u
-         ldb   bootloc,u
-         adcb  #0
-         stb   bootloc,u
-         inc   blockloc,u              update memory pointer for upload
-         ldd   ,s                      update size of file left to read
-         subd  #$100                   file read one sector at a time
-         bhi   getboot
-
-         leas  4+size,s                reset the stack    same as PULS U,D
-         ldd   bootsize,u
-         ldx   blockimg,u              pointer to start of os9boot in memory
-         andcc #^Carry                 clear carry
-         rts                           back to os9p1
-
-error    leas  2+size,s
-         ldb   #E$NotRdy               drive not ready
-         rts
-
-getpntr  tfr   u,d                     save pointer to requested memory
-         ldu   2,s                     recover pointer to data stack
-         std   blockloc,u
-         rts
-
-mread    tstb
-         bne   read10
-         cmpx  #0
-         bne   read10
-         bsr   read10
-         bcc   readlsn0
-         rts
-
-readlsn0 pshs  a,x,y
-         ldy   blockloc,u
-         lda   DD.Bt,y                 os9boot pointer
-         ldx   DD.Bt+1,y               LSW of 24 bit address
-         sta   bootloc,u
-         stx   bootloc+1,u
-         ldx   DD.BSZ,y                os9boot size in bytes
-         stx   bootsize,u
-         clrb
-         puls  a,x,y,pc
-
-* Generic read
-read10   lda   #c$rblk
-         bsr   setup
-         bra   command
-
-setup    pshs  b
-         sta   v$cmd,u
-         stb   v$addr0,u
-         stx   v$addr1,u
-         ldb   #1
-         stb   v$blks,u
-         clr   v$opts,u
-         puls  b,pc
-
-wakeup   ldx   #0
-wake     lda   status
-         bita  #busy+sel
-         beq   wake1
-         leax  -1,x
-         bne   wake
-         bra   wake4
-wake1    bsr   wake3
-         lda   #1
-         sta   dataport
-         bsr   wake3
-         sta   select
-         ldx   #0
-wake2    lda   status
-         bita  #busy
-         bne   wake3
-         leax  -1,x
-         bne   wake2
-wake4    leas  2,s
-         comb
-         ldb   #E$NotRdy
-wake3    rts
-
-command  bsr   wakeup
-         leax  v$cmd,u
-         bsr   send
-         bsr   waitrq
-         bita  #cmd
-         bne   getsta
-         ldx   blockloc,u
-         bsr   read
-getsta   bsr   instat
-         bita  #bsybit
-         bne   command
-         bita  #errsta
-         beq   done
-         comb
-done     rts
-
-send     bsr   waitrq
-         bita  #cmd
-         beq   done
-         bita  #inout
-         bne   done
-         lda   ,x+
-         sta   dataport
-         bra   send
-
-waitrq   pshs  b,x
-wait10   lda   status
-         bita  #req
-         beq   wait10
-         puls  b,x,pc
-
-* Patch to allow booting from sector sizes > 256 bytes - BGP 08/16/97
-* We ignore any bytes beyond byte 256, but continue to read them from
-* the dataport until the CMD bit is set.
-read
-* next 2 lines added
-         clrb                          +++ use B as counter
-read2
-         bsr   waitrq
-         bita  #cmd
-         bne   done
-         lda   dataport
-         sta   ,x+
-* next line commented out and next 8 lines added
-* bra read
-         incb                          +++
-         bne   read2                   +++
-read3
-         bsr   waitrq                  +++
-         bita  #cmd                    +++
-         bne   done                    +++
-         lda   dataport                +++
-         bra   read3                   +++
-
-instat   bsr   waitrq
-         lda   dataport
-         anda  #%00001111
-         pshs  a
-         bsr   waitrq
-         clra
-         sta   dataport
-         puls  a,pc
-
-restore  lda   #c$rstr
-         clrb
-         ldx   #0
-         lbsr  setup
-         clr   v$blks,u
-         bra   command
-
-* Fillers to get to $1D0
-         fcc   /9999999999/
-         fcc   /9999999999/
-         fcc   /9999999999/
-         fcc   /9999999999/
-         fcc   /9999999999/
-         fcc   /9999999999/
-         fcc   /9999999999/
-         fcc   /9999999999/
-         fcc   /99999999/
-
-         emod
-eom      equ   *
-         end
-
--- a/level2/modules/boot_rampak.asm	Sat Apr 20 13:36:45 2002 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,146 +0,0 @@
-********************************************************************
-* Boot - Disto RAMPak boot module
-*
-* $Id$
-*
-* Ed.    Comments                                       Who YY/MM/DD
-* ------------------------------------------------------------------
-* 5      Created                                        ADK
-* 6      Fixed small bugs, improved speed               BGP 98/10/20
-
-         nam   Boot
-         ttl   Disto RAMPak boot module
-
-* Disassembled 94/06/25 11:37:47 by Alan DeKok
-
-         ifp1  
-         use   defsfile
-         use   rbfdefs
-         endc  
-
-tylg     set   Systm+Objct
-atrv     set   ReEnt+rev
-rev      set   $00
-edition  set   6
-
-         mod   eom,name,tylg,atrv,start,size
-
-* on-stack buffer to use
-         org   0
-size     equ   .
-
-name     equ   *
-         fcs   /Boot/
-         fcb   edition
-
-start    orcc  #IntMasks  ensure IRQ's are off.
-
-         pshs  x,d        save 4 bytes of junk
-R.D      equ   1
-R.X      equ   3
-
-         lda   >MPI.Slct  get current slot
-         pshs  a          save off
-         lda   >PakSlot,pcr get multipak slot number
-         bmi   cont       if >127, invalid slot number
-         anda  #$03       force it to be legal
-         ldb   #$11
-         mul              put it into both nibbles
-         stb   >MPI.Slct  go to the desired slot
-
-cont     ldd   #$0001     request one byte (will round up to 1 page)
-         os9   F$SRqMem   request the memory
-         bcs   L00AE      exit on error
-* U is implicitely the buffer address to use
-
-         ldx   #$0000     X=0: got to sector #$0000
-         bsr   GetSect    load in LSN0, and point Y to the buffer
-         bcs   L00AE
-
-         ldd   <DD.BSZ,u  size of the bootstrap file
-         std   R.D,s      save it on the stack (0,s is junk)
-         ldx   <DD.BT+1,u get starting sector of the bootstrap file
-
-         pshs  x          save the starting sector number
-         ldd   #$0100     one page of memory
-         os9   F$SRtMem   return the copy of LSN0 to free memory
-
-         ldd   R.X,s      get size of boot memory to request
-         os9   F$BtMem    ask for the boot memory
-         puls  x          restore the starting sector number
-         bcs   L00AE      no memory: exit with error
-
-         stu   R.X,s      save start address of memory allocated
-         std   R.D,s      and the size of the boot memory
-         beq   L00A7      if no memory allocated, exit
-
-SectLp   pshs  x,d        save sector #, size of boot
-         bsr   GetSect    read one sector
-         bcs   L00AC      if there's an error, exit
-         puls  x,d        restor sector, size of boot
-
-         leau  $0100,u    go up one page in memory
-         leax  $01,x      go to the next sector
-         subd  #$0100     take out one sector, need value in B, too.
-         bhi   SectLp     loop until all sectors are read
-
-L00A7    puls  a
-         sta   >MPI.Slct
-         clrb             clear carry
-         puls  d          return size of boot memory to user
-         bra   L00B0      and go exit
-
-L00AC    leas  $04,s      remove X,D off of stack
-L00AE    puls  a
-         sta   >MPI.Slct
-         leas  $02,s      kill D off of the stack
-
-L00B0    puls  x          restore start address of memory allocated
-*         leas  size,s     remove the on-stack buffer
-         clr   >$FF40     stop the disk
-L00BA    rts   
-
-* GetSect: read a sector off of the disk
-* Entry: X = sector number to read
-GetSect  pshs  d,x,y
-         ldy   >Address,pcr grab the device address
-         tfr   x,d        move 16 bit LSN into 2 8-bit registers
-         sta   2,y        save HB LSN
-         stb   1,y        save LB LSN
-         leax  ,u         get buffer address to write into
-         clrb             and start out at byte zero
-
-ReadLp   stb   ,y         save byte number
-         lda   3,y        grab the byte
-         sta   ,x+        save in the buffer
-         incb             go to the enxt byte
-         bne   ReadLp
-         clrb             no errors
-         puls  d,x,y,pc   restore registers and return
-
-         fcc   /    JABBERWOCKY.          /
-         fcb   $0D
-         fcc   /'Twas brillig, and the slithy toves/
-         fcb   $0D
-         fcc   /  Did gyre and gimble in the wabe:/
-         fcb   $0D
-         fcc   /All mimsy were the borogroves,/
-         fcb   $0D
-         fcc   /  And the mome raths outgrabe./
-         fcb   $0D
-         fcb   $0D
-         fcc   /"Beware the Jabberwock, my son!/
-         fcb   $0D
-         fcc   /  The jaws that bite, the claws that catch!/
-         fcb   $0D
-         fcc   /Beware the Jubjub bird, and shun/
-         fcb   $0D
-         fcc   /  The frumious Bandersnatch"/
-         fcb   $0D
-
-Address  fdb   $FF40      address of the device to boot from
-PakSlot  fcb   $01        multipak slot number
-
-         emod  
-eom      equ   *
-         end   
--- a/level2/modules/boot_rom.asm	Sat Apr 20 13:36:45 2002 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,159 +0,0 @@
-********************************************************************
-* Boot - OS-9 Level Two ROM Boot module
-*
-* $Id$
-*
-* Ed.    Comments                                       Who YY/MM/DD
-* ------------------------------------------------------------------
-* 1      Created                                        BGP 98/??/??
-
-         nam   Boot
-         ttl   OS-9 Level Two ROM Boot module
-
-         ifp1
-         use   defsfile
-         endc
-
-tylg     set   Systm+Objct
-atrv     set   ReEnt+rev
-rev      set   $01
-edition  set   1
-
-         mod   eom,name,tylg,atrv,start,size
-
-size     equ   .
-
-name     fcs   /Boot/
-         fcb   edition
-
-start    equ   *
-* obtain bootfile size at known offset
-         pshs  u,y,x,a,b,cc
-         orcc  #IntMasks       mask interrupts
-
-* allocate memory from system
-* memory will start at $8000, blocks 1, 2, 3 and 3F
-* we allocate $100 bytes more so that the memory will start
-* exactly at $8000
-         ldd   #$8000-$1300
-         os9   F$BtMem
-         bcs   Uhoh
-
-         stu   3,s                     save pointer in X on stack
-         std   1,s                     save size in D on stack
-
-* TRICK!  Map block 4 into $4000, copy our special ROM copy code
-*         there, then jmp to it!
-         lda   $FFA2
-         pshs  a
-         lda   #$04
-         sta   $FFA2
-         ldd   #RelCodeL               code less than 256 bytes
-         leax  RelCode,pcr
-         ldy   #$4800
-Copy     lda   ,x+
-         sta   ,y+
-         decb
-         bne   Copy
-
-Jump     jsr   $4800                   * jump to rel code
-         puls  a                       restore original block at $4000
-         sta   $FFA2
-
-* Upon exit, we return to the kernel with:
-*    X  = address of bootfile
-*    D  = size of bootfile
-*    CC = carry cleared
-ExitOK   andcc #^Carry                 clear carry
-Uhoh     puls  u,y,x,a,b,cc,pc
-
-
-* this code executes at $4800
-RelCode  equ   *
-         lda   #$4E                    CC3 mode, MMU, 32K ROM
-         sta   $FF90
-         sta   $FFDE                   ROM/RAM mode
-
-* Map ROM Blocks in
-         ldd   #$3C3D
-         std   $FFA4
-         lda   #$3E
-         sta   $FFA6
-
-* Map block 1 at $6000
-         lda   $FFA3
-         pshs  a
-         lda   #$01
-         sta   $FFA3
-* Copy first 8K of ROM
-         ldx   #$8000
-         ldy   #$6000
-Loop1    ldd   ,x++
-         std   ,y++
-         cmpx  #$A000
-         blt   Loop1
-
-* Map block 2 at $6000
-         lda   #$02
-         sta   $FFA3
-* Copy second 8K of ROM
-         ldx   #$A000
-         ldy   #$6000
-Loop2    ldd   ,x++
-         std   ,y++
-         cmpx  #$C000
-         blt   Loop2
-
-* Map block 3 at $6000
-         lda   #$03
-         sta   $FFA3
-* Copy third 8K of ROM
-         ldx   #$C000
-         ldy   #$6000
-Loop3    ldd   ,x++
-         std   ,y++
-         cmpx  #$E000
-         blt   Loop3
-
-* Copy remaining ROM area ($8000-$1400)
-         lda   #$3F
-         sta   $FFA3
-         ldx   #$E000
-         ldy   #$6000
-Loop4    clr   $FFDE                   put in ROM/RAM mode to get byte
-         ldd   ,x++
-         clr   $FFDF                   put back in RAM mode to store byte
-         std   ,y++
-         cmpx  #$EC00
-         blt   Loop4
-*         ldx   #$6000
-*         ldy   #$E000
-*Loop5    ldd   ,x++
-*         std   ,y++
-*         cmpx  #$6C00
-*         blt   Loop5
-
-         lda   D.HINIT                 restore GIME HINIT value
-         sta   $FF90
-         puls  a                       restore org block at $6000
-         sta   $FFA3
-         lda   #$03
-         sta   $FFA6
-         ldd   #$0102
-         std   $FFA4
-         rts
-
-RelCodeL equ   *-RelCode
-
-* Fillers to get to $1D0
-         fcc   /99999999999999999999999999999999999999999999999999/
-*         fcc   /99999999999999999999999999999999999999999999999999/
-*         fcc   /99999999999999999999999999999999999999999999999999/
-         fcc   /99999999999999999999999999999999999999999999999999/
-         fcc   /99999999999999999999999999999999999999999999999999/
-         fcc   /99999999999999999999999999999999999999999999999999/
-         fcc   /999999999999999999999999999999999999999999999999999/
-
-         emod
-eom      equ   *
-         end
--- a/level2/modules/boot_tc3.asm	Sat Apr 20 13:36:45 2002 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,297 +0,0 @@
-********************************************************************
-* Boot - Cloud-9 TC3 Boot module
-*
-* $Id$
-*
-* This module allows booting from a hard drive that uses RGB-DOS
-* and is controlled by a Cloud-9 TC3 SCSI controller.
-*
-* Ed.    Comments                                       Who YY/MM/DD
-* ------------------------------------------------------------------
-* 1      Original Roger Krupski distribution version
-* 1b     Added code to allow booting from any sector    BGP 96/??/??
-*        size hard drive
-
-
-         nam   Boot
-         ttl   Cloud-9 TC3 Boot module
-
-         ifp1
-         use   defsfile
-         use   rbfdefs
-         endc
-
-tylg     set   Systm+Objct
-atrv     set   ReEnt+rev
-rev      set   2
-edition  set   1
-
-* Hard Disk Interface registers for the TC3
-dataport equ   $FF76
-status   equ   dataport+1
-select   equ   dataport+1
-
-* Status register equates
-req      equ   1
-busy     equ   2
-msg      equ   4
-cmd      equ   8
-inout    equ   $10
-ack      equ   $20
-sel      equ   $40
-rst      equ   $80
-
-*SCSI common command set
-c$rstr   equ   1
-c$rdet   equ   3
-c$rblk   equ   8
-c$wblk   equ   10
-
-* Optional command
-c$ststop equ   $1b                     park head
-
-* misc
-errsta   equ   2
-bsybit   equ   8
-
-****************************************************
-bootdrv  equ   0
-****************************************************
-
-         mod   eom,name,tylg,atrv,start,size
-
-* Data equates; subroutines must keep data in stack
-v$cmd    rmb   1
-v$addr0  rmb   1
-v$addr1  rmb   2
-v$blks   rmb   1
-v$opts   rmb   1
-v$error  rmb   4
-
-blockloc rmb   2                       pointer to memory requested
-blockimg rmb   2                       duplicate of the above
-bootloc  rmb   3                       sector pointer; not byte pointer
-bootsize rmb   2                       size in bytes
-size     equ   .
-
-name     fcs   /Boot/
-         fcb   edition
-
-start    clra
-         ldb   #size
-clean    pshs  a
-         decb
-         bne   clean
-         tfr   s,u                     get pointer to data area
-         pshs  u                       save pointer to data area
-
-         lda   #$d0                    forced interrupt; kill floppy activity
-         sta   $FF48                   command register
-         clrb
-pause    decb
-         bne   pause
-         lda   $FF48                   clear controller
-         clr   $FF40                   make sure motors are turned off
-         sta   $FFD9                   fast clock
-
-* Recalibrate hard drive
-         lbsr  restore
-
-* Request memory for LSN0
-         ldd   #1
-         os9   F$SRqMem                request one page of RAM
-         bcs   error
-         bsr   getpntr
-
-* Get LSN0 into memory
-         clrb                          MSB sector
-         ldx   #0                      LSW sector
-         bsr   mread
-         bcs   error
-         ldd   bootsize,u
-         beq   error
-         pshs  d
-
-* Return memory
-         ldd   #$100
-         ldu   blockloc,u
-         os9   F$SRtMem
-         puls  d
-         os9   F$BtMem
-         bcs   error
-         bsr   getpntr
-         std   blockimg,u
-
-* Get os9boot into memory
-         ldd   bootsize,u
-         leas  -2,s                    same as a PSHS D
-getboot  std   ,s
-         ldb   bootloc,u               MSB sector location
-         ldx   bootloc+1,u             LSW sector location
-         bsr   mread
-         ldd   bootloc+1,u             update sector location by one to 24bit word
-         addd  #1
-         std   bootloc+1,u
-         ldb   bootloc,u
-         adcb  #0
-         stb   bootloc,u
-         inc   blockloc,u              update memory pointer for upload
-         ldd   ,s                      update size of file left to read
-         subd  #$100                   file read one sector at a time
-         bhi   getboot
-
-         leas  4+size,s                reset the stack    same as PULS U,D
-         ldd   bootsize,u
-         ldx   blockimg,u              pointer to start of os9boot in memory
-         andcc #^Carry                 clear carry
-         rts                           back to os9p1
-
-error    leas  2+size,s
-         ldb   #E$NotRdy               drive not ready
-         rts
-
-getpntr  tfr   u,d                     save pointer to requested memory
-         ldu   2,s                     recover pointer to data stack
-         std   blockloc,u
-         rts
-
-mread    tstb
-         bne   read10
-         cmpx  #0
-         bne   read10
-         bsr   read10
-         bcc   readlsn0
-         rts
-
-readlsn0 pshs  a,x,y
-         ldy   blockloc,u
-         lda   DD.Bt,y                 os9boot pointer
-         ldx   DD.Bt+1,y               LSW of 24 bit address
-         sta   bootloc,u
-         stx   bootloc+1,u
-         ldx   DD.BSZ,y                os9boot size in bytes
-         stx   bootsize,u
-         clrb
-         puls  a,x,y,pc
-
-* Generic read
-read10   lda   #c$rblk
-         bsr   setup
-         bra   command
-
-setup    pshs  b
-         sta   v$cmd,u
-         stb   v$addr0,u
-         stx   v$addr1,u
-         ldb   #1
-         stb   v$blks,u
-         clr   v$opts,u
-         puls  b,pc
-
-wakeup   ldx   #0
-wake     lda   status
-         bita  #busy+sel
-         beq   wake1
-         leax  -1,x
-         bne   wake
-         bra   wake4
-wake1    bsr   wake3
-         lda   #1
-         sta   dataport
-         bsr   wake3
-         sta   select
-         ldx   #0
-wake2    lda   status
-         bita  #busy
-         bne   wake3
-         leax  -1,x
-         bne   wake2
-wake4    leas  2,s
-         comb
-         ldb   #E$NotRdy
-wake3    rts
-
-command  bsr   wakeup
-         leax  v$cmd,u
-         bsr   send
-         bsr   waitrq
-         bita  #cmd
-         bne   getsta
-         ldx   blockloc,u
-         bsr   read
-getsta   bsr   instat
-         bita  #bsybit
-         bne   command
-         bita  #errsta
-         beq   done
-         comb
-done     rts
-
-send     bsr   waitrq
-         bita  #cmd
-         beq   done
-         bita  #inout
-         bne   done
-         lda   ,x+
-         sta   dataport
-         bra   send
-
-waitrq   pshs  b,x
-wait10   lda   status
-         bita  #req
-         beq   wait10
-         puls  b,x,pc
-
-* Patch to allow booting from sector sizes > 256 bytes - BGP 08/16/97
-* We ignore any bytes beyond byte 256, but continue to read them from
-* the dataport until the CMD bit is set.
-read
-* next 2 lines added
-         clrb                          +++ use B as counter
-read2
-         bsr   waitrq
-         bita  #cmd
-         bne   done
-         lda   dataport
-         sta   ,x+
-* next line commented out and next 8 lines added
-* bra read
-         incb                          +++
-         bne   read2                   +++
-read3
-         bsr   waitrq                  +++
-         bita  #cmd                    +++
-         bne   done                    +++
-         lda   dataport                +++
-         bra   read3                   +++
-
-instat   bsr   waitrq
-         lda   dataport
-         anda  #%00001111
-         pshs  a
-         bsr   waitrq
-         clra
-         sta   dataport
-         puls  a,pc
-
-restore  lda   #c$rstr
-         clrb
-         ldx   #0
-         lbsr  setup
-         clr   v$blks,u
-         bra   command
-
-* Fillers to get to $1D0
-         fcc   /9999999999/
-         fcc   /9999999999/
-         fcc   /9999999999/
-         fcc   /9999999999/
-         fcc   /9999999999/
-         fcc   /9999999999/
-         fcc   /9999999999/
-         fcc   /9999999999/
-         fcc   /99999999/
-
-         emod
-
-eom      equ   *
--- a/level2/modules/boot_wd1002.asm	Sat Apr 20 13:36:45 2002 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,336 +0,0 @@
-********************************************************************
-* Boot - WD1002-05 boot module
-*
-* $Id$
-*
-* WD 1002-05 OS-9 Boot Subroutine (called by OS9p1)
-* Copyright 1988, 1989 Bruce Isted
-* All Rights Reserved
-*
-* Ed.    Comments                                       Who YY/MM/DD
-* ------------------------------------------------------------------
-* 2      Created by Bruce Isted                         BRI ??/??/??
-
-         nam   Boot
-         ttl   WD1002-05 boot module
-
-* These equates should be set before assembly:
-FDStep   equ   $09        see Step Rate Table
-HDStep   equ   $0F        see step rate table
-
-*Step Rate Table:
-*+------------------+------------------+------------------+------------------+
-*! Value=FD/HD Rate ! Value=FD/HD Rate ! Value=FD/HD Rate ! Value=FD/HD Rate !
-*+------------------+------------------+------------------+------------------+
-*!  $00=40mS/7.5mS  !  $04=16mS/5.5mS  !  $08=08mS/3.5mS  !  $0C=03mS/1.5mS  !
-*!  $01=25mS/7.0mS  !  $05=14mS/5.0mS  !  $09=06mS/3.0mS  !  $0D=02mS/1.0mS  !
-*!  $02=20mS/6.5mS  !  $06=12mS/4.5mS  !  $0A=05mS/2.5mS  !  $0E=01mS/0.5mS  !
-*!  $03=18mS/6.0mS  !  $07=10mS/4.0mS  !  $0B=04mS/2.0mS  !  $0F=15uS/ 35uS  !
-*+------------------+------------------+------------------+------------------+
-
-         ifp1  
-         use   defsfile
-         use   rbfdefs
-         endc  
-
-* These equates should not have to be changed:
-BEdtn    equ   2
-BVrsn    equ   1
-MaxCyls  equ   1024       maximum cylinders supported
-MaxHeads equ   16         maximum heads supported
-MaxSctrs equ   64         maximum sectors per track supported
-PhysDrv0 equ   %10000000  SDH register mask for HD0
-PhysDrv1 equ   %10001000  SDH register mask for HD1
-PhysDrv2 equ   %10010000  SDH register mask for HD2
-PhysDrv3 equ   %00011000  SDH register mask for FD0
-PhysDrv4 equ   %00011010  SDH register mask for FD1
-PhysDrv5 equ   %00011100  SDH register mask for FD2
-PhysDrv6 equ   %00011110  SDH register mask for FD3
-ReadSctr equ   %00100000  read sector command
-Restore  equ   %00010000  base restore command
-SelfTest equ   %10010000  WD 1002-05 diagnostic test command
-
-* HCA memory map:
-         org   0
-WDData   rmb   2          WD 1002-05 sector buffer/task files
-         rmb   2          reserved - do not use
-PA       equ   .          PIA PA offset
-DDRA     rmb   1          PIA DDRA offset
-CRA      rmb   1          PIA CRA offset
-PB       equ   .          PIA PB offset
-DDRB     rmb   1          PIA DDRB offset
-CRB      rmb   1          PIA CRB offset
-
-* WD 1002-05 register definitions:
-         org   0
-WDBuff   rmb   1          WD 1002-05 sector buffer address
-ErrReg   equ   .          error register address (read)
-WPCReg   rmb   1          write precomp register address (write)
-SctrCnt  rmb   1          sector count register address
-SctrReg  rmb   1          sector number register address
-CylLow   rmb   1          cylinder LSB register address
-CylHigh  rmb   1          cylinder MSB register address
-SDHReg   rmb   1          Size/Drive/Head register address
-StatReg  equ   .          status register address (read)
-CmdReg   rmb   1          command register address (write)
-
-         org   0
-U.BSZ    rmb   2          boot file size
-U.BSct   rmb   1          number of sectors in boot file
-U.BT     rmb   3          boot file start LSN
-U.BtStrt rmb   2          boot file start address
-U.CrtCyl rmb   2          current cylinder number
-U.CrtSct rmb   1          current sector number
-U.CrtSid rmb   1          current side (head) number
-U.Restor rmb   1          restore command incl. step rate code
-U.SDH    rmb   1          base WD Size/Drive/Head register copy
-U.Sides  rmb   1          number of disk sides (heads)
-U.SPC    rmb   2          sectors per cylinder
-U.SPT    rmb   2          sectors per track
-U.StSctr rmb   1          start sector number (HD=0, FD=1)
-BootMem  equ   .
-
-         mod   BEnd,BNam,Systm+Objct,ReEnt+BVrsn,BExec,$00
-BNam     fcs   "Boot"
-         fcb   BEdtn      edition number
-
-* base SDH register table
-SDHTable equ   *
-         fcb   PhysDrv0,PhysDrv1,PhysDrv2 base SDH for hard drives
-         fcb   PhysDrv3,PhysDrv4,PhysDrv5,PhysDrv6 base SDH for floppys
-***
-* Boot subroutine module
-*
-* INPUT: none
-*
-* OUTPUT: [D]=size of bootstrap file
-*         [X]=start address of bootstrap file in memory
-*         y,u registers altered
-*
-* ERROR OUTPUT: [CC]=carry set
-*               [B]=error code
-BExec    ldy   <D.WDAddr  get HCA base address (set by auto-boot EPROM)
-         cmpy  #$FF40     base address too low?
-         blo   UnitErr    yes, go report error...
-         cmpy  #$FF7F     base address too high?
-         bhi   UnitErr    yes, go report error...
-         lda   <D.WDBtDr  get boot drive number (set by auto-boot EPROM
-         cmpa  #$07       legal drive number?
-         blo   InitPIA    yes, go initialize PIA...
-UnitErr  ldb   #E$Unit
-         coma  
-         rts   
-
-DumpRead clr   PB,y       set WD address to sector buffer
-DumpR0   lda   WDData,y   get a byte from WD sector buffer
-         decb             done yet?
-         bne   DumpR0     no, go dump another byte
-         rts   
-LSN0Info ldb   #DD.FMT    load number of bytes to dump
-         bsr   DumpRead   go dump LSN0 up to DD.FMT
-         lda   WDData,y   get DD.FMT (disk density, sides)
-         anda  #$01       mask out all but disk sides bit
-         inca             correction to bit coding
-         sta   U.Sides,u  save disk sides (not valid if HD > 2 heads)
-         ldd   WDData,y   get DD.SPT (sectors per track)
-         std   U.SPT,u
-         ldb   #DD.BT-DD.RES load number of bytes to dump
-         bsr   DumpRead   go dump LSN0 from DD.RES to DD.BT
-         lda   WDData,y   get DD.BT (boot file start LSN) MSB
-         sta   U.BT,u
-         ldd   WDData,y   get DD.BT (boot file start LSN) LSBs
-         std   U.BT+1,u
-         ldd   WDData,y   get DD.BSZ (boot file size)
-         std   U.BSZ,u
-         ldb   U.StSctr,u floppy drive? (start sector = 1)
-         bne   GotInfo    yes, sides info OK, go return
-         ldb   #DD.OPT+(PD.SID-PD.OPT)-DD.DAT load number of bytes to dump
-         bsr   DumpRead   go dump LSN0 from DD.DAT to number of sides in option table
-         lda   WDData,y   get number of sides from DD.OPT section
-         sta   U.Sides,u
-GotInfo  rts   
-
-InitPIA  clr   CRA,y      enable PIA DDRA
-         ldd   #$033E     [A]=DDRA:  PA bits 7-2 = inputs, bits 1-0 = outputs
-         std   DDRA,y     [B]=CRA:  PIA CA2 out high, PA slct, CA1 low to high, no IRQs
-         clr   CRB,y      enable PIA DDRB
-         lda   #$FF       [A]=DDRB:  PB bits 7-0 all outputs
-         std   DDRB,y     [B]=CRB:  PIA CB2 out high, PB slct, CB1 low to high, no IRQs
-         leas  -BootMem,s open up some space for variables
-         leau  ,s         point [U] to start of variables
-         ldb   #BootMem   number of bytes to clear
-         leax  ,u         point [X] to start of variables
-ClrLoop  clr   ,x+        initialize a byte to 0
-         decb             done yet?
-         bne   ClrLoop    no, go clear another byte
-         lda   #SelfTest  WD 1002-05 internal diagnostic command
-         lbsr  CmdUpdat   go issue WD command, ensure everything is ready...
-         bcs   ReadErr    error, go report it...
-         lda   #Restore!($0F&^HDStep) default to Restore with HD step rate
-         ldb   <D.WDBtDr  get boot drive number
-         cmpb  #$03       hard drive?
-         blo   SaveRstr   yes, go save HD Restore command...
-         inc   U.StSctr,u set start sector to 1 for floppy disks
-         lda   #Restore!($0F&^FDStep) get Restore with FD step rate
-SaveRstr sta   U.Restor,u
-         leax  SDHTable,pc
-         lda   b,x        get base SDH register
-         sta   U.SDH,u    save it...
-* restore head to track 0
-         lbsr  SetupTF    go update WD task files (except command)
-         lda   U.Restor,u load WD restore command code
-         lbsr  CmdUpdat   go issue WD command
-         bcs   ReadErr    error, go report it...
-* read cylinder 0, head 0, first sector
-         lbsr  GetSctr    go set up, issue read command
-         bcs   ReadErr    error, go report it...
-         bsr   LSN0Info   go get disk info from LSN0
-         ldd   U.BSZ,u    get boot file size/cylinder offset number
-         bne   ChkInfo    must be boot file size, go check other LSN0 info...
-         ldd   U.BT+1,u   get offset cylinder number
-         beq   ReadErr    must not be boot disk, go report error...
-         cmpd  #MaxCyls   offset cylinder number OK?
-         bhs   ReadErr    no, go return error...
-         std   U.CrtCyl,u save offset cylinder
-* read offset cylinder, head 0, first sector
-         lbsr  GetSctr    go set up, issue read command
-         bcs   ReadErr    error, go exit...
-         lbsr  LSN0Info   go get disk info from offset LSN0
-         ldd   U.BSZ,u    get boot file size
-         beq   ReadErr    must not be boot disk, go report error...
-* check LSN0 info
-ChkInfo  ldd   U.SPT,u    get sectors per track
-         beq   ReadErr    0 sectors per track, go return error
-         cmpd  #MaxSctrs  sectors per track OK?
-         bhi   ReadErr    no, go return error
-         lda   U.Sides,u  get disk sides (heads)
-         beq   ReadErr    0 sides, go return error
-         cmpa  #MaxHeads  number of heads OK?
-         bhi   ReadErr    no, go return error
-         mul              calculate sectors per cylinder
-         std   U.SPC,u    save sectors per cylinder
-         ldd   U.BSZ,u    get boot file size
-         addd  #$00FF     round up to even sector...
-         sta   U.BSct,u   save number of sectors in boot file
-* calculate boot file start cylinder, head, & sector
-         ldd   U.BT+1,u   get boot file LSN LSBs
-         ldx   U.CrtCyl,u get current (offset) cylinder number
-CylLoop  subd  U.SPC,u    subtract sectors/cylinder
-         blo   ChkBtMSB   [D] underflow, go check boot file LSN MSB
-CylLoop0 leax  1,x        increment current cylinder number
-         bne   CylLoop    no overflow, go do another subtraction
-ReadErr  ldb   #E$Read
-         coma             set Carry for error
-         leas  BootMem,s  restore stack pointer
-         rts   
-ChkBtMSB tst   U.BT,u     boot file LSN MSB = 0?
-         beq   GotCyl     yes, go determine head number
-         dec   U.BT,u     decrement boot file LSN MSB
-         bra   CylLoop0   go on...
-GotCyl   addd  U.SPC,u    restore sector number
-         stx   U.CrtCyl,u save current cylinder number
-TrkLoop  subd  U.SPT,u    subtract sectors/track
-         blo   GotSide    [D] underflow, go save current sector number
-         inc   U.CrtSid,u increment current side number
-         bra   TrkLoop    go do another subtraction
-GotSide  addd  U.SPT,u    restore sector number
-         stb   U.CrtSct,u save it
-* request boot file memory
-         pshs  u          save data pointer
-         ldd   U.BSZ,u    get boot file size
-         os9   F$SRqMem
-         tfr   u,x        move start address into [X]
-         puls  u          recover data pointer
-         bcs   BtExit0    go return F$SRqMem error
-         stx   U.BtStrt,u save boot file start address
-         ldd   U.CrtCyl,u get cylinder number
-         bra   ChkCyl     go check cylinder & get first sector
-
-* load boot file into memory
-BootLoad inc   U.CrtSct,u move on to next sector
-         lda   U.SPT+1,u  get sectors per track LSB (MSB is always 0)
-         cmpa  U.CrtSct,u done track?
-         bhi   LoadSctr   no, go get sector
-         clr   U.CrtSct,u reset current sector number to 0
-         inc   U.CrtSid,u move on to next side
-         lda   U.CrtSid,u get side number
-         cmpa  U.Sides,u  done cylinder?
-         blo   LoadSctr   no, go get sector
-         clr   U.CrtSid,u reset side number to 0
-         ldd   U.CrtCyl,u get cylinder number
-         addd  #1         move on to next cylinder
-         std   U.CrtCyl,u save cylinder number
-ChkCyl   cmpd  #MaxCyls   cylinder number OK?
-         bhs   ReadErr    no, go return error
-LoadSctr bsr   GetSctr    go get current sector from WD 1002-05
-         bcs   ReadErr    error, go exit
-         clrb             transfer 256 bytes
-         stb   PB,y       set WD sector buffer address
-ReadLoop lda   WDData,y   get byte from WD 1002-05
-         sta   ,x+        save byte to buffer
-         decb             done yet?
-         bne   ReadLoop   no, go get another byte
-         dec   U.BSct,u   count down boot file sectors remaining
-         bne   BootLoad
-         clrb             clear carry
-         ldd   U.BSZ,u    get boot file size
-         ldx   U.BtStrt,u get boot file start address
-BtExit0  leas  BootMem,s  restore stack pointer
-         rts   
-
-GetSctr  bsr   SetupTF    go set up WD task files (except command)
-         lda   #ReadSctr  load WD read sector command code
-CmdUpdat ldb   #CmdReg    load WD command register address
-         bsr   TFUpdat    go issue command...
-BusyWait ldb   #StatReg
-         stb   PB,y       set WD status register address
-BusyW0   ldb   WDData,y   get WD 1002-05 status
-         bitb  #%00000010 valid data?  (WD 1002-05 powered & connected?)
-         bne   BWErr      no, go report error...
-         tstb             ensure [CC] sign flag is current
-         bmi   BusyW0     yes, go check again
-         ldb   WDData,y   get valid controller status
-         rorb             rotate error bit into carry
-         bcc   NoError
-         ldb   #ErrReg
-         stb   PB,y       set WD error register address
-         ldb   WDData,y   get error register contents
-         bne   BWErr
-NoError  clrb  
-         rts   
-BWErr    comb             error, set [CC] Carry...
-         rts   
-
-SetupTF  ldd   #$01*256+SctrCnt single sector commands only
-         bsr   TFUpdat
-         lda   U.CrtCyl,u get current cylinder number MSB
-         ldb   #CylHigh
-         bsr   TFUpdat
-         lda   U.CrtCyl+1,u get current cylinder number LSB
-         ldb   #CylLow
-         bsr   TFUpdat
-         lda   U.CrtSct,u get current sector number
-         adda  U.StSctr,u add offset...
-         ldb   #SctrReg
-         bsr   TFUpdat
-         clrb             default extended head disabled
-         lda   U.CrtSid,u get current side (head) number
-         cmpa  #$08       extended head?
-         blo   StdHead    no, go on...
-         incb             set enable code
-         anda  #$07       mask out all but standard head number
-StdHead  stb   PA,y       set extended head enable/disable
-         ora   U.SDH,u    mask in base SDH copy
-         ldb   #SDHReg
-TfUpdat  stb   PB,y       set WD register address
-         sta   WDData,y   write data to WD 1002-05
-         rts   
-
-* pad Boot module out to $01D0 exactly
-         fcb   $39,$39,$39,$39,$39,$39,$39,$39
-         fcb   $39,$39,$39,$39,$39,$39,$39,$39
-
-         emod  
-BEnd     equ   *
-         end   
-
--- a/level2/modules/makefile	Sat Apr 20 13:36:45 2002 +0000
+++ b/level2/modules/makefile	Sat Apr 20 13:37:42 2002 +0000
@@ -1,9 +1,9 @@
 include ../../Makefile.rules
 
 DEPENDS		= ./Makefile
-THIRDPARTY	= ../../3rdparty
+TPB		= ../../3rdparty/booters
 
-BOOTERS		= boot_1773 boot_rom boot_kenton boot_tc3 boot_rampak boot_wd1002 boot_ide
+BOOTERS		= boot_1773
 KERNELS		= os9p1 os9p2
 SYSMODS		= rel rominfo rom_vectors ioman init pakrom
 CLOCKS		= clock clock2_soft clock2_disto clock2_146818
@@ -32,10 +32,10 @@
 # kernel tracks and bootfile configurations.
 #
 KERNEL_1773	= rel boot_1773 os9p1
-KERNEL_RAMPAK	= rel boot_rampak os9p1
-KERNEL_KENTON	= rel boot_kenton os9p1
-KERNEL_ROM	= rel boot_rom os9p1
-KERNEL_IDE	= rel boot_ide os9p1
+KERNEL_RAMPAK	= rel $(TPB)/boot_rampak os9p1
+KERNEL_KENTON	= rel $(TPB)/boot_kenton os9p1
+KERNEL_ROM	= rel $(TPB)/boot_rom os9p1
+KERNEL_IDE	= rel $(TPB)/boot_ide os9p1
 # These kernels are intended to be ROMmed in a disk controller or program pak
 KERNEL_PAK_KENTON	= pakrom $(KERNEL_KENTON)