!!!SIO2USB Clock Utility
General Information
Author: Carsten Strotmann \\
Assembler: Bibo-Assembler \\
Published: 19.4.2008 \\
Download: [http://home.arcor.de/grasel/restarte.htm] \\
Download: [SIO2USB Clock Utility/S2UTIME.ATR]
A small utility to read the data and time out of the SIO2USB Device and set the internal Clock in Sparta DOS.
Tested with
* BW-DOS 1.30
* Sparta DOS 3.3a (X33A.DOS)
* Sparta DOS 3.2d (X32D.DOS)
* Real DOS 1.0a build 24 [http://www.tcpipexpress.com/realdos.html]
* SpartaDOS X 4.41 [http://trub.atari8.info/index.php?ref=sdx_upgrade_en]
and with
* Atari ROM E: Handler
* Sparta DOS X 4.41 XEP80 Handler
* Sparta DOS X 4.41 64 Char Handler (CON64)
* Sparta DOS X 4.41 Quick E: Handler
just load S2UTIME.COM. On BW-DOS you first need to load the Clock Driver "CLOCK ON"
{{{
01000 .LI OFF
01010 **********************
01020 ** **
01030 ** SPARTA DOS TIME **
01040 ** UTILITY FOR **
01050 ** SIO2USB **
01060 ** (C) 2008 ABBUC **
01070 ** LICENSE: GPLv3 **
01080 ** **
01090 ** P: C. Strotmann **
01100 ** H: T. Grasel **
01110 ** H. Reminder **
01120 ** E. Puetz **
01130 ** **
01140 ** VERSION 1.00 **
01150 ** **
01160 **********************
01170 .LI OFF
01180 ;
01190 DOSVEC = $0A
01200 ZPF0 = $F0
01210 ZPF1 = ZPF0+1
01220 INITAD = $2E2
01230 DDEVIC = $300
01240 HATABS = $31A
01250 SDBASE = $700
01260 SDKRNL = $703
01270 SDDEV = $761
01280 SDDATE = $77B
01290 SDTIME = SDDATE+3
01300 PORTB = $D301
01310 EDITRV = $E400
01320 SIOV = $E459
01330 VSETTD = $FFC3
01340 ------------------------------
01350 .OR $5000
01360 .OF D:S2UTIME.COM
01370 ------------------------------
01380 RETURN RTS
01390 ------------------------------
01400 START
01410 JSR COUTINIT
01420 JSR BANNER
01430 JSR GETTIME
01440 BMI SIOERROR
01450 JSR TESTDATA
01460 JSR DETECTDOS
01470 JMP EXIT
01480 ------------------------------
01490 ERRORMSG
01500 JSR PRINT
01510 .HX FD ; Beep
01520 .AS "Error: "
01530 .HX EA
01540 RTS
01550 ------------------------------
01560 SIOERROR
01570 JSR ERRORMSG
01580 JSR PRINT
01590 .AS "during SIO Communication"
01600 .HX EA
01610 JMP EEXIT
01620 ------------------------------
01630 DATAERROR
01640 JSR ERRORMSG
01650 JSR PRINT
01660 .AS "wrong or incomplete data recieved"
01670 .HX EA
01680 JMP EEXIT
01690 ------------------------------
01700 EEXIT
01710 JSR PRINT
01720 .HX 9B
01730 .AS "Date/Time not set!"
01740 .HX 9BEA
01750 JMP TODOS
01760 ------------------------------
01770 BANNER
01780 JSR PRINT
01790 .AS "SIO2USB DATE/TIME UTILITY v1.0"
01800 .HX 9B
01810 .AS "(C) 2008 ABBUC/RAF"
01820 .HX 9BEA
01830 RTS
01840 ------------------------------
01850 DETECTDOS
01860 LDY #0
01870 LDA SDBASE,Y
01880 CMP #'S
01890 BNE ISREAL
01900 INY
01910 INY
01920 INY
01930 LDA SDBASE,Y
01940 CMP #'B
01950 BEQ BEWEDOS
01960 ; IS ORIGINAL SPARTADOS
01970 JSR PRINT
01980 .AS "Sparta DOS"
01990 .HX EA
02000 JSR DETECTED
02010 JMP SETTIME
02020 BEWEDOS
02030 JSR PRINT
02040 .AS "BW-DOS"
02050 .HX EA
02060 JSR DETECTED
02070 JSR PRINT
02080 .HX 9BEA
02090 JMP SETTIMEBW
02100 ISREAL
02110 CMP #'R
02120 BNE NOSPARTA
02130 JSR PRINT
02140 .AS "REALDOS"
02150 .HX EA
02160 JSR DETECTED
02170 JMP SETTIME
02180 NOSPARTA
02190 JSR PRINT
02200 .AS "No SPARTA compatible DOS"
02210 .HX EA
02220 JSR DETECTED
02230 LDA #$9B
02240 JSR COUT
02250 JMP EEXIT
02260 ------------------------------
02270 DETECTED
02280 JSR PRINT
02290 .AS " detected"
02300 .HX EA
02310 RTS
02320 ------------------------------
02330 COUTINIT
02340 LDY #$1E
02350 .1 LDA HATABS,Y
02360 CMP #'E
02370 BEQ .3
02380 DEY
02390 DEY
02400 DEY
02410 BPL .1
02420 JMP .2
02430 .3 LDA HATABS+1,Y
02440 STA ZPF0
02450 LDA HATABS+2,Y
02460 STA ZPF1
02470 LDY #7
02480 LDA (ZPF0),Y
02490 STA COUT2+1
02500 DEY
02510 LDA (ZPF0),Y
02520 STA COUT1+1
02530 .2 RTS
02540 ------------------------------
02550 COUT
02560 TAX
02570 COUT2 LDA #$F2
02580 PHA
02590 COUT1 LDA #$AF
02600 PHA
02610 TXA
02620 RTS
02630 ------------------------------
02640 PRINT
02650 PLA
02660 STA ZPF0
02670 PLA
02680 STA ZPF1
02690 .1 INC ZPF0
02700 BNE .2
02710 INC ZPF1
02720 .2 LDX #0
02730 LDA (ZPF0,X)
02740 CMP #$EA
02750 BEQ .3
02760 JSR COUT
02770 JMP .1
02780 .3 JMP (ZPF0)
02790 ------------------------------
02800 ISXL
02810 LDY #$1B
02820 LDA (DOSVEC),Y
02830 CMP #$FF
02840 BEQ .1
02850 JSR PRINT
02860 .AS " under ROM (XL/XE)"
02870 .HX 9BEA
02880 CLC
02890 RTS
02900 .1 JSR PRINT
02910 .AS " in main RAM"
02920 .HX 9BEA
02930 SEC
02940 RTS
02950 ------------------------------
02960 GETTIME
02970 LDX #$0B
02980 .1 LDA READRTC,X
02990 STA DDEVIC,X
03000 DEX
03010 BPL .1
03020 JMP SIOV
03030 ------------------------------
03040 TESTDATA
03050 LDA BUF
03060 CMP #6
03070 BNE .3
03080 LDA BUF+7
03090 CMP #$FF
03100 BEQ .2
03110 .3 JMP DATAERROR
03120 ; CONVERT BCD -> DEC
03130 .2 LDX #5
03140 .1 LDA BUF+1,X
03150 AND #$F0
03160 LSR
03170 LSR
03180 STA ZPF0
03190 LSR
03200 ADC ZPF0
03210 SBC BUF+1,X
03220 EOR #$FF
03230 STA BUF+1,X
03240 DEX
03250 BPL .1
03260 ;
03270 LDX #2
03280 LDY #$0F
03290 .4 LDA BUF+4,X
03300 STA (DOSVEC),Y
03310 DEY
03320 DEX
03330 BPL .4
03340 ;
03350 LDY #$10
03360 LDA BUF+3
03370 STA (DOSVEC),Y
03380 INY
03390 LDA BUF+2
03400 STA (DOSVEC),Y
03410 INY
03420 LDA BUF+1
03430 STA (DOSVEC),Y
03440 RTS
03450 ------------------------------
03460 SETTIME
03470 JSR ISXL
03480 LDA PORTB
03490 PHA
03500 AND #$FE
03510 STA PORTB
03520 JSR VSETTD
03530 PLA
03540 STA PORTB
03550 RTS
03560 ------------------------------
03570 SETTIMEBW
03580 JMP ($708)
03590 ; FALLTHROUGH
03600 ------------------------------
03610 EXIT
03620 JSR PRINT
03630 .AS "Date/Time set"
03640 .HX 9BEA
03650 ; FALLTHROUGH
03660 ------------------------------
03670 TODOS
03680 JMP (DOSVEC)
03690 ------------------------------
03700 READRTC
03710 .HX 71000240
03720 .DA BUF
03730 .HX 07008000
03740 ------------------------------
03750 BUF .HX 00000000
03760 .HX 00000000
03770 ------------------------------
03780 .OR INITAD
03790 .DA START
03800 ------------------------------
}}}
----
Stefan Haubenthal | 22.04.2008 at 03:13 PM
Short optimization:
01900 INY 01910 INY 01920 INY 01930 LDA SDBASE,Y
01900 LDA SDKRNL,Y
----
Carsten Strotmann | 25.04.2008 at 03:30 PM
Hello Stefan,
thanks for the patch. Sometimes I don't see the forrest because of the trees ;)
I'll change this in the next version (on VCFe in Munich this weekend). Also, the structure of the source can be optimized.
Also, I would like to detect the different configurations of SpartaDOS X (banked, osram, none)