changeset 56:4fa2bdb0c457

level vrbf and clock
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 23 Jul 2018 10:52:33 +0900
parents 8d151f303bee
children 2088fd998865
files Makefile os9/Makefile os9/level1/Makefile os9/level1/clock.asm os9/level1/sysgo.asm os9/level1/v0.asm os9/level2/vrbf.asm vdisk.c
diffstat 8 files changed, 84 insertions(+), 18 deletions(-) [+]
line wrap: on
line diff
--- a/Makefile	Mon Jul 23 08:35:25 2018 +0900
+++ b/Makefile	Mon Jul 23 10:52:33 2018 +0900
@@ -34,7 +34,7 @@
 	$(CC)  $(CFLAGS) $(V09FLAGS) a09.o os9crc.o -o $@
 
 v09: v09.o engine.o io.o d09.o trace.o vdisk.o
-	$(CC) -o v09 $(CFLAGS) v09.o engine.o io.o d09.o trace.o
+	$(CC) -o v09 $(CFLAGS) v09.o engine.o io.o d09.o trace.o vdisk.o
 
 # with Coco MMU 
 v09c: v09.c engine.c io.c d09.o trace.o vdisk.o
@@ -56,7 +56,7 @@
 	$(CC) -c $(CFLAGS) $(V09FLAGS) $<
 
 io.o: io.c 
-	$(CC) -c $(CFLAGS) $(V09FLAGS) $<
+	$(CC) -c $(CFLAGS) -DUSE_VDISK $(V09FLAGS) $<
 
 vdisk.o: vdisk.c v09.h
 	$(CC) -c $(CFLAGS) $(V09FLAGS) $< 
--- a/os9/Makefile	Mon Jul 23 08:35:25 2018 +0900
+++ b/os9/Makefile	Mon Jul 23 10:52:33 2018 +0900
@@ -12,11 +12,11 @@
 clean :
 	rm -rf makerom *.rom os9mod *.dSYM
 
-os9d.rom : makerom level1/init 
-	./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
+os9v1.rom : makerom level1/init 
+	./makerom -o os9v1.rom  level1/shell level1/sysgo level1/ioman level1/term level1/pty level1/pdisk level1/d0 level1/d1 level1/vrbf level1/v0 level1/clock level1/scf level1/rbf level1/init level1/os9p2 level1/os9p1
    
-os9v.rom : makerom level2/init
-	./makerom -o os9v.rom -2  level2/Shell  level2/dir level2/d1 level2/ioman  level2/os9p3_perr level2/os9p4_regdump  level2/pipe level2/piper level2/pipeman  level2/v0 level2/vrbf level2/scf level2/rbf level2/os9p2 level2/sysgo level2/clock level2/pdisk level2/d0 level2/pty level2/term level2/init level2/boot level2/os9p1 
+os9v2.rom : makerom level2/init
+	./makerom -o os9v2.rom -2  level2/Shell  level2/dir level2/d1 level2/ioman  level2/os9p3_perr level2/os9p4_regdump  level2/pipe level2/piper level2/pipeman  level2/v0 level2/vrbf level2/scf level2/rbf level2/os9p2 level2/sysgo level2/clock level2/pdisk level2/d0 level2/pty level2/term level2/init level2/boot level2/os9p1 
 
 level1/init : nitros9-code
 	cd level1 ; make
--- a/os9/level1/Makefile	Mon Jul 23 08:35:25 2018 +0900
+++ b/os9/level1/Makefile	Mon Jul 23 10:52:33 2018 +0900
@@ -6,7 +6,7 @@
 
 A09 = ../../a09 -I $(OS9SRC)/defs/
 
-MOD =  pdisk init os9p1 os9p2 ioman pipe piper rbf scf term pty d0 d1 clock shell dir mdir sysgo shell
+MOD =  pdisk init os9p1 os9p2 ioman pipe piper rbf scf term pty d0 d1 vrbf v0 clock shell dir mdir sysgo shell
 
 all : ${MOD}
 
@@ -43,6 +43,12 @@
 clock :  clock.asm
 	$(A09) clock.asm -o clock $(LST)
 
+vrbf :  
+	$(A09) ../level2/vrbf.asm -o $@  $(LST)
+
+v0 :  
+	$(A09) v0.asm -o $@  $(LST)
+
 # os9 level1 moduels
 
 shell : $(SRCCMD)/shell_21.asm 
--- a/os9/level1/clock.asm	Mon Jul 23 08:35:25 2018 +0900
+++ b/os9/level1/clock.asm	Mon Jul 23 10:52:33 2018 +0900
@@ -48,8 +48,7 @@
          ldb   #$8f     start timer
          stb   ,x
 L00B4    
-         jsr   [>D.SvcIRQ]
-         rti
+         jmp   [>D.SvcIRQ]
 
 ClkEnt   equ   *
          ldd   #59*256+$01 last second and last tick
