Mercurial > hg > Members > kono > nitros9-code
changeset 1764:c51d21c94682
Fixed problem in swset where query needed lbra.
Converted all files to Unix EOL
author | boisy |
---|---|
date | Fri, 01 Apr 2005 17:01:46 +0000 |
parents | fc0c02375475 |
children | 1512ce78364d |
files | 3rdparty/utils/smartwatch/swset.asm |
diffstat | 1 files changed, 405 insertions(+), 405 deletions(-) [+] |
line wrap: on
line diff
--- a/3rdparty/utils/smartwatch/swset.asm Fri Apr 01 16:59:32 2005 +0000 +++ b/3rdparty/utils/smartwatch/swset.asm Fri Apr 01 17:01:46 2005 +0000 @@ -1,405 +1,405 @@ -******************************************************************** -* 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 -* Revised to accommodate Level1 & Level2 so RG 04/07/28 -* relocation of code brought back. - - nam SWSet - ttl Set time in SmartWatch - - ifp1 - use defsfile - use systype - 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 alert 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 -relocimg rmb 300 -stack rmb 200 -size equ . - -rom equ $FFDE -ram equ $FFDF -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 - -noroom lda #2 - leax mesroom,pcr - ldy #50 - os9 I$WritLn - clrb - os9 F$Exit - -start leax alrtimag,u point to image of alert code - ldb #8 - leay alert,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 MPI.Slct - 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 #Zero - rts -data2 tst temp2 - beq data1 - rts -nomore com temp1 - rts -error leas 4,s - lbra date - -doit equ * - IFGT Level-1 - 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 - ELSE - tfr u,d look at the start of the program data page - cmpa #$7E - lbhs noroom - ldx #RTC.Base - stx locblk3E - ldx #0 - stx locblk0 - leax reloc,pcr - pshs u - leau relocimg,u - ldy #endrel-reloc -rl lda ,x+ - sta ,u+ - leay -1,y - bne rl - puls u - jsr relocimg,u - ENDC - 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 - -* regX points to system DP, regU points to program DP -reloc pshs cc - IFGT Level-1 - lda d.hinit,x get $FF90 image - ENDC - ldb MPI.Slct - pshs d - IFGT Level-1 - anda #$CC external disk rom access - ENDC - orcc #IntMasks - IFGT Level-1 - sta $FF90 set for external ROM - ENDC - sta rom - ldx locblk3E - ldb mpiimage get new value - clr clkflag - -findclk stb MPI.Slct set new slot - leay alert,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 MPI.Slct - tst cartI - sta $ff90 - puls cc,pc - -alert fcb $C5,$3A,$A3,$5C,$C5,$3A,$A3,$5C,$ff -endrel equ * - -mesroom fcb C$LF - fcc /Don't have relocation memory!/ - fcb C$CR -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 * - end +******************************************************************** +* 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 +* Revised to accommodate Level1 & Level2 so RG 04/07/28 +* relocation of code brought back. + + nam SWSet + ttl Set time in SmartWatch + + ifp1 + use defsfile + use systype + 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 alert 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 +relocimg rmb 300 +stack rmb 200 +size equ . + +rom equ $FFDE +ram equ $FFDF +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 + +noroom lda #2 + leax mesroom,pcr + ldy #50 + os9 I$WritLn + clrb + os9 F$Exit + +start leax alrtimag,u point to image of alert code + ldb #8 + leay alert,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 MPI.Slct + 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 + lbsr 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 #Zero + rts +data2 tst temp2 + beq data1 + rts +nomore com temp1 + rts +error leas 4,s + lbra date + +doit equ * + IFGT Level-1 + 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 + ELSE + tfr u,d look at the start of the program data page + cmpa #$7E + lbhs noroom + ldx #RTC.Base + stx locblk3E + ldx #0 + stx locblk0 + leax reloc,pcr + pshs u + leau relocimg,u + ldy #endrel-reloc +rl lda ,x+ + sta ,u+ + leay -1,y + bne rl + puls u + jsr relocimg,u + ENDC + 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 + +* regX points to system DP, regU points to program DP +reloc pshs cc + IFGT Level-1 + lda d.hinit,x get $FF90 image + ENDC + ldb MPI.Slct + pshs d + IFGT Level-1 + anda #$CC external disk rom access + ENDC + orcc #IntMasks + IFGT Level-1 + sta $FF90 set for external ROM + ENDC + sta rom + ldx locblk3E + ldb mpiimage get new value + clr clkflag + +findclk stb MPI.Slct set new slot + leay alert,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 MPI.Slct + tst cartI + sta $ff90 + puls cc,pc + +alert fcb $C5,$3A,$A3,$5C,$C5,$3A,$A3,$5C,$ff +endrel equ * + +mesroom fcb C$LF + fcc /Don't have relocation memory!/ + fcb C$CR +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 * + end