VolksForth/6502/C64/disks/tc38q.d64
Carsten Strotmann 0fa7b342cc ANS-Shim update
2020-06-26 14:09:21 +02:00

1 line
171 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

\ ### ÍAIN ÄIRECTORY ### CCLV05JAN87 ÖERSION ÈISTORY $02 (Ã16 (Ã64 ) $03 ÒELOCATE ÓYSTEM $04 ÓPECIAL-ÁSSEMBLER $05 SAVESYSTEM $0Å ÔARGET-COMPILER $10 FREE $34 ÔARGET ÃOMPILER ÍAN $56 \ ### ÍAIN ÄIRECTORY ### CCLV05JAN87 ÖERSION ÈISTORY $02 (Ã16 (Ã64 ) $03 ÒELOCATE ÓYSTEM $04 ÓPECIAL-ÁSSEMBLER $05 SAVESYSTEM $0Å ÔARGET-COMPILER $10 FREE $34 ÔARGET ÃOMPILER ÍAN $56 \ CCLV06DEC88 CAS18AUG06 - ENGLISH TRANSLATION CLV06DEC88 - REWRITTEN ÍANUAL CLV/RE APR-OCT87 FOR REV 3.8 - Ã16/Ã64 ÓCR 3,4,C,10,12,1B,2F CLV2:JUL87 \ ÒELOCATING A SYSTEM CLV2:JULL87 $9400 $0400 ( STACKLENGTH RSTACKLENGTH -) EMPTY HEX OVER + ORIGIN + ORIGIN 0Á + ! \ R0 ORIGIN + DUP ORIGIN 1+ ! \ TASK 6 - ORIGIN 8 + ! \ S0 (16 $C000 ' LIMIT >BODY ! Ã) COLD \\ SYMBOLIC MAP OF SYSTEM UP@ ORIGIN - IS STACKLENGTH R0 @ UP@ - IS RSTACKLENGTH DISK-BUFFER LIMIT FIRST @ RSTACK R0 @ RP@ USER, WARM UP@ UDP @ + UP@ (HEAP) UP@ HEAP STACK S0 @ SP@ SYSTEM HERE ORIGIN 0ÆÅ + USER, COLD ORIGIN 0ÆÅ + ORIGIN SCREEN 0800 0400 PAGE 0-3 0400 0000 ( ÆORTH-6502 ÁSSEMBLER ×ÆÒ ) ( ÂASIS: ÆORTH ÄIMENSIONS ÖÏÌ ÉÉÉ ÎO. 5) ÏNLYFORTH ÁSSEMBLER ALSO DEFINITIONS 1 8 +THRU ( ÆORTH-83 6502-ÁSSEMBLER ) : END-CODE CONTEXT 2- @ CONTEXT ! ; ÃREATE INDEX 0909 , 1505 , 0115 , 8011 , 8009 , 1Ä0Ä , 8019 , 8080 , 0080 , 1404 , 8014 , 8080 , 8080 , 1Ã0à , 801à , 2Ã80 , Ü ÖARIABLE MODE : ÍODE: ( N -) ÃREATE C, ÄOES> ( -) C@ MODE ! ; 0 ÍODE: .Á 1 ÍODE: # 2 Ü ÍODE: MEM 3 ÍODE: ,Ø 4 ÍODE: ,Ù 5 ÍODE: Ø) 6 ÍODE: )Ù 0Æ ÍODE: ) ( ÃODE GENERATING PRIMITIVES 27JUN85WE) ÖARIABLE >CODES Ü ÃREATE NRC ] C, , C@ HERE ALLOT ! C! [ : NONRELOCATE NRC >CODES ! ; NONRELOCATE Ü : >EXEC ÃREATE C, ÄOES> C@ >CODES @ + @ EXECUTE ; Ü 0 >EXEC >C, Ü 2 >EXEC >, Ü 4 >EXEC >C@ Ü 6 >EXEC >HERE Ü 8 >EXEC >ALLOT Ü 0Á >EXEC >! Ü 0à >EXEC >C! ( UPMODE CPU ) Ü : UPMODE ( ADDR0 F0 - ADDR1 F1) ÉÆ MODE @ 8 OR MODE ! ÔÈÅÎ 1 MODE @ 0Æ AND ?DUP ÉÆ 0 ÄÏ DUP + ÌÏÏÐ ÔÈÅÎ OVER 1+ @ AND 0= ; : CPU ( 8B -) ÃREATE C, ÄOES> ( -) C@ >C, MEM ; 00 CPU BRK 18 CPU CLC Ä8 CPU CLD 58 CPU CLI Â8 CPU CLV ÃÁ CPU DEX 88 CPU DEY Å8 CPU INX Ã8 CPU INY ÅÁ CPU NOP 48 CPU PHA 08 CPU PHP 68 CPU PLA 28 CPU PLP 40 CPU RTI 60 CPU RTS 38 CPU SEC Æ8 CPU SED 78 CPU SEI ÁÁ CPU TAX Á8 CPU TAY ÂÁ CPU TSX 8Á CPU TXA 9Á CPU TXS 98 CPU TYA ( M/CPU ) : M/CPU ( MODE OPCODE -) ÃREATE C, , ÄOES> DUP 1+ @ 80 AND ÉÆ 10 MODE +! ÔÈÅÎ OVER ÆÆ00 AND UPMODE UPMODE ÉÆ MEM TRUE ÁBORT" INVALID" ÔÈÅÎ C@ MODE @ INDEX + C@ + >C, MODE @ 7 AND ÉÆ MODE @ 0Æ AND 7 < ÉÆ >C, ÅÌÓÅ >, ÔÈÅÎ ÔÈÅÎ MEM ; 1Ã6Å 60 M/CPU ADC 1Ã6Å 20 M/CPU AND 1Ã6Å Ã0 M/CPU CMP 1Ã6Å 40 M/CPU EOR 1Ã6Å Á0 M/CPU LDA 1Ã6Å 00 M/CPU ORA 1Ã6Å Å0 M/CPU SBC 1Ã6à 80 M/CPU STA 0Ä0Ä 01 M/CPU ASL 0Ã0à Ã1 M/CPU DEC 0Ã0à Å1 M/CPU INC 0Ä0Ä 41 M/CPU LSR 0Ä0Ä 21 M/CPU ROL 0Ä0Ä 61 M/CPU ROR 0414 81 M/CPU STX 0486 Å0 M/CPU CPX 0486 Ã0 M/CPU CPY 1496 Á2 M/CPU LDX 0Ã8Å Á0 M/CPU LDY 048à 80 M/CPU STY 0480 14 M/CPU JSR 8480 40 M/CPU JMP 0484 20 M/CPU BIT ( ÁSSEMBLER CONDITIONALS ) Ü : RANGE? ( BRANCH -- BRANCH ) DUP ABS 07Æ U> ÁBORT" OUT OF RANGE " ; : [[ ( ÂÅÇÉÎ) >HERE ; : ?] ( ÕÎÔÉÌ) >C, >HERE 1+ - RANGE? >C, ; : ?[ ( ÉÆ) >C, >HERE 0 >C, ; : ?[[ ( ×ÈÉÌÅ) ?[ SWAP ; : ]? ( ÔÈÅÎ) >HERE OVER >C@ ÉÆ SWAP >! ÅÌÓÅ OVER 1+ - RANGE? SWAP >C! ÔÈÅÎ ; : ][ ( ÅÌÓÅ) >HERE 1+ 1 JMP SWAP >HERE OVER 1+ - RANGE? SWAP >C! ; : ]] ( ÁÇÁÉÎ) JMP ; : ]]? ( ÒÅÐÅÁÔ) JMP ]? ; ( ÁSSEMBLER CONDITIONALS ) 90 ÃONSTANT ÃÓ Â0 ÃONSTANT Ãà Ä0 ÃONSTANT 0= Æ0 ÃONSTANT 0<> 10 ÃONSTANT 0< 30 ÃONSTANT 0>= 50 ÃONSTANT ÖÓ 70 ÃONSTANT Öà : NOT 20 [ ÆORTH ] XOR ; : BEQ 0<> ?] ; : BMI 0>= ?] ; : BNE 0= ?] ; : BPL 0< ?] ; : BCC ÃÓ ?] ; : BVC ÖÓ ?] ; : BCS Ãà ?] ; : BVS Öà ?] ; \ 2/W/INC/DEC C16 RAM/ROM.. CCLV2:JUL87 : 2INC DUP LDA CLC 2 # ADC DUP STA ÃÓ ?[ SWAP 1+ INC ]? ; : 2DEC DUP LDA SEC 2 # SBC DUP STA Ãà ?[ SWAP 1+ DEC ]? ; : WINC DUP INC 0= ?[ SWAP 1+ INC ]? ; : WDEC DUP LDA 0= ?[ OVER 1+ DEC ]? DEC ; : ;C: RECOVER JSR END-CODE ] 0 LAST ! 0 ; (16 \ Ã16+ÍACROS FOR ÂANKSWITCHING : RAM $FF3F STA ; : ROM $FF3E STA ; ' ÊSR ÁLIAS ÎORMÊSR ÄEFER ÊSR : Ã16+ÊSR DUP 0C000 U> ÉÆ ROM ÎORMÊSR RAM ÅÌÓÅ ÎORMÊSR ÔÈÅÎ ; ' Ã16+ÊSR ÉS ÊSR Ã) ( ÁSSEMBLER ;CODE ÃODE ÌABEL 03FEB85BP) ÏNLYFORTH : ÁSSEMBLER ÁSSEMBLER [ ÁSSEMBLER ] MEM ; : ;ÃODE [COMPILE] ÄOES> -3 ALLOT [COMPILE] ; -2 ALLOT ÁSSEMBLER ; IMMEDIATE : ÃODE ÃREATE HERE DUP 2- ! ÁSSEMBLER ; : >LABEL ( ADR -) HERE Ü ÃREATE SWAP , 4 HALLOT HEAP 1 AND HALLOT \ 6502-ALIGN HERE 4 - HEAP 4 CMOVE HEAP LAST @ COUNT 01Æ AND + ! DP ! ÄOES> ( - ADR) @ ; : ÌABEL [ ÁSSEMBLER ] >HERE >LABEL ÁSSEMBLER ; \ CÓAVE CÌOAD.. CLV08AUG87 \NEEDS ÃODE .( ?! ÃODE ?!) \\ ÁSSEMBLER (16 \NEEDS ROM .( ?! ROM ?!) \\ Ã) ÏNLYFORTH $ÆÆ90 >LABEL SETÍSG $90 >LABEL STATUS $ÆÆÂÁ >LABEL SETLFS $ÆÆÂÄ >LABEL SETÎAM $ÆÆÄ8 >LABEL ÂÓÁÖÅ $ÆÆÄ5 >LABEL ÂÌÏÁÄ ÌABEL SLÐARS SETUP JSR (16 ROM Ã) $80 # LDA SETÍSG JSR 0 # LDA STATUS STA Î LDA SEC 8 # SBC (DRV STA Ãà ?[ DEX ]? (DRV 1+ STX Î LDX Î 1+ LDY 1 # LDA SETLFS JSR Î 4 + LDX Î 5 + LDY Î 2+ LDA SETNAM JSR Î 6 + LDX Î 7 + LDY RTS END-CODE ÌABEL SLÅRR \ ÁÒ=ËERNALERROR Ãà ?[ 0 # LDA ]? PHA STATUS LDA $ÂÆ # AND (16 RAM Ã) PUSH JMP END-CODE --> \ SAVESYSTEM 02OCT87RE ÏNLYFORTH ÃODE CÓAVE ( F T+1 ÎAME ÎLEN DEV--ERR) 5 # LDA ÓÌÐARS JSR Î 8 + # LDA BSAVE JSR SLÅRR JMP END-CODE : SAVESYSTEM \ -- ÎAME MUST FOLLOW \ ÆORTH-ËERNAL A LA BOOT: SCR PUSH 1 SCR ! R# PUSH 0 R# ! \ ÅDITOR A LA BOOT [ ÅDITOR ] STAMP$ PUSH STAMP$ OFF (PAD PUSH (PAD OFF \ NUN GEHT'S LOS SAVE ORIGIN $17 - HERE 0 PARSE 8 CSAVE ABORT" ÓAVE-ÅRROR" ; \ ÔARGET COMPILER LOADSCR CLV14OCT87 \ ÉDEA AND FIRST ÉMPLEMENTATION BY KS/BP \ ÉMPLEMENTED ON 6502 BY KS/BP \ VOLKSÆÏÒÔÈ83-ÖERSION BY BP/WE ÏNLYFORTH HEX \NEEDS (16 .( ?! (16 (64 ?! Ã) QUIT ÁSSEMBLER \NEEDS NONRELOCATE 5 LOAD ÁSSEMBLER NONRELOCATE ÖARIABLE ÉMAGE Ã000 ÉMAGE ! ÖOCABULARY ÔTOOLS ÖOCABULARY ÄEFINING 1 10 +THRU \ ÔARGET COMPILER 11 13 +THRU \ ÔARGET ÔOOLS 14 16 +THRU \ ÒEDEFINITIONS CLEAR \ HEX 17 20 +THRU \ PREDEFINITIONS \ ÔARGET HEADER POINTERS BP27JUN85WE ÖARIABLE TDP : THERE TDP @ ; ÖARIABLE DISPLACE ÖARIABLE ?THEAD 0 ?THEAD ! ÖARIABLE TLAST 0 TLAST ! ÖARIABLE GLAST' 0 GLAST' ! ÖARIABLE TDOES> ÖARIABLE >IN: ÖARIABLE TVOC 0 TVOC ! ÖARIABLE TVOC-LINK 0 TVOC-LINK ! \ ÉMAGE AND BYTEORDER CLV2:JULL87 ÃODE ROMOFF (64 SEI 034 # LDA 01 STA Ã) ÎEXT JMP ÃODE ROMON (64 036 # LDA 01 STA CLI Ã) ÎEXT JMP ÃODE >BYTE ( 16B - 8BL 8BH) ÓÐ )Ù LDA PHA TXA ÓÐ )Ù STA ÓÐ 2DEC TXA ÓÐ )Ù STA PLA ÐUTÁ JMP ÃODE BYTE> ( 8BL 8BH - 16B) ÓÐ Ø) LDA PHA ÓÐ 2INC PLA ÓÐ )Ù STA ÎEXT JMP END-CODE : >IMAGE ( ADDR1 - ADDR2) DISPLACE @ - IMAGE @ + ; : >HEAP ( FROM QUAN -) HEAP OVER - 1 AND + \ 6502-ALIGN DUP HALLOT HEAP SWAP CMOVE ; \ ÇHOST-CREATING BP27JUN85WE 0 Ü ÃONSTANT <FORW> 0 Ü ÃONSTANT <RES> Ü : ÍAKE.GHOST ( - CFA.GHOST) HERE ÓTATE @ ÉÆ ÃONTEXT @ ÅÌÓÅ ÃURRENT ÔÈÅÎ @ DUP @ , NAME DUP C@ 1 01Æ UWITHIN NOT ABORT" INVAL.ÇNAME" 1 OVER +! C@ 1+ ALLOT HERE 2 PICK - -ROT <FORW> , 0 , 0 , OVER 2+ C@ 1 AND 1 XOR >R OVER R@ - HERE OVER - >HEAP HEAP R@ + SWAP ! ÄP ! HEAP R> + + ; \ GHOST WORDS KS27JUN85WE : GFIND ( STRING - CFA TF / STRING FF) DUP >R 1 OVER +! FIND -1 R> +! ; : GHOST ( - CFA) >IN @ NAME GFIND ÉÆ NIP EXIT ÔÈÅÎ DROP >IN ! ÍAKE.GHOST ; : ×ORD, GHOST EXECUTE ; : GDOES> ( CFA.GHOST - CFA.DOES) 4 + DUP @ ÉÆ @ EXIT ÔÈÅÎ HERE DUP <FORW> , 0 , 4 >HEAP ÄÐ ! HEAP DUP ROT ! ; \ GHOST UTILITIES KS27JUN85WE : G' NAME GFIND 0= ABORT" ?" ; : '. G' DUP @ <FORW> CASE? ÉÆ ." FORW" ÅÌÓÅ <RES> - ABORT" ??" ." RES" ÔÈÅÎ 2+ DUP @ 5 U.R 2+ @ ?DUP ÉÆ DUP @ <FORW> CASE? ÉÆ ." FDEF" ÅÌÓÅ <RES> - ABORT" ??" ." RDEF" ÔÈÅÎ 2+ @ 5 U.R ÔÈÅÎ ; ' ' ÁLIAS H' \ .UNRESOLVED BP27JUN85WE Ü : FORWARD? ( CFA - CFA / EXIT&TRUE) DUP @ <FORW> = OVER 2+ @ AND ÉÆ DROP ÔRUE RDROP EXIT ÔÈÅÎ ; Ü : UNRESOLVED? ( ADDR - F) 2+ DUP C@ 01Æ AND OVER + C@ ÂÌ = ÉÆ NAME> FORWARD? 4 + @ DUP ÉÆ FORWARD? ÔÈÅÎ ÔÈÅÎ DROP ÆALSE ; Ü : UNRESOLVED-WORDS ÂÅÇÉÎ @ ?DUP ×ÈÉÌÅ DUP UNRESOLVED? ÉÆ DUP 2+ .NAME ?CR ÔÈÅÎ ÒÅÐÅÁÔ ; : .UNRESOLVED VOC-LINK @ ÂÅÇÉÎ DUP 4 - UNRESOLVED-WORDS @ ?DUP 0= ÕÎÔÉÌ ; \ ÅXT. VOCS FOR T-COMPILAT. BP27JUN85WE : ÖOCABULARY ÖOCABULARY 0 , HERE TVOC @ , TVOC ! ; ÖOCABULARY ÔRANSIENT 0 TVOC ! ÏNLY DEFINITIONS ÆORTH ALSO : Ô ÔRANSIENT ; IMMEDIATE : È ÆORTH ; IMMEDIATE DEFINITIONS \ ÔRANSIENT PRIMITIVES KS04JUL85WE ÔRANSIENT DEFINITIONS : C@ È >IMAGE ROMOFF C@ ROMON ; : C! È >IMAGE ROMOFF C! ROMON ; : @ Ô DUP C@ SWAP 1+ C@ BYTE> ; : ! >R >BYTE R@ 1+ Ô C! R> C! ; : CMOVE ( FROM.MEM TO.TARGET QUAN -) BOUNDS ?ÄÏ DUP È C@ É Ô C! È 1+ ÌÏÏÐ DROP ; : HERE THERE ; : ALLOT ÔDP +! ; : C, Ô HERE C! 1 ALLOT È ; : , Ô HERE ! 2 ALLOT È ; \ ÔRANSIENT PRIMITIVES BP27JUN85WE : ," ÁSCII " PARSE DUP Ô C, UNDER THERE SWAP CMOVE ALLOT È ; : FILL ( ADDR QUAN 8B -) -ROT BOUNDS ?ÄÏ DUP É Ô C! È ÌÏÏÐ DROP ; : ERASE 0 Ô FILL ; : BLANK ÂÌ Ô FILL ; : HERE! È TDP ! ; \ ÒESOLVING KS29JUN85WE ÆORTH DEFINITIONS : RESOLVE ( CFA.GHOST CFA.TARGET -) OVER DUP @ <RES> = ÉÆ SPACE DUP >NAME .NAME ." EXISTS " 2+ ! DROP EXIT ÔÈÅÎ >R >R 2+ @ ?DUP ÉÆ ÂÅÇÉÎ DUP Ô @ È 2DUP = ABORT" RESOLVE LOOP" R@ ROT Ô ! È ?DUP 0= ÕÎÔÉÌ ÔÈÅÎ R> R> <RES> OVER ! 2+ ! ; : RESDOES> ( CFA.GHOST CFA.TARGET -) SWAP GDOES> DUP @ <RES> = ÉÆ 2+ ! EXIT ÔÈÅÎ SWAP RESOLVE ; ] ÄOES> [ HERE 3 - 0 ] DUP @ THERE ROT ! Ô , È ; ' <FORW> >BODY ! ] ÄOES> [ HERE 3 - 0 ] @ Ô , È ; ' <RES> >BODY ! \ MOVE-THREADS 6502-ALIGN CLV24.3.87) : MOVE-THREADS ÔVOC @ ÔVOC-LINK @ ÂÅÇÉÎ OVER ?DUP ×ÈÉÌÅ 2- @ OVER 2- Ô ! @ È SWAP @ SWAP ÒÅÐÅÁÔ ERROR" SOME UNDEF. ÔARGET-ÖOCS LEFT" DROP ; : TLATEST ( - ADDR) ÃURRENT @ 6 + ; : 6502-TALIGN ( SUPPOSED CFA -- ) 0ÆÆ AND 0ÆÆ = ÉÆ 1 Ô ALLOT È ÔÈÅÎ ; : SAVE-TARGET \ NAME MUST FOLLOW 08 02 BUSOPEN 0 PARSE BUSTYPE " ,P,W" COUNT BUSTYPE BUSOFF 08 02 BUSOUT DISPLACE @ 100 U/MOD SWAP BUS! BUS! THERE DISPLACE @ ÄÏ É Ô C@ È BUS! ÌÏÏÐ 08 02 BUSCLOSE ; \ COMPILING NAMES INTO TARG. BP27JUN85WE : (THEADER ?THEAD @ ÉÆ 1 ?THEAD +! THERE 6502-TALIGN EXIT ÔÈÅÎ >IN @ NAME SWAP >IN ! DUP C@ 1 020 UWITHIN NOT ABORT" INVAL. ÔNAME" DUP C@ 5 + THERE + 6502-TALIGN BLK @ Ô , È THERE TLATEST DUP @ Ô , È ! THERE DUP TLAST ! OVER C@ 1+ DUP Ô ALLOT CMOVE È ; : ÔHEADER TLAST OFF (THEADER ÇHOST DUP GLAST' ! THERE RESOLVE ; \ PREBUILD DEFINING WORDS BP27JUN85WE Ü : EXECUTABLE? ( ADR - ADR F) DUP ; Ü : TPFA, THERE , ; Ü : (PREBUILD ( CFA.ADR -) >IN @ ÃREATE >IN ! HERE 2- ! ; : PREBUILD ( ADR 0.FROM.: - 0) 0 ?PAIRS EXECUTABLE? DUP >R ÉÆ [COMPILE] ÌITERAL COMPILE (PREBUILD ÅÌÓÅ DROP ÔÈÅÎ COMPILE ÔHEADER ÇHOST GDOES> , R> ÉÆ COMPILE TPFA, ÔÈÅÎ 0 ; IMMEDIATE RESTRICT \ CODE PORTION OF DEF.WORDS BP27JUN85WE : DUMMY 0 ; : ÄO> ( - ADR.OF.JMP.DODOES> 0) [COMPILE] DOES> HERE 3 - COMPILE @ 0 ] ; \ THE 6502 ÁSSEMBLER BP27JUN85WE Ü ÃREATE RELOCATE ] Ô C, , C@ HERE ALLOT ! C! È [ ÔRANSIENT DEFINITIONS : ÁSSEMBLER È [ ÁSSEMBLER ] RELOCATE >CODES ! ÁSSEMBLER ; : >LABEL ( 16B -) È >IN @ NAME GFIND ROT >IN ! ÉÆ OVER RESOLVE DUP ÔÈÅÎ DROP ÃONSTANT ; : ÌABEL È THERE Ô >LABEL ÁSSEMBLER È ; : ÃODE È ÔHEADER THERE 2+ Ô , ÁSSEMBLER È ; \ IMMED. RESTR. ' Ü COMPILE BP27JUN85WE : ?PAIRS ( N1 N2 -- ) È - ABORT" UNSTRUCTURED" ; : >MARK ( - ADDR) È THERE Ô 0 , È ; : >RESOLVE ( ADDR -) È THERE OVER - SWAP Ô ! È ; : <MARK ( - ADDR) È THERE ; : <RESOLVE ( ADDR -) È THERE - Ô , È ; : IMMEDIATE È ÔLAST @ ?DUP ÉÆ DUP Ô C@ 040 OR SWAP C! È ÔÈÅÎ ; : RESTRICT È ÔLAST @ ?DUP ÉÆ DUP Ô C@ 080 OR SWAP C! È ÔÈÅÎ ; : ' ( <NAME> - CFA) È G' DUP @ <RES> - ABORT" ?" 2+ @ ; : Ü È ?THEAD @ ?EXIT ?THEAD ON ; : COMPILE È ÇHOST , ; IMMEDIATE RESTRICT \ ÔARGET TOOLS KS27JUN85WE ÏNLYFORTH ÔTOOLS ALSO DEFINITIONS Ü : TTYPE ( ADR N -) BOUNDS ?ÄÏ É Ô C@ È EMIT ÌÏÏÐ ; : .NAME ( NFA -) ?DUP ÉÆ DUP 1+ SWAP Ô C@ È 01Æ AND TTYPE ÅÌÓÅ ." ??? " ÔÈÅÎ SPACE ?CR ; Ü : NFA? ( CFA LFA - NFA / CFA FF) ÂÅÇÉÎ DUP ×ÈÉÌÅ 2DUP 2+ DUP Ô C@ È 01Æ AND + 1+ = ÉÆ 2+ NIP EXIT ÔÈÅÎ Ô @ È ÒÅÐÅÁÔ ; : >NAME ( CFA - NFA / FF) ÔVOC ÂÅÇÉÎ @ DUP ×ÈÉÌÅ UNDER 2- @ NFA? ?DUP ÉÆ NIP EXIT ÔÈÅÎ SWAP ÒÅÐÅÁÔ NIP ; \ ÔTOOLS FOR DECOMPILING KS29JUN85WE Ü : ?: DUP 4 U.R ." :" ; Ü : @? DUP Ô @ È 6 U.R ; Ü : C? DUP Ô C@ È 3 .R ; : S ( ADR - ADR+) ?: SPACE C? 3 SPACES DUP 1+ OVER Ô C@ È TTYPE DUP Ô C@ È + 1+ ; : N ( ADR - ADR+2) ?: @? 2 SPACES DUP Ô @ È [ ÔTOOLS ] >NAME .NAME È 2+ ; : D ( ADR N - ADR+N) 2DUP SWAP ?: SWAP 0 ÄÏ C? 1+ ÌÏÏÐ 2 SPACES -ROT TTYPE ; \ ÔOOLS FOR DECOMPILING BP29JUN85WE : L ( ADR - ADR+2) ?: 5 SPACES @? 2+ ; : C ( ADR - ADR+1) 1 D ; : B ( ADR - ADR+1) ?: @? DUP Ô @ È OVER + 5 U.R 2+ ; : DUMP ( ADR N -) BOUNDS ?ÄÏ CR É 8 D DROP STOP? ÉÆ ÌÅÁÖÅ ÔÈÅÎ 8 +ÌÏÏÐ ; : VIEW Ô ' È [ ÔTOOLS ] >NAME ?DUP ÉÆ 4 - Ô @ È EDIT ÔÈÅÎ ; \ REINTERPRETATION DEF.-WORDS 27JUN85WE ÏNLYFORTH : REDEFINITION TDOES> @ ÉÆ >IN PUSH [ ' >INTERPRET >BODY ] ÌITERAL PUSH ÓTATE PUSH ÃONTEXT PUSH >IN: @ >IN ! NAME [ ' ÔRANSIENT 2+ ] ÌITERAL (FIND NIP 0= ÉÆ CR ." ÒEDEFINITION: " HERE .NAME >IN: @ >IN ! : ÄEFINING INTERPRET ÔÈÅÎ ÔÈÅÎ 0 TDOES> ! ; \ ÃREATE..DOES> STRUCTURE BP27JUN85WE Ü : (;TCODE ÔLAST @ DUP Ô C@ + 1+ ! È RDROP ; Ü : CHANGECFA COMPILE LIT TDOES> @ , COMPILE (;TCODE ; ÄEFINING DEFINITIONS : ;CODE 0 ?PAIRS CHANGECFA REVEAL RDROP ; IMMEDIATE RESTRICT ÄEFINING ' ;CODE ÁLIAS DOES> IMMEDIATE RESTRICT : ; [COMPILE] ; RDROP ; IMMEDIATE RESTRICT \ REDEFINITION CONDITIONALS BP27JUN85WE ' ÄÏ ÁLIAS ÄÏ IMMEDIATE RESTRICT ' ?ÄÏ ÁLIAS ?ÄÏ IMMEDIATE RESTRICT ' ÌÏÏÐ ÁLIAS ÌÏÏÐ IMMEDIATE RESTRICT ' ÉÆ ÁLIAS ÉÆ IMMEDIATE RESTRICT ' ÔÈÅÎ ÁLIAS ÔÈÅÎ IMMEDIATE RESTRICT ' ÅÌÓÅ ÁLIAS ÅÌÓÅ IMMEDIATE RESTRICT ' ÂÅÇÉÎ ÁLIAS ÂÅÇÉÎ IMMEDIATE RESTRICT ' ÕÎÔÉÌ ÁLIAS ÕÎÔÉÌ IMMEDIATE RESTRICT ' ×ÈÉÌÅ ÁLIAS ×ÈÉÌÅ IMMEDIATE RESTRICT ' ÒÅÐÅÁÔ ÁLIAS ÒÅÐÅÁÔ IMMEDIATE RESTRICT \ CLEAR ÌITER. ÁSCII ['] ." BP27JUN85WE ÏNLYFORTH ÔRANSIENT DEFINITIONS : CLEAR ÔRUE ABORT" ÔHERE ARE GHOSTS" ; : ÌITERAL ( N -) È DUP $ÆÆ00 AND ÉÆ Ô COMPILE LIT , ÅÌÓÅ COMPILE CLIT C, È ÔÈÅÎ ; IMMEDIATE : ÁSCII È ÂÌ WORD 1+ C@ ÓTATE @ ÉÆ Ô [COMPILE] ÌITERAL È ÔÈÅÎ ; IMMEDIATE : ['] Ô ' [COMPILE] ÌITERAL È ; IMMEDIATE RESTRICT : " Ô COMPILE (" ," È ; IMMEDIATE RESTRICT : ." Ô COMPILE (." ," È ; IMMEDIATE RESTRICT \ ÔARGET COMPILATION ] [ BP03JUL85WE ÆORTH DEFINITIONS : TCOMPILE ?STACK >IN @ NAME FIND ?DUP ÉÆ 0> ÉÆ NIP EXECUTE >INTERPRET ÔÈÅÎ DROP DUP >IN ! NAME ÔÈÅÎ GFIND ÉÆ NIP EXECUTE >INTERPRET ÔÈÅÎ NULLSTRING? ÉÆ DROP EXIT ÔÈÅÎ NUMBER? ?DUP ÉÆ 0> ÉÆ SWAP Ô [COMPILE] ÌITERAL ÔÈÅÎ [COMPILE] ÌITERAL È DROP >INTERPRET ÔÈÅÎ DROP >IN ! ×ORD, >INTERPRET ; -2 ALLOT ÔRANSIENT DEFINITIONS : ] È ÓTATE ON ['] TCOMPILE IS >INTERPRET ; \ ÔARGET CONDITIONALS BP27JUN85WE : ÉÆ Ô COMPILE ?BRANCH >MARK È 1 ; IMMEDIATE RESTRICT : ÔÈÅÎ ABS 1 Ô ?PAIRS >RESOLVE È ; IMMEDIATE RESTRICT : ÅÌÓÅ Ô 1 ?PAIRS COMPILE BRANCH >MARK SWAP >RESOLVE È -1 ; IMMEDIATE RESTRICT : ÂÅÇÉÎ Ô <MARK È 2 ; IMMEDIATE RESTRICT : ×ÈÉÌÅ Ô 2 ?PAIRS 2 COMPILE ?BRANCH >MARK -2 È 2SWAP ; IMMEDIATE RESTRICT Ü : (REPEAT Ô 2 ?PAIRS <RESOLVE È ÂÅÇÉÎ DUP -2 = ×ÈÉÌÅ DROP Ô >RESOLVE È ÒÅÐÅÁÔ ; : ÕÎÔÉÌ Ô COMPILE ?BRANCH (REPEAT È ; IMMEDIATE RESTRICT : ÒÅÐÅÁÔ Ô COMPILE BRANCH (REPEAT È ; IMMEDIATE RESTRICT \ ÔARGET CONDITIONALS BP27JUN85WE : ÄÏ Ô COMPILE (DO >MARK È 3 ; IMMEDIATE RESTRICT : ?ÄÏ Ô COMPILE (?DO >MARK È 3 ; IMMEDIATE RESTRICT : ÌÏÏÐ Ô 3 ?PAIRS COMPILE (LOOP COMPILE ENDLOOP >RESOLVE È ; IMMEDIATE RESTRICT : +ÌÏÏÐ Ô 3 ?PAIRS COMPILE (+LOOP COMPILE ENDLOOP >RESOLVE È ; IMMEDIATE RESTRICT \ PREDEFINITIONS BP27JUN85WE : ABORT" Ô COMPILE (ABORT" ," È ; IMMEDIATE : ERROR" Ô COMPILE (ERR" ," È ; IMMEDIATE ÆORTH DEFINITIONS ÖARIABLE TORIGIN ÖARIABLE TUDP 0 TUDP ! : >USER Ô C@ È TORIGIN @ + ; \ ÄATATYPES BP27JUN85WE ÔRANSIENT DEFINITIONS : ORIGIN! È TORIGIN ! ; : USER' ( - 8B) Ô ' 2 + C@ È ; : UALLOT ( N -) È TUDP @ SWAP TUDP +! ; ÄO> >USER ; : ÕSER PREBUILD ÕSER 2 Ô UALLOT C, ; ÄO> ; : ÃREATE PREBUILD ÃREATE ; \ ÄATATYPES BP27JUN85WE ÄO> Ô @ È ; : ÃONSTANT PREBUILD ÃONSTANT Ô , ; : ÖARIABLE ÃREATE 2 Ô ALLOT ; DUMMY : ÖOCABULARY È >IN @ ÖOCABULARY >IN ! Ô PREBUILD ÖOCABULARY 0 , 0 , HERE È TVOC-LINK @ Ô , È TVOC-LINK ! ; ÄO> ; : ÄEFER PREBUILD ÄEFER 2 Ô ALLOT ; : ÉS Ô ' È >BODY ÓTATE @ ÉÆ Ô COMPILE (IS , È ÅÌÓÅ Ô ! È ÔÈÅÎ ; IMMEDIATE \ TARGET DEFINING WORDS BP27JUN85WE Ü : DODOES> Ô COMPILE (;CODE È ÇLAST' @ THERE RESDOES> THERE TDOES> ! ; : ;CODE 0 Ô ?PAIRS DODOES> ÁSSEMBLER È [COMPILE] [ REDEFINITION ; IMMEDIATE RESTRICT : DOES> Ô DODOES> $4à C, COMPILE (DODOES> È ; IMMEDIATE RESTRICT DUMMY : : È TDOES> OFF >IN @ >IN: ! Ô PREBUILD : È CURRENT @ CONTEXT ! Ô ] È 0 ; \ : ÁLIAS ; 02OCT87RE : ÁLIAS ( N -- ) È ÔLAST OFF (THEADER ÇHOST OVER RESOLVE TLAST @ Ô C@ È 20 OR TLAST @ Ô C! , È ; : ; Ô 0 ?PAIRS COMPILE UNNEST [COMPILE] [ È REDEFINITION ; IMMEDIATE RESTRICT DUMMY : ÉNPUT: È TDOES> OFF >IN @ >IN: ! Ô PREBUILD ÉNPUT: È CURRENT @ CONTEXT ! Ô ] È 0 ; DUMMY : ÏUTPUT: È TDOES> OFF >IN @ >IN: ! Ô PREBUILD ÏUTPUT: È CURRENT @ CONTEXT ! Ô ] È 0 ; \ PREDEFINITIONS BP03JUL85WE : COMPILE Ô COMPILE COMPILE È ; IMMEDIATE RESTRICT : ÈOST È ÏNLYFORTH ÔTOOLS ALSO ; : ÃOMPILER Ô ÈOST È ÔRANSIENT ALSO DEFINITIONS ; : [COMPILE] È ×ORD, ; IMMEDIATE RESTRICT : ÏNLYPATCH È THERE 3 - 0 TDOES> ! 0 ; ÏNLYFORTH : ÔARGET ÏNLYFORTH ÔRANSIENT ALSO DEFINITIONS ; ÔRANSIENT DEFINITIONS ÇHOST C, DROP \ ÔARGET ÃOMPILER ÍANUAL CLV06DEC88 ÔARGET-ÃOMPILER VOLKSÆÏÒÔÈ 3.8 6502 (C) VOLKSÆÏÒÔÈ-ÄEVELOPERS 1985-2006 AND ÆORTH ÇESELLSCHAFT E.Ö. HTTP://WWW.FORTH-EV.DE \ ..ÇEBRAUCHSANWEISUNG.. CLV05JAN87 1. ÉNTRODUCTION ÔHE ÔARGETCOMPILER IS WEIRD, KRYPTIC AND SOMETIMES DANGEROUS. ÉF AN ERROR OCCURS, REBOOT MACHINE AND START FROM SCRATCH. \ ..ÍANUAL CLV06DEC88 2. ÌOAD 2.1. ÒELOCATE ÓYSTEM ÔHE ÒELOCATE ÓCREEN ON THIS ÄISK CREATS AN ÅNVIRONMENT WITH ÓTACKS ÓTACKLEN $9400 RÓTACKLEN $0400 ÌIMIT MUST BE $C000 WHICH IS DEFAULT FOR Ã64, FOR Ã16 THIS VALUE MUST BE DOWN-PATCHED 2.1. LOAD SAVE-SYSTEM FROM DISK 1 2.2. LOAD ÅDITOR (IF NEEDED) 2.3. ÌOAD ÔARGETCOMPILER WITH ÌOADSCR. FIRST ONLY THE RESIDENT PART 2.4. EXECUTE SAVESYSTEM 2.5. LOAD ÔRAGETCOMPILER PREDEFINITIONS (SEE BOTTOM OF ÌOADSCREEN) AVOLKSFORTH 3.8tc  U3 2A    ÿ\ ..ÍANUAL CLV06DEC88 2.6. LOAD ÓOURCES OF ÆORTH ËERNEL ON A REAL MACHINE, THIS TAKES ABOUT 30 MINUTES! - ÈOST AND ÔARGETMACHINE THE ÓOURCES ARE PREPARED FOR Ã16 & Ã64. ÃHANGE THE DEFINITIONS OF (Ã16 (Ã64 (SEE ÓCREEN AND ÈANDBOOK) - ÂLK ## HERE #### THERE #### WILL BE PRINTED AS STATUS MSG. - VARIOUS <NAME> EXISTS ÍESSAGES ARE OK - AT THE ÅND ÓÁÖÅÓÙÓÔÅÍ <NAME> WILL BE PRINTED. ÃHANGE ÄISK! AND THEN PRESS <RETURN> TO SAVE NEW ÆORTH ÓYSTEM \\ ..ÅXAMPLE SESSION CLV06DEC88 3. ÅXAMPLE FOR ÃÂÍ ÐLUS 4 ÕSED ÄISKS: 1OF4 .. 4OF4 - VOLKSÆORTH ÄISKS 3.8 ÔÃQ - ÔARGETÃOMP ÓOURCE ÔÃF - " ÆILES (EMPTY) 3.1. ÃREATE A ÔARGETCOMPILER ÓYSTEM ÓWITCH ON ÐLUS4, INSERT ÄISK 1OF4 ÄÉÒÅÃÔÏÒÙ -> ... ÌÏÁÄ "Ã16ÕÌÔÒÁÆÏÒÔÈ83",8 -> SEARCHING... LOADING...READY. ÒÕÎ -> ULTRAÆÏÒÔÈ ... OK \\ ..ÅXAMPLE ÓESSION CLV06DEC88 INSERT ÄISK ÔÃQ 4 LOAD FLUSH \ RELOCATE -> VOLKSÆÏÒÔÈ83 ... OK INSERT ÄISK 3OF4 19 LOAD FLUSH \ ÅDITOR -> BLK 4 BLK 5 ...... OK \ APPR5 MIN INSERT ÄISK 1OF4 26 LOAD FLUSH \ SAVESYSTEM INSERT ÄISK ÔÃQ $10 LOAD FLUSH \ ÔÃ-RESIDENT ÐART INSERT ÄISK ÔÃF SAVESYSTEM @:VF-TC-3.8 -> OK ÉF ÆLOPPY FLASHES: ÅRROR \ @: IS: OVERWRITE IF NEEDED \ THIS FILE WILL LATER REPLACE \ THE RUNNING ÆORTH ÓYSTEM \\ ..ÅXAMPLE ÓESSION CLV06DEC88 3.2. ÃOMPILING A NEW ÓYSTEM FIRST AS FOR 3.1. OR: ÌÏÁÄ "VF-TC-3.8",8 -> SEARCHING...LOADING..READY. ÒÕÎ -> VOLKSÆÏÒÔÈ83 ... OK INSERT ÄISK ÔÃQ HEX 27 30 THRU FLUSH \ LOAD TRANSIENT ÐART OF Ôà INSERT ÄISK 2OF4 (ÆORTH ÓOURCE) $09 L \ EDIT ÓCREEN 9 (C64 (C16 (C16+ (C16- (COMMENT IN OR OUT DEPEND. ON ÔARGET-ÍASCHINE $F LOAD \ COMPILE SYSTEM INSERT ÔÃF OR BLANK DISK SAVETARGET C16ULTRAFORTH83 OR SAVETARGET C64ULTRAFORTH83 - ÅÎÄÅ - \\ ÔERMS: ÈOST 'NORMAL' ÆORTH-ÓYSTEM IN ÍACHINE ÔARGET ÓYSTEM TO BE COMPILED ÔRANSIENT ÖOCABULARY FOR Ô-ÃOMPILATION IN ÈOST NEEDS THE ÓPECIALASSEMBLER FOR Ôà 'NORMAL' ÁSSEMBLER ÓTARTADDRESS OF ÔARGET ÓYSTEMS IN ÈOST ÔOOLS FOR ÔARGET-ÓYSTEM ×ORDS FOR ÒEDEFINITIONS \\ ÔARGET-DP HERE IN ÔARGET ÓTARTADDRESS OF ÔARGET-ÓYSTEMS ÉF 0, WE CREATE HEADER IN ÔARGET NFA OF LAST CREATED WORD CFA OF LAST CREATED GHOST CFA OF ÃODE FOR ÄOES>-ÐARTS ÁDDRESS OF LAST : IN ÂLOCK ÔVOC-ÌINK FOR ÈOST ÔVOC-ÌINK FOR ÔARGET \\ SWITCHES TO ÒÁÍ UNDER ÏÓ SWITCHES ÂACK CALCULATES PHYSICAL ÁDDRESS FROM TARGET ÁDDRESS CMOVE TO ÈEAP WITH AUTOMATIC HALLOT >IMAGE MUST BE ADJUSTED WHEN CHANGING MEMORY MANAGENT FOR TARGET SYSTEM SAME WITH C@ AND C! \\ <FORW> POINTS TO CODE FOR FORWARD <RES> POINTS TO CODE FOR RESOLVED IF COMPILING, ÇHOST WILL BE LINKED UNDER(!) LAST ÃONTEXT ×ORD ELSE APPENDED TO ÃURRENT AS NORMAL LFA ÇHOST POINTS TO LAST WORD (S.A) GET NAME AND CHECKS FOR VALID LENGTH ENLARGES NAME BY ONE BLANK CALCULATES NAMELENGTH ( LEN START LINK) CF.ÇHOST, CFA.ÔARGET, ÐTR TO ÄOES>.CFA 6502-ALIGN CMOVED ÇHOST ON ÈEAP LAST WORD POINTS NOT TO ÇHOST CACLCULATES CFA.GHOST ÌAST (ÃURRENT @) WILL BE LINKED TO ; IN REVEAL \\ SEARCH FOR GHOST SEARCH FOR GHOST IF FOUND, FINISH IF NOT FOUND, IT WILL BE CREATED STORES CFA.GHOST ( <FORW> OR <RES> ) ÁDR OF ÐTR TO ÄOES>.CFA IF EXISTING, CFA OF ÄOES> ELSE CREATE ÐÔÒ AND SEE ABOVE >HEAP STARTS ON EVEN ADDRESSES => 6502-ALIGN \\ GETS CFA OF ÇHOST GET STATE OF GHOST, IF FORWARD REFERENCE OR ALREADY RESOLVED (WITH CFA.ÔARGET) SAME FOR POSSIB. ÄOES>-ÐARTS WHILE ÔARGET-ÃOMPILATION ' WILL BE DONE FOR ÇHOSTS \\ IF CF =<FORW> AND AN ÁDDRESS EXISTS IN ÔARGET ÓYSTEM EXIT UNRESOLVED? WITH ÔRUE-ÆLAG CHECKS IF NAME IS A ÇHOST GETS CFA AND CHECKS FOR UNRESOLVED SAME WITH ÄOES>-ÐART PRINT FOR ÖOCABULARY ALL UNRESOLVED WORDS SEARCH THROUGH ALL ÖOCABULARIES PRINT NON-RESOLVED WORDS \\ ÖOCABULARY STRUCTURE: ÎAME ÂYTES ÃODE FUER ÖOCABULARYS ÌATEST 0 1 ÃOLD-ÌATEST 2 3 NORMAL ÖOC-LINK 4 5 ------------------- ÔLATEST 6 7 ADDITIONAL ÔVOC-LINK 8 9 Ô AND È ARE ÉMMEDIATE AND REPLACING [ ÔRANSIENT ] OR [ ÆORTH ] È => ÈOST \\ ×ORDS FOR ÔARGET-ÃOMPILATION ×ORDS FOR VIRTUAL ÔARGET-ÍEMORY Ô C@ ACCES ÒÁÍ BELOW ÏÓ Ô C! ALSO ÁLL FOLLOWING WORDS USE C@ AND C! CMOVE WORKS ONLY FROM ÈOST TO ÔARGET, NOT OTHER DIRECTION ÏN CHANGES TO THE VIRTUAL ÍEMORY- ÍANAGEMENT, C@, C! AND >IMAGE MUST BE ADJUSTED! \\ ×ORDS FOR ÔARGET-ÃOMPILATION \\ RESOLVES FORWARD REFERENCES CHECKS, IF ALREADY RESOLVED PRINT WARNING IF YES SET CFA.TARGET TO NEW VALUE, ÅND ÆORWARDREFERENCE AVAILABLE ? ÙES, GET ADDRESS IN ÔARGET ÃANCEL, IF POINTING TO ITSELF AND SET CFA.TARGET UNTIL ÅND CFA.TARGET TO CFA.GHOST AND RESOLVED AS CF.TARGET SAME FOR ÄOES>-ÐARTS ÄOES> COMPILES A ÊÍÐ (DODOES> (DODOES> BRINGS THE ON CFA.GHOST FOLLLOWING ADDRESS, WHICH IS CFA.TARGET, ON THE STACK CFA.GHOST IS EITHER <FORW> OR <RES> CFA.TARGET IS THE CFA IN ÔARGET-ÓYSTEM ALSO <FORW> OR ALREADY VALID \\ FOR ALL ÖOCABLUARIES IN ÔRANSIENT AND ÔARGET SET ÔARGET-ÃOLD-ÌATEST TO ÔRANSIENT-ÔLATEST ÅRROR, IF ÔVOC-LINK ALSO POINTS TO OTHER ÖOCABULARYS ÐOINTS TO ÔLATEST IN ÔRANSIENT-ÖOCS SAVES A ÔARGETSYSTEM AS ÐROGRAMM- FILE ON ÄISK (Ã64-ÓPECIAL!!) \\ IF 0, ÈEADER, ELSE ?THEAD INCREMENT 6502-ALIGN AND ÅNDE GETS ÎAME AN CONVERTS TO CAPITAL ÅRROR ON WRONG LENGTH CALULATES CFA AND 6502-ALIGN ÂLOCKNUMBER FOR VIEW LINK IN OF NEW NAME IN ÃURRENT ÔLAST FOR IMMEDIATE AND RESTRIC CREATE SAVE ÎAME IN ÔARGET SET ÔLAST TO 0 CREATE ÈEADER, CREATE ÇHOST, IF NEW, CFA.GHOST TO ÇLAST' AND RESOLVE \\ ON ÃREATE, ÕSER, ÃONSTANT, ÖARIABLE AND ÄEFER, NOT FOR : UND ÖOCABULARY COMPILING ÐTR TO PFA.TARGET IN ÈOST CREATES ÈEADER IN ÈOST WITH CFA.ADR ÔHIS POINTS TO A ÄOES>-ÐART IN ÔARGET (S.BELOW) FROM: IF CREATED WORD SHOULD BE EXECUTABLE IN CURRENT, CREATE A HEADER ELSE NOT WITH CORRESPONDING CFA ELSE NOT CREATE HEADER IN ÔARGET AND COMPILE AS CFA OF ÄOES>-ÐART STORE THIS ADDRESS IN ÈOST AS PDF PREBUILD IS A ÄEFINING-×ORD FOR ÄEFINING-×ORDS !! \\ RESULTS THAT WITH FOLLWING ÄEFINING-×ORD CREATED WORDS CANNOT BE EXECUTED ÓPECIAL-ÄOES> FOR ×ORDS CREATED IN ÃURRENT, GIVES PFA IN ÔARGET ! ÄO> ... ; : ... ÂUILD ... ; SAME AS ÃREATE ... ÄOES> : ÄO> [COMPILE] DOES> HERE 3 - 0 ] ; : (BUILD ÃREATE HERE 2- ! ; : ÂUILD (CFA 0 - 0) 0 ?PAIRS [COMPILE] ÌITERAL COMPILE (BUILD 0 ; \\ ÁSSEMBLER ASSEMBLES IN ÔARGET NOW ENABLES ÁSSEMBLER AND RELOCATE IF LABEL ALREADY EXISTS AS ÇHOST, RESOLVE FORWARD REFERENCE AS ÃONSTANT IN ÈOST ÌABEL POINTS TO THERE ÓPECIAL-ÃODE FOR ÔARGET \\ ÃONTROLSTRUCTURES FOR ÔARGET-ÓYSTEM ' IN ÔRANSIENT ACCESSES ÇHOSTS AND GETS CFA.TARGET ÔHE NEXT WORD WILL BE CREATED WITHOUT HEADER WORKS ON ÈOST, NOT ON ÔARGET \\ ÔOOLS FOR ÔARGET-ÓYSTEM SIMILAR TO NORMAL TOOLS PRINTS N CHARS AT ADDR PRINTS NAME OF WORD, IF NFA <>0 ELSE ??? CHECKS, IF LFA NFA OF CFA IS AND RETURNS NFA, ELSE CFA AND FF CONVERTS CFA IN NFA, IF POSSIBLE \\ ÔOOLS FOR ÔARGET-ÓYSTEM SIMILAR TO NORMAL TOOLS PRINTS STRING AT ADR AND ADJUSTS ADR PRINT NAME OF COMPILE WORD AND ADJUST ADR PRINTS N BYTES FROM ADR AND ADJUSTS ADR \\ ÔOOLS FOR ÔARGET-ÓYSTEM PRINTS N ÂYTES AT ADR, LIKE D, BUT NICE FORMATTED DISPLAYS ÓOURCECODESCREEN OF WORD \\ ALLOWS EXECUTION OF NEW CREATED DEFINING WORDS DURING TARGET COMPILATION IS ;CODE OR DOES> ? YES, SAVE SYSTEMSTATE >IN TO BEGIN OF LAST ÃOLONDEF. NO AS PREDEFINITION IN ÔRANSIENT AVAILABLE? YES, PRINT "ÒEDEFINITION: " AND LAST ÎAMES >IN ADJUST, ÆORTH-: EXECUTE AND SWITCH ON ÄEFININING AS ÃONTEXT RESET TDOES> \\ CHANGES THE CFA OF LST DEFINED WORD TO ÄOES>-ÐART IN ÔARGET COMPILES, WHICH COMPILES THE ADR OF ÄOES>-PART AND (;CODE WHEN EXECUTED ;CODE AND ÄOES> MUST BE DEFINED IN REDEF SAME AS ÄO> FOR PREBUILD STORES LAST WORD IN ÈOST AND JUMPS IN REDEFINITION BEHIND INTERPRET ÓTRUCTUR OF A IN ÈOST CREATED WORD: LFA\NAME\CFA TO JMP (DOEDOES\PFA TO ÄOES>-ÐART IN ÔARGET ×ORDS, CREATED BY ÒEDEFINITION OF ÄEFINING ×ORDS, RETURN THEIR ÐÆÁ, WHEN EXECUTED IN ÈOST \\ ÆORTH-ÃONTROLLSTRUCTURES, BECAUSE ÔRANSIENT WILL FIND WORDS FOR ÔARGET \\ ÐREDEFINITIONS ×ORDS THAT MUST BE EXECUTABLE IN ÔRANSIENT \\ MAIN ÃOMPILELOOP SEARCH FOR NAMES IN ÔRANSIENT AND ÆORTH FOUND, EXECUTE, IF IMMEDIATE ELSE RESET >IN SEARCH ÇHOST AND EXDCUTE CFA ÎUMBER?, IF YES, EXECUTE ÌITERAL (Ô!) CREATE NEW GHOST AND COMPILE FORWARD REFERENCE ENABLE ÃOMPILER, SET >INTERPRET FROM TCOMPILE \\ ÃONDITIONALS FOR ÔARGET-ÃOMPILATION \\ ÃONDITIONALS FOR ÔARGET-ÃOMPILATION \\ ÉMMEDIATE-×ORDS FOR ÔARGET ORIGIN IN TARGET UDP IN TARGET CALCULATES ÁDDRESS IN ÕSER-ÁREA FROM ÁDDRESS OF ÏFFSET \\ ÕSER-ÖARIABLE ARE ALSO EXECUTABLE IN ÔRANSIENT AND RETURN ÔARGET-ÁDDRESSES ×ITG ÃREATE COMPILED ×ORDS ARE EXECUT- ABLE IN ÔRANSIENT AND RETURN THE PFA.TARGET \\ ÁLSO ÃONSTANT AND ÖARIABLE CAN BE EXECUT ED IN ÔRANSIENT AND REZTURN THE ÔARGET ÖALUES ÖOCABULARYS ARE EXECUTABLE IN TRANSIENT ÖOCABULARY 'NAME' CREATED: 1. Á ÖOCABULARY ÅNTRY IN ÃURRENT WITH 5 FIELDS CONNECTED ON TVOC 2. Á ÖOCABULARY ÅNTRY IN ÃURRENT WITH 3 ÆIELDS CONNECTED ON TVOC-LINK 3. Á ÇHOST \\ CREATES A ÖARIABLE-HEADER SAME AS ÉS IN ÆORTH CREATES ÃODE KILE ;CODE IN ÆORTH ÆORWARDREFERNCE FOR ÄOES>-ÐART WILL RESOLVED AND TDOES> SET FOR REDEFINITION LIKE ;CODE IN ÆORTH, BUT WITH REDEFINITI ON LIKE ÄOES> IN ÆORTH, BUT WITH DODOES> \\ DISABLE REDEFINITION CREATE SMALL ENTRY IN ÔRANSIENT FOR WITH : CREATED WORDS SET ÃONTEXT TO FIRST FIX ÖOC CREATE ÈEADER IN ÔARGET AND RESOLVE FORWARD-REFERNCE WITH ÁLIAS-CFA SAME AS HIDE IN ÆORTH SAME AS ; IN ÆORTH, AND REDEFINITION IS STARTED \\ CREATES COMPILE AS FORWARDREFERNCE !! SET ORDER TO: ÔTOOLS ÔTOOLS ÆORTH ÏNLY AS ÈOST, ORDER: ÔRANSIENT ÔRANSIENT ÔTOOLS ÆORTH ÏNLY COMPILS THE CFA.TARGET OF ÇHOSTS ÓPECIAL-ÃODE FOR ÏNLY-ÖOCABULARY SET ORDER FOR ÔARGET-ÃOMPILATION: ÔRANSIENT ÔRANSIENT ÆORTH ÏNLY ÔHANKS TO ËLAUS FOR 'PUNCTUATION?' !!!