From 3987c3da160f8b18e22121ff5ae8c8427d254fbc Mon Sep 17 00:00:00 2001 From: Josh Dersch Date: Mon, 18 Nov 2019 14:38:07 -0800 Subject: [PATCH] Added small RK05 bootstrap (to avoid needing to load INIT in via papertape every time). This loads INIT from track 2 of the RK05 and starts it. Updated params.pal to reflect a larger disk size (400 tracks), and updated maker.c to make it easier to update the login message. --- tss8_lcm2/Makefile | 8 ++++++-- tss8_lcm2/boot.pal | 41 +++++++++++++++++++++++++++++++++++++++++ tss8_lcm2/param.pal | 6 +++++- utils/maker/maker.c | 42 ++++++++---------------------------------- 4 files changed, 60 insertions(+), 37 deletions(-) create mode 100644 tss8_lcm2/boot.pal diff --git a/tss8_lcm2/Makefile b/tss8_lcm2/Makefile index 5b9ba71..a8a6c89 100644 --- a/tss8_lcm2/Makefile +++ b/tss8_lcm2/Makefile @@ -2,7 +2,7 @@ MACRO = ../utils/macro/macro8x SHOWBIN = ../utils/showbin -all: init.bin fip.bin si.bin ts8.bin +all: init.bin fip.bin si.bin ts8.bin boot.bin clean: rm -f *.bin *.prm *.lst *.err *.mem *.dump @@ -23,6 +23,10 @@ ts8.bin: rm -f ts8.err ts8.lst $(MACRO) -o ts8 melrose.pal param.pal link.pal ts8.pal +boot.bin: + rm -f boot.err boot.lst + $(MACRO) -o boot boot.pal + xxx: $(SHOWBIN) fip.bin >fip.src.mem $(SHOWBIN) init.bin >init.src.mem @@ -30,4 +34,4 @@ xxx: $(SHOWBIN) ts8.bin >ts8.src.mem # sdiff fip.rf.mem fip.src.mem # sdiff init.rf.mem init.src.mem -# sdiff si.rf.mem si.src.mem \ No newline at end of file +# sdiff si.rf.mem si.src.mem diff --git a/tss8_lcm2/boot.pal b/tss8_lcm2/boot.pal new file mode 100644 index 0000000..d904a48 --- /dev/null +++ b/tss8_lcm2/boot.pal @@ -0,0 +1,41 @@ +/ RK05 BOOTSTRAP VERSION 1.0 (18-NOV-19) +/ +/ + +/ THIS BOOTSTRAP LOADS INIT FROM TRACK 2 INTO FIELD 2 +/ AND THEN BEGINS EXECUTION AT 24200. +/ ENSURE PDP-8 IS CLEARED BEFORE EXECUTION. + +DSKP= 6741 +DCLR= 6742 +DLAG= 6743 +DLCA= 6744 +DRST= 6745 +DLDC= 6746 + +*200 + +START, TAD CADDR + DLCA + TAD CMD + DLDC + TAD DADDR + DLAG +WAIT, DSKP + JMP WAIT / WAIT FOR READ TO COMPLETE + CLA + TAD CADDR + TAD C0400 / NEXT CORE ADDRESS + DCA CADDR + ISZ DADDR / NEXT DISK ADDRESS + ISZ COUNT + JMP START / NEXT SECTOR + CDI 20 + JMP I ENTRY / AND WE'RE OFF. + +DADDR, 0040 / TRACK 2 +CADDR, 0 / CORE ADDRESS +CMD, 0020 / READ, TO FIELD 2, DRIVE 0, NO INTERRUPT. +COUNT, -16 / COUNT OF SECTORS TO BE READ +ENTRY, 4200 / ENTRYPOINT FOR INIT +C0400, 0400 diff --git a/tss8_lcm2/param.pal b/tss8_lcm2/param.pal index 6519b18..326a932 100644 --- a/tss8_lcm2/param.pal +++ b/tss8_lcm2/param.pal @@ -36,6 +36,7 @@ IFNZRO DC08A < IFNZRO PHONES NULINE=DC08A+PT08+KL8 /EVERY TERMINAL EXCEPT THE CONSOLE SWDEX=5 /DISK TRACK OF THE FIRST USER SWAP TRACK STOMIN=5 /MINIMUM # FREE STORAGE BLOCK FOR NEWJOB +IFZERO RKSYS < IFZERO RF08-40 < IFZERO RS08-1 IFZERO RS08-2 @@ -43,7 +44,10 @@ IFZERO RS08-3 IFZERO RS08-4 DSKEXT=DSKSIZ-1> IFZERO RF08 +DSKEXT=RS08^100+77> > +IFNZRO RKSYS + CLOCKR=144 /MILLISECONDS PER TICK TICMIN=1130 /600 TICKS PER MINUTE INCLK2=0322 /INITIAL CLOCK diff --git a/utils/maker/maker.c b/utils/maker/maker.c index ba62d42..2b48fe0 100644 --- a/utils/maker/maker.c +++ b/utils/maker/maker.c @@ -89,42 +89,16 @@ int disk_save(void) int field_patch(int field) { + char message[] = "WELCOME TO THE LCM+L TSS/8 SYSTEM."; + int i=0; switch (field) { case 0: - fields[0][07600] = 0323; /* login message */ - fields[0][07601] = 0331; - fields[0][07602] = 0323; - fields[0][07603] = 0324; - fields[0][07604] = 0305; - fields[0][07605] = 0315; - fields[0][07606] = 0240; - fields[0][07607] = 0311; - fields[0][07610] = 0323; - fields[0][07611] = 0240; - fields[0][07612] = 0304; - fields[0][07613] = 0317; - fields[0][07614] = 0327; - fields[0][07615] = 0316; - fields[0][07616] = 0254; - fields[0][07617] = 0240; - fields[0][07620] = 0311; - fields[0][07621] = 0316; - fields[0][07622] = 0303; - fields[0][07623] = 0256; - fields[0][07624] = 0215; - fields[0][07625] = 0212; - fields[0][07626] = 0215; - fields[0][07627] = 0212; - fields[0][07630] = 0000; - fields[0][07631] = 0323; - fields[0][07632] = 0310; - fields[0][07633] = 0301; - fields[0][07634] = 0322; - fields[0][07635] = 0311; - fields[0][07636] = 0316; - fields[0][07637] = 0307; - fields[0][07640] = 0000; - break; + // Set login message + for(i=0;i