changeset 220:7fed7dcadaee

Moved smartwatch commands to 3rdparty/utils/smartwatch
author boisy
date Tue, 16 Jul 2002 00:58:22 +0000
parents f213b599d6e2
children 5a27279ccc08
files level2/cmds/makefile level2/cmds/swread.asm level2/cmds/swset.asm
diffstat 3 files changed, 5 insertions(+), 723 deletions(-) [+]
line wrap: on
line diff
--- a/level2/cmds/makefile	Tue Jul 16 00:54:07 2002 +0000
+++ b/level2/cmds/makefile	Tue Jul 16 00:58:22 2002 +0000
@@ -6,14 +6,14 @@
 		deiniz del deldir dir display dump echo exbin \
 		free ident iniz link list load login makdir mdir \
 		merge mfree montype procs pwd pxd rename save \
-		setime shell_21 sleep swread swset tee tmode tsmon unlink \
+		setime shell_21 sleep tee tmode tsmon unlink \
 		verify wcreate xmode
 SUBS            = gfx inkey
 ALLOBJS		= $(CMDS) $(SUBS)
 
 SHELLMODS	= shell_21 build copy date deiniz del dir display echo iniz \
 		link list load mdir merge mfree procs tmode unlink
-UTILPAK1        = attr deldir free ident rename setime tmode xmode
+UTILPAK1        = attr deldir ident rename setime xmode
 
 LEVEL1FILES	= binex.asm attr.asm build.asm date.asm deiniz.asm del.asm deldir.asm \
 		dump.asm echo.asm exbin.asm free.asm ident.asm iniz.asm inkey.asm link.asm \
@@ -24,8 +24,8 @@
 		unlink.asm wcreate.asm
 
 # Files not compilable by os9asm: Config attr cmp dcheck dir dsave
-all:	$(ALLOBJS) shell utilpak1 utilpak2 $(DEPENDS)
-	$(CHMOD) a+rx $(ALLOBJS) shell utilpak1 utilpak2
+all:	$(ALLOBJS) shell utilpak1 $(DEPENDS)
+	$(CHMOD) a+rx $(ALLOBJS) shell utilpak1
 
 shell:  $(SHELLMODS) $(DEPENDS)
 	$(MERGE) $(SHELLMODS)>$@
@@ -39,19 +39,13 @@
 	@ls -l $@
 	@$(ECHO)
 
-utilpak2:  $(UTILPAK2) $(DEPENDS)
-	$(MERGE) $(UTILPAK2)>$@
-	@$(ECHO) "*** Be sure the size of this file is less than 7681 bytes! ***"
-	@ls -l $@
-	@$(ECHO)
-
 $(LEVEL1FILES): ../../level1/CMDS/$@
 	-ln -s ../../level1/CMDS/$@
 
 $(LEVEL2FILES): ../../level2/CMDS/$@
 	-ln -s ../../level2/CMDS/$@
 clean:
-	$(RM) $(ALLOBJS) $(LEVEL1FILES) $(LEVEL2FILES) shell utilpak1 utilpak2
+	$(RM) $(ALLOBJS) $(LEVEL1FILES) $(LEVEL2FILES) shell utilpak1
 
 identify:
 	$(IDENT_SHORT) $(ALLOBJS)
