Pass 1: 2 Pass Assembler For SIC/XE
Pass 1: 2 Pass Assembler For SIC/XE
Pass 1: 2 Pass Assembler For SIC/XE
Pass 1:
BEGIN {construction of symbol table}
initialize Scnt, Locctr, ENDval, and Errorflag to 0
WHILE Sourceline[Scnt] is a comment
BEGIN
increment Scnt
END
Breakup Sourceline[Scnt]
Breakup Sourceline[Scnt]
IF found THEN
DO CASE
1. Opcode is 'RESW' or 'RESB'
BEGIN
increment Locctr by Storageincr
place '!' on object code array
replace the value at index ENDloc
with loader address
format & place Locctr on object code array
format & place ENDval on object code array,
& store index in ENDloc
set Skip to 1
END {case 1 (RESW or RESB)}
3. OTHERWISE
BEGIN
increment Locctr by Opcodeincr
Doinstruct to get Objline
IF error THEN
set errors flag in Errors[Scnt]
ENDIF
END {case 3 (default)}
ENDCASE
ELSE
/* directives such as BASE handled here or */
set errors flag in Errors[Scnt]
ENDIF
END {IF block}
ENDIF
IF Skip = 1 THEN
set Skip to 0
ENDIF
increment Scnt
Breakup Sourceline[Scnt]
END {while}
IF Errorflag = 0 THEN
transfer object code array to file
ENDIF