AltairZ80: Adjust REG array descriptors (BRDATA) to provide array object addrs

No address value are changed, by a pointer the the array object is
explicitly provided which allows validation logic to determine the
size of the array object rather than merely it's first element.
This commit is contained in:
Mark Pizzolato 2020-03-03 07:50:33 -08:00
parent 504aad14cf
commit 2e41007e0d
5 changed files with 16 additions and 16 deletions

View file

@ -429,7 +429,7 @@ REG cpu_reg[] = {
REG_RO }, /* 77 */ REG_RO }, /* 77 */
{ HRDATAD (PREVCAP, previousCapacity, 32, "Previous size of RAM pseudo register"), { HRDATAD (PREVCAP, previousCapacity, 32, "Previous size of RAM pseudo register"),
REG_RO }, /* 78 */ REG_RO }, /* 78 */
{ BRDATAD (PCQ, pcq, 16, 16, PCQ_SIZE, "Program counter circular buffer for 8080 /Z80 pseudo register"), { BRDATAD (PCQ, &pcq, 16, 16, PCQ_SIZE, "Program counter circular buffer for 8080 /Z80 pseudo register"),
REG_RO + REG_CIRC }, /* 79 */ REG_RO + REG_CIRC }, /* 79 */
{ DRDATAD (PCQP, pcq_p, PCQ_SIZE_LOG2, "Circular buffer head for 8080 / Z80 pseudo register"), { DRDATAD (PCQP, pcq_p, PCQ_SIZE_LOG2, "Circular buffer head for 8080 / Z80 pseudo register"),
REG_HRO }, /* 80 */ REG_HRO }, /* 80 */

View file

@ -298,17 +298,17 @@ static UNIT dsk_unit[] = {
static REG dsk_reg[] = { static REG dsk_reg[] = {
{ DRDATAD (DISK, current_disk, 4, { DRDATAD (DISK, current_disk, 4,
"Selected disk register"), }, "Selected disk register"), },
{ BRDATAD (CURTRACK, current_track, 10, 32, NUM_OF_DSK, { BRDATAD (CURTRACK, &current_track, 10, 32, NUM_OF_DSK,
"Selected track register array"), REG_CIRC + REG_RO }, "Selected track register array"), REG_CIRC + REG_RO },
{ BRDATAD (CURSECTOR, current_sector, 10, 32, NUM_OF_DSK, { BRDATAD (CURSECTOR, &current_sector, 10, 32, NUM_OF_DSK,
"Selected sector register array"), REG_CIRC + REG_RO }, "Selected sector register array"), REG_CIRC + REG_RO },
{ BRDATAD (CURBYTE, current_byte, 10, 32, NUM_OF_DSK, { BRDATAD (CURBYTE, &current_byte, 10, 32, NUM_OF_DSK,
"Current byte register array"), REG_CIRC + REG_RO }, "Current byte register array"), REG_CIRC + REG_RO },
{ BRDATAD (CURFLAG, current_flag, 10, 32, NUM_OF_DSK, { BRDATAD (CURFLAG, &current_flag, 10, 32, NUM_OF_DSK,
"Current flag register array"), REG_CIRC + REG_RO }, "Current flag register array"), REG_CIRC + REG_RO },
{ BRDATAD (TRACKS, tracks, 10, 8, NUM_OF_DSK, { BRDATAD (TRACKS, &tracks, 10, 8, NUM_OF_DSK,
"Number of tracks register array"), REG_CIRC }, "Number of tracks register array"), REG_CIRC },
{ BRDATAD (SECTPERTRACK,sectors_per_track, 10, 8, NUM_OF_DSK, { BRDATAD (SECTPERTRACK,&sectors_per_track, 10, 8, NUM_OF_DSK,
"Number of sectors per track register array"), REG_CIRC }, "Number of sectors per track register array"), REG_CIRC },
{ DRDATAD (IN9COUNT, in9_count, 4, { DRDATAD (IN9COUNT, in9_count, 4,
"Count of IN(9) register"), REG_RO }, "Count of IN(9) register"), REG_RO },
@ -318,9 +318,9 @@ static REG dsk_reg[] = {
"BOOL for write needed register"), REG_RO }, "BOOL for write needed register"), REG_RO },
{ DRDATAD (DSKWL, warnLevelDSK, 32, { DRDATAD (DSKWL, warnLevelDSK, 32,
"Warn level register") }, "Warn level register") },
{ BRDATAD (WARNLOCK, warnLock, 10, 32, NUM_OF_DSK, { BRDATAD (WARNLOCK, &warnLock, 10, 32, NUM_OF_DSK,
"Count of write to locked register array"), REG_CIRC + REG_RO }, "Count of write to locked register array"), REG_CIRC + REG_RO },
{ BRDATAD (WARNATTACHED, warnAttached, 10, 32, NUM_OF_DSK, { BRDATAD (WARNATTACHED, &warnAttached, 10, 32, NUM_OF_DSK,
"Count for selection of unattached disk register array"), REG_CIRC + REG_RO }, "Count for selection of unattached disk register array"), REG_CIRC + REG_RO },
{ DRDATAD (WARNDSK10, warnDSK10, 4, { DRDATAD (WARNDSK10, warnDSK10, 4,
"Count of IN(8) on unattached disk register"), REG_RO }, "Count of IN(8) on unattached disk register"), REG_RO },
@ -328,7 +328,7 @@ static REG dsk_reg[] = {
"Count of IN/OUT(9) on unattached disk register"), REG_RO }, "Count of IN/OUT(9) on unattached disk register"), REG_RO },
{ DRDATAD (WARNDSK12, warnDSK12, 4, { DRDATAD (WARNDSK12, warnDSK12, 4,
"Count of IN/OUT(10) on unattached disk register"), REG_RO }, "Count of IN/OUT(10) on unattached disk register"), REG_RO },
{ BRDATAD (DISKBUFFER, dskbuf, 10, 8, DSK_SECTSIZE, { BRDATAD (DISKBUFFER, &dskbuf, 10, 8, DSK_SECTSIZE,
"Disk data buffer array"), REG_CIRC + REG_RO }, "Disk data buffer array"), REG_CIRC + REG_RO },
{ NULL } { NULL }
}; };

