1
0
mirror of https://github.com/PDP-10/its.git synced 2026-01-11 23:53:12 +00:00
PDP-10.its/build/misc.tcl
2026-01-07 12:53:55 +01:00

1533 lines
35 KiB
Tcl
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

log_progress "ENTERING BUILD SCRIPT: MISC"
# MIDAS 324, needed for older programs.
midast "sysbin; midas 324bin" "midas; midas 324" {
respond "\n" "itssw==1\r"
respond "\n" "ptr==100\r"
respond "\n" "ldbi=ildb\r"
respond "\n" "dpbi=idpb\003"
}
purify midas "sysbin; midas 324bin" {
respond "*" "purify\033g"
respond "TS MIDAS" "midas;ts 324\r"
}
# MIDAS 77, needed for MUSRUN.
purify midas "sysbin; midas 77bin" {
# Patch to accomodate more symbols returned from .GETSYS.
respond "*" "tsymgt+5/"
respond "P" "10\r"
respond "\n" "purify\033g"
expect "PURIFIED"
respond "*" ":pdump midas; ts 77\r"
}
# MIDAS 73, bootstrapped from 77.
oomidas 77 "MIDAS; TS 73" "MIDAS; MIDAS 73"
oomidas 73 "MIDAS; TS 73" "MIDAS; MIDAS 73"
respond "*" ":xfile midas; patch 73\r"
expect ":kill"
# ITS 138
oomidas 73 ".;ITS 138BIN" "SYSENG;ITS 138"
# MACTAP
omidas "sysbin;" "sysen2; mactap"
# TECO6
midas "sysbin;teco 335bin" ".teco.; teco 335"
purify teco "sysbin; teco 335bin" {
respond "*" "purify\033g"
respond "PURIFIED" "\r"
respond "*" ":pdump .teco.; ts 335\r"
}
make_link "teach;teach emacs" "emacs;teach emacs"
respond "*" "teach\033\023"
respond "*" ":emacs\r"
expect ":KILL"
make_link "sys2;ts teachemacs" "emacs;tstch >"
# nsalv, timesharing version
midas "sys1;ts nsalv" "kshack;nsalv" {
respond "machine?" "TS\r"
}
# salv, timesharing versions
midas "sys1;ts salv" "system;salv" {
respond "time-sharing?" "y\r"
}
midas "sys3;ts syslod" "sysen1;syslod"
midas "sys3;ts vv" "sysen2;vv"
make_link "sys3;ts vj" "sys3;ts vv"
make_link "sys3;ts detree" "sys3;ts vv"
midas "sys3;ts trees" "sysen1; trees"
midas "sys2;ts syschk" "sysen2;syschk"
midas "sysbin;" "sysen3;whoj"
make_link "sys1;ts talk" "sysbin;whoj bin"
make_link "sys1;ts who" "sysbin;whoj bin"
make_link "sys1;ts whoj" "sysbin;whoj bin"
make_link "sys1;ts whom" "sysbin;whoj bin"
make_link "sys2;ts users" "sysbin;whoj bin"
make_link "sys1;ts w" "sys1;ts who"
make_link "sys2;ts u" "sys2;ts users"
#Inter-Entity Communication
midas "sysbin;" "sysen2; iec"
make_link "sys; atsign iec" " sysbin; iec bin"
arpanet "rfc113" "sys; atsign iec"
midas "sys2;ts untalk" "gren;untalk"
midas "sys3;ts ufind" "syseng;ufind"
midas "sys3;ts ddtdoc" "syseng;ddtdoc"
midas "sys1;ts nwatch" "sysen1;nwatch"
midas "sys1;ts crock" "sysen1;crock" { respond "System?" "ITS\r" }
make_link "sys2;ts c" "sys1;ts crock"
midas "sys1;ts dcrock" "sysen1;dcrock" { respond "System?" "ITS\r" }
make_link "sys2;ts dc" "sys1;ts dcrock"
# Not Zork
midas "sys3;ts zork" "sysen3;zork"
midas "sys1;ts instal" "sysen2;instal"
midas "sys1;ts dir" "bawden;dir^k"
midas "bawden;" "uptime"
# Chaosnet EVACUATE service.
midas "sysbin; evacua" "bawden; evacua"
purify evacua "sysbin; evacua bin" {
respond "*" "purify\033g"
respond "CHAOS EVACUA" "\r"
}
# Mini Chaosnet file server. Version 24 is MINI.
midas "sysbin; mini" "lmio; minisr 24"
make_link "device; chaos mini" " sysbin; mini bin"
# Mini Chaosnet file server. This is the 36-bit version.
midas "kshack;" "mini36"
make_link "device; chaos mini36" " kshack; mini36 bin"
midas "sysbin;" "sysnet;echo"
make_link "device; chaos echo" " sysbin; echo bin"
midas "alan;ts gensym" "alan;gensym"
make_link "device; chaos gensym" " alan; ts gensym"
midas "device;chaos load" "alan;load"
# Mini Chaosnet file server. Version 5 is MINIC.
midas "sysbin; minic bin" "syseng; minisr 5"
make_link "device; chaos minic" " sysbin; minic bin"
midas "sysbin;" "lmio1; door"
make_link "device; chaos door" " sysbin; door bin"
midas "sys3; ts esce" "sysen1; esce"
midas "sysbin;chtn" "sysnet;chtn"
make_link "sys2;ts chtn" "sysbin;chtn bin"
midas "sys;ts ttloc" "sysen1;ttloc"
make_link "sys2;ts styloc" "sys;ts ttloc"
midas "device;jobdev dp" "sysen3;dpdev"
midas "sys1;ts quote" "sysen1;limeri" {
respond "Use what filename instead?" "ecc;quotes >\r"
}
midas "sys2;ts limeri" "sysen1;limeri" {
respond "Use what filename instead?" "eak; lims >\r"
}
make_link "sys2;ts limmer" "sys2;ts limeri"
midas "sysbin;" "eak;limser"
make_link "device;chaos limeri" "sysbin;limser bin"
midas "sys;ts srccom" "sysen2;srccom"
make_link "sys2;ts =" "sys;ts srccom"
midas ".mail.;comsat" "sysnet;comsat" comsat_switches
midas "device;jobdev dq" "sysnet;dqxdev" dqxdev_switches
purify comsat ".mail.;comsat bin" {
respond "*" "debug/0\r"
type "xvers/0\r"
type "purify\033g"
respond ":PDUMP DSK:.MAIL.;COMSAT LAUNCH" "\r"
}
initialize_comsat
make_link "emacs;rmail \021:ej" "emacs;\[rmai\] >"
midas "sys1;ts rmail" "emacs1;rmaill"
make_link "channa;rakash cnavrl" ".mail.;comsat launch"
make_link "channa;ts cnavrl" "channa;rakash cnavrl"
make_link "dragon;hourly cnavrl" ".mail.;comsat launch"
midas "sysbin;" "sra; gcmail"
make_link "dragon; hourly gcmail" "sysbin; gcmail bin"
make_link "dragon; hourly gcbulk" "sysbin; gcmail bin"
midas "sysbin;qmail" "ksc;qmail" { respond "PWORD version (Y or N)? " "N\r" }
purify qmail "sysbin;" {
respond "*" "purify\033g"
respond "QMAIL BIN" "\r"
}
make_link "sys;ts mail" "sysbin;qmail bin"
make_link "sys;ts qmail" "sysbin;qmail bin"
make_link "sys;ts qsend" "sysbin;qmail bin"
make_link "sys1;ts bug" "sysbin;qmail bin"
make_link "sys;ts m" "sys;ts mail"
make_link "sys2;ts featur" "sys;ts qmail"
make_link ".info.;mail info" ".info.;qmail info"
# Chaosnet MAILServer
midas "sysbin;" "sysnet;mails"
make_link "device; chaos mail" " sysbin; mails bin"
# DIGEST
midas "digest; ts digest" "digest"
make_link "dragon; hourly digest" " digest; ts digest"
# MBXLOC
midas "digest; ts mbxloc" "mbxloc"
# TIME
midas "sys1;ts time" "sysen2;time"
# DATE
midas "sys1;ts date" "sysen3;date"
# SRDATE
midas "sys3;ts srdate" "sysen3;srdate"
# PWMAIL
midas "sys;ts pwmail" "ksc;qmail" { respond "PWORD version (Y or N)? " "Y\r" }
# FIDO
midas "sys3;ts fido" "ksc;fidox"
# STTY
midas "sys2;ts stty" "archy;stty"
# DOWNLD
midas "sys3;ts downld" "sysen1;downld"
# OCTPUS
midas "sys2;ts octpus" "gren;octpus"
# TTYTST
midas "sys3;ts ttytst" "sysen2;ttytst"
# GOTO
midas "sys3;ts goto" "kmp; goto"
# binprt
midas "sys3;ts binprt" "sysen1;binprt"
# bitprt
midas "sys3;ts bitprt" "sysen2;bitprt"
# bday
midas "sysbin;" "sysen1;bday"
make_link "dragon;daily bday" "sysbin;bday bin"
# sender
midas "sysbin;sender" "sysen1;sender"
make_link "sys;ts freply" "sysbin;sender bin"
make_link "sys;ts send" "sysbin;sender bin"
make_link "sys2;ts fr" "sysbin;sender bin"
make_link "sys2;ts reply" "sysbin;sender bin"
make_link "sys3;ts fs" "sysbin;sender bin"
make_link "sys1;ts s" "sys;ts send"
make_link "sys3;ts snd" "sys;ts send"
make_link "sys3;ts sned" "sys;ts send"
# psend
midas "sys3;ts psend" "sysen2;b"
# whosen
midas "sys2;ts whosen" "syseng;wsent"
# sensor
midas "sys3;ts sensor" "gren;sensor"
# NICNAM
midas "sys2;ts nicnam" "sysen3;nicnam"
# NICWHO
midas "sys2;ts nicwho" "sysen3;nicwho"
# reatta
midas "sys1;ts reatta" "sysen2;reatta"
# print
midas "sys;ts print" "sysen2;print"
make_link "sys;ts copy" "sys;ts print"
make_link "sys;ts listf" "sys;ts print"
# fdir
midas "sys2;ts fdir" "syseng;fdir"
# timoon
midas "sys1;ts timoon" "syseng;timoon"
# jedgar
midas "sys2; ts jedgar" "sysen3; jedgar"
midas "moon; ts jedgar" "moon; jedgar"
# failsa
midas "moon;" "failsa"
# ports
midas "sys2;ts ports" "sysen2;ports"
# sysmsg
midas "sys1;ts sysmsg" "sysen1;sysmsg"
# meter
midas "sys1;ts meter" "syseng;meter"
make_link "sys1; ts smeter" " sys1; ts meter"
make_link "sys1; ts meterd" " sys1; ts meter"
# cross
# This is not the microcomputer cross assembler.
#midas "sys1;ts cross" "syseng;cross"
# MACN80
midas "sys3;ts macn80" "gz;macn80"
# dired
midas "sys;ts dired" "sysen2;dired"
# dircpy
midas "sys3;ts dircpy" "sysen3;dircop"
# hsname
midas "sys2;ts hsname" "sysen1;hsname"
# arcsal
midas "sys1;ts arcsal" "sysen1;arcsal"
# acount
midas "sys;ts acount" "sysen3;acount"
# idents
midas "sysbin;" "sysnet;idents"
make_link "device;tcp syn161" "sysbin;idents bin"
# timsrv
midas "sysbin;timsrv bin" "sysnet;timsrv"
make_link "device;tcp syn045" "sysbin;timsrv bin"
arpanet "rfc045" "sysbin;timsrv bin"
# datsrv
midas "sysbin;" "sysnet;datsrv"
make_link "device;tcp syn015" "sysbin;datsrv bin"
# WEBSER
respond "*" ":xfile sysnet;make webser\r"
expect -timeout 300 "*:kill"
# mailt
make_link "sys;ts mailt" "sys2;ts emacs"
# rmtdev
midas "device;atsign rmtdev" "gz;rmtdev"
# mmodem
midas "sys3; ts mmodem" "gz; mmodem"
# Compile ADVENT and dump it out with DECUUO.
cwd "games"
respond "*" ":dec sys:f40\r"
respond "*" "advent=advent\r"
expect "CORE USED"
respond "*" "\032"
type ":kill\r"
loader "advent"
respond "*" ":start\r"
respond "*" "\032"
type ":vk\r"
decuuo "sys3; ts advent"
# 350-point ADVENT
cwd "games"
respond "*" ":dec sys:f40\r"
respond "*" "adv3sr=adv3sr\r"
respond "*" "adv3sb=adv3sb\r"
expect "CORE USED"
respond "*" "\032"
type ":kill\r"
loader "adv3sb,adv3sr"
respond "*" ":start\r"
respond "*" "adv3db.1"
respond "*" "\032"
type ":vk\r"
decuuo "games; ts adv350"
# 448-point ADVENT
cwd "games"
respond "*" ":dec sys:f40\r"
respond "*" "adv4ma=adv4ma\r"
respond "*" "adv4su=adv4su\r"
expect "CORE USED"
respond "*" "\032"
type ":kill\r"
loader "adv4ma,adv4su"
respond "*" ":start\r"
respond "*" "adv4db.2"
respond "Are you a wizard?" "\032"
type ":vk\r"
decuuo "games; ts adv448"
# TREK
cwd "games"
respond "*" ":dec sys:f40\r"
respond "*" "trek=trek\r"
expect "CORE USED"
respond "*" "\032"
type ":kill\r"
loader "trek"
decuuo "games; ts trek"
# Tech II chess: timesharing, using TV display
midas "games;ts chess2" "rg;chess2"
# Unknown chess
midas "games;ts chess" "as;chess"
# MacHack VI chess: timesharing, using TV display, no CHEOPS processor.
midast "games;ts ocm" "chprog;ocm" { respond "with ^C" "CHEOPS==0\r\003" }
# MacHack VI: timesharing, using 340 display.
midas "games;ts c" "rg;c"
# CKR
midas "games;ts ckr" "agb;ckr"
# Dazzle Dart, video game for the Logo group PDP-11/45
palx "bs;" "dazzle"
# TOSBLK, convert from PALX binary to SBLK.
midas "pdp11;ts tosblk" "tosblk"
# PI
midas "sys3;ts pi" "rwg; ran"
# Hunt the Wumpus
midas "sys1;ts wumpus" "games; wumpus"
# Jotto
cwd "games"
midas "games;" "jotto"
purify jotto "jotto bin" {
# Run initialisation code to open the TTY channels.
respond "*" "erase0\033bbeg\033g"
# Load dictionary from disk instead of DECtape.
respond "ERASE0>>" "\024ut1:*;* *, dsk:games;* *\r"
# Run the dictionary loader.
respond "*" "beg7\033g"
respond "utape drive for dictionary?" "1"
respond "file name?" "JOTTO DICT\r"
# Dump out TS JOTTO including the dictionary.
respond "words" ":pdump sys1;ts jotto\r"
}
# ngame
midas "games;ts game" "ejs;ngame" {
respond "Star Trek: " "ts,trek,games\r"
respond "Adventure (2): " "ts,adv448,games\r"
respond "Adventure (1.5): " "ts,adv350,games\r"
}
make_link "sys3;ts game" "games;ts game"
make_link "info;o.info" "_info_;"
# guess
midas "games;ts guess" "games;guess"
# ten50
midas "sys3;ts ten50" "mrc; ten50"
# who%
midas "sys1;ts who%" "sysen3;who%"
make_link "sys1;ts %" "sys1;ts who%"
# MACRO-10
cwd "decsys"
respond "*" ":dec sys:macro\r"
respond "*" "macro=macro\r"
expect "CORE USED"
respond "*" "\003"
respond "*" ":kill\r"
linker "macro"
decuuo "sys2; ts macro"
respond "*" ":delete decsys; macro shr\r"
# Assemble with itself, now no errors
macro10 "macro" "macro"
linker "macro"
decuuo "sys2; ts macro"
# MACSYM and MONSYM universal files.
cwd "decsys"
macro10 "macsym.unv" "macsym.mac"
macro10 "monsym.unv" "monsym.mac"
# MACTEN and UUOSYM universal files.
macro10 "macten.unv" "macten.mac"
macro10 "uuosym.unv" "uuosym.mac"
# CROSS, assembler
macro10 "cross" "cross"
loader "cross"
decuuo "sys1; ts cross"
# Old PALX
midas "11logo;ts palx" "rms;palx 143"
# Phil Budne's PALX Game of Life.
cwd "budd"
palx "budd;" "live palx"
# MACN11, pdp-11 cross assembler
cwd "decsys"
macro10 "macn11" "macn11.hdr,macn11.mac"
loader "macn11"
decuuo "sys3; ts macn11"
# Cookie Bear
midas "gls; ts check" "gls; check" {
respond "DEBUGP==" "0\r"
respond "ITEM:" "COOKIE\r"
respond "SUBJECT:" "COOKIE\r"
respond "NAME:" "BEAR\r"
}
# Cookie Bear (this one actually works)
midas "eak;ts bear" "eak;bear"
# LOGOUT TIMES cleanup program.
midas "sys3;ts lotcln" "sysen1; lotcln"
# itsdev
midas "device;chaos itsdev" "bawden;itsdev"
make_link "device; tcp syn723" " device; chaos itsdev"
# charfc/charfs
midas "sys1;ts charfc" "sysen3;charfc"
make_link "sys1;ts charfs" "sys1;ts charfc"
# file
midas "sysbin;" "syseng;file"
purify file "sysbin;" {
respond "*" "purify\033g"
respond "CHAOS FILE" "\r"
}
# filei, fileo
midas "device;chaos filei" "eak;file"
make_link "device;chaos fileo" "device;chaos filei"
# ifile
midas "device;chaos ifile" "syseng;ifile"
# NFILE
midas "alan;" "bawden;nfile"
purify nfile "alan;nfile bin" {
respond "*" "purify\033g"
respond "CHAOS NFILE" "\r"
}
# 11sim
midas "sys;ts pdp45" "syseng;11sim"
midast "sys1;ts pdp11" "syseng;11sim" {
respond "end input with ^C" "45p==0\r"
respond "\n" "\003"
}
# times
midas "sysbin;times bin" "sysnet;times"
make_link "sys1;ts ctimes" "sysbin;times bin"
make_link "sys1;ts times" "sysbin;times bin"
# idle
midas "sys1;ts idle" "gren;idle"
# spell
midas "sys1;ts spell" "syseng;spell"
make_link "sys1;ts espell" "sys1;ts spell"
# jobs
midas "sys2;ts jobs" "sysen1;jobs"
# hsndev
midas "device;jobdev hsname" "sysen1;hsndev"
make_link "device;jobdev hs" "device;jobdev hsname"
make_link "device;jobdev hf" "device;jobdev hsname"
# gunner
midas "device; jobdev shoe" "rwk; gunner"
# Trivial Gunner
# Make a link from e.g. DRAGON; HOURLY GUNNER to use this program.
# It will log its actions to SPACY; GUNNER LOG.
midas "cstacy;" "gunner"
# pr
midas "sys1;ts pr" "sysen1;pr"
make_link "sys1;ts call" "sys1;ts pr"
make_link "sys1;ts .call" "sys1;ts pr"
make_link "sys1;ts uuo" "sys1;ts pr"
make_link "sys1;ts uset" "sys1;ts pr"
make_link "sys1;ts suset" "sys1;ts pr"
make_link "sys1;ts doc" "sys1;ts pr"
make_link "sys1;ts intrup" "sys1;ts pr"
make_link "sys1;ts ttyvar" "sys1;ts pr"
make_link "sys1;ts prim" "sys1;ts pr"
make_link ".info.;its .calls" "sysdoc;.calls >"
make_link ".info.;its uuos" "sysdoc;uuos >"
make_link ".info.;its usets" "sysdoc;usets >"
make_link ".info.;its %pi" "sysdoc;%pi >"
make_link ".info.;its ttyvar" "sysdoc;ttyvar >"
# inline
midas "sys2;ts inline" "sysen1;inline"
# init
midas "sys3;ts init" "sysen2;init"
# scandl
midas "sys3;ts scandl" "sysen1;scandl"
# os
midas "sys1;ts os" "sysen2;os"
# sn
midas "sys2;ts sn" "sysen3;sn"
# ttyswp
midas "sys;ts ttyswp" "sysen3;ttyswp"
# argus
midas "sys2;ts argus" "sysen2;argus"
# fretty
midas "sys3;ts fretty" "sysen2;fretty"
# bye
midas "sys1;ts bye" "sysen1;bye"
make_link "device;chaos bye" "sys1;ts bye"
# yow server
midas "sys3;ts yow" "maeda; yow"
make_link "device;chaos yow" " sys3; ts yow"
# yow client
midas "sysnet;ts yow" "sysen2; yow"
# @
midas "sysbin;" "sysen1;@"
purify "atsign" "sysbin;@ bin" {
respond "*" "purify\033g"
respond "TS @" "\r"
}
omidas "dsk0:.;@ pt" "syseng;pt"
# PTY
midas "sys1;ts pty" "sysen1;pty"
# PRUFD
midas "sys1;ts prufd" "sysen2;prufd"
# udir
midas "sys3;ts nudir" "sysen3; nudir"
# STY
midas "sys1;ts sty" "sysen2;sty"
# luser
midas "sysbin;luser bin" "syseng;luser"
make_link "sys1;ts luser" "sysbin;luser bin"
# ARCCPY
midas "sys2;ts arccpy" "sysen2;arccpy"
# CALPRT
midas "sys2;ts calprt" "sysen2;calprt"
# HOSTAB
midas "sys2;ts hostab" "sysen1;hostab"
# HOSTAT
midas "sys2;ts hostat" "sysen2;hostat"
# PROBE
make_link "syseng;its defs" "sys;itsdfs >"
midas "sysbin;probe bin" "bawden;probe"
# note: setting debug to 0 and running causes it to pdump itself to
# sys;ts probe
purify probe "sysbin;probe bin" {
respond "*" "debug/0\r"
type "\033g"
}
make_link "sys;ts pb" "sys;ts probe"
# TTY
midas "sys1;ts tty" "sysen1;tty"
# TTYLINK, just a stub.
midas "sysbin;ttylin bin" "bawden; u"
make_link "device; chaos ttylin" " sysbin; ttylin bin"
# IPLJOB
midas "sys;atsign ipl" "sysen2; ipljob"
# RIPDEV
midas "device;atsign r.i.p." "sysen2;ripdev"
# GMSGS
midas "sys2;ts gmsgs" "sysen1;gmsgs"
make_link "sys2;ts expire" " sys2;ts gmsgs"
make_link "dragon;daily expire" "sys2;ts gmsgs"
make_link "device;chaos gmsgs" "sys2;ts gmsgs"
# X, Y, Z
midas "sys1;ts x" "sysen2;x"
make_link "sys1;ts y" "sys1;ts x"
make_link "sys1;ts z" "sys1;ts x"
# LOADP
midas "sys2;ts loadp" "sysen1;loadp"
# ACCLNK
midas "sys2;ts acclnk" "sysen2;acclnk"
# MSPLIT
midas "sys2;ts msplit" "sysen2;msplit"
# CHATST
midas "sys2;ts chatst" "sysen3;chatst"
# CHASTA
midas "sys3;ts chasta" "chsgtv;chasta"
# CHATAB
midas "sys3;ts chatab" "sysen1;chatab"
# STYLOG
midas "sys2;ts stylog" "sysen1;stylog"
# COMIFY
midas "sys2;ts comify" "sysen3;comify"
# CRC
midas "sys3;ts crc" "gren; crc"
# TMPKIL
midas "sys2;ts tmpkil" "syseng;tmpkil"
make_link "dragon;hourly tmpkil" "sys2;ts tmpkil"
# WHAT
midas "sys2;ts what" "syseng;what"
# Build KCC support programs: EXECVT, GETSYM, and 20XCSV.
midas "sys2;ts execvt" "sysen3;execvt"
midas "kcc;ts getsym" "getsym"
midas "kcc;ts 20xcsv" "20xcsv"
# Run GETSYM to get all monitor symbols.
cwd "kcc"
respond "*" ":getsym\r"
expect ":KILL"
# UP
midas "sys1;ts up" "sysen1;up"
make_link "sys1;ts down" " sys1;ts up"
# UPTIME
midas "sysbin;uptime bin" "sysen1;uptime"
make_link "device;chaos uptime" "sysbin;uptime bin"
# SHUTDN
midas "sys3;ts shutdn" "bawden;shutdn"
# HEXIFY
midas "sys2;ts hexify" "sysen3;hexify"
# PHOTO
midas "sys2;ts photo" "sysen2;photo"
# TYPE8
midas "sys;ts type8" "sysen3;type8"
# USQ
midas "sys2;ts usq" "sysen3;usq"
make_link "sys2;ts typesq" "sys2;ts usq"
# SCRAM
midas "sys2;ts scram" "rwk;scram"
# HOST
midas "sys3;ts host" "sysnet;host"
# EXPN/VRFY
midas "sys3;ts expn" "sysnet;expn"
make_link "sys3;ts vrfy" "sys3;ts expn"
# MUSCOM
midas "sysbin;" "syseng; muscom"
make_link "sys1;ts muscom" " sysbin; muscom bin"
# BIG
oomidas 77 "SYSBIN;" "SYSENG; BIG"
oomidas 77 "SYSBIN;" "PRS; SUDSUD"
oomidas 77 "SYSBIN;" "PRS; PLOT"
oomidas 77 "SYSBIN;" "PRS; FIGS"
oomidas 77 "SYSBIN;" "PRS; SMOLDM"
respond "*" ":stink\r"
respond "\n" "msysbin;sudsud\033l\033\033"
respond "\n" "mbig\033l\033\033"
respond "\n" "mfigs\033l\033\033"
respond "\n" "mplot\033l\033\033"
respond "\n" "msmoldm\033l\033\033"
respond "\n" "jbig\033?d\033\033"
respond "\n" "\033y"
respond " " "sys1; ts big\r"
respond "*" ":kill\r"
respond "*" ":muscom\r"
respond "MUSCOM" "PDP10;MUSIC GRYMG_DECUS;GRYMG MUS\r"
expect "$^X."
respond "*" ":muscom\r"
respond "MUSCOM" "PDP10;MUSIC HDN_DECUS;HDN MUS\r"
expect "$^X."
respond "*" ":muscom\r"
respond "MUSCOM" "PDP10;MUSIC JSBI13_DECUS;JSBI13 MUS\r"
expect "$^X."
respond "*" ":muscom\r"
respond "MUSCOM" "PDP10;MUSIC JSBI1_DECUS;JSBI1 MUS\r"
expect "$^X."
respond "*" ":muscom\r"
respond "MUSCOM" "PDP10;MUSIC MIDNIT_DECUS;MIDNIT MUS\r"
expect "$^X."
respond "*" ":muscom\r"
respond "MUSCOM" "PDP10;MUSIC OLITTL_DECUS;OLITTL MUS\r"
expect "$^X."
respond "*" ":muscom\r"
respond "MUSCOM" "PDP10;MUSIC PAPER_DECUS;PAPER MUS\r"
expect "$^X."
respond "*" ":muscom\r"
respond "MUSCOM" "PDP10;MUSIC SILVER_DECUS;SILVER MUS\r"
expect "$^X."
respond "*" ":muscom\r"
respond "MUSCOM" "PDP10;MUSIC WINCH_DECUS;WINCH MUS\r"
expect "$^X."
# WHOLIN
midas "sys2;ts wholin" "sysen2;wholin"
# LINE
midas "sys2;ts line" "rab;line"
# WHOIML
midas "sysbin;" "sysen1; whoiml" {
respond "FILE:" "whoiml\r"
respond "FILE:" "sys2\r"
}
purify whoiml "sysbin; whoiml bin" {
respond "*" "start1\033b\033g"
expect ">>"
respond " " ":vk\r"
}
# VTTIME
midas "sys1;ts vttime" "rvb;vttime"
# APLCLK
midas "sys3;ts aplclk" "music1; vtclk"
# DEVICE; CHAOS TIME
midas "device;chaos time" "syseng;ctimsr"
# DEVICE; CHAOS SEND
midas "sysbin;" "sysnet;senver"
make_link "device;chaos send" "sysbin;senver bin"
# Alternate DEVICE; CHAOS SEND
midas "sysbin;" "sysnet;sends"
#make_link "device;chaos send" "sysbin;senver bin"
# Chaosnet BABEL service.
midas "sysbin; babel" "dcp2; babel"
make_link "device;chaos babel" "sysbin; babel bin"
# Chaosnet HOSTAB service.
midas "sysbin;" "eak; chahtb"
make_link "device; chaos hostab" " sysbin; chahtb bin"
arpanet "rfc121" "sysbin; chahtb bin"
# Chaosnet 11LOAD service for booting MINITS.
midas "device; chaos 11load" "minits; 11load"
# OBS
midas "sys;ts obs" "bawden;obs"
# FED
midas "sys;ts fed" "sysen2;fed"
# XHOST
midas "sys2;ts xhost" "sysen3;xhost"
# FACTOR
midas "sys1;ts factor" "rz;factor"
# balanc
midas "sys3;ts balanc" "alan;balanc"
make_link "sys3;ts movdir" "sys3;ts balanc"
# scrmbl and unscr
midas "sys3;ts scrmbl" "ejs;scrmbl"
make_link "sys3;ts unscr" "sys3;ts scrmbl"
# ZOTZ
midas "ksc; ts zotz" "zotz"
respond "*" ":job maint\r"
# KA10 needs the .OLD files. KL10 and KS10 the newer.
translate_diagnostics
respond "*" ":load maint; part a\r"
respond "*" ":start\r"
respond "PARt a" "\032"
expect -re {>>|\)}
type ":kill\r"
# Test one-proceed.
midas "maint;ts 1proc" "1proc test"
respond "*" ":maint;1proc\r"
expect "SUCCESSFUL"
expect ":KILL"
# XXFILE
midas "sysbin;xxfile bin" "sysen1;xxfile"
purify xxfile "sysbin;xxfile bin" {
respond "*" "ttyop1\033b\033g"
expect ":PDUMP SYS2;TS XXFILE"
expect ">>"
respond " " ":vk\r"
}
# MSEND
midas "sysbin;" "sysen2;msend"
purify msend "sysbin;msend bin" {
respond "*" "ttyopn\033b\033g"
expect ">>"
respond " " ":vk\r"
}
# IMLOAD and IMTRAN
midas "sys1; ts imload" "syseng; imload"
make_link "sys1; ts imtran" " sys1; ts imload"
# UNTRAN
midas "imlac; ts untran" "untran"
# IMPRNT
midas "sys1; ts imprnt" "syseng; imprnt"
make_link "sys1; ts imprin" " sys1; ts imprnt"
make_link "sys1; ts ardprn" " sys1; ts imprnt"
make_link "sys1; ts tekprn" " sys1; ts imprnt"
# IMGOUT
midas "sys3; ts imgout" "cbf; imgout"
# LINES
midas "bkph; ts lines" "lines"
# Random TV experiments.
midas "bkph; ts bull" "bull"
midas "bkph; ts grade" "grade"
midas "bkph; ts circle" "loops circle"
midas "bkph; ts randy" "randy"
# BLKLDR, Imlac secondary block loader.
midas "sysbin;" "imsrc; blkldr"
# IMTRAN will put the file IMLAC; IMLAC BLKLDR first in its output.
# The BLKLDR file should say !blk ldr! on the first line.
respond "*" ":create imlac; imlac blkldr\r"
respond "help." "!blk ldr!\r\003"
respond "*" "imtran\033\013"
# The IMTRAN output is in block loader format, but the block loader
# itself is in the special TTY bootstrap format. Patch IMTRAN to not
# write flat data without blocks.
respond "@" "\032"
type "smalup+5/"
respond "EMIT2" "jfcl\r"
type "smalup+11/"
respond "EMIT4" "jfcl\r"
type "datlup+4/"
respond "EMIT4" "jfcl\r"
type "prgend/"
type "jrst prgen1+4\r"
type "\033p"
type "imlac; imlac blkldr_sysbin; blkldr bin\r"
respond "@" "\021"
expect ":KILL"
# SSV 22, Imlac scroll saver
omidas "sysbin;" "imsrc; ssv22"
respond "*" ":imtran\r"
respond "@" "imlac; ssv22 iml_sysbin; ssv22 bin\r"
respond "@" "\021"
expect ":KILL"
make_link "imlac; .prgm. normal" " imlac; ssv22 iml"
# Assemble SSV4.
midas "imlac; ts assv4" "assv4"
# SSV4, SSV for PDS-4.
respond "*" ":imlac;assv4\r"
respond "NUMBER" ">"
expect ":KILL"
respond "*" ":imtran\r"
respond "@" "imlac; ssv4 iml_imlac; ssv4b >\r"
respond "@" "\021"
# Maze War
midast "sysbin;" "imsrc; maze" {
respond "with ^C" "MOUSE==1\r\003"
respond "with ^C" "MOUSE==1\r\003"
}
respond "*" ":imtran\r"
respond "@" "imlac; m iml_sysbin; maze bin\r"
respond "@" "\021"
midas "sysbin;" "klh; mazser" {
respond "NPTCL=" "1\r"
respond "DEBUG=" "1\r"
respond "STATS=" "1\r"
}
purify maze "sysbin; mazser bin" {
respond "*" ":start init\r"
respond "M IML" "\r"
respond ":PDUMP" "games; ts maze\r"
}
# SWAR
midas "imlac;" "imsrc; swar" {
respond "INFINITE FUEL AND BULLETS VERSION?" "N\r"
}
respond "*" ":imtran\r"
respond "@" "imlac; swar iml_imlac; swar bin\r"
respond "@" "\021"
# PONG
midas "imlac;" "imsrc; pong"
respond "*" ":imtran\r"
respond "@" "imlac; pong iml_imlac; pong bin\r"
respond "@" "\021"
# CRASH, PDS-4 version
midas "imlac;" "imsrc; crash"
respond "*" ":imtran\r"
respond "@" "imlac; crash4 iml_imlac; crash bin\r"
respond "@" "\021"
# PDS-1 version
midast "imlac;" "imsrc; crash" {
respond "with ^C" "PDS4==0\r\003"
respond "with ^C" "PDS4==0\r\003"
}
respond "*" ":imtran\r"
respond "@" "imlac; crash iml_imlac; crash bin\r"
respond "@" "\021"
# The old CLIB has a UFA instruction which doesn't work on a KS10.
# Patch out the call to FIXIFY.
purify cc "c; ts cc" {
respond "*" "55107/"
respond "FIXIFY" "jfcl\r"
respond "UNPURE" ":corblk pure,55107\r"
respond "*" ":pdump c; ts cc\r"
}
# CLIB
cwd "clib"
midas "clib;" "c10cor cmid"
midas "clib;" "c10fo cmid"
midas "clib;" "c10int cmid"
midas "clib;" "c10mio cmid"
midas "clib;" "c10sys cmid"
midas "clib;" "alloc cmid"
midas "clib;" "blt cmid"
midast "clib;" "cfloat cmid" clib_switches
midas "clib;" "random cmid"
midas "clib;" "string cmid"
midas "clib;" "uuoh cmid"
midast "clib;" "c10run cmid" clib_switches
respond "*" ":cc c10exp.c\r"
respond "*" ":cc c10fd.c\r"
respond "*" ":cc c10fil.c\r"
respond "*" ":cc c10fnm.c\r"
respond "*" ":cc c10io.c\r"
respond "*" ":cc c10map.c\r"
respond "*" ":cc c10pag.c\r"
# C10SFD is obsolete, but used by R.
respond "*" ":cc c10sfd.c\r"
respond "*" ":cc c10tty.c\r"
respond "*" ":cc ac.c\r"
respond "*" ":cc apfnam.c\r"
respond "*" ":cc atoi.c\r"
respond "*" ":cc cprint.c\r"
respond "*" ":cc date.c\r"
respond "*" ":cc fprint.c\r"
respond "*" ":cc match.c\r"
respond "*" ":cc pr60th.c\r"
respond "*" ":cc stkdmp.c\r"
# Expect ZMAIN to be undefined, and three symbols in DATE.
respond "*" ":stinkr mkclib\r"
respond "*" ":cc maklib.c\r"
respond "*" ":cc c10job.c\r"
respond "*" ":stinkr maklib\r"
respond "*" ":maklib\r"
expect ":MIDAS"
expect ":KILL"
respond "*" ":delete c; \[crel\] 16\r"
# CC
cwd "c"
respond "*" ":copy ts cc, ts occ\r"
respond "*" ":cc cc.>\r"
expect ":KILL"
respond "*" ":cc c5.c\r"
expect ":KILL"
respond "*" ":cc c93.c\r"
expect ":KILL"
respond "*" ":cc clib/c10exc.c\r"
expect ":KILL"
respond "*" ":stinkr cc\r"
expect ":KILL"
# GT
respond "*" ":c;occ g0.c g1.c g2.c g3.c g4.c g5.c c25.c\r"
expect ":KILL"
respond "*" ":stinkr gt\r"
# Update compiler files with information from machine description.
respond "*" ":gt pdp10.gt\r"
respond "*" ":teco\r"
# Load macro file and store it in q-register x.
respond "&" "ERinstll teco\033 @Y HXx\033\033"
# Load output file, and call the macro in x.
respond "&" "ERpdp10 gtout\033 @Y Mx\033\033"
respond "&" "\003"
respond "*" ":kill\r"
# Run Yacc to generate parser.
respond "*" ":c;yacc c/c.grammr\r"
expect ":KILL"
respond "*" ":teco\r"
respond "&" "ERyinstl teco\033 @Y HXx Mx\033\033"
respond "&" "\003"
respond "*" ":kill\r"
# C compiler, parser.
respond "*" ":c;occ c1.c c21.c c22.c c23.c c24.c c25.c c26.c\r"
expect ":KILL"
respond "*" ":c;occ c91.c c95.c\r"
expect ":KILL"
respond "*" ":stinkr lp\r"
expect ":KILL"
respond "*" ":delete c; ts occ\r"
# C compiler, code generator.
respond "*" ":cc c31.c c32.c c33.c c34.c c35.c\r"
expect ":KILL"
respond "*" ":cc c95.c\r"
expect ":KILL"
respond "*" ":stinkr c\r"
expect ":KILL"
# C compiler, macro expander.
respond "*" ":cc c41.c c42.c c43.c\r"
expect ":KILL"
respond "*" ":stinkr m\r"
expect ":KILL"
# Test C compiler.
respond "*" ":cc testc.c\r"
expect ":KILL"
respond "*" ":stinkr testc\r"
expect ":KILL"
respond "*" ":testc\r"
expect "Done."
# Revert patch to [CLIB] 16 to avoid use of the FIX instruction on a KA10.
patch_clib_16
# C library for drawing on a TV display.
cwd "clib"
respond "*" ":cc tv.>\r"
expect ":KILL"
# TJ6
midas "sysbin;" "tj6;tj6"
purify tj6 "sysbin; tj6 bin" {
respond "*" "purify\033g"
respond "DSK: SYS; TS NTJ6" "\r"
}
make_link "sys; ts tj6" " sys; ts ntj6"
# Old TJ6.
midas "sys2; ts otj6" "tj6; otj6"
# Alan Snyder's R typesetting language.
cwd "r"
respond "*" ":cc rcntrl rdev rexpr rfile rfonts richar ridn rin rin1 rin2\r"
respond "*" ":cc rits rline rlpt rmain rmisc rout rreadr rreg rreq1 rreq2\r"
respond "*" ":cc rreq3 rtext rtoken rtrap rvaria rxgp\r"
respond "*" ":stinkr r\r"
make_link "sys3; ts r" " r; ts r30"
# sys2; ts rr -> r; ts rr
# .info.; r info -> r; r info
# .info.; r recent -> r; r recent
# r; r macros -> r; r30 rmac
# r; rmacro 1 -> r; r macros
# sys3; ts itype -> r; ts itype
# Binary patch Lisp image to work on ITS not named AI, ML, MC, or DM.
# This is for Bolio.
purify purqio "sys; purqio 2138" {
respond "*" "udirset+20/"
# Cross fingers, nop out valret, hope for best!
respond ".VALUE" "JFCL\r"
respond "UNPURE" ":corblk pure .\r"
respond "*" ":pdump sys; purqio 2138\r"
}
proc build_c_program {input output {libs {}}} {
respond "*" ":cc $input\r"
expect ":KILL"
respond "*" ":stinkr\r"
respond "=" "x c/clib\r"
foreach lib $libs {
respond "=" "l $lib\r"
}
respond "=" "l $input.stk\r"
respond "=" "o $output\r"
# Use the ^_ octal-input feature of ITS to send \0. The space
# ends the octal digits without ITS passing it through to the
# program. Using octal input works around Mac OS X and BSD which
# require literal \0s to be doubled.
respond "=" "\0370 "
expect ":KILL"
}
# OINIT
cwd "c"
build_c_program "sysen2/oinit" "sys3/ts.oinit"
# RALP
build_c_program "cprog/ralp" "sys2/ts.ralp"
build_c_program "cprog/shell" "sys2/ts.shell" {clib/c10job.stk}
build_c_program "cprog/search" "sys2/ts.search"
build_c_program "cprog/ipak" "sys2/ts.ipak"
build_c_program "cprog/rstat" "cprog/ts.rstat"
# Versatec spooler
# This has some harmless unresolved symbols (FOO, XE4).
midas "sys3;ts versa" "dcp; versa"
# make_link "channa; rakash v80spl" "sys3; ts versa"
# SCAN
midas "sysbin;" "sysen1; scan"
purify scan "sysbin; scan bin" {
respond "*" "purify\033g"
respond "*" ":pdump sys3; ts scan\r"
}
# DDT subroutines
midas "sys3;ts cmd" "dcp; cmd"
# XGP and GLP
midas "sysbin;xgp bin" "sysen2;xqueue"
purify xgp "sysbin;xgp bin" {
respond "*" "debug/0\r"
type ":pdump sys;ts xgp\r"
}
midast "sysbin;glp bin" "sysen2;xqueue" { respond "with ^C" "GLP==1\r\003" }
purify glp "sysbin;glp bin" {
respond "*" "debug/0\r"
type ":pdump sys2;ts glp\r"
}
# XGPDEV and GLPDEV
midas "device;jobdev xgp" "sysen2;xgpdev"
midast "device;jobdev glp" "sysen2;xgpdev" {
respond "with ^C" "GLP==1\r\003"
}
# GTLOAD, load programs into GT40.
midas "sys1; ts gtload" "syseng; gtload"
# RUG, PDP-11 debugger.
cwd "pdp11"
palx "pdp11;" "rug" {
respond "?" "2\r"
respond "?" "100000\r"
respond "?" "1\r"
respond "?" "1\r"
}
# URUG, GT40 debugger.
palx "sysbin;" "sysen2;urug" {
respond "=YES" "1\r"
respond "37000" "37000\r"
}
# GT40 Lunar Lander.
palx "gt40;" "gt40;gtlem"
# MINITS
cwd "mits.s"
palx "test" "config" {
respond ":::" "777\r"
}
# MINITS boot ROM for an Interlan network interface.
cwd "mits.b"
palx "mits.b;" "bootil" {
respond "Interlan CSR?" "0\r"
respond "Chaos address of Interlan board?" "0\r"
expect "Which set of downloading hosts?"
respond ")" "0\r"
respond "Start address?" "0\r"
respond "Do you want a power up/boot support" "0\r"
respond "Boot PROM mapping kludge?" "0\r"
respond "Start of temporary data storage?" "150000\r"
}
# ITS universal file.
cwd "decsys"
macro10 "sits.unv" "sits.mac"
# Datacomputer file transfer.
cwd "mrc"
macro10 "dftp" "dftp"
linker "dftp"
decuuo "sys1; ts dftp"
# PDP-11 Lisp.
palx "rms;" "lisp11" {
respond "System (RANDOM, SIMULATOR, LOGO, MATH, or STANFORD)?" "SIMULATOR\r"
}
# Logo RUG. STUFF prefers it to be RUG; AR BIN.
palx "rug;" "ar" {
# We'll just do the Logo PDP-11/45.
respond "COMPUTER=" "1\r"
}
# PUNCH, punch out paper tapes in the Logo RUG format.
midas "rug; ts punch" "punch"
# LODER, PDP-11 file transfer.
midas "rug;" "loder"
make_link "sys; ts nloder" " rug; loder bin"
make_link "sys1; ts mloder" " rug; loder bin"
# SITS.
cwd "sits"
palx "sits;" "sits"
# Salvager for the SITS file system.
palx "sits;" "salv"
# System Sphere for SITS.
palx "sits;" "sysspr"
# DDT for SITS.
palx "sits;" "ddt"
# Font loader daemon for SITS.
palx "sits;" "fnt"
# INQUIR for SITS.
palx "sits;" "inquir"
# DIRED for SITS.
palx "sits;" "dired"
# TECO for SITS.
cwd "rjl"
palx "rjl;" "teco"
# SLOGO, 11LOGO for SITS.
cwd "nlogo"
palx "slogo" "@slogo"
# HLOGO, "Hal hack" 11LOGO.
palx "hlogo" "@hlogo"
# ITSCOM, ITS-SITS communication.
cwd "bee"
palx "bee;" "itscom"
# ITS, SITS file transfer.
cwd "gld"
palx "gld;" "its"
# TORTIS
omidas "radia;" "tortis"
# BBN Logo
cwd "bbn"
macro10 "logo" "logo"
loader "logo"
decuuo "bbn; ts logo"
# CLOGO
midas "sys; ts clogo" "rjl; logo" {
respond "STANDARD=" "0\r"
respond "TBOX=" "0\r"
respond "TURTLE=" "1\r"
respond "PHYSICS=" "0\r"
respond "LFLAG=" "0\r"
respond "OLDMUSIC=" "0\r"
respond "DFLAG=" "1\r"
}
# NVMIDS, Nova assembler
cwd "nova"
oomidas 73 "TS NVMIDS" "NVMIDS >"
# Nova programs.
respond "*" ":nvmids\r"
expect "NVMDS"
respond "\n" ".LODEE\r"
expect ":KILL"
respond "*" ":nvmids\r"
expect "NVMDS"
respond "\n" "DEBUG\r"
expect ":KILL"
respond "*" ":nvmids\r"
expect "NVMDS"
respond "\n" "DISPLA\r"
expect ":KILL"
respond "*" ":nvmids\r"
expect "NVMDS"
respond "\n" "NDTEST\r"
expect ":KILL"
respond "*" ":nvmids\r"
expect "NVMDS"
respond "\n" "NOVTEN\r"
expect ":KILL"
respond "*" ":nvmids\r"
expect "NVMDS"
respond "\n" "PNOVCN\r"
expect ":KILL"
respond "*" ":nvmids\r"
expect "NVMDS"
respond "\n" "TIME MACHIN\r"
expect ":KILL"
# 11LOGO
cwd "11logo"
palx "/H/M/CL BIN,N CREF" "SYSTEM,TYI,READ,EVAL,TURTLE,ZEND" {
respond "ASSSW=" "0\r"
}
# Apple II Logo
cwd "aplogo"
respond "*" ":cross\r"
respond "*" "logo/ptp,logo=logo\r"
expect "Core used"
respond "*" "\003"
respond "*" ":kill\r"
# Atari 800 terminal emulator Chameleon by Jack Palevich.
cwd "atlogo"
respond "*" ":cross\r"
respond "*" "supdup,supdup=supdup/m65\r"
expect "Core used"
respond "*" "\003"
respond "*" ":kill\r"
# TENTH, toy Forth.
midast "aap; ts tenth" "tenth" {
respond "end input with ^C" "TS==1\r"
respond "\n" "KS==0\r"
respond "\n" "\003"
}
# GEORGE
midas "sys3;ts george" "syseng;george"
# MONIT
# The ERROR lines printed during assembly are locations of unlikely
# runtime errors (e.g. not being able to open TTY:).
midas "sys;ts monit" "dmcg;monit"
# BANNER
midas "sys3;ts banner" "sysen2; banner"
# IBMASC
midas "sys3;ts ibmasc" "sysen1;ibmasc"
# NEWDEC
midas "sys3;ts newdec" "sysen1;newdec"
# TBMOFF
midas "sys; ts tbmoff" "cstacy; tbmoff"
# UPTINI
midas "ejs;ts uptini" "uptini"
# CHATER
midas "sys1;ts chater" "gren;coms"
# STINK 121T, used to build Muddle and some old programs
midas "mudsys;ts stink" "sysen2;stink 121t"
# Move hello world xfiles into an archive.
cwd "hello"
respond "*" ":move dsk:c xfile, ar:\r"
respond "*" ":move dsk:clu xfile, ar:\r"
respond "*" ":move dsk:clu xxfile, ar:\r"
respond "*" ":move dsk:fail xfile, ar:\r"
respond "*" ":move dsk:fail xxfile, ar:\r"
respond "*" ":move dsk:fortra xfile, ar:\r"
respond "*" ":move dsk:fortra xxfile, ar:\r"
respond "*" ":move dsk:lisp xfile, ar:\r"
respond "*" ":move dsk:lisp xxfile, ar:\r"
respond "*" ":move dsk:macro xfile, ar:\r"
respond "*" ":move dsk:macro xxfile, ar:\r"
respond "*" ":move dsk:midas xfile, ar:\r"
respond "*" ":move dsk:muddle xfile, ar:\r"
respond "*" ":move dsk:muddle xxfile, ar:\r"
respond "*" ":move dsk:palx xfile, ar:\r"
respond "*" ":move dsk:palx xxfile, ar:\r"
respond "*" ":rename dsk:ar >, ar xfiles\r"