# HG changeset patch # User Shinji KONO # Date 1532249706 -32400 # Node ID fe88cea67ef0f1f6ea3fb61add70e7a3536c6965 # Parent 51b437557f423c4f4d90733c5c49b67ad4f88bde clock interrupt get time diff -r 51b437557f42 -r fe88cea67ef0 engine.c --- 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++); diff -r 51b437557f42 -r fe88cea67ef0 io.c --- 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); } diff -r 51b437557f42 -r fe88cea67ef0 os9/Makefile --- 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 diff -r 51b437557f42 -r fe88cea67ef0 os9/level2/Makefile --- 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) diff -r 51b437557f42 -r fe88cea67ef0 os9/level2/clock.asm --- 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 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 *