[an error occurred while processing this directive]
|
;----------------------------------------------------------------------
; If table pointer is -1 then exit
;----------------------------------------------------------------------
AR7 = ~AR0
if (AR7 == #0) goto PINIT;----------------------------------------------------------------------
; Copy data from .cinit section to .bss section
; AR2 = data length of current record (0 => finished)
; AC0 = 23-bit variable address in .bss section
; AC1 = Address space indicator (0 => DATA, 1 => IO)
;----------------------------------------------------------------------
LOOP:
AR2 = *AR0+
if (AR2 == #0) goto PINITAC0 = uns(*AR0+) << #8
|| AR2 = AR2 - #1
AC1 = uns(*AR0+)
|| CSR = AR2
AC0 = AC0 | (AC1 <<< #-8)
AC1 = AC1 & #0xff
;----------------------------------------------------------------------
; Load extended address register with 23-bit address of variable
;----------------------------------------------------------------------
.if .PHASE3
XAR6 = AC0
.else
MDP67 = @AC0_H || mmap()
AR6 = AC0
.endif;----------------------------------------------------------------------
; Do the appropriate copy operation
;----------------------------------------------------------------------
if (AC1 != #0) goto PORTMEMCOPYDATAMEMCOPY:
repeat(CSR)
*AR6+ = *AR0+
goto LOOPPORTMEMCOPY:
repeat(CSR)
*AR6+ = *AR0+ || writeport()
goto LOOP
PINIT:
E-mail: info@telesys.ru