;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; ; Copyright 2001, 2012 Fidelity Information Services, Inc ; ; ; ; This source code contains the intellectual property ; ; of its copyright holder(s), and is made available ; ; under a license. If you do not know the terms of ; ; the license, please stop and do not read further. ; ; ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;This table defines the intermediate code (vax code) generated by an opcode. ;It drives tttgen.m to generate ttt.c. ;There are multiple versions of this file by platform family and ;changes to one should trigger review and likely changes to the others. ;The format is OC_:list of vax instructions,one to a line. ;The opcode must have a corresponding entry in opcode_def.h OC_ADD: pushab val.0 pushab val.2 pushab val.1 calls #3,xfer.xf_add OC_BINDPARM: irepl val.2 calls val.1,xfer.xf_bindparm OC_BOOLFINI: incl val.1 OC_BOOLINIT: clrl val.0 OC_BREAK: jsb xfer.xf_break OC_CALL-BYTE: pushl val.2 jsb xfer.xf_callb brb jmp.1 OC_CALL-LONG: pushl val.2 jsb xfer.xf_calll jmp jmp.1 OC_CALL-WORD: pushl val.2 jsb xfer.xf_callw brw jmp.1 OC_CALLSP-BYTE: pushl val.2 jsb xfer.xf_callspb brb jmp.1 OC_CALLSP-LONG: pushl val.2 jsb xfer.xf_callspl jmp jmp.1 OC_CALLSP-WORD: pushl val.2 jsb xfer.xf_callspw brw jmp.1 OC_CAT: irepab val.2 pushab val.0 calls val.1,xfer.xf_cat OC_CLOSE: pushab val.2 pushab val.1 calls #2,xfer.xf_close OC_CLRTEST: bicb2 #1,r10 jsb xfer.xf_dt_false OC_CLRALSVARS: pushab val.1 calls #1,xfer.xf_clralsvars OC_COBOOL-MINT: tstl val.1 OC_COBOOL-MVAL: movab val.1,r1 jsb xfer.xf_mval2bool OC_COMINT-MVAL: movab val.1,r1 jsb xfer.xf_mval2mint movl r0,val.0 OC_COMMARG: pushl val.2 pushab val.1 jsb xfer.xf_commarg OC_COMVAL-MINT: movab val.0,r0 movl val.1,r1 jsb xfer.xf_mint2mval OC_CONUM: movab val.1,r1 jsb xfer.xf_mval2num OC_CONTAIN: movab val.1,r0 movab val.2,r1 jsb xfer.xf_contain OC_CURRHD: movl (ap),addr.0 OC_CURRTN: movab val.0,r1 jsb xfer.xf_currtn OC_CVTPARM: pushab val.0 pushab val.2 pushl val.1 calls #3,xfer.xf_cvtparm OC_DIV: pushab val.0 pushab val.2 pushab val.1 calls #3,xfer.xf_div OC_EQU: movab val.2,r1 movab val.1,r0 jsb xfer.xf_equ OC_EQUNUL: movab val.1,r0 jsb xfer.xf_equnul OC_EXCAL: irepab val.5 pushl val.4 pushl val.3 pushl val.2 pushl #0 jsb xfer.xf_exfun OC_EXFUN: irepab val.5 pushl val.4 pushl val.3 pushl val.2 pushab val.0 jsb xfer.xf_exfun OC_EXFUNRET: pushab val.1 calls #1,xfer.xf_exfunret OC_EXFUNRETALS: pushab val.1 calls #1,xfer.xf_exfunretals OC_EXTCALL: pushab val.2 pushab val.1 jsb xfer.xf_extcall OC_EXTEXCAL: irepab val.5 pushl val.4 pushl val.3 pushl #0 pushab val.2 pushab val.1 jsb xfer.xf_extexfun OC_EXTEXFUN: irepab val.5 pushl val.4 pushl val.3 pushab val.0 pushab val.2 pushab val.1 jsb xfer.xf_extexfun OC_EXTJMP: pushab val.2 pushab val.1 jsb xfer.xf_extjmp OC_EXP: pushab val.0 pushab val.2 pushab val.1 calls #3,xfer.xf_exp OC_FETCH: irepl val.2 calls val.1,xfer.xf_fetch OC_FGNCAL: irepab val.6 pushl val.5 pushl val.4 pushab val.3 pushab val.2 pushl #0 calls val.1,xfer.xf_fnfgncal OC_FNASCII: pushab val.0 pushab val.1 pushl val.2 calls #3,xfer.xf_fnascii OC_FNCHAR: irepl val.2 pushab val.0 calls val.1,xfer.xf_fnchar OC_FNDATA: pushab val.0 pushab val.1 calls #2,xfer.xf_fndata OC_FNEXTRACT: pushab val.0 pushab val.1 pushl val.2 pushl val.3 calls #4,xfer.xf_fnextract OC_FNFGNCAL: irepab val.6 pushl val.5 pushl val.4 pushab val.3 pushab val.2 pushab val.0 calls val.1,xfer.xf_fnfgncal OC_FNFIND: pushab val.0 pushl val.3 pushab val.2 pushab val.1 calls #4,xfer.xf_fnfind OC_FNFNUMBER: pushab val.0 pushab val.2 pushab val.1 calls #3,xfer.xf_fnfnumber OC_FNGET: movab val.1,r1 movab val.0,r0 jsb xfer.xf_fnget OC_FNGET2: pushab val.2 pushab val.1 pushab val.0 calls #3,xfer.xf_fnget2 OC_FNGVGET: pushab val.1 pushab val.0 calls #2,xfer.xf_fngvget OC_FNGVGET1: pushab val.0 calls #1,xfer.xf_fngvget1 OC_FNGVGET2: pushab val.2 pushab val.1 pushab val.0 calls #3,xfer.xf_fngvget2 OC_FNINCR: pushab val.0 ; result of $INCR pushab val.2 ; r->operand[1] = increment pushab val.1 ; r->operand[0] = local-variable to increment calls #3,xfer.xf_fnincr OC_FNJ2: pushab val.0 pushl val.2 pushab val.1 calls #3,xfer.xf_fnj2 OC_FNJ3: pushab val.0 pushl val.3 pushl val.2 pushab val.1 calls #4,xfer.xf_fnj3 OC_FNLENGTH: pushab val.0 pushab val.1 calls #2,xfer.xf_fnlength OC_FNLVNAME: pushab val.0 pushl val.2 pushab val.1 calls #3,xfer.xf_fnlvname OC_FNLVNAMEO2: pushab val.2 pushab val.0 pushab val.1 calls #3,xfer.xf_fnlvnameo2 OC_FNLVPRVNAME: pushab val.0 pushab val.1 calls #2,xfer.xf_fnlvprvname OC_FNNAME: irepab val.4 pushab val.1 ; r->operand[0] pushl val.3 pushab val.0 ; result of $NAME calls val.2,xfer.xf_fnname OC_FNNEXT: pushab val.0 pushab val.2 pushab val.1 calls #3,xfer.xf_fnnext OC_FNO2: pushab val.3 pushab val.0 pushab val.2 pushab val.1 calls #4,xfer.xf_fno2 OC_FNORDER: pushab val.0 pushab val.2 pushab val.1 calls #3,xfer.xf_fnorder OC_FNP1: pushab val.0 pushl val.3 pushl val.2 pushab val.1 calls #4,xfer.xf_fnp1 OC_FNPIECE: pushab val.0 pushl val.4 pushl val.3 pushab val.2 pushab val.1 calls #5,xfer.xf_fnpiece OC_FNPOPULATION: pushab val.0 pushab val.2 pushab val.1 calls #3,xfer.xf_fnpopulation OC_FNQLENGTH: pushab val.0 pushab val.1 calls #2,xfer.xf_fnqlength OC_FNQSUBSCR: pushab val.0 pushl val.2 pushab val.1 calls #3,xfer.xf_fnqsubscript OC_FNQUERY: irepab val.3 pushab val.2 pushab val.0 calls val.1,xfer.xf_fnquery OC_FNRANDOM: pushab val.0 pushl val.1 calls #2,xfer.xf_fnrandom OC_FNREVERSE: pushab val.0 pushab val.1 calls #2,xfer.xf_fnreverse OC_FNSTACK1: pushab val.0 pushl val.1 calls #2,xfer.xf_fnstack1 OC_FNSTACK2: pushab val.0 pushab val.2 pushl val.1 calls #3,xfer.xf_fnstack2 OC_FNTEXT: pushab val.0 pushab val.3 pushl val.2 pushab val.1 calls #4,xfer.xf_fntext OC_FNTRANSLATE: pushab val.0 pushab val.3 pushab val.2 pushab val.1 calls #4,xfer.xf_fntranslate OC_FNVIEW: irepab val.2 pushab val.0 calls val.1,xfer.xf_fnview OC_FNZASCII: pushab val.0 pushab val.1 pushl val.2 calls #3,xfer.xf_fnzascii OC_FNZAHANDLE: pushab val.0 pushab val.1 calls #2,xfer.xf_fnzahandle OC_FNZBITAND: pushab val.2 pushab val.1 pushab val.0 calls #3,xfer.xf_fnzbitand OC_FNZBITCOUN: pushab val.1 pushab val.0 calls #2,xfer.xf_fnzbitcoun OC_FNZBITFIND: pushl val.3 pushl val.2 pushab val.1 pushab val.0 calls #4,xfer.xf_fnzbitfind OC_FNZBITGET: pushl val.2 pushab val.1 pushab val.0 calls #3,xfer.xf_fnzbitget OC_FNZBITLEN: pushab val.1 pushab val.0 calls #2,xfer.xf_fnzbitlen OC_FNZBITNOT: pushab val.1 pushab val.0 calls #2,xfer.xf_fnzbitnot OC_FNZBITOR: pushab val.2 pushab val.1 pushab val.0 calls #3,xfer.xf_fnzbitor OC_FNZBITSET: pushl val.3 pushl val.2 pushab val.1 pushab val.0 calls #4,xfer.xf_fnzbitset OC_FNZBITSTR: pushl val.2 pushl val.1 pushab val.0 calls #3,xfer.xf_fnzbitstr OC_FNZBITXOR: pushab val.2 pushab val.1 pushab val.0 calls #3,xfer.xf_fnzbitxor OC_FNZCALL: irepab val.2 pushab val.0 calls val.1,xfer.xf_fnzcall OC_FNZCHAR: irepl val.2 pushab val.0 calls val.1,xfer.xf_fnzchar OC_FNZCONVERT2: pushab val.0 ; destination mval pushab val.2 ; "U"/"L"/"T" pushab val.1 ; string calls #3,xfer.xf_fnzconvert2 OC_FNZCONVERT3: pushab val.0 ; Destination mval pushab val.3 ; target chset pushab val.2 ; src chset pushab val.1 ; string calls #4,xfer.xf_fnzconvert3 OC_FNZDATA: pushab val.0 pushab val.1 calls #2,xfer.xf_fnzdata OC_FNZDATE: pushab val.0 pushab val.4 pushab val.3 pushab val.2 pushab val.1 calls #5,xfer.xf_fnzdate OC_FNZEXTRACT: pushab val.0 pushab val.1 pushl val.2 pushl val.3 calls #4,xfer.xf_fnzextract OC_FNZFILE: pushab val.0 pushab val.2 pushab val.1 calls #3,xfer.xf_fnzfile OC_FNZFIND: pushab val.0 pushl val.3 pushab val.2 pushab val.1 calls #4,xfer.xf_fnzfind OC_FNZGETDVI: pushab val.0 pushab val.2 pushab val.1 calls #3,xfer.xf_fngetdvi OC_FNZGETJPI: pushab val.0 pushab val.2 pushl val.1 calls #3,xfer.xf_fngetjpi OC_FNZGETLKI: pushab val.0 pushab val.2 pushl val.1 calls #3,xfer.xf_fngetlki OC_FNZGETSYI: pushab val.0 pushab val.2 pushab val.1 calls #3,xfer.xf_fngetsyi OC_FNZJ2: pushab val.0 pushl val.2 pushab val.1 calls #3,xfer.xf_fnzj2 OC_FNZJOBEXAM: pushab val.0 pushab val.1 calls #2,xfer.xf_fnzjobexam OC_FNZLENGTH: pushab val.0 pushab val.1 calls #2,xfer.xf_fnzlength OC_FNZLKID: pushab val.0 pushl val.1 calls #2,xfer.xf_fnzlkid OC_FNZM: pushab val.0 pushl val.1 calls #2,xfer.xf_fnzm OC_FNZP1: pushab val.0 pushl val.3 pushl val.2 pushab val.1 calls #4,xfer.xf_fnzp1 OC_FNZPARSE: pushab val.0 pushab val.5 pushab val.4 pushab val.3 pushab val.2 pushab val.1 calls #6,xfer.xf_fnzparse OC_FNZPID: pushab val.0 pushl val.1 calls #2,xfer.xf_fnzpid OC_FNZPIECE: pushab val.0 pushl val.4 pushl val.3 pushab val.2 pushab val.1 calls #5,xfer.xf_fnzpiece OC_FNZPOPULATION: pushab val.0 pushab val.2 pushab val.1 calls #3,xfer.xf_fnzpopulation OC_FNZPREVIOUS: pushab val.0 pushab val.2 pushab val.1 calls #3,xfer.xf_fnzprevious OC_FNZPRIV: pushab val.0 pushab val.1 calls #2,xfer.xf_fnzpriv OC_FNZQGBLMOD: pushab val.0 calls #1,xfer.xf_fnzqgblmod OC_FNZSEA: pushab val.0 pushl val.2 pushab val.1 calls #3,xfer.xf_fnzsearch OC_FNZSETPRV: pushab val.0 pushab val.1 calls #2,xfer.xf_fnzsetprv OC_FNZSIGPROC: pushab val.0 pushl val.2 pushl val.1 calls #3,xfer.xf_fnzsigproc OC_FNZSUBSTR: pushab val.0 ; Destination mval pushl val.3 ; max byte length pushl val.2 ; starting character position pushab val.1 ; string calls #4,xfer.xf_fnzsubstr OC_FNZTRANSLATE: pushab val.0 pushab val.3 pushab val.2 pushab val.1 calls #4,xfer.xf_fnztranslate OC_FNZTRIGGER: pushab val.0 pushab val.3 pushab val.2 pushab val.1 calls #4,xfer.xf_fnztrigger OC_FNZTRNLNM: pushab val.0 pushab val.6 pushab val.5 pushab val.4 pushl val.3 pushab val.2 pushab val.1 calls #7,xfer.xf_fnztrnlnm OC_FNZWIDTH: pushab val.0 ; destination mval pushab val.1 ; string calls #2,xfer.xf_fnzwidth OC_FOLLOW: movab val.1,r0 movab val.2,r1 jsb xfer.xf_follow OC_FORCENUM: movab val.0,r0 movab val.1,r1 jsb xfer.xf_forcenum OC_FORCHK1: jsb xfer.xf_restartpc jsb xfer.xf_forchk1 OC_FORINIT: pushab val.3 pushab val.2 pushab val.1 jsb xfer.xf_forinit OC_FORLCLDO-BYTE: pushl val.2 jsb xfer.xf_forlcldob brb jmp.1 OC_FORLCLDO-LONG: pushl val.2 jsb xfer.xf_forlcldol jmp jmp.1 OC_FORLCLDO-WORD: pushl val.2 jsb xfer.xf_forlcldow brw jmp.1 OC_FORLOOP-BYTE:jsb xfer.xf_restartpc pushab jmp.1 pushab val.4 pushab val.3 pushab val.2 jsb xfer.xf_forloop OC_FORLOOP-LONG:jsb xfer.xf_restartpc pushab jmp.1 pushab val.4 pushab val.3 pushab val.2 jsb xfer.xf_forloop OC_FORLOOP-WORD:jsb xfer.xf_restartpc pushab jmp.1 pushab val.4 pushab val.3 pushab val.2 jsb xfer.xf_forloop OC_GETINDX: irepab val.2 calls val.1,xfer.xf_getindx movl r0,addr.0 OC_GETTRUTH: movab val.0,r1 jsb xfer.xf_gettruth OC_GVDATA: pushab val.0 calls #1,xfer.xf_gvdata OC_GVEXTNAM: irepab val.2 calls val.1,xfer.xf_gvextnam OC_GVGET: pushab val.0 calls #1,xfer.xf_gvget OC_GVINCR: pushab val.0 ; result of $INCR pushab val.2 ; r->operand[1] = increment (global-variable to increment is gv_currkey so no operand[0]) calls #2,xfer.xf_gvincr OC_GVKILL: calls #0,xfer.xf_gvkill OC_GVNAKED: irepab val.2 calls val.1,xfer.xf_gvnaked OC_GVNAME: irepab val.2 calls val.1,xfer.xf_gvname OC_GVNEXT: pushab val.0 calls #1,xfer.xf_gvnext OC_GVO2: pushab val.1 pushab val.0 calls #2,xfer.xf_gvo2 OC_GVORDER: pushab val.0 calls #1,xfer.xf_gvorder OC_GVPUT: pushab val.1 calls #1,xfer.xf_gvput OC_GVQUERY: pushab val.0 calls #1,xfer.xf_gvquery OC_GVRECTARG: pushab val.1 calls #1,xfer.xf_gvrectarg OC_GVSAVTARG: pushab val.0 calls #1,xfer.xf_gvsavtarg OC_GVZWITHDRAW: calls #0,xfer.xf_gvzwithdraw OC_GVZWRITE: jsb xfer.xf_restartpc irepab val.4 pushl val.3 pushl val.2 calls val.1,xfer.xf_gvzwrite OC_HALT: calls #0,xfer.xf_halt OC_HANG: jsb xfer.xf_restartpc pushab val.1 calls #1,xfer.xf_hang OC_HARDRET: jsb xfer.xf_hardret OC_IDIV: pushab val.0 pushab val.2 pushab val.1 calls #3,xfer.xf_idiv OC_IGETSRC: pushab val.0 calls #1,xfer.xf_igetsrc OC_INDDEVPARMS: pushab val.0 pushl val.2 pushab val.1 jsb xfer.xf_inddevparms OC_INDFNNAME: pushab val.2 ; r->operand[1] pushab val.1 ; r->operand[0] pushab val.0 ; result of $NAME jsb xfer.xf_indfnname OC_INDFUN: pushab val.0 pushl val.2 pushab val.1 jsb xfer.xf_indfun OC_INDGET: pushab val.2 pushab val.1 pushab val.0 jsb xfer.xf_indget OC_INDGLVN: pushab val.0 pushab val.1 jsb xfer.xf_indglvn OC_INDINCR: pushab val.1 ; r->operand[0] = indirection expression pushab val.2 ; r->operand[1] = increment (ILIT) pushab val.0 ; r->dst jsb xfer.xf_indincr OC_INDLVADR: pushab val.1 jsb xfer.xf_indlvadr movl r0,addr.0 OC_INDLVARG: pushab val.0 pushab val.1 jsb xfer.xf_indlvarg OC_INDMERGE: pushab val.1 pushab val.2 jsb xfer.xf_indmerge OC_INDNAME: irepab val.2 pushab val.0 calls val.1,xfer.xf_indname OC_INDLVNAMADR: pushab val.1 jsb xfer.xf_indlvnamadr movl r0,addr.0 OC_INDO2: pushab val.2 pushab val.1 pushab val.0 jsb xfer.xf_indo2 OC_INDPAT: pushab val.0 pushab val.1 jsb xfer.xf_indpat OC_INDRZSHOW: pushab val.2 pushab val.1 jsb xfer.xf_indrzshow OC_INDSET: pushab val.2 pushab val.1 jsb xfer.xf_indset OC_INDTEXT: pushab val.0 pushab val.3 pushl val.2 pushab val.1 jsb xfer.xf_indtext OC_IOCONTROL: jsb xfer.xf_restartpc irepab val.2 calls val.1,xfer.xf_iocontrol OC_IRETMVAD: movab val.1,r1 jsb xfer.xf_iretmvad OC_IRETMVAL: pushab val.1 jsb xfer.xf_iretmval OC_JMP-BYTE: brb jmp.1 OC_JMP-LONG: jmp jmp.1 OC_JMP-WORD: brw jmp.1 OC_JMPAT: jmp val.1 OC_JMPEQU-BYTE: beql jmp.1 OC_JMPEQU-LONG: bneq #6 jmp jmp.1 OC_JMPEQU-WORD: bneq #3 brw jmp.1 OC_JMPGEQ-BYTE: bgeq jmp.1 OC_JMPGEQ-LONG: blss #6 jmp jmp.1 OC_JMPGEQ-WORD: blss #3 brw jmp.1 OC_JMPGTR-BYTE: bgtr jmp.1 OC_JMPGTR-LONG: bleq #6 jmp jmp.1 OC_JMPGTR-WORD: bleq #3 brw jmp.1 OC_JMPLEQ-BYTE: bleq jmp.1 OC_JMPLEQ-LONG: bgtr #6 jmp jmp.1 OC_JMPLEQ-WORD: bgtr #3 brw jmp.1 OC_JMPLSS-BYTE: blss jmp.1 OC_JMPLSS-LONG: bgeq #6 jmp jmp.1 OC_JMPLSS-WORD: bgeq #3 brw jmp.1 OC_JMPNEQ-BYTE: bneq jmp.1 OC_JMPNEQ-LONG: bneq #6 jmp jmp.1 OC_JMPNEQ-WORD: beql #3 brw jmp.1 OC_JMPTCLR-BYTE: blbc r10,jmp.1 OC_JMPTCLR-LONG: blbs r10,#6 jmp jmp.1 OC_JMPTCLR-WORD: blbs r10,#3 brw jmp.1 OC_JMPTSET-BYTE: blbs r10,jmp.1 OC_JMPTSET-LONG: blbc r10,#6 jmp jmp.1 OC_JMPTSET-WORD: blbc r10,#3 brw jmp.1 OC_JOB: jsb xfer.xf_restartpc irepab val.7 pushl val.6 pushab val.5 pushab val.4 pushl val.3 pushab val.2 calls val.1,xfer.xf_job OC_KILL: pushab val.1 calls #1,xfer.xf_kill OC_KILLALIAS: pushl val.1 calls #1,xfer.xf_killalias OC_KILLALL: calls #0,xfer.xf_killall OC_KILLALIASALL: calls #0,xfer.xf_killaliasall OC_LABADDR: pushl val.2 pushab val.1 pushab val.3 calls #3,xfer.xf_labaddr movl r0,addr.0 OC_LCKDECR: pushl val.1 calls #1,xfer.xf_lckdecr OC_LCKINCR: pushl val.1 calls #1,xfer.xf_lckincr OC_LDADDR-BYTE: movab jmp.1,addr.0 OC_LDADDR-LONG: movab jmp.1,addr.0 OC_LDADDR-WORD: movab jmp.1,addr.0 OC_LINEFETCH: irepl val.2 pushl val.1 jsb xfer.xf_linefetch OC_LINESTART: jsb xfer.xf_linestart OC_LKEXTNAME: irepab val.4 pushab val.3 pushab val.2 calls val.1,xfer.xf_lkname OC_LKINIT: calls #0,xfer.xf_lkinit OC_LKNAME: irepab val.4 pushab val.3 pushl val.2 calls val.1,xfer.xf_lkname OC_LOCK: pushl val.1 calls #1,xfer.xf_lock OC_LVPATWRITE: jsb xfer.xf_restartpc irepab val.3 pushl val.2 calls val.1,xfer.xf_lvpatwrite OC_LVZWITHDRAW: pushab val.1 calls #1,xfer.xf_lvzwithdraw OC_LVZWRITE: jsb xfer.xf_restartpc irepab val.2 calls val.1,xfer.xf_lvzwrite OC_M_SRCHINDX: irepab val.2 calls val.1,xfer.xf_m_srchindx movl r0,addr.0 OC_MERGE: calls #0,xfer.xf_merge OC_MERGE_GVARG: pushl #0 pushl val.1 calls #2,xfer.xf_merge_arg OC_MERGE_LVARG: pushab val.2 pushl val.1 calls #2,xfer.xf_merge_arg OC_MOD: pushab val.0 pushab val.2 pushab val.1 calls #3,xfer.xf_flt_mod OC_MUL: pushab val.0 pushab val.2 pushab val.1 calls #3,xfer.xf_mul OC_NEG: movab val.0,r0 movab val.1,r1 jsb xfer.xf_neg OC_NEWINTRINSIC: pushl val.1 jsb xfer.xf_newintrinsic OC_NEWVAR: pushl val.1 jsb xfer.xf_newvar OC_NULLEXP: pushab val.0 calls #1,xfer.xf_nullexp OC_NUMCMP: movab val.1,r0 movab val.2,r1 jsb xfer.xf_numcmp OC_OPEN: jsb xfer.xf_restartpc pushab val.4 pushl val.3 pushab val.2 pushab val.1 calls #4,xfer.xf_open OC_PATTERN: movab val.1,r0 movab val.2,r1 jsb xfer.xf_pattern OC_PUTINDX: irepab val.2 calls val.1,xfer.xf_putindx movl r0,addr.0 OC_RDONE: jsb xfer.xf_restartpc pushl val.1 pushab val.0 calls #2,xfer.xf_rdone OC_READ: jsb xfer.xf_restartpc pushl val.1 pushab val.0 calls #2,xfer.xf_read OC_READFL: jsb xfer.xf_restartpc pushl val.2 pushl val.1 pushab val.0 calls #3,xfer.xf_readfl OC_RESTARTPC: jsb xfer.xf_restartpc OC_RET: jsb xfer.xf_ret OC_RETARG: movab val.1,r0 movl val.2,r1 jsb xfer.xf_retarg OC_RHDADDR: pushab val.2 pushab val.1 calls #2,xfer.xf_rhdaddr movl r0,addr.0 OC_RHDADDR1: pushl #0 pushab val.1 calls #2,xfer.xf_rhdaddr movl r0,addr.0 ; Note if OC_RTERROR call changes, linetail.c and eval_expr.c will also need ; to change due to it dereferencing the backpoints to get to the opcode. OC_RTERROR: pushl val.2 pushl val.1 jsb xfer.xf_rterror OC_SETALS2ALS: pushl val.1 pushab val.2 calls #2,xfer.xf_setals2als OC_SETALSIN2ALSCT: pushab val.1 pushab val.2 calls #2,xfer.xf_setalsin2alsct OC_SETALSCTIN2ALS: pushl val.1 pushab val.2 calls #2,xfer.xf_setalsctin2als OC_SETALSCT2ALSCT: pushab val.1 pushab val.2 calls #2,xfer.xf_setalsct2alsct OC_SETFNRETIN2ALS: pushl val.1 pushab val.2 calls #2,xfer.xf_setfnretin2als OC_SETFNRETIN2ALSCT: pushab val.1 pushab val.2 calls #2,xfer.xf_setfnretin2alsct OC_SETEXTRACT: pushab val.0 pushl val.3 pushl val.2 pushab val.4 pushab val.1 calls #5,xfer.xf_setextract OC_SETP1: pushab val.0 pushl val.3 pushab val.4 pushl val.2 pushab val.1 calls #5,xfer.xf_setp1 OC_SETPIECE: pushab val.0 pushl val.4 pushl val.3 pushab val.5 pushab val.2 pushab val.1 calls #6,xfer.xf_setpiece OC_SETTEST: bisb2 #1,r10 jsb xfer.xf_dt_true OC_SETZBRK: pushl val.5 pushab val.4 pushl val.2 pushab val.1 pushab val.3 calls #5,xfer.xf_setzbrk OC_SETZEXTRACT: pushab val.0 pushl val.3 pushl val.2 pushab val.4 pushab val.1 calls #5,xfer.xf_setzextract OC_SETZP1: pushab val.0 pushl val.3 pushab val.4 pushl val.2 pushab val.1 calls #5,xfer.xf_setzp1 OC_SETZPIECE: pushab val.0 pushl val.4 pushl val.3 pushab val.5 pushab val.2 pushab val.1 calls #6,xfer.xf_setzpiece OC_SORTS_AFTER: movab val.1,r0 movab val.2,r1 jsb xfer.xf_sorts_after OC_SRCHINDX: irepab val.2 calls val.1,xfer.xf_srchindx movl r0,addr.0 OC_STO: movab val.2,r1 movab val.1,r0 jsb xfer.xf_sto OC_STOLIT: movc3 #16,val.2,val.1 OC_STOTEMP: movab val.1,r1 movab val.0,r0 jsb xfer.xf_sto OC_SUB: pushab val.0 pushab val.2 pushab val.1 calls #3,xfer.xf_sub OC_SVGET: pushab val.0 pushl val.1 calls #2,xfer.xf_svget OC_PSVPUT: pushab val.2 pushl val.1 jsb xfer.xf_psvput OC_SVPUT: pushab val.2 pushl val.1 calls #2,xfer.xf_svput OC_TIMTRU: movl r0,r10 OC_TCOMMIT: jsb xfer.xf_tcommit OC_TROLLBACK: pushl val.1 jsb xfer.xf_trollback OC_TRESTART: pushl val.1 jsb xfer.xf_trestart OC_TSTART: irepab val.4 pushl val.3 pushab val.2 pushl val.1 jsb xfer.xf_tstart OC_UNLOCK: calls #0,xfer.xf_unlock OC_USE: pushab val.2 pushab val.1 calls #2,xfer.xf_use OC_VIEW: irepab val.2 calls val.1,xfer.xf_view OC_VXCMPL: cmpl val.1,val.2 OC_WRITE: pushab val.1 calls #1,xfer.xf_write OC_WTEOL: pushl val.1 calls #1,xfer.xf_wteol OC_WTFF: calls #0,xfer.xf_wtff OC_WTONE: pushl val.1 calls #1,xfer.xf_wtone OC_WTTAB: pushl val.1 calls #1,xfer.xf_wttab OC_XKILL: irepab val.2 calls val.1,xfer.xf_xkill OC_XNEW: irepab val.2 pushl val.1 jsb xfer.xf_xnew OC_ZALLOCATE: pushl val.1 calls #1,xfer.xf_zallocate OC_ZATTACH: jsb xfer.xf_restartpc pushab val.1 calls #1,xfer.xf_zattach OC_ZCOMPILE: pushl val.2 pushab val.1 calls #2,xfer.xf_zcompile OC_ZCONT: jsb xfer.xf_zcont OC_ZDEALLOCATE: pushl val.1 calls #1,xfer.xf_zdeallocate OC_ZEDIT: jsb xfer.xf_restartpc pushab val.2 pushab val.1 calls #2,xfer.xf_zedit OC_ZG1: pushl val.1 jsb xfer.xf_zg1 OC_ZGOTO: pushl val.1 pushl val.4 pushab val.3 pushab val.2 jsb xfer.xf_zgoto OC_ZHALT: pushab val.1 calls #1,xfer.xf_zhalt OC_ZHELP: pushab val.2 pushab val.1 calls #2,xfer.xf_zhelp OC_ZLINK: pushab val.2 pushab val.1 calls #2,xfer.xf_zlink OC_ZMESS: irepab val.3 pushl val.2 calls val.1,xfer.xf_zmess OC_ZPREVIOUS: pushab val.0 calls #1,xfer.xf_zprevious OC_ZPRINT: jsb xfer.xf_restartpc pushl val.5 pushab val.4 pushl val.3 pushab val.2 pushab val.1 calls #5,xfer.xf_zprint OC_ZSHOW: jsb xfer.xf_restartpc pushl #0 pushl val.2 pushab val.1 calls #3,xfer.xf_zshow OC_ZSHOWLOC: jsb xfer.xf_restartpc pushab val.3 pushl val.2 pushab val.1 calls #3,xfer.xf_zshow OC_ZSTEP: pushl #0 pushl val.1 calls #2,xfer.xf_zstep jsb xfer.xf_zcont OC_ZSTEPACT: pushab val.2 pushl val.1 calls #2,xfer.xf_zstep jsb xfer.xf_zcont OC_ZSYSTEM: jsb xfer.xf_restartpc pushab val.1 calls #1,xfer.xf_zsystem OC_ZTCOMMIT: pushl val.1 calls #1,xfer.xf_ztcommit OC_ZTRIGGER: calls #0,xfer.xf_ztrigger OC_ZTSTART: calls #0,xfer.xf_ztstart OC_ZWRITESVN: pushl val.1 calls #1,xfer.xf_zwritesvn OC_RFRSHINDX: pushl val.2 pushl val.1 calls #2,xfer.xf_rfrshindx movl r0,addr.0 OC_SAVPUTINDX: irepab val.2 calls val.1,xfer.xf_savputindx movl r0,addr.0 OC_FORFREEINDX: calls #0,xfer.xf_forfreeindx OC_FORNESTLVL: pushl val.1 calls #1,xfer.xf_fornestlvl