1
0
mirror of https://github.com/livingcomputermuseum/cpus-pdp8.git synced 2026-01-12 00:12:44 +00:00

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.
This commit is contained in:
Josh Dersch 2019-11-18 14:38:07 -08:00
parent ab1b026866
commit 3987c3da16
4 changed files with 60 additions and 37 deletions

View File

@ -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
# sdiff si.rf.mem si.src.mem

41
tss8_lcm2/boot.pal Normal file
View File

@ -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

View File

@ -36,6 +36,7 @@ IFNZRO DC08A < IFNZRO PHONES <D689=4>
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 <DSKSIZ=10>
IFZERO RS08-2 <DSKSIZ=20>
@ -43,7 +44,10 @@ IFZERO RS08-3 <DSKSIZ=30>
IFZERO RS08-4 <DSKSIZ=40>
DSKEXT=DSKSIZ-1>
IFZERO RF08 <DSKSIZ=RS08^100 /# 4K DISC TRACKS
DSKEXT=RS08^100+77>
DSKEXT=RS08^100+77> >
IFNZRO RKSYS<DSKSIZ=400
DSKEXT=477>
CLOCKR=144 /MILLISECONDS PER TICK
TICMIN=1130 /600 TICKS PER MINUTE
INCLK2=0322 /INITIAL CLOCK

View File

@ -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<sizeof(message);i++)
{
fields[0][07600+i] = message[i] | 0200;
}
break;
case 2:
fields[2][01403] = 6; /* CORFLD */
break;