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:
parent
ab1b026866
commit
3987c3da16
@ -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
41
tss8_lcm2/boot.pal
Normal 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
|
||||
@ -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
|
||||
|
||||
@ -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;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user