t_stat my_load (FILE *fileref, char *cptr, char *fnam) { char line[150], *c; int iaddr = -1, runaddr = -1, val, nwords; while (fgets(line, sizeof(line), fileref) != NULL) { for (c = line; *c && *c <= ' '; c++) /* find first nonblank */ ; if (*c == '\0' || *c == '#' || *c == '/' || *c == ';') continue; /* empty line or comment */ if (*c == '@') { /* set load address */ if (sscanf(c+1, "%x", &iaddr) != 1) return SCPE_FMT; } else if (*c == '=') { if (sscanf(c+1, "%x", &runaddr) != 1) return SCPE_FMT; } else if (*c == 's' || *c == 'S') { if (sscanf(c+1, "%x", &val) != 1) return SCPE_FMT; CES = val & 0xFFFF; /*preload console entry switches */ } else if (*c == 'z' || *c == 'Z') { if (sscanf(c+1, "%x", &nwords) != 1) return SCPE_FMT; if (iaddr == -1) return SCPE_FMT; while (--nwords >= 0) { WriteW(iaddr, 0); iaddr++; } } else if (strchr("0123456789abcdefABCDEF", *c) != NULL) { if (sscanf(c, "%x", &val) != 1) return SCPE_FMT; if (iaddr == -1) return SCPE_FMT; WriteW(iaddr, val); /*store data */ iaddr++; } else return SCPE_FMT; /*unexpected data */ } if (runaddr != -1) IAR = runaddr; return SCPE_OK; }
t_stat vax780_fload (int32 flag, char *cptr) { char gbuf[CBUFSIZE]; uint16 file_name[3], blkbuf[BLK_SIZE]; t_stat r; uint32 i, j, start, size, origin; if ((fl_unit.flags & UNIT_ATT) == 0) /* floppy attached? */ return SCPE_UNATT; if (*cptr == 0) return SCPE_2FARG; cptr = get_glyph (cptr, gbuf, 0); /* get file name */ if (!rtfile_parse (gbuf, file_name)) /* legal file name? */ return SCPE_ARG; if ((size = rtfile_lookup (file_name, &start)) == 0) /* file on floppy? */ return SCPE_ARG; if (*cptr) { /* origin? */ origin = (uint32) get_uint (cptr, 16, MEMSIZE, &r); if ((r != SCPE_OK) || (origin & 1)) /* must be even */ return SCPE_ARG; } else origin = 512; /* no, use default */ for (i = 0; i < size; i++) { /* loop thru blocks */ if (!rtfile_read (start + i, 1, blkbuf)) /* read block */ return SCPE_FMT; for (j = 0; j < BLK_SIZE; j++) { /* loop thru words */ if (ADDR_IS_MEM (origin)) WriteW (origin, blkbuf[j]); else return SCPE_NXM; origin = origin + 2; } } return SCPE_OK; }
bool OutStream::WriteAggregateW (int numElements, const Vector3f* data) { return WriteW(3*numElements, (const float*)data); }
bool OutStream::WriteAggregateW (int numElements, const HQuaternion* data) { return WriteW(4*numElements, (const float*)data); }
bool OutStream::WriteAggregateW (int numElements, const HMatrix* data) { return WriteW(16*numElements, (const float*)data); }
bool OutStream::WriteAggregateW (int numElements, const Float2* data) { return WriteW(2*numElements, (const float*)data); }