# HG changeset patch # User Shinji KONO # Date 1531238418 -32400 # Node ID 51a35f0347f6bbec255d938f3bac5c70ac8d74ac # Parent c4e3abe97e2cc4d8f1eb8956bae653a9eef4e444 fix label diff -r c4e3abe97e2c -r 51a35f0347f6 a09.c --- a/a09.c Tue Jul 10 15:38:58 2018 +0900 +++ b/a09.c Wed Jul 11 01:00:18 2018 +0900 @@ -180,6 +180,7 @@ int symcounter=0; int os9 = 0; // os9 flag int prevloc = 0; +struct symrecord * prevlp = 0; /* expression categories... ECORD all zeros is ordinary constant. @@ -893,6 +894,11 @@ void setlabel(struct symrecord * lp) { + if (prevlp) { + struct symrecord *l = prevlp; + prevlp = 0; + setlabel(l); + } if(lp) { if(lp->cat!=13&&lp->cat!=6) { if(lp->cat!=2||lp->value!=loccounter) @@ -1355,6 +1361,9 @@ if(isalnum(*srcptr)) { scanname();lp=findsym(namebuf); if(*srcptr==':') srcptr++; + if(lp && pass==2) { + oldlc = lp->value; + } } skipspace(); if(isalnum(*srcptr)) { @@ -1387,7 +1396,9 @@ if(c!=' '&&*(srcptr-1)!=' '&&c!=0&&c!=';')error|=2; } else error|=0x8000; - }else setlabel(lp); + } else { + prevlp = lp; // os9 mode label can be data or code + } if(pass==2) { outbuffer(); if(listing)outlist(); @@ -1530,6 +1541,7 @@ srcptr=srcline; if(suppress)suppressline(); else processline(); } + setlabel(0); // process prevlp fclose(srcfile); if(suppress) { fprintf(stderr,"improperly nested IF statements in %s",curname); diff -r c4e3abe97e2c -r 51a35f0347f6 os9/Makefile --- a/os9/Makefile Tue Jul 10 15:38:58 2018 +0900 +++ b/os9/Makefile Wed Jul 11 01:00:18 2018 +0900 @@ -22,5 +22,5 @@ ./makerom -o os9d.rom modules/Shell modules/init.b modules/mdir modules/dir.b modules/SysGo modules/IOMan modules/pty-dd.b modules/pty.b modules/pdisk.b modules/d0.b modules/d1.b modules/clock.b modules/SCF modules/rbf.b modules/OS9p2 modules/OS9 os9lv2.rom : makerom level2/init - # ./makerom -o os9lv2.rom -2 level2/Shell level2/d1 level2/dir 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 - ./makerom -o os9lv2.rom -2 level2/Shell level2/d1 level2/dir level2/mdir level2/ioman level2/scf level2/rbf level2/os9p2 level2/sysgo level2/pdisk level2/d0 level2/pty level2/term level2/init level2/boot level2/os9p1 + ./makerom -o os9lv2.rom -2 level2/Shell level2/d1 level2/mdir 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 +# ./makerom -o os9lv2.rom -2 level2/Shell level2/d1 level2/dir level2/mdir level2/ioman level2/scf level2/rbf level2/os9p2 level2/sysgo level2/pdisk level2/d0 level2/pty level2/term level2/init level2/boot level2/os9p1 diff -r c4e3abe97e2c -r 51a35f0347f6 os9/level2/boot.asm --- a/os9/level2/boot.asm Tue Jul 10 15:38:58 2018 +0900 +++ b/os9/level2/boot.asm Wed Jul 11 01:00:18 2018 +0900 @@ -41,10 +41,9 @@ bcs last std ,s size return as d addb #$ff BtMem give us a little smaller memory - adda #$0f request +0x2000 + adda #$2f request +0x2000 clrb anda #$e0 - addd #-1 os9 F$BtMem bcs last ** u points the memory