--- a/os9/level1/sysgo.asm	Mon Jul 23 08:35:25 2018 +0900
+++ b/os9/level1/sysgo.asm	Mon Jul 23 10:52:33 2018 +0900
@@ -69,7 +69,7 @@
 
        IFEQ  ROM
 DefDev   equ   *
-         fcc   "/D0"
+         fcc   "/V0"
 *       IFNE  DD
 *         fcc   "/DD"
 *       ELSE
@@ -77,13 +77,13 @@
 *       ENDC
          fcb   C$CR
 HDDev    equ   *
-         fcc   "/DD"
+         fcc   "/V0"
 *       IFNE  DD
 *         fcc   "/DD/"
 *       ELSE
 *         fcc   "/H0/"
 *       ENDC
-ExecDir  fcc   "/D0/CMDS"
+ExecDir  fcc   "/V0/CMDS"
          fcb   C$CR
        ENDC
 
@@ -110,6 +110,15 @@
 
 * Default time packet
 DefTime  
+         fcb 0
+         fcb 0
+         fcb 0
+         fcb 0
+         fcb 0
+         fcb 0
+         fcb 0
+         fcb 0
+         fcb 0
 * dtb
 
        IFEQ  atari+corsham
@@ -185,9 +194,9 @@
          lda   #$01                    standard output
          os9   I$Write                 write out banner
 
-* Set default time
-*         leax  >DefTime,pcr
-*         os9   F$STime                 set time to default
+* Set default time and start Clock module
+          leax  >DefTime,pcr
+          os9   F$STime                 set time to default
 
         IFEQ 1 
           leax  >MDIR,pcr
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/os9/level1/v0.asm	Mon Jul 23 10:52:33 2018 +0900
@@ -0,0 +1,50 @@
+********************************************************************
+* progname - program module
+*
+* $Id: d0.asm,v 1.1 2002/06/14 12:35:43 roug Exp $
+*
+* Ed.    Comments                                       Who YY/MM/DD
+* ------------------------------------------------------------------
+*  -     Original Dragon Data distribution version
+*
+* $Log: d0.asm,v $
+* Revision 1.1  2002/06/14 12:35:43  roug
+* Add work done on ideal devices
+*
+*
+
+         nam   V0
+         ttl   40-track floppy disk device descriptor
+
+         ifp1
+         use   defsfile
+         endc
+tylg     set   Devic+Objct   
+atrv     set   ReEnt+rev
+rev      set   $02
+         mod   eom,name,tylg,atrv,mgrnam,drvnam
+         fcb   $FF mode byte
+         fcb   $00  extended controller address
+         fdb   $e040  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   $00 step rate
+         fcb   $20 drive device type
+         fcb   $01 media density:0=single,1=double
+         fdb   $0100 number of cylinders (tracks)
+         fcb   $01 number of sides
+         fcb   $00 verify disk writes:0=on
+         fdb   $0012 # of sectors per track
+         fdb   $0012 # of sectors per track (track 0)
+         fcb   $01 sector interleave factor
+         fcb   $08 minimum size of sector allocation
+initsize equ   *
+name     equ   *
+         fcs   /V0/
+mgrnam   equ   *
+         fcs   /VRBF/
+drvnam   equ   *
+         fcs   /PDisk/
+         emod
+eom      equ   *
--- a/os9/level2/vrbf.asm	Mon Jul 23 08:35:25 2018 +0900
+++ b/os9/level2/vrbf.asm	Mon Jul 23 10:52:33 2018 +0900
@@ -109,7 +109,9 @@
 *         PD.DEV,y    device table
 *         PD.DRV,y    drive number
 
-setuppd  ldx   #$FFc0           vdisk port
+setuppd  ldx   PD.DEV,y         get device table
+         ldx   4,x              get device module
+         ldx   $f,x            get port address
          sty   7,x              path descriptor
          stu   5,x              caller stack
          lda   <PD.DRV,y
--- a/vdisk.c	Mon Jul 23 08:35:25 2018 +0900
+++ b/vdisk.c	Mon Jul 23 10:52:33 2018 +0900
@@ -17,7 +17,7 @@
 #include <time.h>
 #include <arpa/inet.h>
 
-static int vdiskdebug = 0;  //   1 trace, 2 filename
+static int vdiskdebug = 0;  //   bit 1 trace, bit 2 filename
 
 
 Byte pmmu[8];  // process dat mmu
@@ -818,7 +818,7 @@
     }
     if (vdiskdebug && *breg) printf("  vdisk call error %x\n",*breg);
     // return value
-    mem[0xffc0] = *breg;
+    mem[0x40+IOPAGE] = *breg;
     *smem(u+2) = *breg ;
     setword(smem(u+4),xreg);
 }