# Rename map (old -> new) Mechanical, semantics-preserving. Qualified cross-module uses renamed too (e.g. `SCANNER.proc15` -> `SCANNER.NewNode`). `paramN/localN` in `.MOD` bodies kept as-is for now. ## COMPILER * `PROC1` -> `InitCompiler` * `PROC3` -> `InsertIdent` * `PROC4` -> `DeclConst` * `PROC5` -> `DeclStdProc` * `PROC6` -> `DeclProc` * `PROC7` -> `DeclFunc` * `PROC8` -> `NewTypeDesc` * `PROC9` -> `DeclType` * `PROC10` -> `InitOperatorTable` * `PROC11` -> `AddOperator` * `PROC12` -> `InitCharClasses` * `PROC13` -> `InitKeywordTable` * `PROC14` -> `DeclarePredefinedTypes` * `PROC15` -> `MakeParamList` * `PROC16` -> `DeclareStandardNames` * `PROC17` -> `DeclareSystemModule` * `PROC18` -> `DeclareStorageModule` * `GETINP` -> `OpenSourceAndOutput` * `global2` -> `rangeCheckEnabled` * `global3` -> `scopeSpare3` * `global4` -> `stdScopeAnchor` * `global5` -> `keywordTable` * `global12` -> `charArrayDesc` * `global17` -> `addressAlias` * `global20` -> `systemModule` * `global21` -> `storageModule` * `global22` -> `allocateSignature` * `global23` -> `systemScopeDesc` * `global24` -> `storageScopeDesc` * `global25` -> `nativeCodeRequested` * `global26` -> `compilationActive` * `global27` -> `reserved27` * `global28` -> `reserved28` * `global29` -> `reserved29` * `global30` -> `reserved30` * `global31` -> `curScopeHead` * `global32` -> `savedScopeHead` * `global33` -> `baseScopeHead` * `global34` -> `bitsetRangeDesc` * `global35` -> `lastParamList` * `proc1..28 (DEF only)` -> `overlayProc01..28 (link-stub imports, not Compiler-owned)` ## SCANNER * `proc1` -> `GetSym` * `proc2` -> `NextChar` * `proc3` -> `PushWithScope` * `proc4` -> `AcceptSymbol` * `proc5` -> `GetStackMark` * `proc6` -> `CheckStackMark` * `proc8` -> `ExpectSymbol` * `proc9` -> `TestSymbolInSet` * `proc10` -> `TestSymbolRange40` * `proc11` -> `TestSymbolRange13` * `proc12` -> `NeedIdentifier` * `proc13` -> `ExpectIdentKind` * `proc14` -> `NewSizedNode` * `proc15` -> `NewNode` * `proc16` -> `CopyStringToHeap` * `proc17` -> `OpenScope` * `proc18` -> `MakeIdentifierNode` * `proc19` -> `DeclareIdentifier` * `proc20` -> `InsertSymbol` * `proc21` -> `ExpectStringLiteral` * `proc25` -> `ChangeFileExtension` * `proc26` -> `ScannerError` * `proc27` -> `EnterModuleSymbol` * `proc28` -> `InitScanner` * `proc29` -> `OpenSourceFile` * `proc32` -> `WriteListingPrefix` * `proc33` -> `EchoSourceChar` * `proc34` -> `RefillBuffer` * `proc37` -> `AccumulateDigit` * `proc38` -> `SkipComment` * `Number` -> `ParseNumber` * `Ten` -> `Power10` * `scanNextToken` -> `ScanNextToken` * `global2` -> `scanOptions` * `global3` -> `curChar` * `global4` -> `codeFile` * `global5` -> `curSymbol` * `global6` -> `isLiteral` * `global7` -> `cardValue` * `global8` -> `curNode` * `global9` -> `identKind` * `global10` -> `followSet` * `global11` -> `tokenBuffer` * `global12` -> `literalType` * `global13` -> `scopeCursor` * `global14` -> `realValue` * `global16` -> `sourceFile` * `global17` -> `longrealValue` * `global21` -> `codeBuffer` * `global22` -> `codeSize` * `global23` -> `listingEnabled` * `global24` -> `charClassTable` * `global25` -> `tokenPos` * `global26` -> `tokenColumn` * `procPtr27` -> `keywordHashFunc` * `global29` -> `withScopeSave` * `global30` -> `tokenLength` ## ERRORS * `proc1` -> `ReportError` * `proc2` -> `ReportErrorWithText` * `proc3` -> `AskContinue` * `proc4` -> `WriteString` * `proc5` -> `FindFileOnDrives` * `proc6` -> `WriteKindName` * `proc7` -> `WriteFoundToken` * `proc8` -> `ShowErrorPosition` * `proc9` -> `AskEditOrQuit` * `proc10` -> `PrintOverlayMessage` * `proc11` -> `RollbackToMark` * `proc12` -> `FatalError` * `proc13` -> `ReportAssignMismatch` * `proc14` -> `ReportTypeMismatch` * `proc15` -> `ReportIncompatibleTypes` * `proc16` -> `ReportExpectedSet` * `proc19` -> `TruncateScopeStack` * `proc24` -> `NextSetBit` * `proc25` -> `DerefAliasType` * `proc26` -> `WriteSlashField` * `proc27` -> `WriteTypeName` * `proc28` -> `WriteTypeOfSymbol` * `proc29` -> `WriteSymbolToken` * `proc30` -> `WriteRequiredNote` * `DoError` -> `DoError (kept)` * `global1 (field)` -> `modExtra` * `global2` -> `savedEditPos` * `global3` -> `opCharTable` * `global4` -> `doSymtabRollback` * `global5` -> `errorNumber` * `global6` -> `currentDrive` * `global7` -> `driveInitDone` * `globalPtr` -> `errorMarkPtr` * `options` -> `compileOptions` * `pipe` -> `listPipeChar` ## CODEGEN * `proc4` -> `DiscardPending` * `proc5` -> `SetPendingOp` * `proc6` -> `EmitTypedOp` * `proc7` -> `EmitExtendedOp` * `proc8` -> `QueueConst` * `proc9` -> `QueueLongConst` * `proc10` -> `EmitStandardOp` * `proc11` -> `EmitMiscOp` * `proc12` -> `OpenFixup` * `proc13` -> `CloseFixup` * `proc14` -> `InsertFixup` * `proc15` -> `AdjustFixup` * `proc16` -> `MarkCodePos` * `proc17` -> `EmitSystemCall` * `proc18` -> `EmitExtCall3` * `proc19` -> `PeekCodeByte` * `proc20` -> `PokeCodeByte` * `proc22` -> `OpenEmitter` * `proc23` -> `FlushCodeWindow` * `proc24` -> `InitCodeGenerator` * `proc26` -> `CodeAssert` * `proc28` -> `SeekCodeWindow` * `proc29` -> `CheckCodeOverflow` * `proc30` -> `FlushPendingOp` * `proc31` -> `BaseOpCode` * `proc32` -> `FlushConstQueue` * `proc33/34/36` -> `Reserved33/34/36 (no-op stubs)` * `proc35` -> `IsPowerOfTwo` * `global2` -> `nextEmitPos` * `global3` -> `windowBase` * `global4` -> `windowLimit` * `global5` -> `emitEnabled` * `global6` -> `codeWindow` * `global7` -> `pendMode` * `global8` -> `pendSize` * `global9` -> `pendDisp` * `global10` -> `pendOffset` * `global11` -> `fixupQueue` * `global12` -> `fixupCount` * `global13` -> `spare13` * `global14` -> `pendActive` * `global15` -> `checkOverflow` ## SYMTAB (DEF only) * `global2` -> `symOptions` * `global3` -> `moduleCount` * `global4` -> `symFile` * `global5` -> `stringPoolPtr` * `global6` -> `moduleTable` * `global7` -> `scopeStack` * `global8` -> `rollbackStack` * `global9` -> `currentScope` * `proc1` -> `CompileDispatch` * `proc2` -> `DefineDefinitionModule` * `proc3` -> `DefineProgramModule` * `proc4` -> `InitSymbolTables` * `proc5` -> `BuildBitsetConst` * `proc6` -> `SaveSymbolFile` * `proc7` -> `RestoreAfterEdit` * `proc8` -> `SymbolAssert` ## SYMTAB bodies (SYMTAB.MOD draft v1; all new, no upstream source) FindModule/EnterModule/LookupChain/MatchSym/SymbolAssert/CheckNode/NewString/ GetName/PutAttr/GetAttr/AllocSym/EnterChained/EnterIdent/UnlinkScope/InitHeaps/ InsertBuiltin(nested)/EnterStandards/LoadSymFile/LibRead(nested)/ImportAll/ FindExport+ListExports+ImportOne(nested)/SkipQualident/DefineDefinitionModule/ BuildBitsetConst/DefineProgramModule/InitSymbolTables/NoteImported/DoImportList/ CompileBody/CheckForwards/TryCompile/CompileDispatch/Checksum7w/SaveSymbolFile/ RestoreAfterEdit. Heap/feature globals: modStage/scopeChain/ownNamePtr/ symHeapBase/scopeHeapBase/strHeapBase/symTop/scopeTop/strTop/exportHead/ stageNameTotal/savedSymInfo/savedStrInfo/symCap/scopeCap/strCap/stageFlag/ checksumTemp. See SYMTAB.MOD header for resolved conflicts + open FIXMEs. ### SYMTAB stage-2 amendments (v1.00 hardware proofs, Oct 2026) * `COMPILER.dword27` -> `allocHook: PROCEDURE(ADDRESS, ADDRESS)` (appended last in COMPILER.DEF, no slot shifts). PASS1 stores a hook address (`store COMPILER.dword27`); SYMTAB calls it (`load dword27 + extern_proc_call`, byte-exact shape proven). Was misread as `allocateSignature` (a type symbol) — wrong target. * `ERRORS.word2` = `savedEditPos` ONLY (edit-position save in DoError). `ERRORS.word5` = last-error-code (private `errorNumber`, stored by PrintOverlayMessage @0677, printed by FindFileOnDrives). TryCompile's `saveErr` was fiction: 0b4c compares `savedEditPos > savePos` (edit happened -> rollback+retry, else HALT). RENAME-MAP `global5->errorNumber` refers to this word5 (correct as-is). * `SYMTAB.word8` = `scopeChain`, `word9` = `currentScope`, `SYMTAB.proc7` = `RestoreAfterEdit` (all proven from ERRORS.MCD call sites). * Heap-budget abbreviations (MOD-private impl vars only; DEF/external names untouched; comments keep long forms): symHeapBase->symHeap, scopeHeapBase->scpHeap, strHeapBase->strHeap, exportHead->expHead, stageNameTotal->namTotal, savedSymInfo->savSym, savedStrInfo->savStr, stageFlag->stgFlag, stageSpare11->spare11, stageSpare26->spare26, checksumTemp->chkTemp. * v1.00 bans (all probe-proven): indexing/dereferencing transfer results (`Words(x)^[i]`, `P(x)^.f`) -> view-typed params (PutAttr/AllocSym/ EnterIdent `scope`/`src` retyped to Words, zero-cost transfers at call sites) or temps; CARDINAL compares for T1-vs-RecordPtr; `curSym = 0` for `eq0`; `keyHash` DEF is `(ADDRESS, CHAR)` (original's `(Identifier, CHAR)` unsatisfiable under retail nominal checks; U-probes prove identical pushes; `CHR(ORD())`/`ORD()`/`CHR()` are zero-cost). * OOM often masks type errors (VAR-mismatch, `Allocate(ADR(..))` OOM instead of erroring) — isolate suspects in fresh-heap ZZ probes, never trust the cliff position alone. ELSIF-nesting pins condition heap; tail-positioned chains flattened to sequential IF+RETURN (EnterIdent). ## STATEMEN (STATEMEN.MOD draft v1; all new, no upstream source) CalcMemOffset/SyncToStatStart/ParseCaseStmt/ParseFor/ParseWhile/ParseRepeat/ ParseIf/ParseLoop/ParseExit/ParseResult/ParseWith/ParseReturn/NextSymWrap/ ParseStatSeqLoop/EmitJumpFixup/ParseStatement/GuardedStatSeq/ParseCaseTail/ CloseBlockChain/EmitNameHash/EmitComBytes/ParseBeginBlock. Globals: needEpilogue/withPending/nestDepth/exitDepth/curBlockNode/caseActive/ withDesc/exitEmitted (words 2-9). ## PASS1 (PASS1.MOD draft v1; all new, no upstream source) PushTempMark/PopTempMark/AllocSymEntry/LinkSymEntry/InsertSetConst/CondInsert/ InsertEntry/OpenScopeEmit/TypeSizeRec/GetIdent/ParseImportItem/ParseConstDecl/ ParseVarDecl/ParseType/ParseFormalParams/ParseValParam/ParseVarParam/ ParseFieldList/EvalConstExpr/CheckConformant/ParseRecordType/CloseScopeFixup/ ParseProcedureDecl/ParseModuleHead/ParseExportList/ParseOneDecl/ ParseDeclarations/ParseImportFrom/ParseModuleBlock/ParseProcBody/ ParseMainModule/WriteMcdHeader/EmitConstVal/EmitTypeDesc + stubs (EmitModuleProlog/ParseDeclSync/ParseConstOrTypeArm/ParseModuleArm/ TryParseDecl/ParseImportScope/CheckForwardResolved/Pass1Main/InitPass1). Globals: emitBase/emitTop/nestDepth (words 2-4). ## GENZ80 = INTELL (GENZ80.MOD draft v1) + NATIVE (NATIVE.MOD draft v1) INTELL: FlushCode/PutCode/WriteCodeListing/EmitByte(s)/EmitWord/EmitOpWord/ EmitOpByteWord/WriteCode/AlignEven/MoveReg/PushOperand/PopOperand/MakeHandle/ SwapOperands/InRegister/FreeReg/LookIf/UseReg/LoadAddress/StoreResult/PushReg/ AllocReg/FreeAllRegs/NormResult/DestroyReg/DropRegs/ScratchAlloc/UseScratch/ GetUse/NilTest/RotateReg/Dispose/Prelude/Accum/Preadjust/AccSize/LoadOperand1/ Operate/InOutPort/LoadOperator/CondJump/OverflowOp/OperateHL/AddOp/LoadVar/ MoveVar/StoreVar/StoreStatic. Globals: codePos/opMode/opFlag/auxFlag5/ opSaveA-C pairs/fixA-C/codeBase/codeLimit/codeBuf+codeBytes/regAlloc-Tmp-Keep- Used-Want-Drop-Dest-Scr/regDesc/scrReg (words 2-27). NATIVE: Assert/Fatal/OpSize/Operand/Interp/IsRuntim/IsRelop/OpFill/Init/ GetByt/NextBy/NextWo/Lookah/NewLin/WriteH/WriteT/WriteA/PatchWord/ PatchWordIndexed/WritePatch/PushBase/SetLabel/GenBlas/ExHandle/GenLabel12/ PushIt/PopIt/PushOp/StackEnd/GenCall/NativeMain + NProc/IProc FORWARDs. ## SCANNER interface abbreviations (v1.00 name-table budget, proven on hardware) ChangeFileExtension->ChangeExt, ExpectStringLiteral->ExpectStr, MakeIdentifierNode->MakeIdent, DeclareIdentifier->DeclIdent, TestSymbolRange40/13->TestRange40/13, CopyStringToHeap->CopyString, EnterModuleSymbol->EnterModSym, ExpectIdentKind->ExpectKind, keywordHashFunc->keyHash, charClassTable->charClass, listingEnabled->listing, longrealValue->lrealVal, PushWithScope->PushWith, OpenSourceFile->OpenSource, NeedIdentifier->NeedIdent, TestSymbolInSet->TestSet, CheckStackMark->CheckStack. DEF params single letters (must match MOD exactly). DEF imports trimmed to interface-used (SYSTEM/Compiler/Files/SymTab). Same discipline required for all future DEFs.