コード例 #1
0
ファイル: plsa.cpp プロジェクト: supernan/plsa
void nlp::Plsa::save_args(std::string &path)
{
	std::string term_path = path + "/term_probs";
	std::string doc_path = path + "/doc_probs";

	std::ofstream term_out(term_path.c_str());
	std::ofstream doc_out(doc_path.c_str());

	for (int i = 0; i < _terms_nums; i++)
	{
		term_out<<i<<" ";
		for (int k = 0; k < _topics_nums; k++)
		{
			term_out<<_term_probs[i][k]<<" ";
		}
		term_out<<std::endl;
	}
	for (int i = 0; i < _docs_nums; i++)
	{
		doc_out<<i<<" ";
		for (int k = 0; k < _topics_nums; k++)
		{
			doc_out<<_doc_probs[i][k]<<" ";
		}
		doc_out<<std::endl;
	}
	term_out.close();
	doc_out.close();
}
コード例 #2
0
ファイル: term.c プロジェクト: litcave/neatvi
void term_room(int n)
{
	char cmd[16];
	if (n < 0)
		sprintf(cmd, "\33[%dM", -n);
	if (n > 0)
		sprintf(cmd, "\33[%dL", n);
	if (n)
		term_out(cmd);
}
コード例 #3
0
ファイル: util.C プロジェクト: FHilty/moose
void
DIFF_OUT(std::ostringstream & buf, trmclr::Style color)
{
  if (term_out())
  {
    std::cout << color << buf.str() << '\n' << trmclr::normal;
  }
  else
  {
    std::cout << buf.str() << '\n';
  }
}
コード例 #4
0
ファイル: util.C プロジェクト: FHilty/moose
void
DIFF_OUT(const char * buf, trmclr::Style color)
{
  if (term_out())
  {
    std::cout << color << buf << '\n' << trmclr::normal;
  }
  else
  {
    std::cout << buf << '\n';
  }
}
コード例 #5
0
ファイル: term.c プロジェクト: litcave/neatvi
void term_pos(int r, int c)
{
	char buf[32] = "\r";
	if (c < 0)
		c = 0;
	if (c >= xcols)
		c = cols - 1;
	if (r < 0)
		sprintf(buf, "\r\33[%d%c", abs(c), c > 0 ? 'C' : 'D');
	else
		sprintf(buf, "\33[%d;%dH", r + 1, c + 1);
	term_out(buf);
}
コード例 #6
0
ファイル: exor.c プロジェクト: jhallen/exorsim
void jump(unsigned short addr)
{
        if (swtpc) {
                pc = addr;
                return;
        } else {
                switch (addr) {
/* Too many programs access ACIA directly */
#if 0
                        case 0xF9CF: case 0xF9DC: /* Output a character */ {
                                term_out(acca);
                                /* putchar(acca); fflush(stdout); */
                                c_flag = 0; /* Carry is error status */
                                break;
                        }
#endif
                        case 0xFA8B: /* Input a character */ {
                                acca = term_in();
                                if (!mem[0xFF53]) { /* Echo */
                                        term_out(acca);
                                        /* putchar(c);
                                        fflush(stdout); */
                                } else {
                                        mem[0xFF53] = 0;
                                }
                                c_flag = 0; /* No error */
                                break;
                        }
                        case 0xE800: /* OSLOAD (no modified parms) */ {
                                printf("\nOSLOAD...\n");
                                getsect(0, 0x0020, 23, 128);
                                getsect(0, 0x0020 + 0x0080, 24, 128);
                                pc = 0x0020;
                                sp = 0x00FF;
                                return;
                        } case 0xE822: /* FDINIT (no modified parms) */ {
                                c_flag = 0;
                                break;
                        } 
#if 0
                          case 0xF853: /* CHKERR */ {
                                break;
                        } case 0xE85A: /* PRNTER */ {
                                break;
                        } 
#endif
                          case 0xE869: /* READSC (read full sectors) */ {
                                mem[LSCTLN] = 128;
                        } case 0xE86D: /* READPS (read partial sectors) (FDSTAT, carry, sides) */ {
                                int x;
                                int n = mem[CURDRV];
                                int first = (mem[STRSCT] << 8) + mem[STRSCT + 1];
                                int num = (mem[NUMSCT] << 8) + mem[NUMSCT + 1];
                                int addr = (mem[CURADR] << 8) + mem[CURADR + 1];
                                int last = mem[LSCTLN];
                                if (trace_disk) printf("Read sectors: drive=%d, first=%d, number=%d, addr=%x, size of last=%d\n", n, first, num,
                                       addr, last);
                                if (check_drive(n))
                                        break;
                                for (x = 0; x != num; ++x) {
                                        if (check_sect(n, first + x))
                                                goto oops;
                                        getsect(n, addr + 128 * x, first + x, ((x + 1 == num) ? mem[LSCTLN] : 128));
                                }
                                mem[FDSTAT] = ER_NON;
                                if (drive[n].tracks == 77)
                                        mem[SIDES] = 0x80;
                                else
                                        mem[SIDES] = 0;
                                c_flag = 0;
                                oops: break;
                        } case 0xE86F: /* RDCRC */ {
                                if (trace_disk) printf("RDCRC\n");
                                int x;
                                int n = mem[CURDRV];
                                int first = (mem[STRSCT] << 8) + mem[STRSCT + 1];
                                int num = (mem[NUMSCT] << 8) + mem[NUMSCT + 1];
                                int addr = (mem[CURADR] << 8) + mem[CURADR + 1];
                                int last = mem[LSCTLN];
                                if (trace_disk) printf("RDCRC: drive=%d, first=%d, number=%d, addr=%x, size of last=%d\n", n, first, num,
                                       addr, last);
                                if (check_drive(n))
                                        break;
                                for (x = 0; x != num; ++x) {
                                        if (check_sect(n, first + x))
                                                goto oops;
                                }
                                mem[FDSTAT] = ER_NON;
                                if (drive[n].tracks == 77)
                                        mem[SIDES] = 0x80;
                                else
                                        mem[SIDES] = 0;
                                c_flag = 0;
                                break;
                        } case 0xE875: /* RESTOR */ {
                                int n = mem[CURDRV];
                                if (trace_disk) printf("RESTOR\n");
                                if (check_drive(n))
                                        break;
                                mem[FDSTAT] = ER_NON;
                                if (drive[n].tracks == 77)
                                        mem[SIDES] = 0x80;
                                else
                                        mem[SIDES] = 0;
                                c_flag = 0;
                                break;
                        } case 0xE878: /* SEEK */ {
                                int n = mem[CURDRV];
                                int first = (mem[STRSCT] << 8) + mem[STRSCT + 1];
                                if (trace_disk) printf("SEEK\n");
                                if (check_drive(n))
                                        break;
                                if (check_sect(n, first))
                                        break;
                                if (drive[n].tracks == 77)
                                        mem[SIDES] = 0x80;
                                else
                                        mem[SIDES] = 0;
                                c_flag = 0;
                                break;
                        } case 0xE872: /* RWTEST */ {
                                if (trace_disk) printf("RWTEST\n");
                        } case 0xE87B: /* WRTEST */ {
                                unsigned char buf[128];
                                int x;
                                int n = mem[CURDRV];
                                int first = (mem[STRSCT] << 8) + mem[STRSCT + 1];
                                int num = (mem[NUMSCT] << 8) + mem[NUMSCT + 1];
                                int addr = (mem[CURADR] << 8) + mem[CURADR + 1];
                                int last = mem[LSCTLN];
                                if (trace_disk) printf("WRTEST\n");
                                if (check_drive(n))
                                        break;
                                for (x = 0; x != 128; x += 2) {
                                        buf[x] = mem[addr];
                                        buf[x + 1] = mem[addr + 1];
                                }
                                for(x=0; x != num; ++x) {
                                        if (check_sect(n, first + x))
                                                goto oops;
                                        if (trace_disk) printf("Wrtest sector %d drive %d\n", first + x, n);
                                        fseek(drive[n].f, (first + x) * 128, SEEK_SET);
                                        fwrite(buf, 128, 1, drive[n].f);
                                        fflush(drive[n].f);
                                }
                                c_flag = 0;
                                if (drive[n].tracks == 77)
                                        mem[SIDES] = 0x80;
                                else
                                        mem[SIDES] = 0;
                                mem[FDSTAT] = ER_NON;
                                break;
                        } case 0xE87E: /* WRDDAM */ {
                                int n = mem[CURDRV];
                                printf("\r\nFloppy error: we do not support WRDDAM\n");
                                c_flag = 1;
                                if (drive[n].tracks == 77)
                                        mem[SIDES] = 0x80;
                                else
                                        mem[SIDES] = 0;
                                mem[FDSTAT] = ER_WRT;
                                break;
                        } case 0xE884: /* WRITSC */ {
                                if (trace_disk) printf("WRITSC\n");
                        } case 0xE881: /* WRVERF */ {
                                int x;
                                int n = mem[CURDRV];
                                int first = (mem[STRSCT] << 8) + mem[STRSCT + 1];
                                int num = (mem[NUMSCT] << 8) + mem[NUMSCT + 1];
                                int addr = (mem[CURADR] << 8) + mem[CURADR + 1];
                                int last = mem[LSCTLN];
                                if (trace_disk) printf("WRVERF: drive=%d, first=%d, number=%d, addr=%x, size of last=%d\n", n, first, num,
                                       addr, last);
                                if (check_drive(n))
                                        break;
                                for(x=0; x != num; ++x) {
                                        if (check_sect(n, first + x))
                                                goto oops;
                                        putsect(n, addr + 128 * x, first + x, 128);
                                }
                                if (drive[n].tracks == 77)
                                        mem[SIDES] = 0x80;
                                else
                                        mem[SIDES] = 0;
                                mem[FDSTAT] = ER_NON;
                                c_flag = 0;
                                break;
                        } case 0xE887: /* CLOCK */ {
                                printf("Floppy: Someone called CLOCK?\n");
                                c_flag = 0;
                                break;
                        } case 0xEBC0: /* LPINIT */ {
                                if (trace_disk) printf("LPINIT\n");
                                c_flag = 0;
                                break;
                        } case 0xEBCC: /* LIST */ {
                                if (trace_disk) printf("LIST\n");
                                term_out(acca);
                                /* putchar(acca); fflush(stdout); */
                                c_flag = 0;
                                break;
                        } case 0xEBE4: /* LDATA */ {
                                if (trace_disk)printf("LDATA\n");
                                while (mem[ix] != 4) {
                                        term_out(mem[ix]);
                                        /* putchar(mem[ix]); */
                                        ++ix;
                                }
                                term_out('\r');
                                term_out('\n');
                                /* printf("\n"); */
                                c_flag = 0;
                                break;
                        } case 0xEBF2: /* LDATA1 */ {
                                if (trace_disk) printf("LDATA1\n");
                                while (mem[ix] != 4) {
                                        /* putchar(mem[ix]); */
                                        term_out(mem[ix]);
                                        ++ix;
                                }
                                /* fflush(stdout); */
                                c_flag = 0;
                                break;
                        } default: {
                                pc = addr;
                                return;
                        }
                }
                simulated(addr);
                addr = pull2();
                jump(addr);
        }
}
コード例 #7
0
ファイル: exor.c プロジェクト: jhallen/exorsim
void mwrite(unsigned short addr, unsigned char data)
{
        if (swtpc) {
                /* Do not write to ROM */
                if (addr >= 0xe000 && addr < 0xe400)
                        return;
                mem[addr] = data;
                switch (addr) {
                        case 0x8018: { /* Command */
                                switch (data & 0xF0) {
                                        case 0x00: { /* Restore */
                                                /* printf("FD1771 restore!\n"); */
                                                cur_track = 0;
                                                cur_sect = 1;
                                                cur_dir = 1;
                                                if (drive[cur_drive].f)
                                                        cur_status = 0x00;
                                                else
                                                        cur_status = 0xD0;
                                                break;
                                        } case 0x10: { /* Seek */
                                                /* printf("FD1771 seek to track %d\n", cur_data); */
                                                cur_track = cur_data;
                                                if (drive[cur_drive].f)
                                                        cur_status = 0x00;
                                                else
                                                        cur_status = 0xD0;
                                                break;
                                        } case 0x30: { /* Step */
                                                printf("FD1771 tried to step\n");
                                                if ((int)cur_track + cur_dir != -1)
                                                        cur_track += cur_dir;
                                                cur_state = 0x00;
                                                if (drive[cur_drive].f)
                                                        cur_status = 0x00;
                                                else
                                                        cur_status = 0xD0;
                                                break;
                                        } case 0x50: { /* Step in */
                                                printf("FD1771 tried to step in\n");
                                                ++cur_track;
                                                cur_dir = 1;
                                                if (drive[cur_drive].f)
                                                        cur_status = 0x00;
                                                else
                                                        cur_status = 0xD0;
                                                break;
                                        } case 0x70: { /* Step out */
                                                printf("FD1771 tried to step out\n");
                                                if (cur_track)
                                                        --cur_track;
                                                cur_dir = -1;
                                                if (drive[cur_drive].f)
                                                        cur_status = 0x00;
                                                else
                                                        cur_status = 0xD0;
                                                break;
                                        } case 0x80: { /* Read single */
                                                /* printf("FD1771 read single\n"); */
                                                if (drive[cur_drive].f) {
                                                        getsect1(cur_drive, cur_buf, (cur_track * drive[cur_drive].sects + (cur_sect - 1)) * drive[cur_drive].bytes, drive[cur_drive].bytes);
                                                        cur_state = 1;
                                                        cur_count = 0;
                                                        cur_status = 0x03; /* DRQ + BUSY */
                                                        count1 = 100;
                                                } else {
                                                        cur_status = 0x90;
                                                }
                                                break;
                                        } case 0x90: { /* Read multiple */
                                                /* printf("FD1771 read multiple\n"); */
                                                if (drive[cur_drive].f) {
                                                        getsect1(cur_drive, cur_buf, (cur_track * drive[cur_drive].sects + (cur_sect - 1)) * drive[cur_drive].bytes, drive[cur_drive].bytes);
                                                        cur_state = 2;
                                                        cur_count = 0;
                                                        cur_status = 0x03; /* DRQ + BUSY */
                                                } else {
                                                        cur_status = 0x90;
                                                }
                                                break;
                                        } case 0xA0: { /* Write single */
                                                if (drive[cur_drive].f) {
                                                        cur_state = 3;
                                                        cur_count = 0;
                                                        cur_status = 0x03; /* DQA + BUSY */
                                                } else {
                                                        cur_status = 0x90;
                                                }
                                                /* printf("FD1771 write single\n"); */
                                                break;
                                        } case 0xB0: { /* Write multiple */
                                                printf("FD1771 tried to write multiple\n");
                                                break;
                                        } case 0xC0: { /* Read track */
                                                printf("FD1771 tried to read track\n");
                                                break;
                                        } case 0xF0: { /* Write track */
                                                printf("FD1771 tried to write track\n");
                                                break;
                                        } case 0xD0: { /* Force interrupt */
                                                break;
                                        } default: {
                                                printf("Unknown FD1771 command %x\n", data);
                                                exit(-1);
                                        }
                                }
                                break;
                        } case 0x8014: { /* Set drive */
                                cur_drive = (data & 3);
                                /* printf("Set drive to %x\n", data); */
                                break;
                        } case 0x8019: { /* Track */
                                /* printf("Set track = %d\n", data); */
                                cur_track = data;
                                break;
                        } case 0x801a: { /* Sector */
                                /* printf("Set sector = %d\n", data); */
                                if (!data)
                                        data = 1;
                                cur_sect = data;
                                break;
                        } case 0x801b: { /* Data */
                                cur_data = data;
                                if (cur_state == 3) {
                                        /* printf("Write data %d\n", cur_count); */
                                        cur_buf[cur_count++] = data;
                                        if (cur_count == drive[cur_drive].bytes) {
                                                printf("Write done.\n");
                                                cur_state = 0;
                                                cur_status = 0;
                                                putsect1(cur_drive, cur_buf, (cur_track * drive[cur_drive].sects + (cur_sect - 1)) * drive[cur_drive].bytes, drive[cur_drive].bytes);
                                        }
                                }
                                break;
                        } case 0x8005: { /* Write to serial port */
                                putchar(data); fflush(stdout);
                                break;
                        }
                }
        } else {
                /* Do not write to ROM */
                if (addr >= 0xE800 && addr < 0xEC00 ||
                    addr >= 0xF000 && addr < 0xFC00 ||
                    addr >= 0xFCFC && addr < 0xFD00)
                        return;
                mem[addr] = data;
                switch (addr) {
                        case 0xFCF5: { /* Write to serial port */
                                term_out(data);
                                /* putchar(data); fflush(stdout); */
                        }
                }
        }
}
コード例 #8
0
ファイル: term.c プロジェクト: litcave/neatvi
void term_kill(void)
{
	term_out("\33[K");
}
コード例 #9
0
ファイル: term.c プロジェクト: litcave/neatvi
void term_chr(int ch)
{
	char s[4] = {ch};
	term_out(s);
}
コード例 #10
0
ファイル: term.c プロジェクト: litcave/neatvi
void term_str(char *s)
{
	term_out(s);
}