View file

@ -224,7 +224,7 @@ static REG disk3_reg[] = {
"Link address for next IOPB"), }, "Link address for next IOPB"), },
{ HRDATAD (DMA_ADDR, disk3_info_data.dma_addr, 32, { HRDATAD (DMA_ADDR, disk3_info_data.dma_addr, 32,
"DMA address for the current IOPB"), }, "DMA address for the current IOPB"), },
{ BRDATAD (IOPB, &disk3_info_data.iopb[DISK3_IOPB_CMD], 16, 8, 16, { BRDATAD (IOPB, &disk3_info_data.iopb, 16, 8, 16,
"IOPB command register"), } , "IOPB command register"), } ,
{ NULL } { NULL }
}; };

View file

@ -93,7 +93,7 @@ static REG fif_reg[] = {
"Current selected disk") }, "Current selected disk") },
{ DRDATAD (DSKWL, warnLevelDSK, 32, { DRDATAD (DSKWL, warnLevelDSK, 32,
"Warn level register") }, "Warn level register") },
{ BRDATAD (WARNATTACHED, warnAttached, 10, 32, NUM_OF_DSK, { BRDATAD (WARNATTACHED, &warnAttached, 10, 32, NUM_OF_DSK,
"Count for selection of unattached disk register array"), REG_CIRC + REG_RO }, "Count for selection of unattached disk register array"), REG_CIRC + REG_RO },
{ DRDATAD (WARNDSK11, warnDSK11, 4, { DRDATAD (WARNDSK11, warnDSK11, 4,
"Count of IN/OUT(9) on unattached disk register"), REG_RO }, "Count of IN/OUT(9) on unattached disk register"), REG_RO },

View file

@ -107,10 +107,10 @@ static uint8 if3_tisr[IF3_MAX_BOARDS] = { 0, 0, 0, 0 };
static REG if3_reg[] = { static REG if3_reg[] = {
{ HRDATAD (USER, if3_user, 3, "IF3 user register"), }, { HRDATAD (USER, if3_user, 3, "IF3 user register"), },
{ HRDATAD (BOARD, if3_board, 2, "IF3 board register"), }, { HRDATAD (BOARD, if3_board, 2, "IF3 board register"), },
{ BRDATAD (RIMR, &if3_rimr[0], 16, 8, 4, "IF3 RIMR register array"), }, { BRDATAD (RIMR, &if3_rimr, 16, 8, 4, "IF3 RIMR register array"), },
{ BRDATAD (RISR, &if3_risr[0], 16, 8, 4, "IF3 RISR register array"), }, { BRDATAD (RISR, &if3_risr, 16, 8, 4, "IF3 RISR register array"), },
{ BRDATAD (TIMR, &if3_timr[0], 16, 8, 4, "IF3 TIMR register array"), }, { BRDATAD (TIMR, &if3_timr, 16, 8, 4, "IF3 TIMR register array"), },
{ BRDATAD (TISR, &if3_tisr[0], 16, 8, 4, "IF3 TISR register array"), }, { BRDATAD (TISR, &if3_tisr, 16, 8, 4, "IF3 TISR register array"), },
{ NULL } { NULL }
}; };