|    CBM    |    Commodore Computer Conference    |    4,328 messages    |
[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]
|    Message 3,500 of 4,328    |
|    Lawrence Woodman to All    |
|    Closing a file in Assembly on the VIC-20    |
|    17 Jun 21 08:55:50    |
   
   INTL 3:770/1 3:770/3   
   REPLYADDR lorrywoodman@gmail.com   
   REPLYTO 3:770/3.0 UUCP   
   MSGID: 56cc9714   
   PID: SoupGate-Win32 v1.05   
   Hello Everyone,   
      
   I've been trying to save some memory on the VIC-20 to a file on disk but   
   seem to be having some problems when it comes to close the file. At the   
   moment the file saves the data properly from assembly but I have to use   
   'CLOSE 8' from basic to prevent it having an asterisk next to the name in   
   the directory entry.   
      
   I have created a piece of code which replicates the problem below if   
   anyone has any ideas where I'm going wrong I'd be very grateful.   
      
   Basic Stub   
   TOK_SYS = $9E ; SYS token   
      
    .byt $01, $10 ; Load address ($1001)   
      
    * = $1001   
    .word basicEnd ; Next Line link, here end of Basic program   
    .word 1 ; The line number for the SYS statement   
    .byt TOK_SYS ; SYS token   
    .asc " "   
    .asc "4110" ; Start of machine language   
    .byt 0 ; End of Basic line   
   basicEnd .word 0 ; End of Basic program   
      
   KERNEL/BASIC ROM Routines   
   CLOSE = $FFC3   
   SAVE = $FFD8   
   SETLFS = $FFBA   
   SETNAM = $FFBD   
      
      
   main   
    lda #$07 ; Length of file name   
    ldx #filename ; High byte of file name location   
    jsr SETNAM ; Set the name   
      
    lda #$08 ; Logical file number   
    ldx #$08 ; Device number   
    ldy #$01 ; Secondary address - $01 because saving   
    jsr SETLFS ; Set above parameters   
      
    lda #flash ; High byte of start of memory block to save   
    sta $C2   
      
    lda #$C1 ; Pointer to location of start address   
    ldx #<(flashend+1) ; Low byte of (end of memory block + 1)   
    ldy #>(flashend+1) ; High byte of (end of memory block + 1)   
    jsr SAVE ; Perform save   
      
    lda #$08 ; Logical file number   
    jsr CLOSE ; Close the file   
      
    rts   
      
   filename .asc "FLASH"   
      
   =================================   
   Block of memory to save   
   =================================   
   flash lda $900F ; Record initial screen border/background combo   
    ldx #$FF ; First combo is $FF   
   setcombo stx $900F ; Set screen border/background combo   
      
    ; Time delay   
    ldy #$FF   
   delay dey   
    bne delay   
      
    dex ; Next combo   
    bne setcombo   
    sta $900F ; restore initial screen border/background combo   
   flashend rts   
      
      
      
   Thanks in advance   
      
      
   Lorry   
      
   ---   
   Advanced Use of .LBR Files on CP/M   
   https://techtinkering.com/articles/advanced-use-of-lbr-files-on-cpm/   
   --- SoupGate-Win32 v1.05   
    * Origin: Agency HUB, Dunedin - New Zealand | Fido<>Usenet Gateway (3:770/3)   
   SEEN-BY: 1/123 14/0 18/200 90/1 105/81 120/340 123/131 129/305 226/30   
   SEEN-BY: 227/114 229/424 426 428 700 1016 1017 240/5832 249/1 206   
   SEEN-BY: 249/317 400 261/38 282/1038 298/25 26 301/1 317/3 322/757   
   SEEN-BY: 342/200   
   PATH: 770/3 1 153/757 221/6 301/1 229/426 317/3 298/25 14/0 229/426   
      
|
[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]
(c) 1994, bbs@darkrealms.ca