PROGRAM INLOAD; { V2A Edit #13 25-May-84 File: INLOAD.PAS } {generiert aus INSR65.ASM das Direct-Access-File R65INS.ASM} CONST VersionNumber = 'V2A-013/RT'; VersionDate = '25-May-84'; NOINSTR = 111; TYPE ADDRMODE = (IMM,ABS,ZPAG,ACCU,IMPL,INDZPAGX,INDZPAGY,ZPAGX, ABSX,ABSY,REL,INDABS,ZPAGY,INDZPAG,INDABSX,ZPAGREL); SYMBOL = (ADDR,BSS,BYTES,EQU,ORG,WORDS,MNEMS,TEXTS,MARK,LIST,NOLIST, NEWPAG,NEWFILE,SUBFILE,RETURN,ENDS,CHARS,IDENT,NUMBER, STRNG); ALFA = PACKED ARRAY[1..10] OF CHAR; BYTE = PACKED ARRAY[1..2] OF CHAR; CODELIST = ARRAY[ADDRMODE] OF BYTE; VAR INSTRTAB : FILE OF RECORD NAME : ALFA; SYM : SYMBOL; OPCODE : CODELIST END; OLDINSTR,INSTR : ALFA; J,N : INTEGER; ADDRM : ADDRMODE; OPC : BYTE; OPCLST : CODELIST; CH : CHAR; SYM : SYMBOL; BEGIN WRITELN('INLOAD: ',VERSIONNUMBER,' (',VERSIONDATE,')'); RESET(INPUT,'DK:INSR65.ASM'); REWRITE(INSTRTAB,'DK:R65INS.ASM/SEEK'); OLDINSTR:=' '; N:=0; REPEAT N:=N+1; SEEK(INSTRTAB,N); FOR J:=1 TO 10 DO BEGIN READ(CH); INSTR[J]:=CH; END; IF INSTR < OLDINSTR THEN BEGIN WRITE('?INLOAD-F-Mnemonics nicht geordnet: '); WRITELN(OLDINSTR,INSTR); END; OLDINSTR:=INSTR; FOR ADDRM:=IMM TO ZPAGREL DO BEGIN FOR J:=1 TO 2 DO BEGIN READ(CH); OPC[J]:=CH END; IF OPC='..' THEN OPC:=' '; OPCLST[ADDRM]:=OPC END; READLN; INSTRTAB^.NAME:=INSTR; INSTRTAB^.OPCODE:=OPCLST; SYM:=MNEMS; IF INSTR='ADDR ' THEN SYM:=ADDR; IF INSTR='BSS ' THEN SYM:=BSS; IF INSTR='BYTE ' THEN SYM:=BYTES; IF INSTR='END ' THEN SYM:=ENDS; IF INSTR='EQU ' THEN SYM:=EQU; IF INSTR='LIST ' THEN SYM:=LIST; IF INSTR='MARK ' THEN SYM:=MARK; IF INSTR='NEWFILE ' THEN SYM:=NEWFILE; IF INSTR='NEWPAG ' THEN SYM:=NEWPAG; IF INSTR='NOLIST ' THEN SYM:=NOLIST; IF INSTR='ORG ' THEN SYM:=ORG; IF INSTR='RETURN ' THEN SYM:=RETURN; IF INSTR='SUBFILE ' THEN SYM:=SUBFILE; IF INSTR='TEXT ' THEN SYM:=TEXTS; IF INSTR='WORD ' THEN SYM:=WORDS; INSTRTAB^.SYM:=SYM; PUT(INSTRTAB) UNTIL N=NOINSTR END.