Mercurial > hg > Members > kono > os9 > sbc09
changeset 53:fe88cea67ef0
clock interrupt
get time
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Sun, 22 Jul 2018 17:55:06 +0900 |
parents | 51b437557f42 |
children | fc10b7ae23d0 |
files | engine.c io.c os9/Makefile os9/level2/Makefile os9/level2/clock.asm os9/level2/sysgo.asm |
diffstat | 6 files changed, 47 insertions(+), 30 deletions(-) [+] |
line wrap: on
line diff
--- a/engine.c Sun Jul 22 15:52:39 2018 +0900 +++ b/engine.c Sun Jul 22 17:55:06 2018 +0900 @@ -248,7 +248,6 @@ #endif do_trace(tracefile); } - if(escape){ SAVEREGS do_escape(); LOADREGS } if(irq) { if(irq==1&&!(iccreg&0x10)) { /* standard IRQ */ PUSHWORD(ipcreg) @@ -274,6 +273,7 @@ irq=0; } } + if(escape){ SAVEREGS do_escape(); LOADREGS } iflag=0; flaginstr: /* $10 and $11 instructions return here */ ireg=mem(ipcreg++);
--- a/io.c Sun Jul 22 15:52:39 2018 +0900 +++ b/io.c Sun Jul 22 17:55:06 2018 +0900 @@ -312,7 +312,7 @@ time_t tm = time(0); struct tm *t = localtime(&tm); mem[IOPAGE+0x31] = t->tm_year; - mem[IOPAGE+0x32] = t->tm_mon; + mem[IOPAGE+0x32] = t->tm_mon+1; mem[IOPAGE+0x33] = t->tm_mday; mem[IOPAGE+0x34] = t->tm_hour; mem[IOPAGE+0x35] = t->tm_min; @@ -369,8 +369,12 @@ void timehandler(int sig) { attention = 1; +#ifdef USE_MMU + irq = 1; +#else irq = 2; - mem[(IOPAGE&0xfe00)+0x30] |= 0x10 ; +#endif + mem[IOPAGE+0x30] |= 0x10 ; // signal(SIGALRM, timehandler); } @@ -401,9 +405,9 @@ fcntl(0, F_SETFL, tflags | O_NDELAY); /* Make input from stdin non-blocking */ signal(SIGALRM, timehandler); timercontrol.it_interval.tv_sec = 0; - timercontrol.it_interval.tv_usec = 20000; + timercontrol.it_interval.tv_usec = 200000; timercontrol.it_value.tv_sec = 0; - timercontrol.it_value.tv_usec = 20000; + timercontrol.it_value.tv_usec = 200000; if (timer) setitimer(ITIMER_REAL, &timercontrol, NULL); }
--- a/os9/Makefile Sun Jul 22 15:52:39 2018 +0900 +++ b/os9/Makefile Sun Jul 22 17:55:06 2018 +0900 @@ -15,11 +15,8 @@ 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 -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 - 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/pdisk level2/d0 level2/pty level2/term level2/init level2/boot level2/os9p1 + ./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 level1/init : nitros9-code cd level1 ; make
--- a/os9/level2/Makefile Sun Jul 22 15:52:39 2018 +0900 +++ b/os9/level2/Makefile Sun Jul 22 17:55:06 2018 +0900 @@ -41,7 +41,7 @@ $(A09) $@.asm -o $@ $(LST) clock : - $(A09) ../level1/clock.asm -o clock $(LST) + $(A09) clock.asm -o clock $(LST) pty : $(A09) ../level1/pty.asm -o pty $(LST)
--- a/os9/level2/clock.asm Sun Jul 22 15:52:39 2018 +0900 +++ b/os9/level2/clock.asm Sun Jul 22 17:55:06 2018 +0900 @@ -22,7 +22,7 @@ atrv set ReEnt+rev rev set $01 edition set $06 -TimerPort set $f8b0 +TimerPort set $ffb0 mod eom,name,tylg,atrv,ClkEnt,size @@ -33,15 +33,21 @@ SysTbl fcb F$Time fdb FTime-*-2 + fcb F$STime + fdb FSTime-*-2 fcb $80 -ClockIRQ clra - tfr a,dp +ClockIRQ ldx #TimerPort + lda ,x + bita #$10 + beq L00AE + lda #$8f + sta >TimerPort L00AE jsr [>D.Poll] bcc L00AE -L00B4 jmp [>D.AltIRQ] - rts +L00B4 jsr [>D.AltIRQ] + rti ClkEnt equ * pshs cc @@ -57,17 +63,19 @@ puls pc,cc * F$Time system call code -FTime ldx R$X,u - ldy #TimerPort +FTime ldx #TimerPort ldb #$04 - stb ,y - ldd 1,y - std ,x - ldd 3,y - std 2,x - ldd 5,y - std 4,x - clrb + stb ,x + leax 1,x Address of system time packet +RetTime ldy <D.Proc Get pointer to current proc descriptor + ldb P$Task,y Process Task number + lda <D.SysTsk From System Task + ldu R$X,u +STime.Mv ldy #6 Move 6 bytes +FMove os9 F$Move + rts + +FSTime clrb rts emod
--- a/os9/level2/sysgo.asm Sun Jul 22 15:52:39 2018 +0900 +++ b/os9/level2/sysgo.asm Sun Jul 22 17:55:06 2018 +0900 @@ -114,6 +114,14 @@ * Default time packet DefTime + fcb 0 + fcb 0 + fcb 0 + fcb 0 + fcb 0 + fcb 0 + fcb 0 + fcb 0 * dtb IFEQ atari+corsham @@ -190,8 +198,8 @@ os9 I$Write write out banner * Set default time -* leax >DefTime,pcr -* os9 F$STime set time to default + leax >DefTime,pcr + os9 F$STime set time to default IFEQ ROM * Change EXEC and DATA dirs @@ -203,9 +211,9 @@ lda #READ. os9 I$ChgDir change data dir. bcs L0125 - leax >HDDev,pcr - lda #EXEC. - os9 I$ChgDir change exec. dir to HD +* leax >HDDev,pcr +* lda #EXEC. +* os9 I$ChgDir change exec. dir to HD ENDC L0125 equ *