mirror of
https://github.com/forth-ev/VolksForth.git
synced 2024-06-01 06:41:37 +00:00
1111 lines
171 KiB
Plaintext
1111 lines
171 KiB
Plaintext
\\ ÄIRECTORY 1OF4 26OCT87RE CAS17AUG06 . 0 .. 0 ÃONTENT 1 ÅDITOR-ÉNTRO 2 ÆIRST-ÉNDO 3 ÌOAD-ÓYSTEM 4 ÌOAD-ÄEMO 5 LOADFROM 6 SIMPLE ÆILE 8 HELP &10 ÆÏÒÔÈ-ÇROUP &11 ÎUMBER ÇAME &12 BUFFERS &13 DUMP &14 ÄISASSEMBLER &16 ÔÅÓÔ.ÄÉÒ &23 SAVESYSTEM &26 FORMATDISK &27 COPYDISK &28 COPY2DISK &29 \\ ÃONTENT VOLKSÆORTH 1OF4 CAS17AUG06 ÄIRECTORY 0 ÃONTENT 1 ÅDITOR ÓHORT ÉNFO 2 ÆIRST ÉNFO 3 ÌOAD ÓYSTEM 4 SIMPLE ÆILE 8 HELP &10 ÆORTH ÇROUP &11 ÎUMBER-ÇAME &12 RELOCATE THE SYSTEM &13 DUMP &14 - &15 6502-ÄISASSEMBLER &16 - &22 ÔEST-ÆOLDER &23 - &25 SAVESYSTEM &26 BAMALLOT FORMATDISK &27 COPYDISK &28 2DISK COPY2DISK &29 - &30 FREE &31 - &36 PRG-FILES &37 - &84 ÓHADOWS &85 - &121 PRG-FILES &122 - &169 ÆÏÒÔÈ-ÇÅÓÅÌÌÓÃÈÁÆÔ(C) *** VOLKSÆÏÒÔÈ ÅÄÉÔÏÒ ÃOMMANDS SPECIAL ÆUNCTIONS: ÃTRL O ÏVERWRITE ÃTRL I ÉNSMODE ÃTRL $ .STAMP ÃTRL # .SCR# ÃTRL ' SEARCH ÃURSOR ÃONTROL: NORMAL ÆUNCTIONS, OTHER: Æ7 +TAB Æ8 -TAB ÃÌÒ >TEXT-END ÒÅÔÕÒÎ ÃÒ ÃHAR-ÅDITING: Æ5 BUF>CHAR Æ6 CHAR>BUF ÄÅÌ BACKSPACE ÉÎÓÔ INSERT ÃTRL D ÄELETE ÃTRL @ COPYCHAR ÌINE-ÅDITING: Æ1 NEWLINE Æ2 KILLINE Æ3 BUF>LINE Æ4 LINE>BUF ÃTRL E ÅRASELINE ÃTRL R CLRÒIGHT ÃTRL ^ COPYLINE ÐAGEING: ÃTRL N >ÎEXT ÃTRL B >ÂACK ÃTRL A >ÁLTERNATE ÃTRL W >SHADO× ÌEAVING THE ÅDITOR: ÃTRL C ÃANCELED ÃTRL X UPDATED ÃTRL F ÆLUSHED ÃTRL L ÌOADING ÆÏÒÔÈ-ÇÅÓÅÌÌÓÃÈÁÆÔ (C) 1985-2006 ÙOU ARE IN ÅDITORMODE ÓCREEN # 3 ÂACK TO ÆÏÒÔÈ WITH ÒÕÎ/ÓÔÏÐ *** VOLKSÆÏÒÔÈ-83 *** ÃALL ÅDITOR WITH "L ( N -- )" OR WITH "R ( -- )" ×ÁÒÎÉÎÇ! ×ITHOUT ÆÏÒÔÈ ÅXPERIENCE WORK WITH BACKUP COPIES OF THE ÄISKS OR WITH WRITE PROTECTED ÄISKS ÓOME ÆÏÒÔÈ ×ORDS TO TRY OUTSIDE THE ÅDITOR: ×ÏÒÄÓ ÏÒÄÅÒ ÖÉÅ× ÈÅÌÐ AND THE Ã= -ËEY ÔURN ÐAGE BACK WITH "ÃTRL B" ÆÏÒÔÈ-ÇÅÓÅÌÌÓÃÈÁÆÔ (C) BP/KS/RE/WE/CLV\ ÌOAD A WORK SYSTEM 05NOV87RE ÏNLYFORTH 2 +LOAD \ LOADFROM &46 C: LOADFROM \ .BLK 4 C: LOADFROM \ ÔRANSIENT ÁSSEMB &19 C: LOADFROM \ ÅDITOR &26 A: LOADFROM \ SAVESYSTEM OLDSAVE 2 +LOAD \ LOADFROM 5 C: LOADFROM \ ÁSSEMBLER &47 C: LOADFROM \ ÔRACER + ÔOOLS &13 A: LOADFROM \ ÂUFFERS OLDSAVE \\ ÆÏÒÔÈ-ÇÅÓÅÌÌÓÃÈÁÆÔ (C) BP/KS/RE/WE/CLV \ ÌOAD Ã64 ÄEMO 21OCT87RE (16 .( ÎICHT FUER Ã16!) \\ Ã) ÏNLYFORTH 1 +LOAD \ LOADFROM LIMIT FIRST @ - B/BUF 8 * - ?\ 8 BUFFERS \NEEDS DEMOSTART : DEMOSTART ; 90 ALLOT \NEEDS TASKS $39 Ã: LOADFROM \NEEDS HELP $Á Á: LOADFROM \NEEDS SLIDE &6 Ä: LOADFROM 1 SCR ! 0 R# ! ÏNLYFORTH OLDSAVE \\ ÆÏÒÔÈ-ÇÅÓÅÌÌÓÃÈÁÆÔ (C) BP/KS/RE/WE/CLV \ GETDISK LOADFROM 20OCT87RE HERE $200 HALLOT HEAP DP ! : GETDISK ( DRV -- ) CR ." ÐLEASE ÉNSERT ÄISK " 1+ . KEY DROP .STATUS CR ; : LOADFROM ( BLK DRV -- ) ?DUP 0= ÉÆ LOAD EXIT ÔÈÅÎ FLUSH GETDISK LOAD FLUSH 0 GETDISK ; 0 ÃONSTANT Á: 1 ÃONSTANT Â: 2 ÃONSTANT Ã: 3 ÃONSTANT Ä: : ?\ ( F -- ) ?EXIT [COMPILE] \ ; --> ÆÏÒÔÈ-ÇÅÓÅÌÌÓÃÈÁÆÔ (C) BP/KS/RE/WE/CLV \ ÎEW SAVE EMPTY CLEAR 20OCT87RE ' SAVE ÁLIAS OLDSAVE ' CLEAR ÁLIAS OLDCLEAR ' EMPTY ÁLIAS OLDEMPTY : SAVE STATE @ ÉÆ COMPILE SAVE ÔÈÅÎ ; IMMEDIATE : CLEAR STATE @ ÉÆ COMPILE CLEAR ÔÈÅÎ ; IMMEDIATE : EMPTY STATE @ ÉÆ COMPILE EMPTY ÔÈÅÎ ; IMMEDIATE DP ! \\ ÆÏÒÔÈ-ÇÅÓÅÌÌÓÃÈÁÆÔ (C) BP/KS/RE/WE/CLV \ SIMPLE FILESYSTEM 20OCT87RE \NEEDS (SEARCH .( (SEARCH MISSING) \\ ' WORD >BODY 2+ @ ÁLIAS (WORD 0 ÃONSTANT FOLDER ' FOLDER >BODY Ü ÃONSTANT >FOLDER : ROOT >FOLDER OFF ; FOLDER : DIRECTORY ( -- ADDR LEN ) FOLDER BLOCK B/BLK ; : (FSEARCH ( ADR LEN -- N ) DIRECTORY (SEARCH 0= ABORT" NOT FOUND" FOLDER BLOCK - >IN PUSH >IN ! ÂÅÇÉÎ BL DIRECTORY (WORD CAPITALIZE DUP C@ 0= ABORT" EXHAUSTED" NUMBER? ?DUP NOT ×ÈÉÌÅ DROP ÒÅÐÅÁÔ 0< ?EXIT DROP ; --> \ SIMPLE ÆILESYSTEM 20OCT87RE : SPLIT ( ADR LEN CHAR -- ADR2 LEN2 ADR1 LEN1 ) >R 2DUP R@ SCAN R> OVER >R SKIP 2SWAP R> - ; : READ ( -- N ) \ /PATH/FILE BL WORD COUNT DUP 0= ABORT" ×HAT?" PAD PLACE PAD COUNT ÂÅÇÉÎ ÁSCII / SPLIT DUP ÉÆ (FSEARCH ÅÌÓÅ NIP ROOT ÔÈÅÎ OVER ×ÈÉÌÅ >FOLDER +! ÒÅÐÅÁÔ -ROT 2DROP FOLDER + ; : LD READ LOAD ; \ ÌOAÄ : SH READ LIST ; \ ÓÈOW : ED READ L ; \ ÅÄIT : CD READ >FOLDER ! ; \ ÃHANGE ÄIR : LS FOLDER LIST ; \ ÌIÓT ÄIR ÆÏÒÔÈ-ÇÅÓÅÌÌÓÃÈÁÆÔ (C) BP/KS/RE/WE/CLV \ HELP 14OCT85RE) ÏNLYFORTH : HELP ( --) 3 L \ LIST ÓCR # 3 CR ." ÁDDITIONAL ÈELP CAN BE" CR ." FOUND ON THE ÎET" CR ." OR IN A LOCAL ÆÏÒÔÈ ÕSER ÇROUP" CR ." ÆÏÒÔÈ-ÇESELLSCHAFT" CR ." WWW.FORTH-EV.DE" CR ; \ PRINT SILLY TEXT \\ ÆÏÒÔÈ-ÇÅÓÅÌÌÓÃÈÁÆÔ (C) BP/KS/RE/WE/CLV \ NUMBERS 05JUL85RE) DECIMAL \ SORRY, BUT THIS \ IS FOR ÙÏÕ ! : ALPHABETIC ( --) &36 BASE ! ; HEX \ ÁH, MUCH BETTER \ ÌOOK AT THIS: 31067Å6. ALPHABETIC D. HEX 19211Ä5. ALPHABETIC D. HEX -123. ALPHABETIC D. HEX \ ÔRY TO EXPLAIN ! \\ ÆÏÒÔÈ-ÇÅÓÅÌÌÓÃÈÁÆÔ (C) BP/KS/RE/WE/CLV \ RELOCATING THE SYSTEM 20OCT87RE Ü : RELOCATE-TASKS ( NEWÕÐ -- ) UP@ DUP ÂÅÇÉÎ 1+ UNDER @ 2DUP - ×ÈÉÌÅ ROT DROP ÒÅÐÅÁÔ 2DROP ! ; : RELOCATE ( STACKLEN RSTACKLEN -- ) SWAP ORIGIN + 2DUP + B/BUF + 2+ LIMIT U> ABORT" BUFFERS?" DUP PAD $100 + U< ABORT" STACK?" OVER UDP @ $40 + U< ABORT" RSTACK?" FLUSH EMPTY UNDER + ORIGIN $Á + ! \ R0 DUP RELOCATE-TASKS UP@ 1+ @ ORIGIN 1+ ! \ TASK 6 - ORIGIN 8 + ! COLD ; \ S0 : BYTES.MORE ( N -- ) UP@ ORIGIN - + R0 @ UP@ - RELOCATE ; : BUFFERS ( +N -- ) B/BUF * 2+ LIMIT R0 @ - SWAP - BYTES.MORE ; \ DUMP UTILITY 30NOV85RE \ ADAPTED FROM Æ83 ÌAXEN/ÐERRY Ü : .2 ( N --) 0 <# # # #> TYPE SPACE ; Ü : Ä.2 ( ADR LEN --) BOUNDS ?ÄÏ É C@ .2 ÌÏÏÐ ; : DLN ( ADR --) \ ÄUMPÌIÎE CR DUP 4 U.R SPACE DUP 8 Ä.2 ." Z " 8 BOUNDS ÄÏ É C@ EMIT ÌÏÏÐ ; Ü : ?.N ( N0 N1 -- N0) 2DUP = ÉÆ RVSON ÔÈÅÎ 2 .R RVSOFF SPACE ; Ü : ?.A ( N0 N1 -- N0) 2DUP = ÉÆ RVSON ÔÈÅÎ 1 .R RVSOFF ; --> ÆÏÒÔÈ-ÇÅÓÅÌÌÓÃÈÁÆÔ (C) BP/KS/RE/WE/CLV \ DUMP UTILITY 30NOV85RE \ ADAPTED FROM Æ83 ÌAXEN/ÐERRY Ü : .HEAD ( ADR LEN -- ADR' LEN') SWAP DUP $ÆÆÆ0 AND SWAP $Æ AND 2 0 ÄÏ CR 5 SPACES É 8 * 8 BOUNDS ÄÏ É ?.N ÌÏÏÐ 2 SPACES É 8 * 8 BOUNDS ÄÏ É ?.A ÌÏÏÐ ÌÏÏÐ ROT + ; : DUMP ( ADR LEN --) BASE PUSH HEX .HEAD BOUNDS ?ÄÏ É DLN STOP? ÉÆ ÌÅÁÖÅ ÔÈÅÎ 8 +ÌÏÏÐ CR ; : Z ( ADR N0 ... N7 --) ROW 2- >R UNLINK 8 PICK 7 + -7 BOUNDS ÄÏ É C! -1 +ÌÏÏÐ R> 0 AT DLN QUIT ; CLEAR \ DISASSEMBLER 6502 LOADSCR 06MAR86RE ÏNLYFORTH \NEEDS ÔOOLS ÖOCABULARY ÔOOLS ÔOOLS ALSO DEFINITIONS HEX Ü : TABLE ( +N -- ) ÃREATE 0 ÄÏ BL WORD NUMBER DROP , ÌÏÏÐ ÄOES> ( 8B1 -- 8B2 +N ) + COUNT SWAP C@ ; --> \ DIS SHORTCODE0 20OCT87RE BASE @ HEX $80 Ü TABLE SHORTCODE0 0Â10 0000 0000 0341 2510 0320 0000 0332 0ÁÃ1 0000 0000 03Á1 0Å10 0000 0000 0362 1Ä32 0000 0741 2841 2710 2820 0732 2832 08Ã1 0000 0000 28Á1 2Ä10 0000 0000 2862 2Á10 0000 0000 2141 2410 2120 1Ã32 2132 0ÃÃ1 0000 0000 21Á1 1010 0000 0000 2162 2Â10 0000 0000 2941 2610 2920 1ÃÄ2 2932 0ÄÃ1 0000 0000 29Á1 2Æ10 0000 0000 2962 0000 0000 3241 3141 1710 3610 3232 3132 04Ã1 0000 32Á1 31Â1 3810 3710 0000 0000 2051 1Æ51 2041 1Æ41 3410 3310 2032 1Æ32 05Ã1 0000 20Á1 1ÆÂ1 1110 3510 2062 1Æ72 1451 0000 1441 1541 1Â10 1610 1432 1532 09Ã1 0000 0000 15Á1 0Æ10 0000 0000 1562 1351 0000 1341 1941 1Á10 2210 1332 1932 06Ã1 0000 0000 19Á1 2Å10 0000 0000 1962 BASE ! --> \ DIS SCODE ADRMODE 20OCT87RE Ü ÃREATE SCODE $23 C, $02 C, $18 C, $01 C, $30 C, $1E C, $12 C, $2C C, Ü ÃREATE ADRMODE $81 C, $41 C, $51 C, $32 C, $91 C, $A1 C, $72 C, $62 C, Ü : SHORTCODE1 ( 8B1 - 8B2 +N) 2/ DUP 1 AND ÉÆ 0= 0 EXIT ÔÈÅÎ 2/ DUP $7 AND ADRMODE + C@ SWAP 2/ 2/ 2/ $7 AND SCODE + C@ ; Ü ÖARIABLE MODE Ü ÖARIABLE LENGTH --> \ DIS SHORTCODE TEXTTAB 06MAR86RE Ü : SHORTCODE ( 8B1 -- +N ) DUP 1 AND ( ODD CODES) ÉÆ DUP $89 = ÉÆ DROP 2 ÔÈÅÎ SHORTCODE1 ÅÌÓÅ SHORTCODE0 ( EVEND CODES) ÔÈÅÎ SWAP DUP 3 AND LENGTH ! 2/ 2/ 2/ 2/ MODE ! ; Ü : TEXTTAB ( CHAR +N 8B -- ) ÃREATE DUP C, SWAP 0 ÄÏ >R DUP WORD 1+ HERE R@ CMOVE R@ ALLOT R> ÌÏÏÐ 2DROP ÄOES> ( +N -- ) COUNT >R SWAP R@ * + R> TYPE ; --> \ DIS TEXT-TABLE 06MAR86RE BL $39 3 Ü TEXTTAB .MNEMONIC *BY ADC AND ASL BCC BCS BEQ BIT BMI BNE BPL BRK BVC BVS CLC CLD CLI CLV CMP CPX CPY DEC DEX DEY EOR INC INX INY JMP JSR LDA LDX LDY LSR NOP ORA PHA PHP PLA PLP ROL ROR RTI RTS SBC SEC SED SEI STA STX STY TAX TAY TSX TXA TXS TYA ( +N -- ) ÁSCII / $Å 1 Ü TEXTTAB .BEFORE / /A/ /Z/#/ / /(/(/Z/Z/ /(/ ÁSCII / $Å 3 Ü TEXTTAB .AFTER / / / / / /,X /,Y /,X)/),Y/,X /,Y / /) / --> \ DIS 2U.R 4U.R 06MAR86RE : 4U.R ( U -) 0 <# # # # # #> TYPE ; : 2U.R ( U -) 0 <# # # #> TYPE ; --> \ DIS 20OCT87RE ÆORTH DEFINITIONS : DIS ( ADR -- ) BASE PUSH HEX ÂÅÇÉÎ CR DUP 4U.R SPACE DUP C@ DUP 2U.R SPACE SHORTCODE >R LENGTH @ DUP ÉÆ OVER 1+ C@ 2U.R SPACE ÔÈÅÎ DUP 2 = ÉÆ OVER 2+ C@ 2U.R SPACE ÔÈÅÎ 2 SWAP - 3 * SPACES R> .MNEMONIC SPACE 1+ MODE @ DUP .BEFORE $à = ÉÆ DUP C@ DUP $80 AND ÉÆ $100 - ÔÈÅÎ OVER + 1+ 4U.R ÅÌÓÅ LENGTH @ DUP 2 SWAP - 2* SPACES ?DUP ÉÆ 2 = ÉÆ DUP @ 4U.R ÅÌÓÅ DUP C@ 2U.R ÔÈÅÎ ÔÈÅÎ ÔÈÅÎ MODE @ .AFTER LENGTH @ + STOP? ÕÎÔÉÌ DROP ; ÏNLYFORTH CLEAR \\ ÓUBDIRECTORY TEST.DIR 26OCT87RE . 0 .. -&23 ALL-WORDS 1 FREE 2 \ PRETTY WORDS 26OCT87RE : .TYPE ( CFA -- ) DUP @ SWAP 2+ CASE? ÉÆ ." ÃODE" EXIT ÔÈÅÎ ['] : @ CASE? ÉÆ ." :" EXIT ÔÈÅÎ ['] BASE @ CASE? ÉÆ ." ÕSER" EXIT ÔÈÅÎ ['] FIRST @ CASE? ÉÆ ." ÖAR" EXIT ÔÈÅÎ ['] LIMIT @ CASE? ÉÆ ." ÃON" EXIT ÔÈÅÎ ['] ÆORTH @ CASE? ÉÆ ." ÖOC" EXIT ÔÈÅÎ ['] R/W @ CASE? ÉÆ ." ÄEF" EXIT ÔÈÅÎ DROP ." ????" ; : (WORDS ( LINK -- ) ÂÅÇÉÎ STOP? ABORT" STOPPED" @ DUP ×ÈÉÌÅ CR DUP 2- @ 3 .R SPACE DUP 2+ DUP NAME> .TYPE SPACE .NAME ÒÅÐÅÁÔ DROP ; : ALL-WORDS ( -- ) VOC-LINK ÂÅÇÉÎ @ ?DUP ×ÈÉÌÅ DUP 6 - >NAME CR CR .NAME ." WORDS:" CR ." ÂLK ÔYPE ÎAME " DUP 4 - (WORDS ÒÅÐÅÁÔ ; \ SAVESYSTEM 23OCT87RE Ü : (SAVSYS ( ADR LEN -- ) [ ÁSSEMBLER ] ÎEXT [ ÆORTH ] ['] PAUSE DUP PUSH ! \ SINGLETASK I/O PUSH I/O OFF BUSTYPE ; : SAVESYSTEM \ NAME MUST FOLLOW \ PREPARE ÆORTH ËERNAL SCR PUSH 1 SCR ! R# PUSH R# OFF \ PREPARE ÅDITOR [ ÅDITOR ] STAMP$ DUP PUSH OFF (PAD DUP PUSH OFF \ NOW WE SAVE THE SYSTEM SAVE 8 2 BUSOPEN 0 PARSE BUSTYPE " ,P,W" COUNT BUSTYPE BUSOFF 8 2 BUSOUT ORIGIN $17 - DUP $100 U/MOD SWAP BUS! BUS! HERE OVER - (SAVSYS BUSOFF 8 2 BUSCLOSE 0 (DRV ! DERROR? ABORT" SAVE-ERROR" ; ÏNLYFORTH \ BAMALLOCATE, FORMATDISK 20OCT87RE : BAMALLOCATE ( --) DISKOPEN ?EXIT PAD &18 0 READSECTOR 0= ÉÆ PAD 4 + $8à ERASE PAD &18 0 WRITESECTOR DROP ÔÈÅÎ DISKCLOSE 8 &15 BUSOUT " I0" COUNT BUSTYPE BUSOFF ; : FORMATDISK ( --) \ NAME MUST FOLLOW 8 &15 BUSOUT " N0:" COUNT BUSTYPE 0 PARSE BUSTYPE BUSOFF DERROR? ?EXIT BAMALLOCATE ; \ EXAMPLE: FORMATDISK VOLKSÆÏÒÔÈ,ID ÆÏÒÔÈ-ÇÅÓÅÌÌÓÃÈÁÆÔ (C) BP/KS/RE/WE/CLV \ COPYDISK 06JUN85WE) Ü ÖARIABLE DISTANCE LIMIT FIRST @ - B/BUF / Ü ÃONSTANT BUFS Ü : BACKUPBUFS ( FROM COUNT --) CR ." ÉNSERT ÓOURCE-ÄISK" KEY DROP CR BOUNDS 2DUP ÄÏ É BLOCK DROP ÌÏÏÐ CR ." ÉNSERT ÄESTINATION-ÄISK" KEY DROP CR DISTANCE @ ?DUP ÉÆ >R SWAP 1- OVER R> + CONVEY ÅÌÓÅ ÄÏ É BLOCK DROP UPDATE ÌÏÏÐ SAVE-BUFFERS ÔÈÅÎ ; : COPYDISK ( BLK1 BLK2] [TO.BLK --) 2 PICK - DISTANCE ! 1+ OVER - DUP 0> NOT ÁBORT" ÒÁÎÇÅ ÅÒÒÏÒ!" BUFS /MOD ?DUP ÉÆ SWAP >R 0 ÄÏ DUP BUFS BACKUPBUFS BUFS + ÌÏÏÐ R> ÔÈÅÎ ?DUP ÉÆ BACKUPBUFS ÅÌÓÅ DROP ÔÈÅÎ ; \ 2DISK COPY2DISK.. CLV14JUL87 $165 Ü ÃONSTANT 1.T $1ÅÁ Ü ÃONSTANT 2.T $256 Ü ÃONSTANT 3.T Ü : (S#>S+T ( SECTOR# -- SECT TRACK) DUP 1.T U< ÉÆ $15 /MOD EXIT ÔÈÅÎ ( 3+) DUP 2.T U< ÉÆ 1.T - $13 /MOD $11 + EXIT ÔÈÅÎ DUP 3.T U< ÉÆ 2.T - $12 /MOD $18 + EXIT ÔÈÅÎ 3.T - $11 /MOD $1Å + ; Ü : S#>T+S ( SECTOR# -- TRACK SECT ) (S#>S+T 1+ SWAP ; --> \ ..2DISK COPY2DISK CLV04AUG87 Ü : ?E ( FLAG--) ?DUP ÉÆ ." ÄRV " (DRV @ . DISKCLOSE ABORT" " ÔÈÅÎ ; Ü : OP ( DRV#--) (DRV ! DISKOPEN ?E ; : COPYSECTOR \ ADR SEC# -- 2DUP 0 OP S#>T+S READSECTOR ?E DISKCLOSE 1 OP S#>T+S WRITESECTOR ?E DISKCLOSE ; : COPY2DISK \ -- \ FOR 2 ÆLOPPYS PAD DUP $110 + SP@ U> ABORT" NO ROOM" CR ." ÓOURCE=0, ÄEST=1" KEY DROP CR BASE PUSH DECIMAL 0 &682 ÄÏ É . É S#>T+S . . CR $91 CON! DUP É COPYSECTOR -1 +ÌÏÏÐ DROP ; : 2DISK1551 \ -- SWITCH 1551 TO #9 FLUSH 8 &15 BUSOPEN " %9" COUNT BUSTYPE BUSOFF DERROR? DROP ; \ NOTHING SPECIAL HERE Æ ±<1C>ȱ ‘L |