diff --git a/build/Makefile b/build/Makefile index ea6438f..d48a978 100644 --- a/build/Makefile +++ b/build/Makefile @@ -78,8 +78,8 @@ coldboot.rim: $(COLDBOOT) $(AS) -n -f list -o a.lst $(COLDBOOT) # Filesystem image -image.fs: cmd others - $(MKFS) -k a.out proto +image.fs: cmd others a.out chrtbl.out + $(MKFS) -k a.out -c chrtbl.out proto $(FSCK) image.fs # Alternate filesystem image: . and .. but no dd @@ -87,8 +87,20 @@ alt/image.fs: altcmd altothers $(MKFS) -1 -2 -3 -o alt/image.fs -k alt/a.out alt/proto $(FSCK) -3 alt/image.fs +# character table: assemble output of cas.s +chrtbl.out: cas.out ../src/other/chrtbl.s + $(AS) -f ptr --no-label-warnings -o chrtbl.out ../src/other/chrtbl.s cas.out + +# run cas.s under a7out: needs local file! +cas.out: bin/cas ../src/sys/cas.in + rm -f cas.in + ln -s ../src/sys/cas.in . + $(A7OUT) bin/cas cas.out cas.in + rm -f cas.in + clean: rm -f boot.rim image.fs a.lst n.out a.out + rm -f cas cas.in cas.out chrtbl.out rm -f alt/image.fs alt/a.out alt/a.lst rm -rf $(BINDIR) $(TESTDIR) rm -rf $(BINARIES) diff --git a/src/cmd/cas.cas b/src/cmd/cas.cas deleted file mode 100644 index 1a0e6c5..0000000 --- a/src/cmd/cas.cas +++ /dev/null @@ -1,551 +0,0 @@ -:ca -v -af -nl -x -hd -v -hi -x -mn -r - -:cb -x -ga -v -gi -ik -kk -mi -ma -aa -ai -ck -ek -gi -x -mn -r - -:cc -x -kk -v -mi -mc -ka -ca -ac -ai -dl -x -mn -r - -:cd -v -aa -ai -ck -kk -mi -ma -x -mn -r - -:ce -x -mk -v -ma -aa -ak -x -gh -v -ga -x -mn -r - -:cf -v -aa -ak -x -gh -v -ga -x -mn -r - -:cg -x -gf -v -gk -nk -x -kk -v -mi -mc -ka -ca -ac -ai -dl -x -mn -r - -:ch -x -aa -v -na -x -gb -v -gk -x -ak -v -nk -x -mn -r - -:ci -x -md -v -mi -x -lf -v -af -x -ad -v -ai -x -mn -r - -:cj -x -ka -v -mc -mg -ki -ai -x -ag -v -al -x -mn -r - -:ck -x -aa -v -na -x -ak -v -ia -x -mk -v -fe -x -mn -r - -:cl -x -aa -v -ma -mk -x -mn -r - -:cm -v -aa -hf -ak -nk -x -mn -r - -:cn -x -ak -v -mk -aa -na -x -mn -r - -:co -x -ai -v -ch -ei -ck -ai -ac -ca -ka -mc -mi -kk -ck -x -mn -r - -:cp -v -aa -ai -ck -ek -gi -ga -x -mn -r - -:cq -x -mc -v -ka -ca -ac -ai -ck -kk -mi -mc -x -jh -v -nl -x -mn -r - -:cr -v -aa -ai -ck -ek -gi -ga -x -mk -v -gf -x -mn -r - -:cs -x -ka -v -mc -mi -kk -ik -gi -gc -ea -ca -ac -ai -dl -x -mn -r - -:ct -x -aa -v -al -x -mf -v -af -x -mn -r - -:cu -x -aa -v -ka -mc -mi -kk -x -ak -v -lk -x -mn -r - -:cv -x -aa -v -mf -x -ak -v -mf -x -mn -r - -:cw -x -aa -v -mc -af -x -ak -v -mi -af -x -mn -r - -:cx -v -gf -x -ak -v -gf -x -aa -v -nl -x -mn -r - -:cy -x -aa -v -if -x -ak -v -if -nf -x -mn -r - -:cz -x -aa -v -ak -ma -ml -x -mn -r - -:c0 -x -ck -v -ai -ac -ca -ka -mc -mi -kk -ck -x -mn -r - -:c1 -x -ce -v -af -mf -x -md -v -mi -x -mn -r - -:c2 -x -ca -v -ac -ai -ck -ek -gi -gc -ia -ma -ml -x -mn -r - -:c3 -x -aa -v -ak -fe -fi -hk -kk -mi -mc -x -ka -v -nd -x -mn -r - -:c4 -x -mh -v -ah -ia -il -x -mn -r - -:c5 -x -ak -v -aa -fa -fi -hk -kk -mi -mc -x -ka -v -nd -x -mn -r - -:c6 -x -ck -v -ai -ac -ca -ka -mc -mi -kk -hk -fi -fc -ha -x -mn -r - -:c7 -x -aa -v -ak -nb -x -mn -r - -:c8 -x -gc -v -ea -ca -ac -ai -ck -ek -gi -gc -ia -ka -mc -mi -kk -ik -gi -x -mn -r - -:c9 -x -ka -v -mc -mi -kk -ck -ai -ac -ca -fa -hc -hi -fk -x -mn -r diff --git a/src/other/chrtbl.s b/src/other/chrtbl.s new file mode 100644 index 0000000..38737a0 --- /dev/null +++ b/src/other/chrtbl.s @@ -0,0 +1,24 @@ +" PLB 2020-01-05 +" start of a file to assemble output of cas.s + +" base. maybe AFTER table?? +b: + +" 128-word dispatch table for ASCII + +null; null; null; null; null; null; null; null +null; null; null; null; null; null; null; null +null; null; null; null; null; null; null; null +null; null; null; null; null; null; null; null +space; excla; quote; number; dollar; percent; amper; accl +lparn; rparn; aster; plus; comma; minus; period; sla +c0; c1; c2; c3; c4; c5; c6; c7 +c8; c9; colon; semcln; less; equal; great; quest +at; ca; cb; cc; cd; ce; cf; cg +ch; ci; cj; ck; cl; cm; cn; co +cp; cq; cr; cs; ct; cu; cv; cw +cx; cy cz; lbk; bsla; rbk; cmflx; under +accr; la; lb; lc; ld; le; lf; lg +lh; li; lj; lk; ll; lm; ln; lo +lp; lq; lr; ls; lt; lu; lv; lw +lx; ly lz; lbr; or; rbr; tild; null diff --git a/src/other/pbboot.s b/src/other/pbboot.s index 12f1008..4b5dd16 100644 --- a/src/other/pbboot.s +++ b/src/other/pbboot.s @@ -9,25 +9,18 @@ caf " reset cpu dscs " clear disk status -" code from maksys (altered to read instead of write): - -3072; dslw +" code orignally from maksys +" altered to read full 4K (system + char table) +" instead of write: + -4096; dslw cla; dslm lac track; alss 8; xor o300000; dsld lac o2000; dsls dssf; jmp .-1 dsrs; spa; hlt - -1024; dslw - lac d3072; dslm - lac track; alss 8; xor o300110; dsld - lac o2000; dsls - dssf; jmp .-1 - dsrs; spa; hlt - jmp 0100 o2000: 02000 -d3072: 3072 o300000: 0300000 -o300110: 0300110 track: 0 " get 0-9 from switches!!! diff --git a/src/cmd/scope.cas b/src/sys/cas.in similarity index 61% rename from src/cmd/scope.cas rename to src/sys/cas.in index c2a1f22..1f641f1 100644 --- a/src/cmd/scope.cas +++ b/src/sys/cas.in @@ -1,3 +1,554 @@ +:ca +v +af +nl +x +hd +v +hi +x +mn +r + +:cb +x +ga +v +gi +ik +kk +mi +ma +aa +ai +ck +ek +gi +x +mn +r + +:cc +x +kk +v +mi +mc +ka +ca +ac +ai +dl +x +mn +r + +:cd +v +aa +ai +ck +kk +mi +ma +x +mn +r + +:ce +x +mk +v +ma +aa +ak +x +gh +v +ga +x +mn +r + +:cf +v +aa +ak +x +gh +v +ga +x +mn +r + +:cg +x +gf +v +gk +nk +x +kk +v +mi +mc +ka +ca +ac +ai +dl +x +mn +r + +:ch +x +aa +v +na +x +gb +v +gk +x +ak +v +nk +x +mn +r + +:ci +x +md +v +mi +x +lf +v +af +x +ad +v +ai +x +mn +r + +:cj +x +ka +v +mc +mg +ki +ai +x +ag +v +al +x +mn +r + +:ck +x +aa +v +na +x +ak +v +ia +x +mk +v +fe +x +mn +r + +:cl +x +aa +v +ma +mk +x +mn +r + +:cm +v +aa +hf +ak +nk +x +mn +r + +:cn +x +ak +v +mk +aa +na +x +mn +r + +:co +x +ai +v +ch +ei +ck +ai +ac +ca +ka +mc +mi +kk +ck +x +mn +r + +:cp +v +aa +ai +ck +ek +gi +ga +x +mn +r + +:cq +x +mc +v +ka +ca +ac +ai +ck +kk +mi +mc +x +jh +v +nl +x +mn +r + +:cr +v +aa +ai +ck +ek +gi +ga +x +mk +v +gf +x +mn +r + +:cs +x +ka +v +mc +mi +kk +ik +gi +gc +ea +ca +ac +ai +dl +x +mn +r + +:ct +x +aa +v +al +x +mf +v +af +x +mn +r + +:cu +x +aa +v +ka +mc +mi +kk +x +ak +v +lk +x +mn +r + +:cv +x +aa +v +mf +x +ak +v +mf +x +mn +r + +:cw +x +aa +v +mc +af +x +ak +v +mi +af +x +mn +r + +:cx +v +gf +x +ak +v +gf +x +aa +v +nl +x +mn +r + +:cy +x +aa +v +if +x +ak +v +if +nf +x +mn +r + +:cz +x +aa +v +ak +ma +ml +x +mn +r + +:c0 +x +ck +v +ai +ac +ca +ka +mc +mi +kk +ck +x +mn +r + +:c1 +x +ce +v +af +mf +x +md +v +mi +x +mn +r + +:c2 +x +ca +v +ac +ai +ck +ek +gi +gc +ia +ma +ml +x +mn +r + +:c3 +x +aa +v +ak +fe +fi +hk +kk +mi +mc +x +ka +v +nd +x +mn +r + +:c4 +x +mh +v +ah +ia +il +x +mn +r + +:c5 +x +ak +v +aa +fa +fi +hk +kk +mi +mc +x +ka +v +nd +x +mn +r + +:c6 +x +ck +v +ai +ac +ca +ka +mc +mi +kk +hk +fi +fc +ha +x +mn +r + +:c7 +x +aa +v +ak +nb +x +mn +r + +:c8 +x +gc +v +ea +ca +ac +ai +ck +ek +gi +gc +ia +ka +mc +mi +kk +ik +gi +x +mn +r + +:c9 +x +ka +v +mc +mi +kk +ck +ai +ac +ca +fa +hc +hi +fk +x +mn +r :la x fb diff --git a/src/sys/maksys.s b/src/sys/maksys.s index 967e851..2367a09 100644 --- a/src/sys/maksys.s +++ b/src/sys/maksys.s @@ -15,14 +15,14 @@ jmp error dscs - -3072; dslw - lac bufp; dslm + -3072; dslw // word count: 3K + lac bufp; dslm // transfer from buf lac track; alss 8; xor o300000; dsld lac o3000; dsls dssf; jmp .-1 dsrs; spa; jmp error - -1024; dslw - lac d3072; dslm + -1024; dslw // word count: 1K + lac d3072; dslm // transfer from 3K mark (06000) lac track; alss 8; xor o300110; dsld lac o3000; dsls dssf; jmp .-1 diff --git a/tools/mkfs7 b/tools/mkfs7 index 12782b2..d90bbf4 100755 --- a/tools/mkfs7 +++ b/tools/mkfs7 @@ -675,7 +675,7 @@ sub usage { ### MAIN PROGRAM -my ( $format, $output, $kernelfile ) = ( "simh", "image.fs" ); +my ( $format, $output, $kernelfile, $chartable ) = ( "simh", "image.fs" ); GetOptions( 'debug|d' => \$debug, @@ -685,6 +685,7 @@ GetOptions( 'format|f=s' => \$format, 'output|o=s' => \$output, 'kernel|k=s' => \$kernelfile, + 'chars|c=s' => \$chartable, ) or usage(); usage() if ( @ARGV < 1 ); @@ -696,10 +697,21 @@ dprint("\n"); # If we were given a kernel image, write that to track 80 # which is block number 6400. +# (maksys.s can write to tracks 80-89) +my $bootblock = 6400; if ($kernelfile) { dprint("Adding kernel $kernelfile to track 80\n"); my @buf= read_file($kernelfile); - write_file(6400, @buf); + write_file($bootblock, @buf); +} +# If we were given a character table, write that +# so it gets loaded at the 3K mark +# maksys.s writes the contents of memory at 3K to the boot track! +if ($chartable) { + dprint("Adding character table $chartable to track 80\n"); + my @buf= read_file($chartable); + # XXX truncate to 1K, or at least complain?? + write_file($bootblock + 3072/WORDSPERBLK, @buf); } dump_image( $format, $output ); exit(0);