Äsch, eftersom jag har så kul med att hacka ihop små snuttar kod för PDP-8 kan jag ju likaväl slänga in en rutin som läser från konsol också.
Kod: Markera allt
/ INPUT - Läs en rad, avslutad med CR från konsol. Sparar strängen, ett ord per tecken, på angiven address. CR sparas inte
/ i bufferten. Inmatad sträng termineras med ett NUL.
/ Argument: Adress att spara sträng på
/ Retur: AC nollställd
/
INPUT, 0
CLA CMA
TAD I INPUT
DCA 10
ISZ INPUT
LOOP, KSF
JMP .-1
KRB
TAD (-15
SNA
JMP IEND
TAD (15
DCA I 10
JMP LOOP
IEND, DCA I 10
JMP I INPUT
Och sedan kan man ju kombinera dom två rutinerna...
Kod: Markera allt
START, JMS PRINT
TXT1
JMS INPUT
BUF
JMS PRINT
TXT2
JMS PRINT
BUF
JMS PRINT
TXT3
JMP START
TXT1, "N,"A,"M,"E,"?," ,0
TXT2, "H,"E,"L,"L,"O," ,0
TXT3, ".," ,"N,"I,"C,"E," ,"T,"O," ,"M,"E,"E,"T," ,"Y,"O,"U,".,15,12,0
BUF,
$
Förresten. TAD (15
är en artificiell väg att få PAL8 att generera konstanter. Så, detta betyder verkligen att man adderar 15 (oktalt) till AC.
PAL8 assemblerar detta genom att allokera en minnescell någonstans i minnet, där den lägger konstanten 15, och sedan blir det en TAD med den addressen där konstanten ligger.