DWB 4 EXPRAM.DOC S 5180 EXPRAM.SRC S 15509 EXPRAM.INT P 305 EXPRAM.PRG P 1948 1750 EBRUARY 1987 F YOU ARE GOOD AT KEEPING TRACK OF YOUR DATA, PROGRAMS, ETC. THIS 1750 ISK CAN BE AN INVALUABLE TOOL. REQUENTLY USED PROGRAMS AND UTILITIES CAN BE ED IN THE EXPANSION MODULE AND I-RES SCREENS CAN BE ALMOST INSTANTANEOUSLY SWAPPED TO CREATE ANIMATION SEQUENCES. ND DATA CAN BE TEMPORARILY STORED AND RETRIEVED IF A NUMBER OF PROGRAMS ARE TO SHARE IT. T IS IMPORTANT TO NOTE THAT SENSITIVE DATA SHOULD ALWAYS BE STORED ON THE DISK SINCE ANY LOSS OF POWER WILL CLEAR THE EXPANSION AS WELL AS THE MEMORY IN THE 128. OWEVER, A RESET OR UN STOP/ESTORE WILL USUALLY LEAVE EVERYTHING IN TACK. HE COMMANDS AND PROVIDE AN EASY WAY TO HANDLE INFORMATION GOING TO AND FROM THE EXPANSION MODULE. #BYTES,INTSA,EXPSA,EXPB #BYTES,INTSA,EXPSA,EXPB HERE: #BYTES = TOTAL NUMBER OF BYTES TO BE TRANSFERRED, INTSA = STARTING ADDRESS OF THE 128, EXPSA = STARTING ADDRESS OF THE EXPANSION MODULE, EXPB = EXPANSION RAM BANK (0-1 FOR 1700 AND 0-7 FOR 1750). N MACHINE LANGUAGE IT IS NEARLY AS EASY: #$01 ;SET THE 128 BASE ADDRESS $02 ;LO BYTE #$1 ;START OF IN THIS EXAMPLE $01 ;HI BYTE ; #$00 ;SET EXPANSION ADDRESS $04 ;LO BYTE #$00 $05 ;HI BYTE #$00 $06 ;BANK (0-N) ; #$00 ;# OF BYTES $07 ;LO BYTE #$20 ;8192 BYTES IN THIS EXAMPLE $08 ;HI BYTE ; #$00 ;128 BANK #$80 ; COMMAND #$80 = ; #$81 = ; #$83 = ; #$84 = $50 ;EXECUTE COMMAND ;RETURN TO YOU PROGRAM HE 128 MUST BE RUNNING IN 1HZ WHEN THESE COMMANDS ARE EXECUTED. HE DATA TRANSFER IS INCREDIBLY FAST AND THE LOSS OF TIME IS NEGLIGIBLE. HE XPANSION PROGRAM IS A USEFUL UTILITY THAT WAS DESIGNED TO HELP MANAGE THE MEMORY IN THE EXPANSION MODULE. T WORKS IN BOTH THE 40 AND 80 COLUMN MODES. AND BINARY PROGRAMS CAN BE ED AND ED FROM MAIN MEMORY WITH A FEW SIMPLE KEY STROKES AND PROGRAM FILES ON A DISK CAN BE QUICKLY TRANSFERRED FOR USE LATER DURING YOUR SESSION. (COMMERCIAL PROGRAMS EXCLUDED) O INSTALL THE PROGRAM, TYPE ".". HIS SETS UP A SMALL MACHINE LANGUAGE PROGRAM AND 'S THE MAIN PROGRAM. FTER THE PROGRAM IS INSTALLED, THE 4 KEY (OR 3560) CAN BE USED TO RUN IT AT ANY TIME. HIS CALLS A SMALL PROGRAM AT $00 WHICH SAVES THE CURRENT MEMORY CONFIGURATION, SWITCHES OUT THE INTERPRETER AND RUNS THE MAIN PROGRAM, RESTORING THE CONFIGURATION AT THE TIME OF EXIT. HIS KEY ASSIGNMENT WILL BE LOST IF A SYSTEM RESET IS PERFORMED. OWEVER, THE MAIN PROGRAM WILL REMAIN UNHARMED WHICH RESIDES UNDER THE 128 AT $000. N THE EVENT OF A RESET "." WILL INSURE ALL THE POINTERS ARE SET PROPERLY AND REASSIGN THE 4 KEY. HEN YOU CALL THIS PROGRAM, A MENU WILL BE DISPLAYED IN A WINDOW (THE CONTENTS UNDER THE WINDOW WILL BE RESTORED WHEN YOU EXIT THE PROGRAM). OU CAN CHOOSE EITHER > , Я>, OR > BY USING THE CURSOR KEYS AND PRESSING TO MAKE YOUR SELECTION. RESSING THE KEY AT ANY TIME WILL ABORT THE CURRENT WINDOW. > : HIS OPTION WILL INDIVIDUALLY LIST ALL THE FILES ON THE DISK AND WAIT FOR A '' OR '' RESPONSE. '' WILL STORE THAT FILE IN THE EXPANSION MODULE AFTER THE ENTIRE LIST OF FILES HAS BEEN MARKED OR THE KEY IS PRESSED. AND FILES ARE NOT INCLUDED BECAUSE OF THEIR SENSITIVITY. OU CAN THEM AFTER THEY HAVE BEEN BROUGHT INTO MAIN MEMORY. DIRECTORY OF ALL ED FILES IS CONTINUALLY UPDATED IN MEMORY. OTE THAT FILES ARE BROUGHT THROUGH THE TEXT AREA SO BE SURE THAT NO PROGRAM OR DATA IS IN THERE OR IT WILL BE LOST. > : DIRECTORY OF ALL THE FILES IN THE EXPANSION MODULE WILL BE DISPLAYED. ELECT THE FILE YOU WANT TO WITH THE CURSOR KEYS AND PRESS TO BRING THE FILE INTO MAIN MEMORY. FILES WILL BE RETURNED TO THE LOCATION THEY WERE SAVED FROM. INARY FILES WILL BE LOADED INTO THEIR RESPECTIVE LOCATIONS IN BANK 0. HE DIRECTORY IS LIMITED TO ABOUT THIRTY NAMES. > : ELECT EITHER OR AS THE FILE TYPE TO BE ED AND PRESS . NTER THE FILE NAME AND PRESS . HE PROGRAM WILL NOT CHECK FOR DUPLICATE NAMES SO YOU MAY HAVE MORE THAN ONE FILE WITH THE SAME NAME. HE PROGRAM WILL IMMEDIATELY RETURN TO THE MAIN MENU WHEN THE FILE IS STORED. F THE CHOICE WAS BINARY THEN YOU WILL BE ASKED FOR THE BANK IN WHICH YOUR PROGRAM OR DATA IS STORED AS WELL AS THE STARTING AND ENDING HEX ADDRESSES. O EXIT PRESS THE KEY. EMEMBER TO GUARD AGAINST THE LOSS OF ANY FILES BY SAVING ANYTHING OF IMPORTANCE TO DISK. ROGRAMS THAT WERE WRITTEN TO ACCESS DATA OR LOAD ANOTHER PROGRAM FROM THE DISK WILL NOT SEARCH THE EXPANSION MODULE EVEN IF YOU STORED THE DATA THERE. NY COMMENTS ARE WELCOME. EEL FREE TO MODIFY THIS PROGRAM TO ENHANCE IT'S CAPABILITIES. ERHAPS IN A FEW MONTHS WE CAN HAVE A SUPER PROGRAM. ONTACT ME ON -INK (OSEPH4) OR ON NIE () ; ; ; EXPANSION RAM ; * = $B000 ; ; ; JMP START WSET LDY #$04 PARL LDA WSZ,X ;SET WINDOW BORDERS STA $00E3,Y ;PAGE 1 PARAMETERS DEX DEY BNE PARL JSR $C142 ;CLR HOME ; LDX #$00 ;PRINT WINDOW JSR PRT STX $FC ROWS LDX $FC JSR PRT LDA $EB CMP $E4 BNE ROWS ;HEIGHT LOOP JSR PRT DEC $E4 ;SET INSIDE WINDOW INC $E5 INC $E6 DEC $E7 JSR $CA32 ;CLR LINE OVERFLOW JSR $C150 ;CURSOR HOME RTS ;EXIT PRT JSR SIDE NEXT LDA CHR,X ;GET CHAR BYTES JSR $C72D LDA $EC CMP $E7 BNE NEXT SNXT INX SIDE LDA CHR,X ;WIDTH LOOP BEQ CONT JSR $C72D JMP SNXT CONT INX RTS ; ; WSZC .BYT 0 WSZ .BYT 0,13,2,3,17 .BYT 15,2,3,22 .BYT 17,2,3,22 ; CHR .BYT 159,207,0,183,18,32,0 .BYT 146,180,0,32,18,32,0 .BYT 175,0,175,175,175,0 ; ; SWAP JSR $CA24 ;SCREEN = WINDOW JSR $C150 ;CRSR HOME LDA WSZ STA $F1 ;RESOTRE CRSR COLOR LDA $EE ;MAX COLUMNS CMP #$4F ;79 COL BEQ S80 ;YES, GO 80 COL ; LDA #$04 ;SCREEN START STA $FB ;SET UP IND ADDR STA $FD LDA #$00 STA $FA STA $FC LDA #$FA STA $02B9 ;Z-PAGE POINTER JSR SET LDA #$D8 ;COLOR RAM STA $FD SET LDY #$00 STY $FF RDWT LDA SF ;STASH/FETCH? BNE FETCH LDX #$01 ;TO BANK 1 LDA ($FC),Y ;FROM SCREEN JSR $FF77 ;STASH JMP LOOP ; FETCH LDA #$FA LDX #$01 ;FROM BANK 1 JSR $FF74 ;FETCH STA ($FC),Y ;TO SCREEN ; LOOP INY BNE RDWT INC $FB ;INC HI BYTES INC $FD INC $FF LDA $FF CMP #$04 ;DONE? BNE RDWT RTS ;GET COLOR OR EXIT ; SF .BYT 01 ; ; S80 LDA #$10 ;16 PAGES STA $FF LDX #$12 ;R18 DEST HI BYTE LDA RW JSR WRITE INX ;R19 DEST LO BYTE LDA #$00 JSR WRITE LDA #$A0 LDX #$18 ;R24 SET COPY BIT JSR WRITE LDA #$00 LDX #$21 ;R33 SOURCE LO BYTE JSR WRITE LDY RW+1 LP2 TYA LDX #$20 ;R32 SOURCE HI BYTE JSR WRITE LDA #$00 LDX #$1E ;WORD COUNT JSR WRITE INY DEC $FF BNE LP2 RTS ;EXIT ; WRITE STX $D600 ;WRITE TO VDC WAIT BIT $D600 BPL WAIT STA $D601 RTS ; RW .BYT 16,0 ; ; ; --- MENU SCREENS --- ; --- MAIN --- ; ; START LDA $F1 ;SAVE SCREEN STA WSZ ; CURSOR COLOR LDA $D021 STA WSZC ; SCREEN COLOR LDA #$FB STA $D021 ; GREY SCREEN LDA #$00 STA SF ;REINITIALIZE SWAP STA RW+1 ; FOR READ LDA #$10 ; 40 COL AND STA RW ; 80 COL MAIN JSR SWAP LDA #$01 STA SF ;RESTE R/W FOR LDA #$00 ;40 AND 80 COL SCRN STA RW LDA #$10 STA RW+1 JSR $CAE5 ;SCROLLING OFF LDA #$9F ;CYAN STA CHR ;BORDER COLOR LDX #$04 JSR WSET ;DO WINDOW LDX #$01 PRCH STX SEL LDA LO-1,X ;SET ADDR FOR JMP STA $FE LDA HI-1,X STA $FF JSR $FA17 .BYT 19,146,' M E N U',13 .BYT '',13,13,32,0 CPX #$01 BNE CH1 JSR $C8C2 ;RVS ON CH1 JSR $FA17 .BYT 'DISK > EXP',13,13,32,0 CPX #$02 BNE CH2 JSR $C8C2 CH2 JSR $FA17 .BYT 'EXP > HOST',13,13,32,0 CPX #$03 BNE CH3 JSR $C8C2 CH3 JSR $FA17 .BYT 'HOST > EXP',13,0 ; KEY JSR $FFE4 CMP #$1B ;ESC CHAR BNE CRDN JSR $CAE2 ;ENABLE SCROLLING LDA KMSG STA $9D ;RESTORE KERNAL MSG LDA WSZC STA $D021 ;RESTORE SCRN COLOR JMP SWAP ;FETCH AND EXIT CRDN CMP #$11 ;CRSR DOWN? BNE CSRUP INC SEL LDX SEL CPX #$04 ;>#3? BNE PS1 LDX #$01 PS1 JMP PRCH CSRUP CMP #$91 ;CRSR UP? BNE RETRN DEC SEL LDX SEL BNE PS2 ; =0 ? LDX #$03 PS2 JMP PRCH RETRN CMP #$0D ; KEY? BNE KEY JMP ($FE) ; SEL .BYT 0 LO .BYT 0,0,0 ;VECTOR IND JUMP HI .BYT 0,0,0 ;TABLE ; ; ; --- HOST => EXP --- ; ; HOST LDA #$9E ;YELLOW STA CHR ;BORDER COLOR LDX #$08 ;BORDER TABLE JSR WSET ;DO NEW WINDOW ; HST1 JSR $FA17 .BYT 19,146,' HOST -> EXP RAM' .BYT 13,'' .BYT 13,32,32 BSC .BYT 18,'BASIC',146,32,32 BIN .BYT 146,'BINARY',13,0 ; HKEY JSR $FFE4 CMP #$1B ;ESCAPE? BNE C1 JMP MAIN C1 CMP #$1D ;CRSR RIGHT? BEQ C2 CMP #$9D ;CRSR LEFT? BNE R1 C2 LDA #$80 EOR BSC ;RVS ON <> RVS OFF STA BSC LDA #$80 EOR BIN STA BIN JMP HST1 ;PRINT NEW MENU R1 CMP #$0D ; KEY? BNE HKEY ; JSR XFLAD JSR XFLNM JMP MAIN XFLNM JSR $FA17 .BYT 13,' FILENAME:',13,0 FLNM JSR $FFCF INY CMP #$0D ; KEY? BEQ PAD ;W/ #$A0 STA ($FE),Y JMP FLNM PAD LDA #$A0 PD1 CPY #$11 ;16 CHAR IN NAME? BEQ BSRAM ;YES, CONT. STA ($FE),Y INY JMP PD1 BSRAM LDA BSC CMP #$12 ;RVS=BASIC PRG BNE BNINP LDA $2D ;START OF BASIC STA ($FE),Y INY LDA $2E STA ($FE),Y JSR XRBEG ;EX RAM ADDR INY SEC LDA $1210 ;END OF BASIC TEXT SBC $2D ;CALC # OF BYTES STA ($FE),Y INY LDA $1211 SBC $2E STA ($FE),Y GODMA INY ;C128 BANK LDA #$00 STA ($FE),Y JMP DPREP BNINP JSR $FA17 .BYT 13,13,'BANK (0/1): ',0 JSR $FFCF STA FN+2 STADR JSR $FA17 .BYT 19,17,17,17,17,17,17,17,17 .BYT 17,'START ADDR: $',0 JSR HXINP BCS STADR STA $0AB4 ;TEMP STORAGE JSR CNVHX BCS STADR STA $0AB5 ;TEMP STORAGE STA ($FE),Y INY LDA $0AB4 STA ($FE),Y JSR XRBEG ENDAD JSR $FA17 .BYT 19,17,17,17,17,17,17,17,17 .BYT 17,17,' END ADDR: $',0 JSR HXINP BCS ENDAD STA $0AB6 JSR CNVHX BCS ENDAD INY SEC SBC $0AB5 ;CALC FILE SIZE STA ($FE),Y INY LDA $0AB6 SBC $0AB4 STA ($FE),Y INY LDA FN+2 ;BANK # SEC SBC #$30 STA ($FE),Y ; DPREP INC TOTFL CLC LDA FN ADC #$19 ;+25 FOR NEXT FLNAME STA FN BCC DP1 INC FN+1 DP1 LDY #$16 CLC LDA ($FE),Y ;UPDDATE RAM ADDR ADC RAMAD STA RAMAD INY LDA ($FE),Y ADC RAMAD+1 STA RAMAD+1 BCC DP2 INC RAMAD+2 DP2 JMP DMA ; HXINP LDX #$00 INLP JSR $FFCF ;INPUT HEX CHARS STA $0200,X INX CMP #$0D BNE INLP LDX #$FF CNVHX JSR HXCV ;CONVERT HEX CHARS BCS HXRTN ;TO LO HI BYTE ASL A ASL A ASL A ASL A STA $FA,X JSR HXCV BCS HXRTN DEX CLC ADC $FA,X INX HXRTN RTS ; HXCV INX LDA $0200,X SEC SBC #$30 ;ASCII TO INT BCC SCRT CMP #$0A BCC ASCRT SBC #$07 CMP #$10 BCC ASCRT SCRT SEC ;NOT $0-$F RTS ASCRT RTS ; XFLAD LDA #$80 ;STASH CMD STA DCMD+1 LDA FN STA $FE LDA FN+1 STA $FF LDA #$00 TAY STA ($FE),Y RTS ; XRBEG INY LDA RAMAD STA ($FE),Y INY LDA RAMAD+1 STA ($FE),Y INY LDA RAMAD+2 STA ($FE),Y RTS ; ; FN .BYT 0,189,0 ;CAT IND ADDR, BANK ; RAMAD .BYT 0,0,0 ;NEXT AVAIL ADDR ; ; ; ; ---- EXP DIRECTORY ---- ; -- FETCH -- ; ; DIR LDA #$99 ;LT. GREEN STA CHR LDX #$0C ;BORDER TABLE JSR WSET JSR $FA17 .BYT 19,146,'EXP RAM DIRECTORY' .BYT 13,'',0 LDA TOTFL CMP #$01 BNE EXMUS JSR $FA17 .BYT 13,13,' EXP RAM EMPTY' .BYT 13,13,' PRESS ANY KEY',0 EXWT JSR $FFE4 BEQ EXWT JMP MAIN EXMUS LDA #$01 STA SELECT STA TOP LDA #$0B STA TOP+1 EXMNU JSR $FA17 .BYT 19,17,17,17,0 LDA #$01 STA $FE ;SET IND ADDR LDA #$BD STA $FF LDX #$01 EXMU1 CPX TOP BEQ EXM1 JSR ADD INX JMP EXMU1 ; EXM1 CPX SELECT BNE EXM2 LDA #$80 ;RVS ON STA $F3 EXM2 LDY #$00 EXM3 LDA ($FE),Y JSR $FFD2 INY CPY #$10 ;ALL 16 CHARS? BNE EXM3 JSR ADD EXM4 INX LDA #$0D JSR $FFD2 CPX TOTFL ;LAST FILE? BEQ EXKEY CPX TOP+1 BNE EXM1 ; EXKEY JSR $FFE4 CMP #$1B ;ESCAPE KEY? BNE EXCUP JMP MAIN EXCUP CMP #$91 ;CRSR UP? BNE EXM5 DEC SELECT BNE EXUP1 INC SELECT EXUP1 LDA SELECT CMP TOP BCS EXUP2 DEC TOP DEC TOP+1 EXUP2 JMP EXMNU EXM5 CMP #$11 ;CRSR DOWN? BNE EXM7 INC SELECT LDA SELECT CMP TOTFL BCC EXM8 DEC SELECT EXM8 LDA SELECT CMP TOP+1 BCC EXM9 INC TOP INC TOP+1 EXM9 JMP EXMNU EXM7 CMP #$0D ;RETURN KEY? BNE EXKEY ; LDA #$00 ;SET ADDR FOR DMA STA $FE LDA #$BD STA $FF LDX SELECT ;SET UP FETCH SELEC1 DEX BEQ DMAJ JSR ADD JMP SELEC1 DMAJ LDA #$81 STA DCMD+1 JSR DMA ;TO DMA JMP MAIN ; ; ADD CLC LDA #$19 ;ADD 25 TO BASE ADC $FE STA $FE BCC ADD1 INC $FF ADD1 RTS ; ; ; SELECT .BYT 0 TOTFL .BYT 1 ;TOTAL # FILES, TOP .BYT 0,0 ; # AT TOP OF DISP ; ;AND BOTTOM ; ; ; ; ---- DMA SETUP AND RUN ---- ; DMA LDY #$11 LDX #$02 DM1 LDA ($FE),Y STA $DF00,X INY INX CPX #$09 BNE DM1 ; LDA ($FE),Y TAX DCMD LDY #$80 ;DMA COMMAND JSR $FF50 RTS ;RETURN TO ORIGIN ; ;MENU ; ; ; ---- DISK TO RAM ---- ; ; ; DISK LDA #$1E ;GREEN STA CHR LDX #$0C JSR WSET JSR $FA17 .BYT 146,19,' DISK DIRECTORY',13 .BYT '',13 .BYT ' PROGRAM XFR',0 LDA #$03 CLC ADC $E5 ;LOWER TOP WINDOW STA $E5 JSR $CA32 ;CLEAR OVERFLOW BIT JSR $C150 ;CRSR HOME LDA #$00 STA $FE LDA #$B8 STA $FF LDA #$02 ;INITIALIZE DISK LDX #IND JSR $FFBD ;SET NAME LDX #$00 JSR $FF68 ;SET BANK LDA #$0F LDX #$08 LDY #$0F JSR $FFBA ;SET LFS JSR $FFC0 ;OPEN LDX #$0F JSR $FFC6 JSR $FFCF CHECK FOR ERROR STA DERR LDA #$0F JSR $FFC3 ;CLOSE JSR $FFCC ;CLRCHN LDA DERR CMP #$31 BCC DER1 JMP MAIN DER1 LDA $9D STA KMSG LDA #$00 ;KERNAL MSG OFF STA $9D LDA #$01 LDX #$08 LDY #$00 JSR $FFBA ;SET LFS LDA #$06 LDX #DDIR JSR $FFBD ;SET NAME JSR $FFC0 ;OPEN LDX #$01 JSR $FFC6 ;OPEN CHN LDX #$32 HD1 JSR $FFCF ;DUMP HEADER DEX BNE HD1 DFILE LDY #$00 ;GET FILE NAMES TYA ;XFER FLAG STA ($FE),Y INY INY LDX #$04 DFL1 JSR $FFCF DEX BNE DFL1 DFL2 JSR $FFCF CMP #$0D BEQ CLOSE CMP #$22 ;QUOTES? BNE DFL2 DFL3 JSR $FFCF CMP #$22 BEQ DFL4 STA ($FE),Y INY JMP DFL3 DFL4 STY FLEN LDA #$A0 ;PAD NAME W/SPACES DFL5 CPY #$12 ;16 CHARS YET? BEQ DFL6 STA ($FE),Y INY JMP DFL5 DFL6 LDY #$01 LDX FLEN DEX DEX TXA STA ($FE),Y DFL8 JSR $FFCF BNE DFL8 ;DUMP REMAINING JSR FLADD JMP DFILE CLOSE LDA #$FF STA ($FE),Y LDA #$01 JSR $FFC3 JSR $FFCC LDA #$99 ;LT.GREEN JSR $FFD2 JSR $CAE2 ;SCROLLING ON LDA #$00 ;RESET ADDR STA $FE LDA #$B8 STA $FF GFLN LDY #$01 GLP INY LDA ($FE),Y ;PRINT FILE NAME CMP #$FF BEQ XFRFL JSR $FFD2 CMP #02 BCS GLP JSR $FA17 .BYT 166,157,0 DKY JSR $FFE4 LDY #$00 CMP #$1B ;ESCAPE KEY BNE DKY1 JMP MAIN DKY1 CMP #$59 ;Y YES BNE DKY2 JSR $FFD2 LDA #$01 STA ($FE),Y JMP DKY3 DKY2 CMP #$4E ;N NO BNE DKY4 JSR $FFD2 DKY3 JSR FLADD LDA #$0D JSR $FFD2 JMP GFLN DKY4 CMP #$0D BNE DKY ; XFRFL JSR XFLAD ;SET ADDR LDA #$00 ;IND ADDR OF DISK STA $FC ;FILES LDA #$B8 STA $FD DDF1 LDY #$00 DDF2 LDA ($FC),Y ;FIND FLAGGED FILES BNE DDF4 JSR DDADD JMP DDF2 DDF4 INY LDA ($FC),Y STA $B7 ;FILE NAME LEN LDA $FD STA $BC ;HI BYTE FILE NAME CLC LDA #$02 ADC $FC STA $BB ;LO BYTE BCC DDF5 INC $BC ;HI BYTE DDF5 INY LDA ($FC),Y DEY STA ($FE),Y ;ADD NAME TO EXP CMP #$FF ;LAST FILE? BNE DDF6 JMP MAIN ;EXIT DDF6 INY CPY #$12 BNE DDF5 LDA #$00 LDX #$00 ;SET BANK JSR $FF68 LDA #$01 LDX #$08 LDY #$00 JSR $FFBA ;SET LFS JSR $FFC0 ;OPEN LDX #$01 JSR $FFC6 LDY #$11 JSR $FFCF ;GET BEGINNING ADDR STA FLEN+1 LDA #$01 STA ($FE),Y INY JSR $FFCF STA FLEN+2 LDA #$1C STA ($FE),Y LDA #$01 JSR $FFC3 ;CLOSE JSR $FFCC LDA #$00 LDX #$08 LDY #$00 JSR $FFBA ;SETLFS LDA #$00 LDX #$01 LDY #$1C JSR $FFD5 ;LOAD FILE STX ENDL STY ENDH LDY #$12 JSR XRBEG ;STORE IN EXP RAM INY LDA ENDL STA ($FE),Y ;FILE SIZE INY SEC LDA ENDH SBC #$1C STA ($FE),Y JSR GODMA LDY #$11 ;RESTORE LOAD ADDR LDA FLEN+1 STA ($FE),Y INY LDA FLEN+2 STA ($FE),Y JSR XFLAD JSR DDADD JMP DDF1 ; ; ; FLADD CLC ;+18 FOR NEXT FILE LDA #$12 ADC $FE STA $FE BCC FLRTN INC $FF FLRTN RTS ; DDADD CLC LDA #$12 ADC $FC STA $FC BCC DDRTN INC $FD DDRTN RTS ; ; ; IND .BYT 'I0' DDIR .BYT '$0:*=P' FLEN .BYT 0,0,0 DERR .BYT 0 KMSG .BYT 0 ENDL .BYT 0 ENDH .BYT 0 ; ; ; ; ; ;dX35223580:A:X,A:`x 169,0,133,47,133,49,133,51,169,12,133,48,133,50,133,52,169,10 160,3,162,0,157,0,189,202,208,250,136,240,6,238,218,13,76,214 13,96,173,0,255,141,254,13,169,14,141,0,255,32,0,176,173,254 13,141,0,255,964,"SYS3560:"(13):3522."EXPRAM.PRG"LTʈ B 6 6 6 2 P` Fa -ǥa -LE`   $ PTOE ؅ʰ  wL t`   !   `,`T!ЍS!Щʰ uʰ  ʩa   M E N U  DISK > EXP  EXP > HOST  HOST > EXP  ʭS!LuLMɑ LM lL a   HOST -> EXP RAM BASIC BINARY L,ɝM>>MGGL γ L,  FILENAME: LL>%-ȥ. 8-ȭ.ȩLg  BANK (0/1): START ADDR: $ ؍ ȭ  END ADDR: $ ߍ 8 ȭ ȭ801imȱmL4   u`80 8`G`ȭȭȭ`a  EXP RAM DIRECTORY 1.  EXP RAM EMPTY PRESS ANY KEY L,02 3 2 $L0  $ 13 L,ɑ000223Lq00100323Lq в0 $LG 4L,e` P`a   DISK DIRECTORY PROGRAM XFRe 2 P h   1L,   2 Ȣ 5" "L"L4ʊ nL ʩȱ=   L,Y LN n Lo γ zL¶ȱeȱL, h        ȭ8 ϲȭ γ zLe`e`I0$0:*=P