mirror of
https://github.com/forth-ev/VolksForth.git
synced 2024-06-01 06:41:37 +00:00
1 line
171 KiB
Plaintext
1 line
171 KiB
Plaintext
\\ 腎RECTORY ULTRA葡以<E891A1> 3OF4 26OCT87RE . &0 .. &0 ROM-RAM-SYS &2 訰ANSIENT-罶SEMBLER &4 罶SEMBLER-6502 &5 2WORDS &14 UNLINK &15 SCR<>CBM &16 (SEARCH &17 臘ITOR &19 .BLK &46 訰ACER/設OLS &47 蚒LTI-訟SKER &57 臥SON邑80 &63 置1526 &75 眯-80 &78 \\ 肙NTENT VOLKS芆RTH 3.81.02 CAS16AUG06 ROM RAM SYS 2 - 3 訰ANSIENT 罶SEMBLER 4 罶SEMBLER-6502 5 - 12 13 FREE 2WORDS 14 UNLINK 15 SCR<>CBM 16 (SEARCH 17 臘ITOR 19 .BLK 46 訰ACER 設OLS 47 蚒LTI-訟SKER 57 蠷INTER: 臥SON邑80 63 蠷INTER: 置1526 75 蠷INTER: 眯-80 78 親ADOWS 85 ... \ ROM RAM SYS CAS16AUG06 \ 親ADOW WITH 肨RL+<2B>---> \ NEEDED FOR JUMPS \ IN THE 蚁<> 罵EA 罶SEMBLER ALSO DEFINITIONS (16 \ 覹ITCH 翧NK 8000-破破 : ROM HERE 9 + $8000 U> ABORT" NOT HERE" $FF3E STA ; : RAM $FF3F STA ; : SYS ROM JSR RAM ; \ IF SUFFERING FROM ABORT" NOT HERE" \ SEE NEXT SCREEN 覥REEN --> <20>) (64 \ 覹ITCH 翧NK <20>000-缕破 : ROM HERE 9 + $<24>000 U> ABORT" NOT HERE" $37 # LDA 1 STA ; : RAM $36 # LDA 1 STA ; <20>) \ SYS虯CRO 蘋NG CAS16AUG06 (64 .( NOT FOR <20>64 !) \\ <20>) \ FOR ADVANCED USERS, USE MACROS HERE $8000 $20 - U> ?EXIT \ NOT POSSIBLE ' 0 <20> 罫IAS ??? 藺BEL LONG 蚁<> 藺BEL LONG1 ??? JSR 伊<> RTS END-CODE <20> : SYS虯CRO ( ADR -- ) $100 U/MOD PHA # LDA LONG1 2+ STA # LDA LONG1 1+ STA PLA LONG JSR ; : SYS ( ADR -- ) \ FOR 蔛R TO 蚁<> HERE 9 + $8000 U> 善 SYS虯CRO 盘优 SYS 匀盼 ; \ TRANSIENT 罶SEMBLER CLV10OCT87 \ 翧SIS: 芆RTH 腎MENSIONS 窒<> 缮<> 蜲. 5) \ INTERNAL LOADING 04MAY85滦/RE) HERE $800 HALLOT HEAP DP ! 1 +LOAD DP ! 螻LYFORTH \ 芆RTH-6502 罶SEMBLER CLV10OCT87 \ 翧SIS: 芆RTH 腎MENSIONS 窒<> 缮<> 蜲. 5) 螻LYFORTH 罶SEMBLER ALSO DEFINITIONS 1 7 +THRU -3 +LOAD \ 虯KROS: ROM RAM SYS 螻LYFORTH \ 芆RTH-83 6502-罶SEMBLER 20OCT87RE : END-CODE CONTEXT 2- @ CONTEXT ! ; 肦EATE INDEX $0909 , $1505 , $0115 , $8011 , $8009 , $1<>0<EFBFBD> , $8019 , $8080 , $0080 , $1404 , $8014 , $8080 , $8080 , $1<>0<EFBFBD> , $801<30> , $2<>80 , <20> 諥RIABLE MODE : 蚈DE: ( N -) 肦EATE C, 腛ES> ( -) C@ MODE ! ; 0 蚈DE: .<2E> 1 蚈DE: # 2 <20> 蚈DE: MEM 3 蚈DE: ,<2C> 4 蚈DE: ,<2C> 5 蚈DE: <20>) 6 蚈DE: )<29> $<24> 蚈DE: ) \ UPMODE CPU 20OCT87RE <20> : UPMODE ( ADDR0 F0 - ADDR1 F1) 善 MODE @ 8 OR MODE ! 匀盼 1 MODE @ $<24> AND ?DUP 善 0 南 DUP + 滔闲 匀盼 OVER 1+ @ AND 0= ; : CPU ( 8B -) 肦EATE C, 腛ES> ( -) C@ C, MEM ; 00 CPU BRK $18 CPU CLC $<24>8 CPU CLD $58 CPU CLI $<24>8 CPU CLV $昧 CPU DEX $88 CPU DEY $<24>8 CPU INX $<24>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 $<24>8 CPU SED $78 CPU SEI $亮 CPU TAX $<24>8 CPU TAY $铝 CPU TSX $8<> CPU TXA $9<> CPU TXS $98 CPU TYA \ M/CPU 20OCT87RE : M/CPU ( MODE OPCODE -) 肦EATE C, , 腛ES> DUP 1+ @ $80 AND 善 $10 MODE +! 匀盼 OVER $破00 AND UPMODE UPMODE 善 MEM TRUE 罛ORT" INVALID" 匀盼 C@ MODE @ INDEX + C@ + C, MODE @ 7 AND 善 MODE @ $<24> AND 7 < 善 C, 盘优 , 匀盼 匀盼 MEM ; $1<>6<EFBFBD> $60 M/CPU ADC $1<>6<EFBFBD> $20 M/CPU AND $1<>6<EFBFBD> $<24>0 M/CPU CMP $1<>6<EFBFBD> $40 M/CPU EOR $1<>6<EFBFBD> $<24>0 M/CPU LDA $1<>6<EFBFBD> $00 M/CPU ORA $1<>6<EFBFBD> $<24>0 M/CPU SBC $1<>6<EFBFBD> $80 M/CPU STA $0<>0<EFBFBD> $01 M/CPU ASL $0<>0<EFBFBD> $<24>1 M/CPU DEC $0<>0<EFBFBD> $<24>1 M/CPU INC $0<>0<EFBFBD> $41 M/CPU LSR $0<>0<EFBFBD> $21 M/CPU ROL $0<>0<EFBFBD> $61 M/CPU ROR $0414 $81 M/CPU STX $0486 $<24>0 M/CPU CPX $0486 $<24>0 M/CPU CPY $1496 $<24>2 M/CPU LDX $0<>8<EFBFBD> $<24>0 M/CPU LDY $048<34> $80 M/CPU STY $0480 $14 M/CPU JSR $8480 $40 M/CPU JMP $0484 $20 M/CPU BIT \ 罶SEMBLER CONDITIONALS 20OCT87RE <20> : RANGE? ( BRANCH -- BRANCH ) DUP ABS $7<> U> 罛ORT" OUT OF RANGE " ; : [[ ( 屡巧<E5B1A1>) HERE ; : ?] ( 瘴陨<E798B4>) C, HERE 1+ - RANGE? C, ; : ?[ ( 善) C, HERE 0 C, ; : ?[[ ( 兹商<E585B9>) ?[ SWAP ; : ]? ( 匀盼) HERE OVER C@ 善 SWAP ! 盘优 OVER 1+ - RANGE? SWAP C! 匀盼 ; : ][ ( 盘优) HERE 1+ 1 JMP SWAP HERE OVER 1+ - RANGE? SWAP C! ; : ]] ( 燎辽<E7878E>) JMP ; : ]]? ( 遗信猎) JMP ]? ; \ 罶SEMBLER CONDITIONALS 20OCT87RE $90 肙NSTANT 糜 $<24>0 肙NSTANT 妹 $<24>0 肙NSTANT 0= $<24>0 肙NSTANT 0<> $10 肙NSTANT 0< $30 肙NSTANT 0>= $50 肙NSTANT 钟 $70 肙NSTANT 置 : NOT $20 [ 芆RTH ] XOR ; : BEQ 0<> ?] ; : BMI 0>= ?] ; : BNE 0= ?] ; : BPL 0< ?] ; : BCC 糜 ?] ; : BVC 钟 ?] ; : BCS 妹 ?] ; : BVS 置 ?] ; \ 2INC/2DEC WINC/WDEC 20OCT87RE : 2INC ( ADR -- ) DUP LDA CLC 2 # ADC DUP STA 糜 ?[ SWAP 1+ INC ]? ; : 2DEC ( ADR -- ) DUP LDA SEC 2 # SBC DUP STA 妹 ?[ SWAP 1+ DEC ]? ; : WINC ( ADR -- ) DUP INC 0= ?[ SWAP 1+ INC ]? ; : WDEC ( ADR -- ) DUP LDA 0= ?[ OVER 1+ DEC ]? DEC ; : ;C: RECOVER JSR END-CODE ] 0 LAST ! 0 ; \ ;CODE 肙DE CODE> BP/RE03FEB85 螻LYFORTH : 罶SEMBLER 罶SEMBLER [ 罶SEMBLER ] MEM ; : ;肙DE [COMPILE] 腛ES> -3 ALLOT [COMPILE] ; -2 ALLOT 罶SEMBLER ; IMMEDIATE : 肙DE 肦EATE HERE DUP 2- ! 罶SEMBLER ; : >LABEL ( ADR -) HERE <20> 肦EATE IMMEDIATE SWAP , 4 HALLOT HEAP 1 AND HALLOT ( 6502-ALIG) HERE 4 - HEAP 4 CMOVE HEAP LAST @ COUNT $1<> AND + ! DP ! 腛ES> ( - ADR) @ STATE @ 善 [COMPILE] 蘄TERAL 匀盼 ; : 藺BEL [ 罶SEMBLER ] HERE >LABEL 罶SEMBLER ; \ FREE CAS16AUG06 \ 2! 2@ 2VARIABLE 2CONSTANT CLV20AUG87RE 肙DE 2! ( D ADR --) TYA SETUP JSR 3 # LDY [[ 有 )<29> LDA <20> )<29> STA DEY 0< ?] 1 # LDY 蠴PTWO JMP END-CODE 肙DE 2@ ( ADR -- D) 有 <20>) LDA <20> STA 有 )<29> LDA <20> 1+ STA 有 2DEC 3 # LDY [[ <20> )<29> LDA 有 )<29> STA DEY 0< ?] XY蜤XT JMP END-CODE : 2諥RIABLE ( --) 肦EATE 4 ALLOT ; ( -- ADR) : 2肙NSTANT ( D --) 肦EATE , , 腛ES> ( -- D) 2@ ; \ 2DUP EXISTS \ 2SWAP EXISTS \ 2DROP EXISTS \ UNLINK CLV20AUG87RE $破<>0 >LABEL PLOT (64 肙DE UNLINK ( -- ) $288 LDA $80 # ORA TAY TXA [[ $<24>9 ,<2C> STY CLC $28 # ADC 糜 ?[ INY ]? INX $1<> # CPX 0= ?] $<24>3 LDA $28 # CMP 糜 ?[ $28 # SBC $<24>3 STA ]? $<24>3 LDY $<24>6 LDX CLC PLOT JSR <20>) (16 : UNLINK 0 0 $7排 2! ; <20>) 藺BEL SETPTRS 0 # LDX 1 # LDY 蜤XT JMP END-CODE \ CHANGING CODES CAS16AUG06 ( MAPPING COMMODORE SCREEN CODES ) 藺BEL (SCR>CBM <20> 6 + STA $3<> # AND <20> 6 + ASL <20> 6 + BIT 0< ?[ $80 # ORA ]? 置 ?[ $40 # ORA ]? RTS 藺BEL (CBM>SCR <20> 6 + STA $7<> # AND $20 # CMP 糜 ?[ $40 # CMP 糜 ?[ $1<> # AND <20> 6 + BIT 0< ?[ $40 # ORA ]? ]? RTS ]? 罶CII . # LDA RTS 肙DE CBM>SCR ( 8B1 -- 8B2) 有 <20>) LDA (CBM>SCR JSR 有 <20>) STA 蜤XT JMP END-CODE 肙DE SCR>CBM ( 8B1 -- 8B2) 有 <20>) LDA (SCR>CBM JSR 有 <20>) STA 蜤XT JMP END-CODE \ FAST SEARCH CAS16AUG06 \NEEDS 肙DE -$<24> +LOAD \ 訰ANS 罶SEMBLER 螻LYFORTH ' 0< @ 4 + >LABEL PUTTRUE PUTTRUE 3 + >LABEL PUTFALSE 肙DE (SEARCH ( TEXT TLEN BUFFER BLEN -- ADR TF / FF) 7 # LDY [[ 有 )<29> LDA <20> ,<2C> STA DEY 0< ?] [[ <20> 4 + LDA <20> 5 + ORA 0<> ?[ [[ <20> LDA <20> 1+ ORA 0<> ?[ <20> 2+ <20>) LDA <20> 6 + <20>) CMP SWAP 0<> ?[[ <20> WDEC <20> 2+ WINC ]]? --> \ 臘IOR FAST SEARCH CAS16AUG06 7 # LDY [[ <20> ,<2C> LDA 有 )<29> STA DEY 0< ?] [[ <20> 2+ WINC <20> 6 + WINC <20> WDEC <20> 4 + WDEC <20> 4 + LDA <20> 5 + ORA 0= ?[ 有 LDA CLC 4 # ADC 有 STA 糜 ?[ 有 1+ INC ]? 3 # LDY <20> 3 + LDA 有 )<29> STA <20> 2+ LDA DEY 有 )<29> STA DEY PUTTRUE JMP ]? <20> LDA <20> 1+ ORA 0= ?[ 3 ROLL 3 ROLL ]? ]? 有 LDA CLC 6 # ADC 有 STA 糜 ?[ 有 1+ INC ]? 1 # LDY PUTFALSE JMP ]? <20> 2+ <20>) LDA <20> 6 + <20>) CMP 0= NOT ?] 7 # LDY [[ 有 )<29> LDA <20> ,<2C> STA DEY 0< ?] <20> WDEC <20> 2+ WINC ( NEXT CHAR AS FIRST ) ]] END-CODE \ 臘ITOR LOADSCREEN CLV13JUL87 \ 蒁EA AND FIRST IMPLEMENTATION: 着/RE 螻LYFORTH \NEEDS .BLK $1<> +LOAD \ .BLK \NEEDS 肙DE -$<24> +LOAD \ 罶SEMBL \NEEDS (SEARCH -2 +LOAD \ (SEARCH 螻LYFORTH (64 <20> : AT AT CUROFF ; <20>) \ SORRY \NEEDS 2VARIABLE -5 +LOAD \NEEDS UNLINK -4 +LOAD \ UNLINK \NEEDS SCR>CBM -3 +LOAD \ CBM><SCR 諳CABULARY 臘ITOR 臘ITOR ALSO DEFINITIONS 1 $17 +THRU \ 臘ITOR $18 $19 +THRU \ EDIT-VIEW $1<> +LOAD \ 臘IBOARD 螻LYFORTH 1 SCR ! 0 R# ! SAVE \ 臘I 肙NSTANTS 諥RIABLES CLV15JUL87 $28 <20> 肙NSTANT #COL $19 <20> 肙NSTANT #ROW #COL #ROW * <20> 肙NSTANT B/SCR 諥RIABLE SHADOW $55 SHADOW ! <20> 諥RIABLE ASCR 1 ASCR ! <20> 諥RIABLE IMODE IMODE OFF <20> 諥RIABLE CHAR #CR CHAR ! <20> 諥RIABLE SCROLL SCROLL ON <20> 諥RIABLE SEND 1 SEND ! <20> 2VARIABLE CHARS <20> 2VARIABLE LINES <20> 2VARIABLE FBUF <20> 2VARIABLE RBUF (64 $288 <20>) (16 $53E <20>) >藺BEL SCRADR (64 $D800 <20>) (16 $800 <20>) >藺BEL COLADR $D1 (16 DROP $C8 <20>) <20> 肙NSTANT LINPTR $D3 (16 DROP $CA <20>) <20> 肙NSTANT CUROFS (64 $<24>020 <20>) (16 $FF19 <20>) <20> 肙NSTANT BORDER (64 $286 <20>) (16 $53B <20>) <20> 肙NSTANT PEN (64 $D021 <20>) (16 $FF15 <20>) <20> 肙NSTANT BKGRND \ 臘I SPECIAL CMOVES CAS16AUG06 ( THANKS TO COMMODORE.... ) 藺BEL INCPOINTER <20> LDA CLC #COL 1+ # ADC <20> STA 糜 ?[ <20> 1+ INC ]? <20> 2+ LDA CLC #COL # ADC <20> 2+ STA 糜 ?[ <20> 3 + INC ]? RTS <20> 肙DE B>SC ( BLKADR --) TYA SETUP JSR <20> 2+ STX SCRADR LDA <20> 3 + STA #ROW # LDX [[ #COL 1- # LDY [[ <20> )<29> LDA (CBM>SCR JSR <20> 2+ )<29> STA DEY 0< ?] INCPOINTER JSR DEX 0= ?] PEN LDA [[ COLADR ,<2C> STA COLADR $100 + ,<2C> STA COLADR $200 + ,<2C> STA COLADR $300 + ,<2C> STA INX 0= ?] SETPTRS JMP END-CODE \ 臘I SPECIAL CMOVES CONT. CAS16AUG06 ( ... FOR SCREEN FORMAT ) <20> 肙DE SC>B ( BLKADR --) TYA SETUP JSR <20> 2+ STX SCRADR LDA <20> 3 + STA #ROW # LDX [[ 0 # LDY [[ <20> 2+ )<29> LDA (SCR>CBM JSR <20> )<29> STA INY #COL # CPY 糜 ?] DEX 0<> ?[[ BL # LDA <20> )<29> STA INCPOINTER JSR ]]? SETPTRS JMP END-CODE <20> 肙DE >SCRMOVE ( FROM TO 8BQUAN --) 3 # LDA SETUP JSR DEY [[ <20> CPY 0= ?[ SETPTRS JMP ]? <20> 4 + )<29> LDA (CBM>SCR JSR <20> 2+ )<29> STA INY 0= ?] END-CODE \ 臘I CHANGED? CAS16AUG06 <20> 肙DE CHANGED? ( BLKADR -- F) TYA SETUP JSR <20> 2+ STX SCRADR LDA <20> 3 + STA #ROW # LDX [[ #COL 1- # LDY [[ <20> )<29> LDA (CBM>SCR JSR <20> 2+ )<29> CMP 0<> ?[ $破 # LDA 蠻SH<53> JMP ]? DEY 0< ?] INCPOINTER JSR DEX 0= ?] TXA 蠻SH<53> JMP END-CODE <20> : MEMTOP SP@ #COL 2* - ; \ 臘I C64-SPECIALS CLV2:JULL87 <20> 肙DE SCRSTART ( -- ADR) TXA PHA SCRADR LDA 蠻SH JMP END-CODE <20> 肙DE ROWADR ( -- ADR) CUROFS LDA #COL # CMP TXA 糜 ?[ #COL 1- # LDA ]? LINPTR ADC PHA LINPTR 1 + LDA 0 # ADC 蠻SH JMP END-CODE <20> 肙DE CURADR ( -- ADR) CLC CUROFS LDA LINPTR ADC PHA LINPTR 1 + LDA 0 # ADC 蠻SH JMP END-CODE (64 <20> 肙DE UNLINKED? \ -- F $<24>5 LDA #COL # CMP 妹 ?[ DEX ]? TXA 蠻SH<53> JMP END-CODE <20>) \ 臘I SCROLL? PUT/INSERT/DO CLV2:JULL87 <20> : BLANK.END? ( -- F) SCRSTART [ B/SCR #COL - ] 蘄TERAL + #COL -TRAILING NIP 0= SCROLL @ OR ; <20> : ATLAST? ( -- F) CURADR SCRSTART B/SCR + 1- = SCROLL @ 0= AND ; <20> : PUTCHAR ( -- F) CHAR C@ CON! FALSE ; <20> : INSERT ( -- F) ATLAST? ?DUP ?EXIT (64 UNLINKED? <20>) (16 TRUE <20>) ROWADR #COL + 1- C@ BL = NOT AND BLANK.END? NOT AND DUP ?EXIT $94 CON! ; <20> : DOCHAR ( -- F) ATLAST? ?DUP ?EXIT IMODE @ 善 INSERT ?DUP ?EXIT 匀盼 PUTCHAR ; \ 臘I CURSOR CONTROL CAS16AUG06 <20> : CURDOWN ( -- F) SCROLL @ 0= ROW #ROW 2- U> AND DUP ?EXIT $11 CON! ; <20> : CURRITE ( -- F) ATLAST? DUP ?EXIT $1<> CON! ; ' PUTCHAR <20> 罫IAS CURUP ' PUTCHAR <20> 罫IAS CURLEFT ' PUTCHAR <20> 罫IAS HOME ' PUTCHAR <20> 罫IAS DELETE <20> : >""END ( -- FF) SCRSTART B/SCR -TRAILING NIP B/SCR 1- MIN #COL /MOD SWAP AT FALSE ; <20> : +TAB ( -- F) 0 $A 0 南 DROP CURRITE DUP 善 膛林<E8869B> 匀盼 滔闲 ; <20> : -TAB ( -- F) 5 0 南 $9<> CON! 滔闲 FALSE ; \ 臘I CR, CLEAR/NEWLINE CAS16AUG06 <20> : <CR> ( -- F) ROW 0 AT UNLINK IMODE OFF CURDOWN ; <20> : CLRLINE ( -- FF) ROWADR #COL BL FILL FALSE ; <20> : CLRRIGHT ( -- FF) CURADR #COL COL - BL FILL FALSE ; <20> : KILLINE ( -- F) ROWADR DUP #COL + SWAP SCRSTART $3<>0 + DUP >R OVER - CMOVE R> #COL BL FILL FALSE ; <20> : NEWLINE ( -- F) BLANK.END? NOT ?DUP ?EXIT ROWADR DUP #COL + SCRSTART B/SCR + OVER - CMOVE> CLRLINE ; \ 臘I CHARACTER HANDLING CAS16AUG06 <20> : DCHAR ( -- F) CURRITE DUP ?EXIT $14 CON! ; <20> : @CHAR ( -- F) CHARS 2@ + 1+ LINES @ MEMTOP MIN U> DUP ?EXIT CURADR C@ CHARS 2@ + C! 1 CHARS 2+ +! ; <20> : COPYCHAR ( -- F) @CHAR ?DUP ?EXIT CURRITE ; <20> : CHAR>BUF ( -- F) @CHAR ?DUP ?EXIT DCHAR ; <20> : BUF>CHAR ( -- F) CHARS 2+ @ 0= ?DUP ?EXIT INSERT DUP ?EXIT -1 CHARS 2+ +! CHARS 2@ + C@ CURADR C! ; \ 臘I LINE HANDLING, IMODE CAS16AUG06 <20> : @LINE ( -- F) LINES 2@ + MEMTOP U> DUP ?EXIT ROWADR LINES 2@ + #COL CMOVE #COL LINES 2+ +! ; <20> : COPYLINE ( -- F) @LINE ?DUP ?EXIT CURDOWN ; <20> : LINE>BUF ( -- F) @LINE ?DUP ?EXIT KILLINE ; <20> : !LINE ( --) #COL NEGATE LINES 2+ +! LINES 2@ + ROWADR #COL CMOVE ; <20> : BUF>LINE ( -- F) LINES 2+ @ 0= ?DUP ?EXIT NEWLINE DUP ?EXIT !LINE ; <20> : SETIMD ( -- F) IMODE ON FALSE ; <20> : CLRIMD ( -- F) IMODE OFF FALSE ; \ 臘I THE STAMP CAS16AUG06 芆RTH DEFINITIONS : RVSON $12 CON! ; : RVSOFF $92 CON! ; 肙DE ***VOLKS葡以<E891A1>83*** 蜤XT HERE 2- ! END-CODE : 芆RTH-荅SELLSCHAFT [COMPILE] \\ ; IMMEDIATE 臘ITOR DEFINITIONS 肦EATE STAMP$ $12 ALLOT STAMP$ $12 ERASE <20> : .STAMP ( -- FF) STAMP$ 1+ COUNT SCRSTART #COL + OVER - SWAP >SCRMOVE FALSE ; : GETSTAMP ( --) INPUT PUSH KEYBOARD STAMP$ ON CR ." YOUR STAMP: " RVSON $10 SPACES ROW $<24> AT STAMP$ 2+ $10 EXPECT RVSOFF SPAN @ STAMP$ 1+ C! ; <20> : STAMP? ( --) STAMP$ C@ ?EXIT GETSTAMP ; \ 臘I THE SCREEN# CAS16AUG06 <20> : SAVETOP ( --) SCRSTART PAD #COL 2* CMOVE SCRSTART #COL 2* $<24>0 FILL ; <20> : RESTTOP ( --) PAD SCRSTART #COL 2* CMOVE ; <20> : UPDATED? ( SCR# -- N) BLOCK 2- @ ; <20> : SPECIAL ( --) CURON 屡巧<E5B1A1> PAUSE KEY? 瘴陨<E798B4> CUROFF ; <20> : DRV覥R ( --DRV SCR') SCR @ OFFSET @ + BLK/DRV U/MOD SWAP ; <20> : .SCR# ( -- FF) AT? SAVETOP RVSON 0 0 AT DRV覥R ." 覥R # " . ." 腞V " . SCR @ UPDATED? 0= 善 ." NOT " 匀盼 ." UPDATED" 1 1 AT [ ' ***VOLKS葡以<E891A1>83*** >NAME ] 蘄TERAL COUNT TYPE 2 SPACES [ ' 芆RTH-荅SELLSCHAFT >NAME ] 蘄TERAL COUNT $1<> AND TYPE RVSOFF AT SPECIAL RESTTOP FALSE ; \ 臘I EXITS CAS16AUG06 <20> : AT?>R# ( --) AT? SWAP #COL 1+ * + R# ! ; <20> : R#>AT ( --) R# @ DUP #COL 1+ MOD #COL = - B/BLK 1- MIN #COL 1+ /MOD SWAP AT ; <20> : CANCEL ( -- N) UNLINK %0001 AT?>R# ; <20> : EUPDATE ( -- N) CANCEL SCR @ BLOCK CHANGED? 善 .STAMP DROP SCR @ BLOCK SC>B UPDATE %0010 OR 匀盼 ; <20> : ESAVE ( -- N) EUPDATE %0100 OR ; <20> : ELOAD ( -- N) ESAVE %1000 OR ; \ LEAF THRU 臘I CLV01AUG87 <20> : ELIST ( -- FF) SCR @ BLOCK B>SC IMODE OFF UNLINK R#>AT FALSE ; <20> : NEXT ( -- FF) EUPDATE DROP 1 SCR +! ELIST ; <20> : BACK ( -- FF) EUPDATE DROP -1 SCR +! ELIST ; <20> : >SHADOW ( -- FF) EUPDATE DROP SHADOW @ DUP DRV覥R NIP U> NOT 善 NEGATE 匀盼 SCR +! ELIST ; <20> : ALTER ( -- FF) EUPDATE DROP ASCR @ SCR @ ASCR ! SCR ! ELIST ; \ 臘I DIGITS 2OCT87RE 芆RTH DEFINITIONS : DIGDECODE ( ADR CNT1 KEY -- ADR CNT2) #BS CASE? 善 DUP 善 DEL 1- 匀盼 EXIT 匀盼 #CR CASE? 善 DUP SPAN ! EXIT 匀盼 CAPITAL DUP DIGIT? 善 DROP >R 2DUP + R@ SWAP C! R> EMIT 1+ EXIT 匀盼 DROP ; 蒒PUT: DIGITS C64KEY C64KEY? DIGDECODE C64EXPECT ; 臘ITOR DEFINITIONS <20> : REPLACE ( -- F) FBUF @ 0 南 #BS CON! 滔闲 FALSE RBUF @ 0 南 INSERT OR 滔闲 DUP ?EXIT RBUF 2@ CURADR SWAP >SCRMOVE EUPDATE DROP ; \ 臘I >BUFS CAS16AUG06 <20> : .BUF ( ADR COUNT --) TYPE 罶CII < EMIT #COL 1- COL - SPACES ; <20> : >BUFS ( --) INPUT PUSH UNLINK SAVETOP AT? RVSON 1 0 AT ." REPLACE WITH: " AT? RBUF 2@ .BUF 0 0 AT ." > SEARCH: " AT? FBUF 2@ .BUF 0 2 2DUP AT SEND @ 3 U.R 2DUP AT HERE 1+ 3 DIGITS EXPECT SPAN @ ?DUP 善 HERE UNDER C! NUMBER DROP SEND ! 匀盼 AT SEND @ 3 U.R KEYBOARD 2DUP AT FBUF 2+ @ #COL 2- COL - EXPECT SPAN @ ?DUP 善 FBUF ! 匀盼 AT FBUF 2@ .BUF 2DUP AT RBUF 2+ @ #COL 2- COL - EXPECT SPAN @ ?DUP 善 RBUF ! 匀盼 AT RBUF 2@ .BUF RVSOFF RESTTOP AT ; \ 臘I ESEARCH CLV06AUG87 <20> : (F ELIST DROP FBUF 2@ R# @ SCR @ BLOCK + B/BLK R# @ - (SEARCH 0= 善 0 盘优 SCR @ BLOCK - 匀盼 R# ! R#>AT ; <20> : ESEARCH ( -- F) EUPDATE DROP >BUFS 屡巧<E5B1A1> 屡巧<E5B1A1> (F R# @ 兹商<E585B9> KEY DUP 罶CII R = 善 REPLACE ?DUP 善 NIP EXIT 匀盼 匀盼 3 = ?DUP ?EXIT 遗信猎 DRV覥R NIP SEND @ - STOP? 0= AND ?DUP 兹商<E585B9> 0< 善 NEXT DROP 盘优 BACK DROP 匀盼 遗信猎 TRUE ; \ 臘I KEYTABLE CAS16AUG06 <20> : 肨RL ( -- 8B) [COMPILE] 罶CII $40 - ; IMMEDIATE <20> 肦EATE KEYTABLE 肨RL N C, 肨RL B C, 肨RL W C, 肨RL A C, $1<> C, (64 肨RL ^ <20>) (16 $92 <20>) C, $0<> C, $8<> C, 肨RL C C, 肨RL X C, 肨RL F C, 肨RL L C, $85 C, $89 C, $86 C, $8<> C, $9<> C, $1<> C, (64 00 <20>) (16 $1E <20>) C, $8<> C, $87 C, $88 C, $8<> C, $1<> C, $11 C, $9<> C, $91 C, $13 C, $93 C, $94 C, $14 C, 肨RL D C, 肨RL E C, 肨RL R C, 肨RL I C, 肨RL O C, $FF C, \ 臘I ACTIONTABLE CAS16AUG06 <20> 肦EATE ACTIONTABLE ] NEXT BACK >SHADOW ALTER ESEARCH COPYLINE <CR> <CR> CANCEL EUPDATE ESAVE ELOAD NEWLINE KILLINE BUF>LINE LINE>BUF .STAMP .SCR# COPYCHAR CHAR>BUF BUF>CHAR +TAB -TAB CURRITE CURDOWN CURLEFT CURUP HOME >""END INSERT DELETE DCHAR CLRLINE CLRRIGHT SETIMD CLRIMD DOCHAR [ <20> 肙DE FINDKEY ( KEY N -- ADR) 2 # LDA SETUP JSR <20> LDY DEY [[ INY KEYTABLE ,<2C> LDA $破 # CMP 0<> ?[ <20> 2+ CMP ]? 0= ?] TYA .<2E> ASL TAY ACTIONTABLE ,<2C> LDA PHA ACTIONTABLE 1+ ,<2C> LDA 蠻SH JMP END-CODE \ 臘I SHOW ERRORS CAS16AUG06 ' 0 <20> 罫IAS DARK ' 1 <20> 罫IAS LIGHT <20> : HALF ( N --) BORDER C! PAUSE $80 0 南 滔闲 ; <20> : BLINK ( --) BORDER PUSH DARK HALF LIGHT HALF DARK HALF LIGHT HALF ; <20> : ?BLINK ( F1 -- F2) DUP TRUE = 善 BLINK 0= 匀盼 ; \ 臘I INIT CAS16AUG06 ' 蘄TERAL <20> 罫IAS 蘄 IMMEDIATE 諥RIABLE (PAD 0 (PAD ! <20> : CLEARBUFFER ( --) PAD DUP (PAD ! #COL 2* + DUP FBUF 2+ ! #COL + DUP RBUF 2+ ! #COL + DUP CHARS ! #COL 2* + LINES ! CHARS 2+ OFF LINES 2+ OFF [ ' ***VOLKS葡以<E891A1>83*** >NAME ] 蘄 COUNT >R FBUF 2+ @ R@ CMOVE R> FBUF ! [ ' 芆RTH-荅SELLSCHAFT >NAME ] 蘄 COUNT $1<> AND >R RBUF 2+ @ R@ CMOVE R> RBUF ! ; <20> : INITPTR ( --) PAD (PAD @ = ?EXIT CLEARBUFFER ; \ 臘I SHOW CAS16AUG06 ' NAME >BODY 6 + <20> 肙NSTANT 'NAME (16 \ C16 IS USING STANDARD <20>) (64 <20> 肙DE CURON $<24>3 LDY $<24>1 )<29> LDA $门 STA $80 # EOR $<24>1 )<29> STA XY蜤XT JMP END-CODE <20> 肙DE CUROFF $门 LDA $<24>3 LDY $<24>1 )<29> STA XY蜤XT JMP END-CODE <20>) \ 臘I SHOW CAS16AUG06 <20> : SHOWOFF ['] EXIT 'NAME ! RVSOFF CUROFF ; <20> : SHOW ( --) BLK @ ?DUP 0= 善 SHOWOFF EXIT 匀盼 >IN @ 1- R# ! RVSOFF CUROFF RVSON SCR @ OVER - 善 SCR ! ELIST 1 0 AT .STATUS 匀盼 R#>AT CURON DROP ; 芆RTH DEFINITIONS : (LOAD ( BLK POS --) >IN PUSH >IN ! ?DUP 0= ?EXIT BLK PUSH BLK ! .STATUS INTERPRET ; : SHOWLOAD ( BLK POS -) SCR PUSH SCR OFF R# PUSH ['] SHOW 'NAME ! (LOAD SHOWOFF ; 臘ITOR DEFINITIONS \ 臘I EDIT CLV01AUG87 <20> : SETCOL ( 0 / 4 / 8 --) INK-POT + DUP C@ BORDER C! DUP 1+ C@ BKGRND C! 2+ C@ PEN C! ; <20> : (EDIT ( -- N) 4 SETCOL $93 CON! ELIST DROP SCROLL OFF 屡巧<E5B1A1> KEY DUP CHAR C! 0 FINDKEY EXECUTE ?BLINK ?DUP 瘴陨<E798B4> 0 0 AT KILLINE DROP SCROLL ON 0 SETCOL (16 0 $7EA C! <20>) \ 罰PEND-蚈DE ; 芆RTH DEFINITIONS : EDIT ( SCR# -) (16 C64FKEYS <20>) SCR ! STAMP? INITPTR (EDIT $18 0 AT DRV覥R ." 覥R " . ." 腞V " . DUP 2 AND 0= 善 ." NOT " 匀盼 ." CHANGED" DUP 4 AND 善 SAVE-BUFFERS 匀盼 DUP 6 AND 6 = 善 ." , SAVED" 匀盼 8 AND 善 ." , LOADING" CR SCR @ R# @ SHOWLOAD 匀盼 ; \ 臘ITOR 芆RTH83 CLV2:JULL87 : L ( SCR -) R# OFF EDIT ; : R ( -) SCR @ EDIT ; : +L ( N -) SCR @ + L ; : V ( -) ( TEXT) ' >NAME ?DUP 善 4 - @ 匀盼 ; : VIEW ( -) ( TEXT) V ?DUP 善 L 盘优 ." FROM KEYBOARD" 匀盼 ; 臘ITOR DEFINITIONS (16 <20> : CURADDR \ --罝DR LINPTR @ CUROFS C@ + ; <20>) : CURLIN ( --CUR罝DR LIN蘀N) \ & 畔蘊 (64 LINPTR @ $<24>5 C@ -TRAILING DUP $D3 C! <20>) (16 $1B CON! ASCII J CON! CURADDR $1B CON! ASCII K CON! $1D CON! CURADDR OVER - <20>) ; \ 臘IDECODE CCAS16AUG06 : EDIDECODE ( ADR CNT1 KEY -- ADR CNT2) $8<> CASE? 善 IMODE OFF CR EXIT 匀盼 #CR CASE? 善 IMODE OFF CURLIN DUP SPAN @ U> 善 DROP SPAN @ 匀盼 BOUNDS ?南 2DUP + <20> C@ SCR>CBM SWAP C! 1+ 滔闲 DUP SPAN ! EXIT 匀盼 DUP CHAR C! $12 FINDKEY EXECUTE ?BLINK DROP ; : EDIEXPECT ( ADDR LEN1 -- ) INITPTR SPAN ! 0 屡巧<E5B1A1> DUP SPAN @ U< 兹商<E585B9> KEY DECODE 遗信猎 2DROP SPACE ; 蒒PUT: EDIBOARD C64KEY C64KEY? EDIDECODE EDIEXPECT ; EDIBOARD \ .STATUS CAS16AUG06 ' NOOP 蒘 .STATUS : .BLK ( -) BLK @ ?DUP 善 ." 翷K " U. ?CR 匀盼 ; ' .BLK 蒘 .STATUS \ TRACER: LOADSCREEN CAS16AUG06 螻LYFORTH \NEEDS 肙DE -$2<> +LOAD \ 訰ANS 罶SEMBLER \NEEDS 設OLS 諳CABULARY 設OLS 設OLS ALSO DEFINITIONS 1 6 +THRU \ 訰ACER 7 8 +THRU \ 設OLS FOR DECOMPILING 螻LYFORTH \\ 訦IS NICE 芆RTH 訰ACER HAS BEEN DEVELOPED BY <20>. 蠩NNEMANN AND CO FOR 罷ARI 釉. 锰 諳GT HAS PORTED IT BACK TO THE VOLKS芆RTH 6502 <20>-16 AND <20>-64 \ TRACER: WCMP VARIABLES CLV04AUG87 罶SEMBLER ALSO DEFINITIONS : WCMP ( ADR1 ADR2--) \ 罶SEMBLER-虯CRO OVER LDA DUP CMP SWAP \ COMPARES WORD 1+ LDA 1+ SBC ; 螻LY 芆RTH ALSO 設OLS ALSO DEFINITIONS <20> 諥RIABLE (<28> <20> 諥RIABLE <IP <20> 諥RIABLE IP> <20> 諥RIABLE NEST? <20> 諥RIABLE TRAP? <20> 諥RIABLE LAST' <20> 諥RIABLE #SPACES \ TRACER:CPUSH ONELINE CAS16AUG06 <20> 肦EATE CPULL 0 ] RP@ COUNT 2DUP + RP! R> SWAP CMOVE ; : CPUSH ( ADDR LEN -) R> -ROT OVER >R RP@ OVER 1+ - DUP RP! PLACE CPULL >R >R ; <20> : ONELINE &82 ALLOT KEYBOARD DISPLAY .STATUS SPACE QUERY INTERPRET -&82 ALLOT RDROP ( DELETE QUIT FROM TNEXT ) ; : RANGE ( ADR--) \ GETS <IP IP> IP> OFF DUP <IP ! 屡巧<E5B1A1> 1+ DUP @ [ 芆RTH ] ['] UNNEST = 瘴陨<E798B4> 3+ IP> ! ; \ TRACER:STEP TNEXT CLV04AUG87 <20> 肙DE STEP $FF # LDA TRAP? STA TRAP? 1+ STA 倚 <20>) LDA 尚 STA 倚 )<29> LDA 尚 1+ STA 倚 2INC (<28> LDA <20> STA (<28> 1+ LDA <20> 1+ STA 藺BEL <20>1- <20> 1- JMP END-CODE <20> 肦EATE: NEXTSTEP STEP ; 藺BEL TNEXT 尚 2INC TRAP? LDA <20>1- BEQ NEST? LDA 0= \ LOW(!)耏TE TEST ?[ 尚 <IP WCMP <20>1- BCC 尚 IP> WCMP <20>1- BCS ][ NEST? STX \ LOW(!)耏TE CLEAR ]? TRAP? DUP STX 1+ STX \ DISABLE TRACER <20> LDA (<28> STA <20> 1+ LDA (<28> 1+ STA \ TRACER:..TNEXT CLV12OCT87 ;C: NEST? @ 善 NEST? OFF R> IP> PUSH <IP PUSH DUP 2- RANGE #SPACES PUSH 1 #SPACES +! >R 匀盼 R@ NEXTSTEP >R INPUT PUSH OUTPUT PUSH 2- DUP LAST' ! CR #SPACES @ SPACES DUP 4 U.R @ DUP 5 U.R SPACE >NAME .NAME $10 COL - 0 MAX SPACES .S STATE PUSH BLK PUSH >IN PUSH [ ' 'QUIT >BODY ] 蘄TERAL PUSH [ ' >INTERPRET >BODY ] 蘄TERAL PUSH #TIB PUSH TIB #TIB @ CPUSH R0 PUSH RP@ R0 ! ['] ONELINE 蒘 'QUIT QUIT ; \ TRACER:DO-TRACE TRACEABLE CAS16AUG06 <20> 肙DE DO-TRACE \ INSTALLS 晕咆<E69995> TNEXT 0 $100 M/MOD # LDA 蜤XT $C + STA # LDA 蜤XT $B + STA $4<> # LDA 蜤XT $A + STA 蜤XT JMP END-CODE <20> : TRACEABLE ( CFA--<尚 ) RECURSIVE DUP @ ['] : @ CASE? 善 >BODY EXIT 匀盼 ['] KEY @ CASE? 善 >BODY C@ 蒒PUT @ + @ TRACEABLE EXIT 匀盼 ['] TYPE @ CASE? 善 >BODY C@ 蟄TPUT @ + @ TRACEABLE EXIT 匀盼 ['] R/W @ CASE? 善 >BODY @ TRACEABLE EXIT 匀盼 @ [ ' 芆RTH @ @ ] 蘄TERAL = 善 @ 3 + EXIT 匀盼 \ FOR DEFINING WORDS WITH 南庞> >NAME .NAME ." CAN'T BE 呐抡荊ED" QUIT ; \ TRACER:誗ER-譕RDS CAS16AUG06 : NEST \ TRACE INTO CURRENT WORD LAST' @ @ TRACEABLE DROP NEST? ON ; : UNNEST \ PROCEEDS AT CALLING WORD <IP ON IP> OFF ; \ CLEARS TRAP RANGE : ENDLOOP LAST' @ 4 + <IP ! ; \ NO TRACE OF NEXT WORD TO SKIP 滔闲.. ' END-TRACE 罫IAS UNBUG \ CONT. EXECUT. : (DEBUG ( CFA-- ) TRACEABLE RANGE NEST? OFF TRAP? ON #SPACES OFF 設OLS DO-TRACE ; 芆RTH DEFINITIONS : DEBUG ' (DEBUG ; \ WORD FOLLOWS : TRACE' \ WORD FOLLOWS ' DUP (DEBUG EXECUTE END-TRACE ; \ TOOLS FOR DECOMPILING, CLV12OCT87 ( INTERACTIVE USE ) 螻LYFORTH 設OLS ALSO DEFINITIONS <20> : ?: ?CR DUP 4 U.R ." :" ; <20> : @? DUP @ 6 U.R ; <20> : C? DUP C@ 3 .R ; <20> : BL $24 COL - 0 MAX SPACES ; : S ( ADR - ADR+) ( PRINT LITERAL STRING) ?: SPACE C? 4 SPACES DUP COUNT TYPE DUP C@ + 1+ BL ; ( COUNT + RE) : N ( ADR - ADR+2) ( PRINT NAME OF NEXT WORD BY ITS CFA) ?: @? 2 SPACES DUP @ >NAME .NAME 2+ BL ; : K ( ADR - ADR+2) ( PRINT LITERAL VALUE) ?: @? 2+ BL ; ( TOOLS FOR DECOMPILING, INTERACTIVE ) : D ( ADR N - ADR+N) ( DUMP N BYTES) 2DUP SWAP ?: 3 SPACES SWAP 0 南 C? 1+ 滔闲 4 SPACES -ROT TYPE BL ; : C ( ADR - ADR+1) ( PRINT BYTE AS UNSIGNED VALUE) 1 D ; : B ( ADR - ADR+2) ( PRINT BRANCH TARGET LOCATION ) ?: @? DUP @ OVER + 6 U.R 2+ BL ; ( USED FOR : ) ( 蜛ME 覶RING 蘄TERAL 腢MP 肔IT 翿ANCH ) ( - - - - - - ) ( DEBUGGING UTILITIES BP 19 02 85 ) : UNRAVEL \ UNRAVEL PERFORM (ABORT" RDROP RDROP RDROP CR ." TRACE DUMP IS " CR 屡巧<E5B1A1> RP@ R0 @ - 兹商<E585B9> R> DUP 8 U.R SPACE 2- @ >NAME .NAME CR 遗信猎 (ERROR ; ' UNRAVEL ERRORHANDLER ! \ 蚒LTITASKER 滦 13.9.84 ) 螻LYFORTH \NEEDS MULTITASK 1 +LOAD SAVE 2 4 +THRU \ 訟SKER \ 5 +LOAD \ 腅MOTASK \ 蚒LTITASKER 滦 13.9.84 ) \NEEDS 肙DE -$36 +LOAD \ TRANSIENT 罶S 肙DE STOP 有 2DEC 尚 LDA 有 <20>) STA 尚 1+ LDA 有 )<29> STA 有 2DEC 倚 LDA 有 <20>) STA 倚 1+ LDA 有 )<29> STA 6 # LDY 有 LDA 招 )<29> STA INY 有 1+ LDA 招 )<29> STA 1 # LDY TYA CLC 招 ADC <20> STA TXA 招 1+ ADC <20> 1+ STA <20> 1- JMP END-CODE <20> 肦EATE TASKPAUSE 罶SEMBLER $2<> # LDA 招 <20>) STA ' STOP @ JMP END-CODE : SINGLETASK [ ' PAUSE @ ] 蘄TERAL ['] PAUSE ! ; : MULTITASK TASKPAUSE ['] PAUSE ! ; \ PASS ACTIVATE KS 8 MAY 84 ) : PASS ( N0 .. NR-1 訟DR R -- ) 屡巧<E5B1A1> [ ROT ( 訰ICK ! ) ] SWAP $2<> OVER C! \ AWAKE 訟SK R> -ROT \ 尚 R ADDR 8 + >R \ S0 OF 訟SK R@ 2+ @ SWAP \ 尚 R0 R 2+ 2* \ BYTES ON 訟SKSTACK \ INCL. R0 & 尚 R@ @ OVER - \ NEW 有 DUP R> 2- ! \ INTO SSAVE SWAP BOUNDS ?南 <20> ! 2 +滔闲 ; RESTRICT : ACTIVATE ( 訟DR --) 0 [ -ROT ( 訰ICK ! ) ] 遗信猎 ; -2 ALLOT RESTRICT : SLEEP ( 訟DR --) $4<> SWAP C! ; \ 释<>-螾CODE : WAKE ( 訟DR --) $2<> SWAP C! ; \ 律<>-螾CODE \ BUILDING A 訟SK 滦 13.9.84 ) <20> : TASKERROR ( STRING -) STANDARDI/O SINGLETASK ." 訟SK ERROR : " COUNT TYPE MULTITASK STOP ; : 訟SK ( RLEN SLEN -- ) ALLOT \ 覶ACK HERE $破 AND $婆 = 善 1 ALLOT 匀盼 \ 6502-ALIGN UP@ HERE $100 CMOVE \ INIT USER AREA HERE $4<> C, \ 释<> OPCODE \ TO SLEEP 訟SK UP@ 1+ @ , DUP UP@ 1+ ! \ LINK 訟SK 3 ALLOT \ ALLOT 视<> WAKE DUP 6 - DUP , , \ SSAVE AND S0 2DUP + , \ HERE + RLEN = R0 UNDER + HERE - 2+ ALLOT ['] TASKERROR OVER [ ' ERRORHANDLER >BODY C@ ] 蘄TERAL + ! 肙NSTANT ; \ MORE 訟SKS KS/BP 26APR85RE) : RENDEZVOUS ( SEMAPHORADR -) DUP UNLOCK PAUSE LOCK ; <20> : STATESMART STATE @ 善 [COMPILE] 蘄TERAL 匀盼 ; : 'S ( 訟DR - ADR.OF.TASKUSERVAR) ' >BODY C@ + STATESMART ; IMMEDIATE \ 覻NTAX: 2 腅MOTASK 'S BASE ! \ MAKES 腅MOTASK WORKING BINARY : TASKS ( -) ." 土晌 " CR UP@ DUP 1+ @ 屡巧<E5B1A1> 2DUP - 兹商<E585B9> DUP [ ' R0 >BODY C@ ] 蘄TERAL + @ 6 + NAME> >NAME .NAME DUP C@ $4<> = 善 ." SLEEPING" 匀盼 CR 1+ @ 遗信猎 2DROP ; \ 訟SKDEMO CLV12AUG87 : TASKMARK ; \NEEDS CBM>SCR : CBM>SCR ; : SCRSTART ( -- ADR) (64 $288 <20>) (16 $53E <20>) C@ $100 * ; 諥RIABLE COUNTER COUNTER OFF $100 $100 訟SK 翧CKGROUND : >COUNT ( N -) 翧CKGROUND 1 PASS COUNTER ! 屡巧<E5B1A1> COUNTER @ -1 COUNTER +! ?DUP 兹商<E585B9> PAUSE 0 <# #S #> 0 南 PAUSE DUP <20> + C@ CBM>SCR SCRSTART <20> + C! 滔闲 DROP 遗信猎 屡巧<E5B1A1> STOP 遗信猎 ; \ STOP'S FOREVER : WAIT 翧CKGROUND SLEEP ; : GO 翧CKGROUND WAKE ; MULTITASK $100 >COUNT PAGE \ PRINTER LOADSCREEN 27JUL85RE) 螻LYFORTH HEX 諳CABULARY 蠷INT 蠷INT DEFINITIONS ALSO 肦EATE 蠷TER 2 ALLOT ( 覧MAPHOR) 蠷TER OFF : ) ; IMMEDIATE : (U ; IMMEDIATE \ FOR USER-PORT : (S [COMPILE] ( ; IMMEDIATE \ : (S ; IMMEDIATE \ FOR SERIAL BUS \ : (U [COMPILE] ( ; IMMEDIATE (S 1 +LOAD ) 2 $<24> +THRU 螻LYFORTH CLEAR \ 耈FFER FOR THE UGLY 覧R耈S 28JUL85RE) $100 <20> 肙NSTANT BUFLEN <20> 諥RIABLE 蠷BUF BUFLEN ALLOT 蠷BUF OFF <20> : >BUF ( CHAR --) 蠷BUF COUNT + C! 1 蠷BUF +! ; <20> : FULL? ( -- F) 蠷BUF C@ BUFLEN = ; <20> : .BUF ( --) 蠷BUF COUNT -TRAILING 4 0 BUSOUT BUSTYPE BUSOFF 蠷BUF OFF ; : P! ( CHAR --) PAUSE >R R@ $<24> ( 芆RMFEED ) = 善 R> >BUF .BUF EXIT 匀盼 R@ $<24> ( 蘄NEFEED ) = R@ $<24> ( 肁R褽TURN ) = OR FULL? OR 善 .BUF 匀盼 R> >BUF ; \ P! CTRL: 庞<> ESC: 28JUL85RE) (U : P! \ CHAR -- $哪01 C! $哪00 DUP C@ 2DUP 4 OR SWAP C! $坡 AND SWAP C! 屡巧<E5B1A1> PAUSE $哪0<E593AA> C@ $10 AND 瘴陨<E798B4> ; ) <20> : CTRL: ( 8B --) 肦EATE C, DOES> ( --) C@ P! ; 7 CTRL: 屡<> <20> $7<> CTRL: 呐<> <20> $D CTRL: 靡旁 <20> $1<> CTRL: 庞<> $A CTRL: 唐 $0<> CTRL: 破 <20> : ESC: ( 8B --) 肦EATE C, DOES> ( --) 庞<> C@ P! ; $30 ESC: 1/8" $31 ESC: 1/10" $32 ESC: 1/6" $54 ESC: SUOFF $4<> ESC: +JUMP $4<> ESC: -JUMP \ PRINTER CONTROLS 28JUL85RE) <20> : 庞<>2 庞<> P! P! ; : GORLITZ ( 8B --) 绿 庞<>2 ; <20> : 庞<>"!" ( 8B --) $21 庞<>2 ; <20> 諥RIABLE 蚈DUS 蚈DUS OFF <20> : ON: ( 8B --) 肦EATE C, DOES> ( --) C@ 蚈DUS C@ OR DUP 蚈DUS C! 庞<>"!" ; <20> : OFF: ( 8B --) 肦EATE $破 XOR C, DOES> ( --) C@ 蚈DUS C@ AND DUP 蚈DUS C! 庞<>"!" ; $10 ON: +DARK $10 OFF: -DARK $20 ON: +WIDE $20 OFF: -WIDE $40 ON: +CURSIV $40 OFF: -CURSIV $80 ON: +UNDER $80 OFF: -UNDER <20> 1 ON: (12CPI <20> 4 ON: (17CPI 5 OFF: 10CPI \ PRINTER CONTROLS 28JUL85RE) : 12CPI 10CPI (12CPI ; : 17CPI 10CPI (17CPI ; : SUPER 0 $53 庞<>2 ; : SUB 1 $53 庞<>2 ; : LINES ( #LINES --) $43 庞<>2 ; : "LONG ( INCHES --) 0 LINES P! ; : AMERICAN 0 $52 庞<>2 ; : GERMAN 2 $52 庞<>2 ; : PRINIT (S 罶CII X GORLITZ 罶CII B GORLITZ 罶CII E GORLITZ 罶CII T GORLITZ 罶CII Z GORLITZ 罶CII L GORLITZ ) (U $破 $哪03 C! $哪02 DUP C@ 4 OR SWAP C! ) ; <20> 諥RIABLE >ASCII >ASCII ON : NORMAL >ASCII ON 蚈DUS OFF 10CPI AMERICAN SUOFF 1/6" $C "LONG 靡旁 ; \ 臥SON PRINTER INTERFACE 08SEP85RE) <20> : C>A ( 8B0 -- 8B1) >ASCII @ 善 DUP $41 $5<> UWITHIN 善 $20 OR EXIT 匀盼 DUP $<24>1 $穆 UWITHIN 善 $7<> AND EXIT 匀盼 DUP $拿 $<24>0 UWITHIN 善 $<24>0 XOR 匀盼 匀盼 ; <20> 諥RIABLE PCOL PCOL OFF <20> 諥RIABLE PROW PROW OFF <20> : PEMIT C>A P! 1 PCOL +! ; <20> : PCR 靡旁 唐 1 PROW +! 0 PCOL ! ; <20> : PDEL 呐<> -1 PCOL +! ; <20> : PPAGE 破 0 PROW ! 0 PCOL ! ; <20> : PAT ( ZEILE SPALTE -- ) OVER PROW @ < 善 PPAGE 匀盼 SWAP PROW @ - 0 ?南 PCR 滔闲 DUP PCOL < 善 靡旁 PCOL OFF 匀盼 PCOL @ - SPACES ; <20> : PAT? PROW @ PCOL @ ; <20> : PTYPE ( ADR COUNT --) DUP PCOL +! BOUNDS ?南 <20> C@ C>A P! 滔闲 ; \ PRINT PL 02OCT87RE <20> 蟄TPUT: >PRINTER PEMIT PCR PTYPE PDEL PPAGE PAT PAT? ; : BEMIT DUP C64EMIT PEMIT ; : BCR C64CR PCR ; : BTYPE 2DUP C64TYPE PTYPE ; : BDEL C64DEL PDEL ; : BPAGE C64PAGE PPAGE ; : BAT 2DUP C64AT PAT ; <20> 蟄TPUT: >BOTH BEMIT BCR BTYPE BDEL BPAGE BAT PAT? ; 芆RTH DEFINITIONS : 蠷INTER NORMAL (U PRINIT ) >PRINTER ; : 翺TH NORMAL >BOTH ; \ 2SCR'S NSCR'S THRU KS 28JUL85RE) 芆RTH DEFINITIONS <20> : 2SCR'S ( BLK1 BLK2 --) CR 唐 17CPI +WIDE +DARK $15 SPACES OVER 3 .R $13 SPACES DUP 3 .R -DARK -WIDE CR B/BLK 0 南 CR <20> C/L / $15 .R 4 SPACES OVER BLOCK <20> + <20>/<2F> 1- TYPE 5 SPACES DUP BLOCK <20> + <20>/<2F> 1- -TRAILING TYPE <20>/<2F> +滔闲 2DROP CR ; <20> : NSCR'S ( BLK1 N -- BLK2) 2DUP BOUNDS 南 <20> OVER <20> + 2SCR'S 滔闲 + ; : PTHRU ( FROM TO --) 蠷TER LOCK 蟄TPUT PUSH 蠷INTER 1/8" 1+ OVER - 1+ -2 AND 6 /MOD ?DUP 善 SWAP >R 0 南 3 NSCR'S 2+ 1+ PAGE 滔闲 R> 匀盼 ?DUP 善 1+ 2/ NSCR'S PAGE 匀盼 DROP 蠷TER UNLOCK ; \ 蠷INTING WITH SHADOWS 28JUL85RE) 芆RTH DEFINITIONS <20> : 2SCR'S ( BLK1 BLK2 --) CR 唐 17CPI +WIDE +DARK $15 SPACES DUP 3 .R -DARK -WIDE CR B/BLK 0 南 CR <20> C/L / $15 .R 4 SPACES DUP BLOCK <20> + <20>/<2F> 1- TYPE 5 SPACES OVER BLOCK <20> + <20>/<2F> 1- -TRAILING TYPE <20>/<2F> +滔闲 2DROP CR ; <20> : NSCR'S ( BLK1 N -- BLK2) 0 南 DUP [ 臘ITOR ] SHADOW @ 2DUP U> 善 NEGATE 匀盼 + OVER 2SCR'S 1+ 滔闲 ; : DOKUMENT ( FROM TO --) 蠷TER LOCK 蟄TPUT PUSH 蠷INTER 1/8" 1+ OVER - 3 /MOD ?DUP 善 SWAP >R 0 南 3 NSCR'S PAGE 滔闲 R> 匀盼 ?DUP 善 NSCR'S PAGE 匀盼 DROP 蠷TER UNLOCK ; \ 2SCR'S NSCR'S THRU KS 28JUL85RE) 芆RTH DEFINITIONS $40 <20> 肙NSTANT <20>/<2F> <20> : 2SCR'S ( BLK1 BLK2 --) PCR 唐 唐 10CPI +DARK $12 SPACES OVER 3 .R $20 SPACES DUP 3 .R CR 17CPI -DARK $10 <20>/<2F> * 0 南 CR OVER BLOCK <20> + <20>/<2F> 6 SPACES TYPE 2 SPACES DUP BLOCK <20> + <20>/<2F> -TRAILING TYPE <20>/<2F> +滔闲 2DROP CR ; <20> : NSCR'S ( BLK1 N -- BLK2) UNDER 0 南 2DUP DUP ROT + 2SCR'S 1+ 滔闲 NIP ; : 64PTHRU ( FROM TO --) 蠷TER LOCK >ASCII PUSH >ASCII OFF 蟄TPUT PUSH 蠷INTER 1/6" 1+ OVER - 1+ -2 AND 6 /MOD ?DUP 善 SWAP >R 0 南 3 NSCR'S 2+ 1+ PAGE 滔闲 R> 匀盼 ?DUP 善 1+ 2/ NSCR'S PAGE 匀盼 DROP 蠷TER UNLOCK ; \ PFINDEX 02OCT87RE 螻LYFORTH 蠷INT ALSO : PFINDEX ( FROM TO --) 蠷TER LOCK 蠷INTER &12 "LONG +JUMP FINDEX CR PAGE -JUMP 蠷TER UNLOCK DISPLAY ; \ 蠷INTSPOOL 02OCT87RE \NEEDS TASKS .( 訟SKER?!) \\ $100 $100 訟SK 蠷INTSPOOL : SPOOL ( FROM TO --) 蠷INTSPOOL 2 PASS PTHRU STOP ; : ENDSPOOL ( --) 蠷INTSPOOL ACTIVATE STOP ; \ 蠷INTER 襉UTINE <20>1526 CAS16AUG06 ( NOT USEABLE FOR 蠷INTSPOOL!! RE) 螻LYFORTH 諳CABULARY 蠷INT 蠷INT ALSO 腅FINITIONS : PRINIT 4 7 BUSOUT ; \NEEDS 破 : 破 NOOP ; : 靡旁 $D BUS! ; : PSPACES ( N -) 0 ?南 绿 BUS! 滔闲 ; 1 2 +THRU 螻LY 芆RTH ALSO 腅FINITIONS ( SAVE ) \ 蠷INTER INTERFACE 1526 02OCT87RE 諥RIABLE 蠧OL 諥RIABLE 蠷OW <20> : PEMIT BUS! 1 蠧OL +! ; <20> : PCR 靡旁 1 蠷OW +! 0 蠧OL ! ; <20> : PDEL ; <20> : PPAGE 破 0 蠷OW ! 0 蠧OL ! ; <20> : PAT ( ZEILE SPALTE -- ) OVER 蠷OW @ < 善 PPAGE 匀盼 0 ROT 蠷OW @ - BOUNDS ?南 PCR 滔闲 DUP 蠧OL @ - PSPACES 蠧OL ! ; <20> : PAT? 蠷OW @ 蠧OL @ ; <20> : PTYPE ( ADR COUNT -) DUP 蠧OL +! BOUNDS ?南 <20> C@ BUS! 滔闲 ; <20> 蟄TPUT: >PRINTER PEMIT PCR PTYPE PDEL PPAGE PAT PAT? ; 芆RTH DEFINITIONS : PRINTER PRINIT >PRINTER ; : DISPLAY CR BUSOFF DISPLAY ; \ PRINTER ROUTINEN 20OCT87RE 螻LY 芆RTH ALSO DEFINITIONS 4 肙NSTANT <20>/SCR : .LINE ( LINE# SCR# --) BLOCK SWAP C/L * + C/L 1- TYPE ; : .=== C/L 1- 0 南 罶CII = EMIT 滔闲 ; : PRLIST ( SCR# --) DUP BLOCK DROP PRINTER $<24> EMIT ." 覥REEN 蜶. " DUP . $14 EMIT CR .=== L/S 0 南 <20> OVER .LINE CR 滔闲 DROP .=== CR CR CR DISPLAY ; \ 眯-80 蠷INTER LOADSCREEN CLV14OCT87 螻LYFORTH HEX 諳CABULARY 蠷INT 蠷INT DEFINITIONS ALSO 肦EATE 蠷TER 2 ALLOT ( 覧MAPHOR) 0 蠷TER ! \ 蠷TER UNLOCK /CLV 1 6 +THRU 螻LY 芆RTH ALSO DEFINITIONS ( CLEAR ) \ P! CTRL: 庞<> ESC: 07MAY85MAWE) 蠷INT DEFINITIONS : P! ( 8B -) 屡巧<E5B1A1> PAUSE $哪0<E593AA> C@ $10 AND 瘴陨<E798B4> $哪01 C! ; <20> : CTRL: ( <20> -) 肦EATE C, DOES> ( -) C@ P! ; 07 CTRL: 屡<> <20> $7<> CTRL: 呐<> <20> $0<> CTRL: 靡旁 <20> $1<> CTRL: 庞<> $0<> CTRL: 唐 $0<> CTRL: 破 <20> : ESC: ( <20> -) 肦EATE C, DOES> ( -) 庞<> C@ P! ; $30 ESC: 1/8" $31 ESC: 1/10" $32 ESC: 1/6" $20 ESC: GORLITZ <20> : 庞<>2 庞<> P! P! ; ( PRINTER CONTROLS 07MAY85MAWE) $0E ESC: +WIDE $14 ESC: -WIDE $45 ESC: +DARK $46 ESC: -DARK $47 ESC: +DUB $48 ESC: -DUB $0F ESC: +COMP $12 ESC: -COMP : +UNDER 1 $2<> ESC2 ; : -UNDER 0 $2<> ESC2 ; ( PRINTER CONTROLS 07MAY85MAWE) $54 ESC: SUOFF : SUPER 0 $53 庞<>2 ; : SUB 1 $53 庞<>2 ; : LINES ( LINES -) $43 庞<>2 ; : "LONG ( INCHES -) 0 LINES P! ; : AMERICAN 0 $52 庞<>2 ; : GERMAN 2 $52 庞<>2 ; : PSPACES ( N -) 0 SWAP BOUNDS ?南 绿 P! 滔闲 ; <20> : INITPORT 0 $哪01 C! $破 $哪03 C! ; : PRINIT INITPORT AMERICAN SUOFF 1/6" &12 "LONG 靡旁 ; ( 眯80 PRINTER INTERFACE 26MAR85RE) <20> 諥RIABLE UNCHANGED? UNCHANGED? OFF <20> : C>A ( 8B0 - 8B1) UNCHANGED? @ ?EXIT DUP $41 $5<> UWITHIN 善 $20 OR EXIT 匀盼 DUP $<24>1 $穆 UWITHIN 善 $7<> AND EXIT 匀盼 DUP $拿 $<24>0 UWITHIN 善 $<24>0 XOR 匀盼 ; ( PRINT PL 06MAY85WE) 諥RIABLE 蠧OL 諥RIABLE 蠷OW <20> : PEMIT C>A P! 1 蠧OL +! ; <20> : PCR 靡旁 1 蠷OW +! 0 蠧OL ! ; <20> : PDEL 呐<> -1 蠧OL +! ; <20> : PPAGE 破 0 蠷OW ! 0 蠧OL ! ; <20> : PAT ( ZEILE SPALTE -- ) OVER 蠷OW @ < 善 PPAGE 匀盼 0 ROT 蠷OW @ - BOUNDS ?南 PCR 滔闲 DUP 蠧OL @ - PSPACES 蠧OL ! ; <20> : PAT? 蠷OW @ 蠧OL @ ; <20> : PTYPE ( ADR COUNT -) DUP 蠧OL +! BOUNDS ?南 <20> C@ C>A P! 滔闲 ; <20> 蟄TPUT: >PRINTER PEMIT PCR PTYPE PDEL PPAGE PAT PAT? ; 芆RTH DEFINITIONS : 蠷INTER PRINIT >PRINTER ; ( 3SCR'S NSCR'S THRU KS07MAY85MAWE) 芆RTH DEFINITIONS <20> : 3SCR'S ( BLK -) CR -COMP +DARK $<24> SPACES DUP 3 .R $19 SPACES DUP 1+ 3 .R $19 SPACES DUP 2+ 3 .R CR +COMP -DARK <20>/<2F> <20>/<2F> * 0 南 CR 5 SPACES DUP BLOCK <20> + <20>/<2F> 1- TYPE 8 SPACES DUP 1+ BLOCK <20> + <20>/<2F> 1- TYPE 8 SPACES DUP 2+ BLOCK <20> + <20>/<2F> 1- TYPE <20>/<2F> +滔闲 DROP CR 唐 ; <20> : NSCR'S ( BLK1 N - BLK2) UNDER 0 南 DUP 3SCR'S OVER + 滔闲 NIP ; : PTHRU ( FROM TO -) 蟄TPUT @ -ROT 蠷INTER 蠷TER LOCK 1/8" 1+ OVER - 1+ 9 /MOD ?DUP 善 SWAP >R 0 南 3 NSCR'S PAGE 滔闲 R> 匀盼 ?DUP 善 1- 3 / 1+ 0 南 DUP 3SCR'S 3 + 滔闲 匀盼 DROP 蠷TER UNLOCK 蟄TPUT ! ; \\ 蘋NG蔛R FOR <20>16 CAS16AUG06 虴MORY MODEL $0000 - $8000 : 蘋W伊<57> $8000 - $FFFF : 菼GH伊<48> & 蚁<> SWITCH TO 伊<> 覹ITCH TO 蚁<> SYS CAN BE USED LIKE JSR 蚁<>-肁LL LIKE '0FFD2 SYS' ROM JSR RAM == $FF3E STA JSR $FF3F STA NOT POSSIBLE IF 扰遗 > $8000 荱ESS WHY? --- 螻 THE <20>64 铝由<E9939D> AND 嫌 CAN BE BANKED SEPERATLY. 訦IS MACROS ARE ONLY NEEDED FOR THE BASIC 蚁<> \\ 蘋NG蔛R FOR <20>16 CAS16AUG06 琢椅晌<E6A485>! 覻STEMCRASH IF USED INCORRECT THIS MAKRO MUST BE UNDER $8000 A CALL LIKE ' $FFD2 SYS虯CRO' WILL GENERATE PHA $FF # LDA 滔吻1 2+ STA $D2 # LDA 滔吻1 1+ STA PLA 滔吻 JSR CALL IN 蚁<> WILL BE DONE WITH A DETOUR SYS DECIDED IF DIRECT OR INDIRECT CALL 琢椅晌<E6A485>! 贓RO-芁AG WILL BE DESTROYED! ( TRANSIENT 芆RTH-6502 罶SEMCLCAS16AUG06 ( 翧SIS: 芆RTH 腎MENSIONS 窒<> 缮<> 蜲. 5) 訦E 罶SEMBLER WILL BE LOADED COMPLETELY INTO THE 扰列 AND IS ONLY USABLE TILL THE NEXT 'CLEAR' OR 'SAVE', AFTER THAT HE IS COMPA |