changeset 37:7baffb867d70

nitros9 level 1 worked
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 16 Jul 2018 11:22:28 +0900
parents cc8c2c2464fe
children 52f7ad4c2ebb
files os9/Makefile os9/level1/Makefile os9/level1/boot.asm os9/level1/sysgo.asm os9/level2/Makefile os9/level2/boot.asm os9/level2/sysgo.asm os9/level2/vector.asm
diffstat 8 files changed, 373 insertions(+), 90 deletions(-) [+]
line wrap: on
line diff
--- a/os9/Makefile	Sun Jul 15 20:38:49 2018 +0900
+++ b/os9/Makefile	Mon Jul 16 11:22:28 2018 +0900
@@ -13,7 +13,7 @@
 	rm -rf makerom *.rom os9mod *.dSYM
 
 os9d.rom : makerom level1/init
-	./makerom -o os9d.rom  level1/shell  level1/mdir level1/dir level1/sysgo level1/ioman level1/term level1/pty level1/pdisk level1/d0 level1/d1 level1/clock level1/scf level1/rbf level1/init level1/boot level1/os9p2 level1/os9p1
+	./makerom -o os9d.rom  level1/shell level1/sysgo level1/ioman level1/term level1/pty level1/pdisk level1/d0 level1/d1 level1/clock level1/scf level1/rbf level1/init level1/os9p2 level1/os9p1
    
 os9lv2.rom : makerom level2/init
 	./makerom -o os9lv2.rom -2  level2/Shell  level2/dir level2/d1 level2/ioman  level2/os9p3_perr level2/os9p4_regdump  level2/pipe level2/piper level2/pipeman  level2/scf level2/rbf level2/os9p2 level2/sysgo level2/pdisk level2/d0 level2/pty level2/term level2/init level2/boot level2/os9p1 
@@ -24,3 +24,7 @@
 
 level2/init :
 	cd level2 ; make
+
+# os9m.rom : makerom level1/term
+# 	./makerom -o os9m.rom  modules/Shell level1/sysgo modules/IOMan level1/term level1/pty level1/pdisk level1/d0 level1/d1  level1/SCF modules/rbf.b level1/init  modules/OS9p2 modules/OS9
+
--- a/os9/level1/Makefile	Sun Jul 15 20:38:49 2018 +0900
+++ b/os9/level1/Makefile	Mon Jul 16 11:22:28 2018 +0900
@@ -2,10 +2,11 @@
 OS9SRC=../../../../nitros9-code
 SRCDIR=$(OS9SRC)/level1/modules
 SRCCMD=$(OS9SRC)/level1/cmds
+SRCDIR2=$(OS9SRC)/level2/modules
 
 A09 = ../../a09 -I $(OS9SRC)/defs/
 
-MOD =  pdisk init os9p1 os9p2 ioman pipe piper rbf scf term pty d0 d1 clock shell dir mdir sysgo boot shell
+MOD =  pdisk init os9p1 os9p2 ioman pipe piper rbf scf term pty d0 d1 clock shell dir mdir sysgo shell
 
 all : ${MOD}
 
@@ -20,11 +21,8 @@
 pdisk : 
 	$(A09) pdisk.asm -o pdisk $(LST) $(LST)
 
-boot : boot.asm
-	$(A09) boot.asm -o boot $(LST)
-
-#sysgo : sysgo.asm
-#	$(A09) sysgo.asm -o sysgo $(LST)
+#boot : boot.asm
+#	$(A09) boot.asm -o boot $(LST)
 
 init : init.asm
 	$(A09) ${SRCDIR}/init.asm -o $@ $(LST)
