mirror of
https://github.com/forth-ev/VolksForth.git
synced 2024-05-31 15:41:34 +00:00
1 line
171 KiB
Plaintext
1 line
171 KiB
Plaintext
\ ### Í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) A |