PAGE SBTL 'DISK - VGP][ (C) DIGISOLVE LTD 1984' ; PROGRAMMED BY ALAN COAKER ; DATE 4/APRIL/84 ; ORG $4000 ; BELL EQU $87 ; BELL CHARACTER ; ; ZPAGE DEFINITIONS ; PTR EQU $0 ; WORK POINTER BUFP EQU $2 ; BUFFER POINTER EBYTE EQU $4 A1L EQU $3C ; MONITOR POINTER A2L EQU $3E ; MONITOR POINTER ; JUMP2 EQU $9E ; POINTER INTO PROGRAM DATA JUMP3 EQU JUMP2+1 ; XMASK EQU $55 ; BIT MASK FOR COLOUR TEST DOTS EQU $56 ; TEMP STORE TO COUNT SAME COLOUR DOTS TXPAGE EQU $57 ; VGP][ PAGE FOR DISK ; VBASE EQU $A0 ; BASE POINTER TO VGP VBASE1 EQU $A2 ; BASE FOR VGP COLOUR BCOUNT EQU $A8 ; BUFFER POINTER BPTR EQU $AA ; SUM OF BCOUNT + JUMP2 SAVCOL EQU $FA ; COLOUR SAVE DCOUNT EQU $FB ; LENGTH SAVE ; ; OTHER ADDRESSES ; DOSWRM EQU $3D0 DOS WARMSTART ADDRESS DOSERR EQU $A702 PRINT DOS ERROR ERRRTS EQU $A6EF RETURN TO BASIC VIA DOS LOCRPL EQU $3E3 LOCATE RWTS PARMLIST SUBRTN LOCFPL EQU $3DC LOCATE FILE MGR PARMLIST SUB FM EQU $3D6 FILE MANAGER ENTRY POINT ; ; FILE MANAGER PARMLIST DEFINITION ; DSECT FMOCOD DS 1 OPERATION CODE FMOCOP EQU $01 OPEN FMOCCL EQU $02 CLOSE FMOCRD EQU $03 READ FMOCWR EQU $04 WRITE FMOCDE EQU $05 DELETE FMOCCA EQU $06 CATALOG FMOCLO EQU $07 LOCK FMOCUN EQU $08 UNLOCK FMOCRE EQU $09 RENAME FMOCPO EQU $0A POSITION FMOCIN EQU $0B INIT FMOCVE EQU $0C VERIFY FMSBCD DS 1 SUBCODE FMSBNO EQU $00 NO OPERATION FMSBON EQU $01 READ/WRITE ONE BYTE FMSBRA EQU $02 READ/WRITE RANGE OF BYTES FMSBPO EQU $03 POSITION AND DO ONE BYTE FMSBPR EQU $04 POSTION AND DO RANGE FMPRMS DS 8 SPECIFIC PARAMETERS ; ; OPEN PARMS ORG FMPRMS FMRCLN DS 2 RECORD LENGTH FMVOL DS 1 VOLUME FMDRV DS 1 DRIVE FMSLT DS 1 SLOT FMTYPE DS 1 TYPE FMTYPT EQU 0 TEXT FMTYPI EQU 1 INTEGER FMTYPA EQU 2 APPLESOFT FMTYPB EQU 4 BINARY FMNAME DS 2 ADDRESS OF FILENAME ; ; READ/WRITE PARMS ORG FMPRMS FMRCNM DS 2 RECORD NUMBER FMOFFS DS 2 BYTE OFFSET FMRALN DS 2 RANGE LENGTH FMRAAD DS 2 RANGE ADDRESS FMDATA EQU FMRAAD DATA BYTE READ/WRITTEN ; ; RENAME PARMS ORG FMPRMS FMNNAM DS 2 ADDRESS OF NEW NAME ; ; INIT PARMS ORG FMPRMS FMPAGE EQU FMSBCD FIRST PAGE OF DOS IMAGE ; ; COMMON PARMS ORG FMPRMS+8 FMRC DS 1 RETURN CODE FMRCOK EQU 0 NO ERRORS FMRCBO EQU 2 BAD SUBCODE FMRCBS EQU 3 BAD SUBCODE FMRCWP EQU 4 WRITE PROTECTED FMRCED EQU 5 END OF DATA FMRCNF EQU 6 FILE NOT FOUND FMRCBV EQU 7 BAD VOLUME FMRCIO EQU 8 I/O ERROR FMRCDF EQU 9 DISK FULL FMRCLK EQU 10 FILE LOCKED DS 1 NOT USED FMFMWA DS 2 FILE MANAGER WORKAREA POINTER FMTSL DS 2 T/S LIST PTR FMBUFF DS 2 DATA BUFFER POINTER DEND ; ; OFFSETS FOR VGP ; BASE EQU 0 ; VGP REGISTER BASE ADDRESS BASE1 EQU 0 ; REGISTERS EXTERNAL TO VGP STATUS EQU BASE ; STATUS: READ ONLY CMD EQU BASE ; CMD: WRITE ONLY XMSB EQU BASE+8 ; X MSB XLSB EQU BASE+9 ; Y LSB POSITION YMSB EQU BASE+10 ; Y MSB YLSB EQU BASE+11 ; Y LSB POSITION CTRL4 EQU BASE1 ; VGP CTRL4 REGISTER ; ; START ; START: LDA #>VSLOT ; 1ST BYTE DATA LSB STA JUMP2 LDA #