--- a/os9/level1/boot.asm	Sun Jul 15 20:38:49 2018 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-********************************************************************
-* Boot - V09 Boot module
-*
-* $Id: boot_1773.asm,v 1.1.1.1 2001/02/21 23:30:54 boisy Exp $
-*
-* Ed.    Comments                                       Who YY/MM/DD
-* ------------------------------------------------------------------
-
-         nam   Boot
-         ttl   v09 Boot module
-
-         ifp1
-         use   defsfile
-         use   coco.d
-         endc
-
-*
-*  map extended rom on page 0x40-
-*  first two bytes are extra rom module size 
-
-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    
-         ldx    #Bt.Start+Bt.Size-1
-         ldy    #$ff00
-         pshs   x,y,u
-loop     ldb    #$87
-         cmpb   ,x
-         bne    notfound
-         os9    F$VModul
-         bcs    notfound
-         ldx    ,s
-         ldu    ,u
-         ldd    2,u    size of mulde
-         leax   d,x
-         bra    loop
-notfound
-         leax   1,x
-         stx    ,s
-         cmpx   2,s
-         blo    loop
-last     clra
-         clrb
-         puls   x,y,u,pc
-
-         emod
-eom      equ   *
-         end
--- a/os9/level1/sysgo.asm	Sun Jul 15 20:38:49 2018 +0900
+++ b/os9/level1/sysgo.asm	Mon Jul 16 11:22:28 2018 +0900
@@ -108,9 +108,6 @@
 CRtn     fcb   C$CR
 ShellPL  equ   *-ShellPrm
 
-mdirprm  fcc   "-e"
-         fcb   C$CR
-
 * Default time packet
 DefTime  
 * dtb
@@ -182,7 +179,7 @@
 
 * Show rest of banner
 SignOn
-         puls  u
+         ldu   ,s
          leax  >Banner,pcr
          ldy   #BannLen
          lda   #$01                    standard output
@@ -192,7 +189,25 @@
 *         leax  >DefTime,pcr
 *         os9   F$STime                 set time to default
 
-         IFEQ  ROM
+        IFEQ 1 
+          leax  >MDIR,pcr
+          leau  >mdirprm,pcr
+          ldd   #$0100
+          ldy   #$0003
+          os9   F$Fork
+          bcs   mdirend                   AutoEx failed..
+          os9   F$Wait
+          ldu   ,s
+          bra   mdirend
+MDIR      fcc  "mdir"
+          fcb   $0d
+mdirprm   fcc   "-e"
+          fcb   C$CR
+mdirend
+         ldu   ,s
+        ENDC
+
+*         IFEQ  ROM
 * Change EXEC and DATA dirs
          leax  >ExecDir,pcr
          lda   #EXEC.
@@ -202,13 +217,12 @@
          lda   #READ.
          os9   I$ChgDir                change data dir.
          bcs   L0125
-         leax  >HDDev,pcr
-         lda   #EXEC.
-         os9   I$ChgDir                change exec. dir to HD
-       ENDC
+*         leax  >HDDev,pcr
+*         lda   #EXEC.
+*         os9   I$ChgDir                change exec. dir to HD
+*       ENDC
 
 L0125    equ   *
-         pshs  u,y
        IFEQ  atari+corsham
        IFEQ  Level-1
 * Setup BASIC code (CoCo port only)
@@ -276,20 +290,8 @@
 *         bcs   L0186                   AutoEx failed..
 *         os9   F$Wait
 
-        IFEQ Level-1
-          leax  >MDIR,pcr
-          leau  >mdirprm,pcr
-          ldd   #$0100
-          ldy   #$0003
-          os9   F$Fork
-          bcs   L0186                   AutoEx failed..
-          os9   F$Wait
-          bra   L0186
-MDIR      fcs  "mdir"
-          fcb   $0d
-        ENDC
 L0186    equ   *
-         puls  u,y
+         ldu    ,s
 FrkShell leax  >ShellPrm,pcr
          leay  ,u
          ldb   #ShellPL
--- a/os9/level2/Makefile	Sun Jul 15 20:38:49 2018 +0900
+++ b/os9/level2/Makefile	Mon Jul 16 11:22:28 2018 +0900
@@ -17,8 +17,8 @@
 boot : boot.asm
 	$(A09) boot.asm -o boot $(LST)
 
