90 {
"cpu-functional",
"CPU Functional Test",
91 "SAT step 1: the functional CPU deck staged through the scatter-image path.",
97 {
"card-reader-a",
"Reading Test Channel A",
103 {
"printer-mechanical",
"Printer Mechanical Test",
104 "SAT step 3: the line-printer deck staged through the scatter-image path, "
105 "with the required center card synthesized into the startup input buffer.",
111 {
"control-program-cr",
"Control Program CR",
112 "Control-program utility deck with the serial Hollerith loader kept.",
118 {
"ls600-controller-sat",
"LS600 Controller SAT Batch",
119 "Sequencer Program followed by LS600 Controller Test, prepared per the SAT notes.",
125 {
"ls600-transcoder-sat",
"LS600 Transcoder SAT Batch",
126 "Sequencer Program followed by LS600 Transcoder Test, prepared per the SAT notes.",
132 {
"ls600-doe-sat",
"LS600 D.O.E. SAT Batch",
133 "Sequencer Program followed by the LS600 D.O.E. deck, prepared per the SAT notes.",
143 int limit = ncards < 5 ? ncards : 5;
145 for (
int i = 1; i < limit; i++) {
150 return (ncards > 1) ? 1 : 0;
154 int first,
int last_inclusive)
156 for (
int i = first; i <= last_inclusive; i++) {
159 if (ncols <= 0 || !cols)
220 if (strcmp(def->
info.
id,
"printer-mechanical") == 0) {
225 for (
size_t i = 0; i < npatches; i++)
226 image[patches[i].
addr] = patches[i].
value;
231 if (!note || note_sz == 0)
251 return def ? &def->
info : NULL;
255 unsigned char *image,
256 unsigned *lo,
unsigned *hi, uint16_t *entry,
257 char *note,
size_t note_sz)
264 !root || !image || !lo || !hi || !entry || def->
nsources != 1)
267 snprintf(path,
sizeof(path),
"%s/%s", root, def->
sources[0].
file);
280 const char *out_path,
281 char *note,
size_t note_sz)
294 for (
int i = 0; i < def->
nsources; i++) {
295 snprintf(path,
sizeof(path),
"%s/%s", root, def->
sources[i].
file);
const uint16_t * cap_card_columns(const struct cap_deck *d, int i)
int cap_append_card(struct cap_deck *d, const uint16_t *cols, int ncols)
int cap_card_ncols(const struct cap_deck *d, int i)
struct cap_deck * cap_create(void)
int cap_num_cards(const struct cap_deck *d)
void cap_free(struct cap_deck *d)
struct cap_deck * cap_load(const char *path)
int cap_load_scattered(const char *path, int mode, unsigned char *image, unsigned *lo, unsigned *hi)
int cap_save(const struct cap_deck *d, const char *path)
static const struct sat_batch_def * sat_batch_def_find(const char *id)
const struct sat_batch_info * sat_batch_find(const char *id)
int sat_batch_prepare_image(const char *root, const char *id, unsigned char *image, unsigned *lo, unsigned *hi, uint16_t *entry, char *note, size_t note_sz)
static const struct sat_source src_printer_mech[]
static const struct sat_batch_def sat_batches[]
@ SAT_SRC_TRIM_TITLE_SUMMARY
@ SAT_SRC_SERIAL_LOADER_PLUS_BODY
static const struct sat_image_patch printer_mech_center_card[]
static const struct sat_source src_ls600_controller[]
static const struct sat_source src_control_program[]
int sat_batch_count(void)
static void sat_apply_image_patches(const struct sat_batch_def *def, unsigned char *image)
static const struct sat_source src_ls600_doe[]
static void sat_note(char *note, size_t note_sz, const struct sat_batch_def *def)
const struct sat_batch_info * sat_batch_info_at(int idx)
static const struct sat_source src_cpu_functional[]
static const struct sat_source src_ls600_transcoder[]
static int row8_loader_card(const struct cap_deck *deck)
static int append_card_range(struct cap_deck *out, const struct cap_deck *src, int first, int last_inclusive)
int sat_batch_prepare_deck(const char *root, const char *id, const char *out_path, char *note, size_t note_sz)
static int append_source(struct cap_deck *out, const char *path, enum sat_source_op op)
static const struct sat_source src_reader_a[]
struct sat_batch_info info
const struct sat_source * sources
enum sat_batch_launch launch