--- a/level2/cmds/swread.asm	Tue Jul 16 00:54:07 2002 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,352 +0,0 @@
-********************************************************************
-* SWRead - Read SmartWatch clock
-*
-* $Id$
-*
-* Copyright May, 1990 by Robert Gault
-
-* SWREAD will read smartwatch compensating for 12hr mode if active
-* time will be sent to OS-9 in 24hr mode for compatability
-*
-* The routine does grab a large uninterruptible block of time from
-* the system, but no other way seems possible.
-*
-* syntax  swread [n&]      n=1-60 minutes
-* D.Daywk stored for possible use
-*
-* Ed.    Comments                                       Who YY/MM/DD
-* ------------------------------------------------------------------
-* 1      Created                                        RG  91/03/01
-* 1      Changed irq handling; MPI handling;            RG  91/10/29
-*        error handling
-* 1      Removed relocation routine. Removal could be   RG  92/12/26
-*        dangerous if OS-9 did not grab block from the
-*        low addresses first. Code must not be in a
-*        RAM/ROM block when ROMs activated.
-* 2      Relocated part of clock read routine to        RG  94/12/19
-*        shorten the time spent with irqs off.
-
-         nam   SWRead
-         ttl   Read SmartWatch clock
-
-         ifp1  
-         use   defsfile
-         endc  
-
-cartI    equ   $FF22      cartridge IRQ report
-multipac equ   $FF7F
-rom      equ   $FFDE
-ram      equ   $FFDF
-IEN      equ   %00100000
-FEN      equ   %00010000
-SCS      equ   %00000100
-ROM1     equ   %00000010
-ROM0     equ   %00000001
-*D.Cntury	set	$6A century byte
-
-type     set   prgrm+objct
-revs     set   reent+1
-edition  set   2
-
-         mod   pgrmend,name,type,revs,start,size
-
-name     fcs   /SWRead/
-         fcb   edition
-
-locblk0  rmb   2          pointer to block 0
-locblk3E rmb   2          pointer to block $3E ie. disk ROM
-dpsave   rmb   1
-sleep    rmb   1          sleep interval time in minutes
-byte1    rmb   1          temp storage of clock read data; if never changes - no clock
-clkflag  rmb   1          set when clock is found
-mpiimage rmb   1
-sleepflg rmb   1          indicates multiple reads requested
-timer    rmb   1          count down for sleep interval; per minute
-century  rmb   1          century flag
-rawdata  rmb   8          direct readout from clock chip
-
-stack    rmb   200
-size     equ   .
-
-message1 fcc   /no clock found/
-         fcb   $0D
-setime   fcc   /setime/   forced chain to setime routine
-         fcb   $0D
-
-errmes   fcb   $0a
-         fcc   /Swread syntax:/
-         fdb   $a0a
-         fcc   /swread [n&]/
-         fcb   $0a
-         fcc   /           The parameter string is optional; n = 1 to 60 min/
-         fcb   $0a
-         fcc   /           permitting the watch to be poled in background every/
-         fcb   $0a
-         fcc   /           n minutes. Use decimal time values./
-         fcb   $0d
-allert   fcb   $C5,$3A,$A3,$5C,$C5,$3A,$A3,$5C,0
-
-start    clr   <sleepflg
-         cmpd  #2
-         blo   noparams
-         ldd   ,x
-         cmpa  #'?
-         lbeq  syntax
-         cmpa  #'-
-         lbeq  syntax
-
-         cmpb  #'0        if second byte is CR then only one number
-         blo   onebyte
-         subd  #$3030     convert from ascii to bcd
-
-         cmpd  #$600      one hour skip is max
-         lbhi  syntax
-         cmpb  #9         must be a number from 0-9
-         lbhi  syntax
-
-         pshs  b          convert reg.D to hexidecimal
-         ldb   #10
-         mul   
-         addb  ,s+
-         bra   storeit
-
-onebyte  suba  #'0
-         cmpa  #9
-         lbhi  syntax
-
-storeit  stb   <timer
-         stb   <sleep     used to reset timer on count down
-         com   <sleepflg
-
-noparams equ   *
-         lda   multipac
-         anda  #3         retain IRQ settings
-         ora   #$30       start at slot 4; ROM setting
-         sta   <mpiimage
-
-doit     pshs  u
-         ldb   #1         single block
-         ldx   #$3E       disk rom; $07C000-$07DFFF
-         os9   f$mapblk   map into user space clock ROM
-         bcs   exit2
-         stu   locblk3E   save pointer
-         ldx   #0         system direct page
-         os9   f$mapblk   system direct page
-         bcs   exit2
-         leax  ,u         faster but = to TFR; get pointer for system DP
-         stu   locblk0    save pointer
-         tfr   dp,b       get our own DP
-         stb   dpsave
-
-         bsr   readclk
-
-         ldb   #1         unmap blocks from user space
-         ldu   locblk3E   get pointer
-         os9   f$clrblk
-         ldb   #1
-         ldu   locblk0    get pointer
-         os9   f$clrblk
-         puls  u
-
-         tst   <clkflag   was clock found?
-         beq   error2
-         tst   <sleepflg  are we in repeat mode?
-         beq   exit
-
-snooze   ldx   #3540      = one minute of ticks minus one second for overhead
-         os9   f$sleep
-         cmpx  #0
-         bne   exit       received signal so quit
-
-         dec   timer
-         bne   snooze
-
-         lda   sleep      reset timer
-         sta   timer
-         bra   doit       go and read the clock
-
-exit2    leas  2,s        puls u
-         coma             set cc
-         os9   F$exit
-error    ldb   #e$illarg
-         os9   F$exit
-
-error2   lda   #2         error path
-         leax  message1,pcr
-         ldy   #40
-         os9   I$WritLn
-* force a normal Setime as SmartWatch was not detected
-         lda   #$11       modul type
-         ldb   #2         size of data area
-         leax  setime,pcr
-         ldy   #0         parameter size
-         leas  stack,u
-         leau  size,u
-         os9   F$Chain
-exit     clrb  
-         os9   F$exit
-
-* this is the heart of the clock reading routine
-* regX regU point to system direct page
-readclk  pshs  cc
-         lda   d.hinit,x  get $FF90 image
-         ldb   multipac   get current setting
-         pshs  d          save them
-         anda  #^(IEN+FEN+ROM1+ROM0) no GIME IRQ/FIRQ; external access
-         orcc  #$50       stop interrupts
-         sta   $FF90
-         sta   rom        go to ROM mode
-         ldx   <locblk3E  point to clock ROM
-         ldb   <mpiimage  get new value for MPI
-         clr   <clkflag   start with clock not found
-         lda   locblk3E
-         tfr   a,dp       point to clock
-
-findclk  stb   multipac   set new slot
-         leay  allert,pcr point to clock wakeup code
-         lda   <4         clear clock at $C004
-         clrb  
-         bita  #1         1bit serial I/O port; if no clock, all bits should be 0 or 1
-         beq   low
-         comb  
-low      stb   >byte1     save as flag for found clock
-
-nxtbyte  ldb   #8         bits/byte
-         lda   ,y+
-         beq   gettime
-nxtbit   lsra             do a serial generation
-         bcs   high
-         cmpa  <0         talk to clock at $C000; cmp faster than tst
-         bra   high2
-high     cmpa  <1         talk to clock at $C001
-high2    decb  
-         bne   nxtbit
-         bra   nxtbyte
-
-gettime  lda   #8         8 bytes to read from clock
-         pshs  a
-         ldy   #rawdata
-* read serial bit stream from clock
-timebyte lsr   <4
-         rora  
-         lsr   <4
-         rora  
-         lsr   <4
-         rora  
-         lsr   <4
-         rora  
-         lsr   <4
-         rora  
-         lsr   <4
-         rora  
-         lsr   <4
-         rora  
-         lsr   <4
-         rora  
-         sta   ,y+        store in raw data	
-         cmpa  >byte1     if reg.A never changes then no clock
-         beq   maybe      always possible that a clock byte might look like ROM
-         inc   >clkflag   indicate a found clock
-maybe    dec   ,s
-         bne   timebyte
-         leas  1,s        yank counter
-         tst   >clkflag   did we find the clock?
-         bne   found
-         ldb   >mpiimage  try another MPI slot
-         bitb  #$30       did we get to slot 0?
-         beq   found
-         subb  #$10       next slot
-         stb   >mpiimage  save image so that we don't hunt the next time.
-         bra   findclk
-
-found    lda   >dpsave
-         tfr   a,dp       back to program DP
-         sta   ram        go back to RAM mode
-         puls  d
-         stb   multipac   restore to original setting
-         tst   cartI      clear CART flag incase autostart ROM pack was present in MPI
-         sta   $FF90      restore GIME mode
-         puls  cc         restore IRQs
-         tst   <clkflag
-         beq   noclk
-         ldx   #rawdata
-         leay  D.Slice,u
-         ldb   #8
-         pshs  b
-trans    lda   ,x+        translate serial data into OS-9 format
-         ldb   ,s
-         cmpb  #1         year
-         bne   notyr
-         cmpa  #$80       binary coded decimal number
-         bhi   nintn
-*	ldb	#20
-*	stb	D.Cntury,u
-         sta   <century
-         bra   notyr
-nintn          
-*	ldb	#19
-*	stb	D.Cntury,u
-         clr   <century
-*notyr	ldb	,s
-notyr    cmpb  #4         day of the week
-         bne   notdywk
-         anda  #7
-         sta   D.Daywk,u
-         bra   nxtdata
-notdywk  cmpb  #5         special 12/24, AM/PM indicator
-         bne   cnvrt      convert any number
-         bita  #%10000000 12/24 hour bit
-         beq   cnvrt      24 hour time
-         bita  #%00100000 AM/PM bit since 12 hour time, check AM/PM
-         pshs  cc
-         anda  #%00011111 keep only time
-         puls  cc
-         bne   PMhr
-         cmpa  #$12       bcd value
-         bne   cnvrt
-         clra             12 AM = 0 hrs 24hr time
-         bra   cnvrt
-Pmhr     cmpa  #$12       bcd value
-         beq   cnvrt      12PM = 1200 24 hr time
-         adda  #$12       all other times (1-11) add 12; ie. 1300-2300
-cnvrt    tfr   a,b        return result in reg.B
-         anda  #%11110000 get MSN
-         lsra  
-         lsra  
-         sta   ,-s        save #4a
-         lsra  
-         sta   ,-s        save #2a
-         subb  ,s+        16a+b-4a
-         subb  ,s+        12a+b-2a=10a+b
-         stb   ,-y        decrease pointer and then store
-nxtdata  dec   ,s
-         bne   trans
-         tst   <century
-         beq   not20
-         lda   #100
-         adda  1,y
-         sta   1,y
-not20    puls  b,pc
-
-noclk    clr   D.Daywk,u  clear garbage as new date routine reads D.Daywk
-         leay  D.Time,u
-         ldd   #7
-noclklp  sta   ,y+        clear clock packet; faster than a clr ,y+
-         decb  
-         bne   noclklp
-*	clr	D.Cntury,u
-         clr   <century
-         clr   <clkflag
-         rts   
-
-syntax   lda   #2
-         leax  errmes,pcr
-         ldy   #300
-         os9   I$Writln
-         clrb  
-         os9   F$Exit
-
-         emod  
-pgrmend  equ   *
-         end
-
--- a/level2/cmds/swset.asm	Tue Jul 16 00:54:07 2002 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,360 +0,0 @@
-********************************************************************
-* SWSet - Set time in SmartWatch
-*
-* $Id$
-*
-* Copyright May, 1990 by Robert Gault
-*
-* SWSET will set the smartwatch in either 12hr or 24hr mode
-* time will be sent to OS-9 in 24hr mode for compatability
-* see new DATE which presents time in 12hr. mode with day of week
-* and SWREAD which sends data from clock to OS-9
-*
-* Ed.    Comments                                       Who YY/MM/DD
-* ------------------------------------------------------------------
-* 1      Revised: clock disable; no relocation          RG  95/07/04
-
-         nam   SWSet
-         ttl   Set time in SmartWatch
-
-         ifp1  
-         use   defsfile
-         endc  
-
-type     set   prgrm+objct
-revs     set   reent+1
-edition  set   1
-
-         mod   pgrmend,name,type,revs,start,size
-
-          
-locblk0  rmb   2          pointer to block 0
-locblk3E rmb   2          pointer to block $3E ie. disk ROM
-temp1    rmb   1
-temp2    rmb   1
-clkbyte  rmb   1
-clkflag  rmb   1
-mpiimage rmb   1
-alrtimag rmb   8          storage for the allert code with following:
-csec     rmb   1
-sec      rmb   1
-min      rmb   1
-hour     rmb   1
-daywk    rmb   1
-daymn    rmb   1
-month    rmb   1
-year     rmb   1
-stopbyte rmb   1
-rawdata  rmb   18
-stack    rmb   200
-size     equ   .
-
-rom      equ   $FFDE
-ram      equ   $FFDF
-multipac equ   $FF7F
-cartI    equ   $FF22
-skp1     equ   $21
-skp2     equ   $8C        code for cmpx #nn
-
-name     fcs   /SWSet/
-         fcb   edition
-
-clknfnd  fcb   C$LF
-         fcc   /no clock found/
-         fcb   C$LF
-         fcc   /I'm running Setime/
-         fcb   C$CR
-setime   fcc   /setime/
-         fcb   C$CR
-swread   fcc   /swread/
-         fcb   C$CR
-
-query    lda   #1
-         os9   I$Writln
-         clra             path 0
-         leax  temp1,u    storage
-         ldy   #1
-         os9   I$Read
-         lda   temp1      get key
-         rts   
-
-start    leax  alrtimag,u point to image of allert code
-         ldb   #8
-         leay  allert,pcr
-s1loop   lda   ,y+        transfer to data
-         sta   ,x+
-         decb  
-         bne   s1loop
-         ldb   #8
-s2loop   clr   ,x+        clear out the time date data
-         decb  
-         bne   s2loop
-         dec   ,x         mark stop byte
-         lda   multipac
-         anda  #3         keep IRQ
-         ora   #$30       start with slot 4
-         sta   mpiimage   save setting
-         lda   #1
-         leax  crmesage,pcr copyright message
-         ldy   #mesage1-crmesage
-         os9   I$WritLn
-getfunc  leax  mesage1,pcr select	time or disable clock
-         ldy   #mesage2-mesage1
-         bsr   query
-         anda  #$DF
-         cmpa  #'D        disable
-         lbeq  killit
-         cmpa  #'T        timer
-         lbeq  doit
-         cmpa  #'C        clock
-         bne   getfunc
-getday   leax  mesage2,pcr
-         ldy   #mesage3-mesage2 get day of week
-         bsr   query
-         suba  #'0
-         blo   getday
-         cmpa  #7
-         bhi   getday
-         sta   daywk      convert from ascii to number
-tmode    leax  mesage3,pcr 12	or 24 hour time
-         ldy   #mesage4-mesage3
-         bsr   query
-         cmpa  #'1        error trap
-         blo   tmode
-         cmpa  #'2
-         bhi   tmode
-         beq   date
-         lda   #%10000000 12 hr bit
-         sta   hour
-getAMPM  leax  mesage4,pcr
-         ldy   #mesage5-mesage4
-         lbsr  query
-         clrb  
-         anda  #$df
-         cmpa  #'A
-         beq   AMPMcode
-         cmpa  #'P
-         bne   getAMPM
-         ldb   #%100000   PM bit
-AMPMcode orb   hour
-         stb   hour
-date     leax  mesage5,pcr get date and time
-         lda   #1
-         ldy   #endmes-mesage5
-         os9   I$Writln
-         clra  
-         leax  rawdata,u
-         ldy   #18
-         os9   I$ReadLn
-         leax  rawdata,u
-         clr   temp1
-         bsr   ascbcd
-         stb   year
-         bsr   ascbcd
-         stb   month
-         bsr   ascbcd
-         stb   daymn
-         bsr   ascbcd
-         tst   hour
-         beq   sthour
-         cmpb  #$12       max in 12 hour mode
-         bhi   date
-         orb   hour
-sthour   stb   hour
-         bsr   ascbcd
-         stb   min
-         bsr   ascbcd
-         stb   sec
-         bra   doit
-
-ascbcd   clr   temp2
-         bsr   data1
-         bne   noinfo
-         com   temp2
-         tfr   a,b
-         bsr   data1
-         bne   endasc
-         lslb  
-         lslb  
-         lslb  
-         lslb  
-         pshs  a
-         addb  ,s+
-         inca  
-endasc   rts   
-noinfo   leas  2,s
-         bra   doit
-
-data1    lda   ,x+
-         beq   nomore
-         cmpa  #C$CR
-         beq   nomore
-         cmpa  #C$SPAC
-         beq   data2
-         cmpa  #'/
-         beq   data2
-         cmpa  #':
-         beq   data2
-         suba  #'0
-         bcs   error
-         cmpa  #9
-         bhi   error
-         orcc  #4
-         rts   
-data2    tst   temp2
-         beq   data1
-         rts   
-nomore   com   temp1
-         rts   
-error    leas  4,s
-         lbra  date
-
-doit     pshs  u
-         ldb   #1
-         ldx   #$3E       disk rom
-         os9   f$mapblk
-         bcs   exit2
-         stu   locblk3E
-         ldx   #0
-         os9   f$mapblk
-         bcs   exit2
-         leax  ,u
-         stx   locblk0
-         ldu   ,s
-         bsr   reloc
-         ldb   #1
-         ldu   locblk3E
-         os9   f$clrblk
-         ldb   #1
-         ldu   locblk0
-         os9   f$clrblk
-         puls  u
-         tst   clkflag
-         bne   exit
-         lda   #2
-         leax  clknfnd,pcr
-         ldy   #40
-         os9   I$Writln
-         lda   #$11
-         ldb   #2
-         leax  setime,pcr
-         ldy   #0
-         leas  stack,u
-         leau  size,u
-         os9   F$Chain
-exit     lda   #$11
-         ldb   #2
-         leax  swread,pcr
-         ldy   #0
-         leas  stack,u
-         leau  size,u
-         os9   F$Chain
-exit2    leas  2,s
-         coma  
-         os9   F$Exit
-
-killit   lda   #C$SPAC
-         sta   daywk
-         bra   doit
-
-reloc    pshs  cc
-         lda   d.hinit,x  get $FF90 image
-         ldb   multipac
-         pshs  d
-         anda  #$CC       external disk rom access
-         orcc  #$50
-         sta   $FF90      set for external ROM
-         sta   rom
-         ldx   locblk3E
-         ldb   mpiimage   get new value
-         clr   clkflag
-
-findclk  stb   multipac   set new slot
-         leay  allert,pcr
-         lda   4,x        clear clock
-         clrb  
-         bita  #1
-         beq   low
-         comb  
-low      stb   clkbyte
-         bsr   nxtbyte
-         bsr   gettime
-         tst   clkflag
-         bne   found
-         ldb   mpiimage
-         bitb  #$30       test for last try
-         beq   found
-         subb  #$10       next slot
-         stb   mpiimage
-         lbra  findclk
-
-nxtbyte  ldb   #8         bits/byte
-         lda   ,y+
-         cmpa  #-1
-         bne   nxtbit
-         rts   
-nxtbit   lsra  
-         bcs   high
-         cmpa  ,x         talk to clock; faster than tst
-         fcb   skp2
-high     cmpa  1,x
-         decb  
-         bne   nxtbit
-         bra   nxtbyte
-
-gettime  lda   #8         bytes to read
-         pshs  a
-timebyte ldb   #8
-timebit  lsr   4,x        read clock
-         rora  
-         decb  
-         bne   timebit
-         cmpa  clkbyte
-         beq   maybe
-         inc   clkflag
-maybe    dec   ,s
-         bne   timebyte
-         leas  1,s
-         rts   
-
-found    tst   clkflag
-         beq   noclk1
-         leay  alrtimag,u
-         lda   4,x
-         bsr   nxtbyte
-noclk1   sta   ram
-         puls  d
-         stb   multipac
-         tst   cartI
-         sta   $ff90
-         puls  cc,pc
-
-allert   fcb   $C5,$3A,$A3,$5C,$C5,$3A,$A3,$5C,$ff
-crmesage fcb   C$LF
-         fcc   /Set Smartwatch/
-         fcb   C$LF
-         fcc   /(c) May, 1990 by Robert Gault/
-         fcb   C$LF
-         fcb   C$CR
-mesage1  fcc   /Select clock, timer, or disable/
-         fcb   C$LF
-         fcc   /<C>lock; <T>imer; <D>isable ->/
-mesage2  fcb   C$LF
-         fcc   /Enter the day 0-7; Mon=1 Sun=7/
-         fcb   C$LF
-         fcc   /day = ->?	/
-mesage3  fcb   C$LF
-         fcc   /Select 12 or 24 hour clock/
-         fcb   C$LF
-         fcc   /<1> = 12; <2> = 24  ->/
-mesage4  fcb   C$LF
-         fcc   /Select <A>M or <P>M ->/
-mesage5  fcb   C$LF
-         fcc   /Enter as much of the date & time as desired/
-         fcb   C$LF
-         fcc   !yy/mm/dd hh:mm:ss!
-         fcb   C$LF
-         fcc   /->/
-endmes   equ   *
-         emod  
-pgrmend  equ   *