-sysgo : 
-	$(A09) ../level1/sysgo.asm -o sysgo $(LST)
+sysgo : sysgo.asm
+	$(A09) sysgo.asm -o sysgo $(LST)
 
 init : init.asm
 	$(A09) ${OS9SRC}/level1/modules/init.asm -o $@ $(LST)
--- a/os9/level2/boot.asm	Sun Jul 15 20:38:49 2018 +0900
+++ b/os9/level2/boot.asm	Mon Jul 16 11:22:28 2018 +0900
@@ -30,6 +30,9 @@
          fcb   edition
 
 start    
+         lbra    entry
+         lbra    btdebg
+entry
          ldy    #$40    extended rom page no. 
          clra
          clrb
@@ -81,6 +84,11 @@
 last     clr    $ffa0
          puls   d,x,y,u,pc
 
+      ** put lbsr btdebug on <$5e
+btdebug  anda   #$7f
+         sta    $ff81
+         rts
+
          emod
 eom      equ   *
          end
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/os9/level2/sysgo.asm	Mon Jul 16 11:22:28 2018 +0900
@@ -0,0 +1,324 @@
+********************************************************************
+* SysGo - Kickstart program module
+*
+* $Id$
+*
+* Edt/Rev  YYYY/MM/DD  Modified by
+* Comment
+* ------------------------------------------------------------------
+*   5      1998/10/12  Boisy G. Pitre
+* Taken from OS-9 L2 Tandy distribution and modified banner for V3.
+*
+*   5r2    2003/01/08  Boisy G. Pitre
+* Fixed fork behavior so that if 'shell startup' fails, system doesn't
+* jmp to Crash, but tries AutoEx instead.  Also changed /DD back to /H0
+* for certain boot floppy cases.
+*
+*          2003/09/04  Boisy G. Pitre
+* Back-ported to OS-9 Level One.
+*
+*   5r3    2003/12/14  Boisy G. Pitre
+* Added SHIFT key check to prevent startup/autoex from starting if
+* held down.  Gene Heskett, this Bud's for you.
+
+         nam   SysGo
+         ttl   Kickstart program module
+
+       IFP1
+         use   defsfile
+       ENDC
+
+tylg     set   Prgrm+Objct
+atrv     set   ReEnt+rev
+rev      set   $03
+edition  set   $05
+
+         mod   eom,name,tylg,atrv,start,size
+
+
+         org   0
+InitAddr rmb   2
+         rmb   250
+size     equ   .
+
+name     fcs   /SysGo/
+         fcb  edition
+
+* Default process priority
+DefPrior set   128
+
+Banner   equ   *
+         fcc   /(C) 2014 The NitrOS-9 Project/
+CrRtn    fcb   C$CR,C$LF
+
+       IFEQ  ROM
+       IFNE  NOS9DBG
+         fcc   "**   DEVELOPMENT BUILD   **"
+         fcb   C$CR,C$LF
+         fcc   "** NOT FOR DISTRIBUTION! **"
+         fcb   C$CR,C$LF
+       ENDC
+*         dts
+         fcb   C$CR,C$LF
+         fcc   !http://www.nitros9.org!
+         fcb   C$CR,C$LF
+       ENDC
+
+         fcb   C$LF
+BannLen  equ   *-Banner
+
+       IFEQ  ROM
+DefDev   equ   *
+         fcc   "/D0"
+*       IFNE  DD
+*         fcc   "/DD"
+*       ELSE
+*         fcc   "/H0"
+*       ENDC
+         fcb   C$CR
+HDDev    equ   *
+         fcc   "/DD"
+*       IFNE  DD
+*         fcc   "/DD/"
+*       ELSE
+*         fcc   "/H0/"
+*       ENDC
+ExecDir  fcc   "/D0/CMDS"
+         fcb   C$CR
+       ENDC
+
+Shell    fcc   "Shell"
+         fcb   C$CR
+AutoEx   fcc   "AutoEx"
+         fcb   C$CR
+AutoExPr fcc   ""
+         fcb   C$CR
+AutoExPrL equ  *-AutoExPr
+
+       IFEQ  ROM
+Startup  fcc   "startup -p"
+         fcb   C$CR
+StartupL equ  *-Startup
+       ENDC
+
+ShellPrm equ   *
+       IFGT  Level-1
+         fcc   "i=/1"
+       ENDC
+CRtn     fcb   C$CR
+ShellPL  equ   *-ShellPrm
+
+mdirprm  fcc   "-e"
+         fcb   C$CR
+
+* Default time packet
+DefTime  
+* dtb
+
+       IFEQ  atari+corsham
+       IFEQ  Level-1
+* BASIC reset code (CoCo port only)
+* BasicRst fcb   $55
+*          neg   <$0074
+*          nop
+*          clr   >PIA0Base+3
+*          nop
+*          nop
+*          sta   >$FFDF           turn off ROM mode
+*          jmp   >Bt.Start+2      jump to boot
+* BasicRL  equ   *-BasicRst
+       ENDC
+       ENDC
+
+Init     fcs   /Init/
+
+* Entry: X = pointer to start of nul terminated string
+* Exit:  D = length of string
+strlen   pshs  x
+         ldd   #-1
+go@      addd  #$0001
+         tst   ,x+
+         bne   go@
+         puls  x,pc
+
+* Display carriage-return/line-feed.
+WriteCR  pshs  y
+         leax  CrRtn,pcr
+         ldy   #$0001
+         os9   I$WritLn
+         puls  y,pc
+
+**********************************************************
+* SysGo Entry Point
+**********************************************************
+start    leax  >IcptRtn,pcr
+         os9   F$Icpt
+* Set priority of this process
+         os9   F$ID
+         ldb   #DefPrior
+         os9   F$SPrior
+
+* Write OS name and Machine name strings
+         leax  Init,pcr
+         clra
+         pshs  u
+         os9   F$Link
+         bcs   SignOn
+         stx   <InitAddr
+         ldd   OSName,u                point to OS name in INIT module
+         leax  d,u                     point to install name in INIT module
+         bsr   strlen
+         tfr   d,y
+         lda   #$01
+         os9   I$Write
+         bsr   WriteCR
+         ldd   InstallName,u
+         leax  d,u                     point to install name in INIT module
+         bsr   strlen
+         tfr   d,y
+         lda   #$01
+         os9   I$Write
+         bsr   WriteCR
+
+* Show rest of banner
+SignOn
+         puls  u
+         leax  >Banner,pcr
+         ldy   #BannLen
+         lda   #$01                    standard output
+         os9   I$Write                 write out banner
+
+* Set default time
+*         leax  >DefTime,pcr
+*         os9   F$STime                 set time to default
+
+         IFEQ  ROM
+* Change EXEC and DATA dirs
+         leax  >ExecDir,pcr
+         lda   #EXEC.
+         os9   I$ChgDir                change exec. dir
+         leax  >DefDev,pcr
+* Made READ. so that no write occurs at boot (Boisy on Feb 5, 2012)
+         lda   #READ.
+         os9   I$ChgDir                change data dir.
+         bcs   L0125
+         leax  >HDDev,pcr
+         lda   #EXEC.
+         os9   I$ChgDir                change exec. dir to HD
+       ENDC
+
+L0125    equ   *
+         pshs  u,y
+       IFEQ  atari+corsham
+       IFEQ  Level-1
+* Setup BASIC code (CoCo port only)
+*         leax  >BasicRst,pcr
+*         ldu   #D.CBStrt
+*         ldb   #BasicRL
+*CopyLoop lda   ,x+
+*         sta   ,u+
+*         decb
+*         bne   CopyLoop
+       ELSE
+         os9   F$ID                    get process ID
+         lbcs  L01A9                   fail
+         leax  ,u
+         os9   F$GPrDsc                get process descriptor copy
+         lbcs  L01A9                   fail
+         leay  ,u
+         ldx   #$0000
+         ldb   #$01
+         os9   F$MapBlk
+         bcs   L01A9
+
+*         lda   #$55                    set flag for Color BASIC
+*         sta   <D.CBStrt,u
+* Copy our default I/O ptrs to the system process
+         ldd   <D.SysPrc,u
+         leau  d,u
+         leau  <P$DIO,u
+         leay  <P$DIO,y
+         ldb   #DefIOSiz-1
+L0151    lda   b,y
+         sta   b,u
+         decb
+         bpl   L0151
+       ENDC
+       ENDC
+*
+*       IFEQ  ROM
+* Fork shell startup here
+*       IFEQ  atari+corsham
+* Added 12/14/03: If SHIFT is held down, startup is not run (CoCo only)
+*         lda   #$01                    standard output
+*         ldb   #SS.KySns
+*         os9   I$GetStt
+*         bcs   DoStartup
+*         bita  #SHIFTBIT               SHIFT key down?
+*         bne   L0186                   Yes, don't to startup or autoex
+*        ENDC
+
+*DoStartup leax  >Shell,pcr
+*         leau  >Startup,pcr
+*         ldd   #256
+*         ldy   #StartupL
+*         os9   F$Fork
+*         bcs   DoAuto                  Startup failed..
+*         os9   F$Wait
+*       ENDC
+
+* Fork AutoEx here
+*DoAuto   leax  >AutoEx,pcr
+*         leau  >CRtn,pcr
+*         ldd   #$0100
+*         ldy   #$0001
+*         os9   F$Fork
+*         bcs   L0186                   AutoEx failed..
+*         os9   F$Wait
+
+        IFEQ Level-1
+          leax  >MDIR,pcr
+          leau  >mdirprm,pcr
+          ldd   #$0100
+          ldy   #$0003
+          os9   F$Fork
+          bcs   L0186                   AutoEx failed..
+          os9   F$Wait
+          bra   L0186
+MDIR      fcs  "mdir"
+          fcb   $0d
+        ENDC
+L0186    equ   *
+         puls  u,y
+FrkShell leax  >ShellPrm,pcr
+         leay  ,u
+         ldb   #ShellPL
+L0190    lda   ,x+
+         sta   ,y+
+         decb
+         bne   L0190
+* Fork final shell here
+         leax  >Shell,pcr
+         lda   #$01                    D = 256 (B already 0 from above)
+         ldy   #ShellPL
+       IFGT  Level-1
+         os9   F$Chain                 Level 2/3. Should not return..
+         ldb   #$06                    it did! Fatal. Load error code
+         bra   Crash
+
+L01A9    ldb   #$04                    error code
+Crash    clr   >DPort+$08              turn off disk motor
+         jmp   <D.Crash                fatal error
+       ELSE
+         os9   F$Fork                  Level 1.
+         bcs   DeadEnd                 Fatal.
+         os9   F$Wait
+         bcc   FrkShell                OK, go start shell.
+DeadEnd  bra   DeadEnd
+       ENDC
+
+IcptRtn  rti
+
+         emod
+eom      equ   *
+         end
--- a/os9/level2/vector.asm	Sun Jul 15 20:38:49 2018 +0900
+++ b/os9/level2/vector.asm	Mon Jul 16 11:22:28 2018 +0900
@@ -8,10 +8,15 @@
         sta      $10,x     set 0 page
         lda      #$3f
         sta      $17,x     set IO/os9p1 page
+    ifndef bootdbg
+        lda      #$39
+        sta      <$5E      
+    else
         ldd      #$b7ff    Bt.Bug hook
         std      <$5E      sta $ff81
         ldd      #$8139    rts
         std      <$5E+2      
+    endc
         jmp      [<vector,pcr]
 
         org      $fff0