NETWORK_REPORT: the broadcast payload works on the real VT1200 (TX 5, RX 5)

Panel read off the unit after loading lance_bcast.coff with the host sending
0x88B5 broadcasts: TXD=5, RXF=5, ET=0x88B5, CSR0=0x0073 (STRT|TXON|RXON|INEA)
and REST=0x0073. First exchange with a real peer using only our own driver
code.

Two display bugs found by reading it: the glyph table had no 'X' (so TXD/RXF
printed as 'T D'/'R F') and the three MAC words were drawn on top of each
other. Both fixed: X added, MAC on three rows, REST moved to y=878.
This commit is contained in:
arti committed 2026-10-30 16:24:06 +02:00
1 parent f251672d5d
commit e51c7b94cf
3 files changed
+52 -4

No files matched your search

Binary file not shown.
+9 -4
View File
@@ -135,6 +135,7 @@ unsigned int reg;
static unsigned char glyph[36][7];
static unsigned char lab_csr0[5], lab_csr1[5], lab_tmd1[5], lab_rmd1[5];
static unsigned char lab_mcnt[5], lab_rest[5], lab_ok[3], lab_yes[4], lab_no[3];
static unsigned char lab_mac1[5], lab_mac2[5];
static unsigned int gi(ch)
unsigned int ch;
@@ -177,6 +178,7 @@ static void build_font()
fset(gi('R'), 0x1E,0x11,0x11,0x1E,0x14,0x12,0x11);
fset(gi('S'), 0x0F,0x10,0x10,0x0E,0x01,0x01,0x1E);
fset(gi('T'), 0x1F,0x04,0x04,0x04,0x04,0x04,0x04);
fset(gi('X'), 0x11,0x11,0x0A,0x04,0x0A,0x11,0x11);
fset(gi('Y'), 0x11,0x11,0x0A,0x04,0x04,0x04,0x04);
}
@@ -244,6 +246,8 @@ int main()
put4(lab_rmd1, 'M', 'A', 'C', ' ');
put4(lab_mcnt, 'C', 'S', 'R', '0');
put4(lab_rest, 'R', 'E', 'S', 'T');
put4(lab_mac1, 'M', 'A', 'C', '1');
put4(lab_mac2, 'M', 'A', 'C', '2');
dot(0);
/* black panel */
@@ -368,9 +372,10 @@ int main()
draw_text(104, 654, lab_csr0); hex4(312, 654, txd); /* TXD */
draw_text(104, 686, lab_csr1); hex4(312, 686, rxf); /* RXF */
draw_text(104, 718, lab_tmd1); hex4(312, 718, lastet); /* ET */
draw_text(104, 750, lab_rmd1);
hex4(312, 750, m0); hex4(384, 750, m1); hex4(456, 750, m2); /* MAC */
draw_text(104, 782, lab_mcnt); hex4(312, 782, csr_r(0)); /* CSR0 */
draw_text(104, 750, lab_rmd1); hex4(312, 750, m0); /* MAC word 0 */
draw_text(104, 782, lab_mac1); hex4(312, 782, m1); /* MAC word 1 */
draw_text(104, 814, lab_mac2); hex4(312, 814, m2); /* MAC word 2 */
draw_text(104, 846, lab_mcnt); hex4(312, 846, csr_r(0)); /* CSR0 */
/* give the chip back to the OS */
{
@@ -400,7 +405,7 @@ int main()
}
}
}
draw_text(104, 814, lab_rest); hex4(312, 814, csr0res);
draw_text(104, 878, lab_rest); hex4(312, 878, csr0res);
}
/* stay here: the panel and the marker cells stay valid for inspection
* (a returned payload lets the OS reuse this memory) */