|
DataMuseum.dkPresents historical artifacts from the history of: Commodore CBM-900 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Commodore CBM-900 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - download
Length: 2590 (0xa1e) Types: TextFile Notes: UNIX file Names: »pop.c«
└─⟦f27320a65⟧ Bits:30001972 Commodore 900 hard disk image with partial source code └─⟦f4b8d8c84⟧ UNIX Filesystem └─ ⟦this⟧ »unimenu/src/menu/pop.c«
/* * @(#)pop.c 1.1 15:35:15 4/6/85 * * scrblk * * functions to provide ease of use of the block window i/o system */ #include <sys/types.h> #include <windows.h> /* * bputattr * * puts an attribute at the desired locations in the block that will be * written to the window. * */ bputattr (blkbuff, blksize, ulhc_row, ulhc_col, rows, cols, attr) W2B *blkbuff; /* the window block buffer - chars in low bytes, attributes in high bytes */ W2B blksize; /* number of rows in high byte, cols in low */ int ulhc_row; /* row of upper left hand corner to start with */ int ulhc_col; /* col of upper left hand corner to start with */ int rows; /* number of rows to put the attribute in */ int cols; /* number of cols to put the attribute in */ UINT8 attr; /* attribute to put */ { W2B *buffptr; int i; buffptr = blkbuff + ulhc_row * blksize.bytes.low + ulhc_col; while (rows--) { for (i = 0; i < cols; i++) (buffptr + i)->bytes.high = attr; buffptr += blksize.bytes.low; } } /* * bputc * * puts a character at the desired locations in the block that will be * written to the window. * */ bputc (blkbuff, blksize, ulhc_row, ulhc_col, rows, cols, c) W2B *blkbuff; /* the window block buffer - chars in low bytes, attributes in high bytes */ W2B blksize; /* number of rows in high byte, cols in low */ int ulhc_row; /* row of upper left hand corner to start with */ int ulhc_col; /* col of upper left hand corner to start with */ int rows; /* number of rows to put the attribute in */ int cols; /* number of cols to put the attribute in */ UINT8 c; /* character to put */ { W2B *buffptr; int i; buffptr = blkbuff + ulhc_row * blksize.bytes.low + ulhc_col; while (rows--) { for (i = 0; i < cols; i++) (buffptr + i)->bytes.low = c; buffptr += blksize.bytes.low; } } /* * bputstr * * puts a string at the desired location in the block that will be * written to the window. The string will be truncated if it goes * outside of the block boundary - no wrapping will be done. * */ bputstr (blkbuff, blksize, ulhc_row, ulhc_col, str) W2B *blkbuff; /* the window block buffer - chars in low bytes, attributes in high bytes */ W2B blksize; /* number of rows in high byte, cols in low */ int ulhc_row; /* row of upper left hand corner to start with */ int ulhc_col; /* col of upper left hand corner to start with */ UINT8 *str; /* string to put */ { W2B *buffptr; buffptr = blkbuff + ulhc_row * blksize.bytes.low + ulhc_col; while (*str && ulhc_col++ < blksize.bytes.low) (buffptr++)->bytes.low = *str++; }