# HG changeset patch # User Shinji KONO # Date 1531311366 -32400 # Node ID 3c14d647bb5162dfb5a52d96a5726897aab4029e # Parent d34482fd694563a39c141554e017e32d3a77a9d7 assembler and emulator fix diff -r d34482fd6945 -r 3c14d647bb51 a09.c --- a/a09.c Wed Jul 11 09:03:54 2018 +0900 +++ b/a09.c Wed Jul 11 21:16:06 2018 +0900 @@ -43,6 +43,9 @@ Compatibility: Octal number prefix "&". 2014-07-15 j at klasek at Fixed usage message. + 2018-07-11 + leax $ED00/256,x kernel offset in map + should be positive offset expr should be int(32bit) */ #include @@ -354,12 +357,12 @@ srcptr--; } -short scanexpr(int); +int scanexpr(int); -short scandecimal() +int scandecimal() { char c; - short t=0; + int t=0; c=*srcptr++; while(isdigit(c)) { t=t*10+c-'0'; @@ -369,9 +372,9 @@ return t; } -short scanhex() +int scanhex() { - short t=0,i=0; + int t=0,i=0; srcptr++; scanname(); while(namebuf[i]>='0'&&namebuf[i]<='F') { @@ -383,9 +386,9 @@ return t; } -short scanchar() +int scanchar() { - short t; + int t; srcptr++; t=*srcptr; if(t)srcptr++; @@ -393,10 +396,10 @@ return t; } -short scanbin() +int scanbin() { char c; - short t=0; + int t=0; srcptr++; c=*srcptr++; while(c=='0'||c=='1') { @@ -407,10 +410,10 @@ return t; } -short scanoct() +int scanoct() { char c; - short t=0; + int t=0; srcptr++; c=*srcptr++; while(c>='0'&&c<='7') { @@ -422,7 +425,7 @@ } -short scanlabel() +int scanlabel() { struct symrecord * p; scanname(); @@ -443,10 +446,10 @@ } -short scanfactor() +int scanfactor() { char c; - short t; + int t; skipspace(); c=*srcptr; if(isalpha(c))return scanlabel(); @@ -484,9 +487,9 @@ two addresses in same module */ -short scanexpr(int level) /* This is what you call _recursive_ descent!!!*/ +int scanexpr(int level) /* This is what you call _recursive_ descent!!!*/ { - short t,u; + int t,u; char oldcat,c; exprcat=0; if(level==10)return scanfactor(); diff -r d34482fd6945 -r 3c14d647bb51 os9/level2/boot.asm --- a/os9/level2/boot.asm Wed Jul 11 09:03:54 2018 +0900 +++ b/os9/level2/boot.asm Wed Jul 11 21:16:06 2018 +0900 @@ -43,8 +43,6 @@ adca #0 clrb std ,s size return as d - ** BtMem give us a little smaller memory - adda #$20 request +0x2000 os9 F$BtMem bcs last ** u points the memory diff -r d34482fd6945 -r 3c14d647bb51 trace.c --- a/trace.c Wed Jul 11 09:03:54 2018 +0900 +++ b/trace.c Wed Jul 11 21:16:06 2018 +0900 @@ -146,12 +146,12 @@ fgets(s, sizeof(s)-1, stdin); s[strlen(s)-1] = 0; // chop switch (s[0]) { - default: case 'n': // step over if (nexti()) { bpskip = -1; break; } + default: case 's': // one step trace trskip = 1; if (s[1]) { @@ -381,12 +381,14 @@ ofs=3; break; } } + break; case 0x11: // page3 { if (op2==0x3f) { // SWI3 ofs=2; break; } } + break; case 0x3f: // SWI ofs=1; break; case 0x3c: // CWAI diff -r d34482fd6945 -r 3c14d647bb51 v09.c --- a/v09.c Wed Jul 11 09:03:54 2018 +0900 +++ b/v09.c Wed Jul 11 21:16:06 2018 +0900 @@ -90,14 +90,15 @@ mmu = &mem[0xffa0]; prog = (char*)mem; if (romstart==0x8000) { - romstart = memsize - 0x2000; + romstart = memsize - 0x10000 + 0xed00 ; } + fread(mem+ 0xe000,len,1,image); #else if (romstart==0x8000) { romstart = 0x10000 - len; } + fread(mem+(romstart&0xffff),len,1,image); #endif - fread(mem+(romstart&0xffff),len,1,image); mem[0xffa7] = 0x3f; fclose(image); }