URL
https://opencores.org/ocsvn/System09/System09/trunk
Subversion Repositories System09
[/] [System09/] [trunk/] [src/] [Flex9/] [f9-fms.asm] - Rev 66
Compare with Previous | Blame | View Log
*** FILE MANAGEMENT SYSTEM*ZD400 JMP >ZD436FMSCLS JMP >ZD459FMS JMP >FMS1CPYMSG FCC / DISK OPERATING SYSTEM/FCC / COPYRIGHT (C) 1980 BY/FCC / TECHNICAL SYSTEMS CONSULTANTS/ORG CPYMSGFCBPTR RMB 2CURFCB RMB 4ZD40F RMB 2ZD411 RMB 1ZD412 RMB 1ZD413 RMB 1ZD414 RMB 1ZD415 RMB 2ZD417 RMB 1ZD418 RMB 2ZD41A RMB 1ZD41B RMB 2ZD41D RMB 24VERFLG FCB $FF****ZD436 JSR >COLDDRLDX #FCBPTRLDB #$0ABSR ZD451LDX #Z0005STX >ZD413STX >ZD415CLR >ZD41AZD44C LDX #ZD41BLDB #$1AZD451 CLR ,X+DECBBNE ZD451JMP >PRSPL5ZD459 JSR >PRSPL4ZD45C LDX >FCBPTRBEQ ZD44CLEAX -$1C,XSTX >CURFCBPSHS YJSR >CLOSEPULS YBCC ZD45CLDX >CURFCBCLR $02,XJSR >PRSPL5LDB #$FFRTS*** FMS CALL, PROCESSING*FMS1 TST >ZCCFCBEQ ZD483JSR >PRSPL4ZD483 PSHS Y,BSTX >CURFCBCLR $01,XLDB ,XBNE DOFUNC*** READ/WRITE CHAR/BYTE*LDB $02,XBEQ ZD4ACCMPB #$02BEQ ZD4A7JSR >ZD5B4ZD499 LDX >CURFCBBCS ZD4C4TST >ZCCFCBNE ZD4C6CLRBPULS Y,BRTSZD4A7 JSR >ZD6CFBRA ZD499ZD4AC LDB #$12BRA ZD4C4DOFUNC CMPB #$16BLS DOFUN1LDB #$01BRA ZD4C4DOFUN1 DECBASLBLDX #FMSTBLJSR [B,X]LDX >CURFCBBCC ZD4C6ZD4C4 STB $01,XZD4C6 JSR >PRSPL5TST $01,XPULS Y,BRTS*** FMS COMMAND VECTOR TABLE*FMSTBL FDB OPENRD FC 1FDB OPENWR FC 2FDB OPENUD FC 3FDB CLOSE FC 4FDB REWIND FC 5FDB OPNDIR FC 6FDB GETREC FC 7FDB PUTREC FC 8FDB RDSECT FC 9FDB WRSECT FC 10FDB RESV1 FC 11FDB DELETE FC 12FDB RENAME FC 13FDB RESV2 FC 14FDB NXTSEC FC 15FDB OPNREC FC 16FDB GETBYT FC 17FDB PUTBYT FC 18FDB RESV3 FC 19FDB NXTDRV FC 20FDB POSREC FC 21FDB BAKREC FC 22****ZD4FA BSR ZD51CBNE ZD503LDB #$02ORCC #$01RTSZD503 STD ,XLDX ,XCLR ,XCLR $01,XRTSZD50C BSR ZD51CBEQ ZD515LDB #$0DORCC #$01RTSZD515 LDD [,X]STD ,XANDCC #$FERTSZD51C LDD >CURFCBADDD #$001CLDX #FCBPTRZD525 LDY ,XBNE ZD52DANDCC #$FBRTSZD52D CMPD ,XBNE ZD533RTSZD533 LDX ,XBRA ZD525ZD537 LDX >CURFCBCLRACLRBBSR ZD540LDB #$2FZD540 STA $11,XLEAX $01,XDECBBNE ZD540RTSZD549 LDX >CURFCBLDB #$0BZD54E LDA $04,XSTA $24,XLEAX $01,XDECBBNE ZD54ERTSZD559 LDX >CURFCBLDB #$0BZD55E LDA $04,XPSHS ALDA $24,XCMPA ,S+BNE ZD56ELEAX $01,XDECBBNE ZD55EZD56E RTS*** GET RANDOM BYTE FROM SECTOR*GETBYT LDX >CURFCBLDB $02,XLSRBBCC ZD5F0LDB $23,XJMP >ZD600ZD57D LDX >CURFCBLDB $22,XINC $22,XABXSTA $40,XINCBBNE ZD5ACORCC #$01RTS*** PUT RANDOM BYTE IN SECTOR*PUTBYT LDX >CURFCBLDB $02,XANDB #$03CMPB #$03BNE ZD5F0ORB #$80STB $02,XLDB $0F,XBITB #$80BNE ZD5AFLDB $23,XABXSTA $40,XZD5AC ANDCC #$FERTSZD5AF LDB #$0BORCC #$01RTSZD5B4 LDA $3B,XBMI ZD5F5BEQ ZD5C2DEC $3B,XLDA #$20BRA ZD5DFZD5C2 BSR ZD5F5BCS ZD5E1CMPA #$18BHI ZD5DFBEQ ZD5C2CMPA #$09BNE ZD5DCBSR ZD5F5BCS ZD5E1LDX >CURFCBSTA $3B,XBRA ZD5B4ZD5DC TSTABEQ ZD5C2ZD5DF ANDCC #$FEZD5E1 RTS*** REWIND FILE*REWIND JSR >ZDAB1BCS ZD5F0BITA #$01BEQ ZD5F0STA ,XJMP >ZD9A0ZD5F0 LDB #$12ORCC #$01RTSZD5F5 LDX >CURFCBLDB $22,XBEQ ZD607INC $22,XZD600 ABXLDA $40,XANDCC #$FERTSZD607 BSR ZD60CBCC ZD5F5RTSZD60C LDX >CURFCBLDD $40,XINC $21,XBNE ZD61AINC $20,XZD61A CMPD #$0000BEQ ZD63CZD620 STD $1E,XPSHS ALDA #$04STA $22,XPULS ABSR RDSECTBCC ZD640BITB #$80BEQ ZD638LDB #$10BRA ZD63EZD638 LDB #$09BRA ZD63EZD63C LDB #$08ZD63E ORCC #$01ZD640 RTS*** READ SINGLE SECTOR*RDSECT BSR ZD668LDX >CURFCBJSR >DRIVEBCS ZD65DZD64B BSR ZD65EJSR >READBNE ZD655ANDCC #$FERTSZD655 PSHS BBSR ZD670PULS BBCC ZD64BZD65D RTSZD65E LDX >CURFCBLDD $1E,XLEAX $40,XRTSZD668 CLRASTA >ZD411STA >ZD412RTSZD670 BITB #$10BNE ZD685BITB #$80BNE ZD69CLDB >ZD411INCBCMPB #$07BEQ ZD685STB >ZD411BRA RESV2ZD685 CLR >ZD411LDB >ZD412INCBCMPB #$04BEQ ZD69CSTB >ZD412LDX >CURFCBJSR >RESTOR*** RESERVED*RESV2 ANDCC #$FERTSZD69C ORCC #$01RTS*** WRITE SINGLE SECTOR*WRSECT BSR ZD668LDX >CURFCBJSR >DRIVEBCS ZD6C9ZD6A9 LDX >CURFCBBSR ZD65EJSR >WRITEBNE ZD6BDLDA >VERFLGBEQ ZD6EFJSR >VERIFYBEQ ZD6EFZD6BD BITB #$40BNE ZD6CCPSHS BBSR ZD670PULS BBCC ZD6A9ZD6C9 RTSLDB #$20ZD6CC ORCC #$01RTSZD6CF LDX >CURFCBLDB $3B,XBMI ZD714CMPA #$20BNE ZD6EAINCBSTB $3B,XCMPB #$7FBNE ZD6EFBRA ZD6F2ZD6E5 BSR ZD6F2BCC ZD6CFRTSZD6EA TSTBBEQ ZD714BRA ZD6E5ZD6EF ANDCC #$FERTSZD6F2 PSHS ACMPB #$01BNE ZD6FCLDA #$20BRA ZD70CZD6FC LDA #$09BSR ZD714PULS ABCS ZD713PSHS ALDX >CURFCBLDA $3B,XZD70C CLR $3B,XBSR ZD714PULS AZD713 RTSZD714 LDX >CURFCBLDB $02,XCMPB #$02LBNE ZD5F0LDB $22,XCMPB #$04BNE ZD72EPSHS ABSR ZD74BPULS ABCS ZD73DZD72E JSR >ZD57DBCC ZD73DLDB #$04LDX >CURFCBSTB $22,XANDCC #$FEZD73D RTSZD73E LDX >CURFCBCLRACLRBSTD $20,XSTD $42,XBRA ZD772ZD74B LDB $12,XBNE ZD772LDB $17,XBEQ ZD799CLR $17,XBSR ZD799BCS ZD786BSR ZD73EBCS ZD786BSR ZD73EBCS ZD786LDX >CURFCBLDB #$02STB $17,XLDD $11,XJMP >ZDC82ZD772 BSR ZD782LDX >CURFCBSTD $40,XJSR >WRSECTBCC ZD799JMP >ZDBC1ZD782 BSR ZD787LDD ,XZD786 RTSZD787 LDX >CURFCBLDB $03,XLDA #$06MULLDX #ZD41DABXSTX >ZD41BTST ,XRTSZD799 BSR ZD782BNE ZD7A2LDB #$07ZD79F ORCC #$01RTSZD7A2 LDX >CURFCBSTD $13,XTST $12,XBNE ZD7B0STD $11,XZD7B0 INC $16,XBNE ZD7B8INC $15,XZD7B8 TST $17,XBEQ ZD7C8JSR >ZDC43BCS ZD79FLDX >CURFCBLDD $13,XZD7C8 JSR >ZD620BCS ZD79FLDX >CURFCBLDD $40,XPSHS B,ABSR ZD787PULS B,ASTD ,XBNE ZD7E7CLR $02,XCLR $03,XCLR $04,XCLR $05,XBRA ZD7EFZD7E7 LDY $04,XLEAY -$01,YSTY $04,XZD7EF CLRALDX >CURFCBINC $21,XBNE ZD7FBINC $20,XZD7FB CLRBZD7FC STA $40,XLEAX $01,XDECBBNE ZD7FCLDX >CURFCBLDD $20,XSTD $42,XANDCC #$FERTS*** OPEN SYSTEM INFO. RECORD*OPNREC CLRBPSHS BLDB #$03BRA ZD825LDX >ZD415STX >ZD413OPNDIR LDB >ZD413PSHS BLDB >ZD414ZD825 LDX >CURFCBSTB $41,XPULS BSTB $40,XCLR >ZD418CLRBSTB $22,XRTS*** GET INFO RECORD*GETREC LDX >CURFCBLDB $22,XBNE ZD85DJSR >ZD60CBCS ZD875LDX >CURFCBTST >ZD418BNE ZD852LDD <Z0044STD >ZD418ZD852 LDA #$10STA $22,XLDD $1E,XSTD $2F,XZD85D LDA $22,XSTA $31,XLDB #$18ZD865 PSHS X,BJSR >ZD5F5PULS X,BSTA $04,XLEAX $01,XDECBBNE ZD865ANDCC #$FEZD875 RTS*** PUT INFORMATION RECORD*PUTREC LDX >CURFCBLDA $31,XSTA $22,XLDB #$18ZD881 PSHS X,BLDA $04,XJSR >ZD714PULS X,BLEAX $01,XDECBBNE ZD881JMP >WRSECTZD892 LDX >CURFCBLDA $03,XSTA $23,XLDA >ZD417TST >ZD41ABNE ZD8D3STA $03,XLDX >ZD415STX >ZD413ZD8AA CMPX #Z0005BEQ ZD8BBBSR ZD8D3BLS ZD8EALDX >ZD418STX >ZD413BRA ZD8AAZD8BB LDX >CURFCBLDA $23,XSTA $03,XBPL ZD8D3ZD8C5 JSR >NXTDRVBCS ZD900BSR ZD8D3BLS ZD8EAJSR >ZDDADBRA ZD8C5ZD8D3 LDX >CURFCBCLR >ZD41AJSR >ZD549JSR >OPNDIRZD8DF JSR >GETRECBCC ZD8EBCMPB #$08BEQ ZD900ORCC #$01ZD8EA RTSZD8EB LDX >CURFCBLDA $04,XBEQ ZD8FEBPL ZD8F6BSR ZD905ZD8F6 JSR >ZD559BNE ZD8DFANDCC #$FERTSZD8FE BSR ZD905ZD900 ANDCC #$FBANDCC #$FERTSZD905 LDA $33,XBNE ZD916LDD $2F,XSTD $32,XLDA $31,XSTA $34,XZD916 RTSZD917 JSR >ZD787BNE ZD933BSR ZD936BCS ZD935LDB #$06LDY >CURFCBLDX >ZD41BZD929 LDA $5D,YLEAY $01,YSTA ,X+DECBBNE ZD929ZD933 ANDCC #$FEZD935 RTSZD936 JSR >OPNRECJSR >ZD60CBCS ZD946LDX >CURFCBLDB #$10STB $22,XZD946 RTSZD947 JSR >ZD787BSR ZD936BCS ZD946LDB #$06LDY >CURFCBLDX >ZD41BZD957 LDA ,X+STA $5D,YLEAY $01,YDECBBNE ZD957JSR >WRSECTBCC ZD946JMP >ZDBC1****RESV1 LDX >CURFCBLDA #$02STA $02,XLDD $2F,XSTD $1E,XJSR >RDSECTBCS ZD983JSR >PUTRECBCC ZD985JMP >ZDBC1ZD983 LDB #$0AZD985 RTS*** OPEN FOR READ*OPENRD JSR >ZD4FABCS ZD9C8JSR >ZD892BCS ZD9C8BNE ZD9CDLDX >CURFCBTST >ZD41ABEQ ZD9A0LDA $0F,XBITA #$20BNE ZD9C9ZD9A0 JSR >ZDCC0BCS ZD9CFLDD $11,XSTD $40,XJSR >ZDA76LDB $17,XBEQ ZD9C6ZD9B3 PSHS BJSR >ZD60CPULS BBCS ZD9C8DECBBNE ZD9B3LDX >CURFCBCLRBSTB $22,XZD9C6 ANDCC #$FEZD9C8 RTSZD9C9 LDB #$11BRA ZD9CFZD9CD LDB #$04ZD9CF PSHS BJSR >ZD50CPULS BORCC #$01RTSOPENWR LDX >CURFCBTST $03,XBPL ZD9E8JSR >NXTDRVBCC ZD9E8LDB #$10RTSZD9E8 JSR >ZD4FABCS ZD9CFJSR >ZD537JSR >ZD917BCS ZD9CFJSR >ZD892BCS ZD9CFBNE ZDA00LDB #$03BRA ZD9CFZDA00 JSR >ZDCC0BCS ZD9CFLDX >CURFCBLDB #$0AZDA0A CLR $0F,XLEAX $01,XDECBBNE ZDA0ALDX >CURFCBLDD $32,XBEQ ZDA40STD $2F,XLDA $34,XSTA $31,XLDD >DATERGSTD $19,XLDA >YEARSTA $1B,XJSR >ZDDADJSR >RESV1BCS ZD9CFBSR ZDA76LDA #$04STA $22,XANDCC #$FERTSZDA40 LDX >CURFCBCLR $17,XINC $12,XLDD $2F,XJSR >ZD620BCS ZDA5EJSR >ZD772BCS ZDA5EJSR >WRSECTBCC ZDA61JSR >ZDBC1ZDA5E JMP >ZD9CFZDA61 LDX >CURFCBLDD $1E,XSTD $32,XLDA #$10STA $34,XJSR >ZD947BCS ZDA5EBRA ZDA00ZDA76 LDX >CURFCBLDA ,XSTA $02,XCLR ,XCLR $3B,XCLRASTA $22,XRTS*** READ/WRITE NEXT SECTOR*NXTSEC BSR ZDAB1BCS ZDA99CLR ,XLSRALBCS ZD60CLDB #$04STB $22,XANDCC #$FEZDA99 RTSZDA9A LDX >CURFCBLDA $02,XCMPA #$83BNE ZDAAELDA #$03STA $02,XZDAA7 JSR >WRSECTLBCS ZDBC1ZDAAE ANDCC #$FERTSZDAB1 BSR ZDA9ABCS ZDAC2LDX >CURFCBLDA $02,XCMPA #$03BLS ZDAAELDB #$12ORCC #$01ZDAC2 RTSCLOSE BSR ZDAB1BCS ZDAF8CMPA #$02BEQ ZDAD3ZDACB LDX >CURFCBCLR $02,XJMP >ZD50CZDAD3 LDA $12,XBNE ZDADDJSR >ZDBA7BRA ZDAF6ZDADD BSR ZDAA7BCS ZDAF8LDX >CURFCBTST $17,XBEQ ZDAEEJSR >ZDC98BCS ZDAF8ZDAEE JSR >RESV1BCS ZDAF8JSR >ZD947ZDAF6 BCC ZDACBZDAF8 RTS*** OPEN FOR UPDATE*OPENUD JSR >OPENRDBCS ZDB26JSR >ZD60CBCS ZDB26LDA #$03BRA ZDB1F****RESV3 JSR >OPENRDBCS ZDB26LDX >CURFCBLDA $0F,XBITA #$80BNE ZDB27LDD $13,XJSR >ZD620BCS ZDB26LDA #$02ZDB1F LDX >CURFCBSTA $02,XANDCC #$FEZDB26 RTSZDB27 LDB #$0BORCC #$01RTS*** RENAME FILE*RENAME BSR ZDB63JSR >ZD892BCS ZDB5DBEQ ZDB59LDX >CURFCBLDB #$0BZDB3A LDA $24,XSTA $04,XLEAX $01,XDECBBNE ZDB3ABSR ZDB93BCS ZDB5DLDX >CURFCBLDA $0F,XBITA #$80BNE ZDB27BITA #$60BNE ZDB5EBSR ZDB63BRA ZDBAEZDB59 LDB #$03ORCC #$01ZDB5D RTSZDB5E LDB #$0CORCC #$01RTSZDB63 LDX >CURFCBLDA #$0BSTA >ZD411ZDB6B LDA $04,XLDB $35,XSTA $35,XSTB $04,XLEAX $01,XDEC >ZD411BNE ZDB6BLDX >CURFCBLDA $0C,XBNE ZDB8FLDB #$03ZDB85 LDA $3D,XSTA $0C,XLEAX $01,XDECBBNE ZDB85ZDB8F LDX >CURFCBRTSZDB93 BSR ZDB63ZDB95 JSR >ZD892BCS ZDBA1BNE ZDBA2LDX >CURFCBANDCC #$FEZDBA1 RTSZDBA2 LDB #$04ORCC #$01RTSZDBA7 LDX >CURFCBLDA #$FFSTA $04,XZDBAE JSR >RESV1LDX >CURFCBLDA #$00STA $02,XRTSZDBB9 STD $40,XJSR >WRSECTBCC ZDBD5ZDBC1 BITB #$40BNE ZDBCDBITB #$80BEQ ZDBD3LDB #$10BRA ZDBD3ZDBCD LDB #$0BBRA ZDBD3LDB #$0AZDBD3 ORCC #$01ZDBD5 RTS*** DELETE FILE*DELETE JSR >ZD917BCS ZDC39BSR ZDB95BCS ZDC39LDX >CURFCBLDA $0F,XBITA #$80BNE ZDC3ABITA #$60BNE ZDC3EJSR >ZD787LDX >ZD41BLDD $02,XBNE ZDC05LDX >CURFCBLDD $11,XBEQ ZDC31LDX >ZD41BSTD ,XBRA ZDC19ZDC05 LDX >CURFCBJSR >ZD620BCS ZDC39LDX >CURFCBLDD $11,XBEQ ZDC31BSR ZDBB9BCS ZDC39ZDC19 LDX >CURFCBLDD $13,XLDX >ZD41BSTD $02,XLDX >CURFCBLDD $15,XLDX >ZD41BADDD $04,XSTD $04,XZDC31 JSR >ZDBA7BCS ZDC39JSR >ZD947ZDC39 RTSZDC3A LDB #$0BBRA ZDC40ZDC3E LDB #$0CZDC40 ORCC #$01RTSZDC43 LDD $1E,XINCBCMPB $3C,XBLS ZDC4FLDB #$01INCAZDC4F CMPD $13,XBNE ZDC63LDA $37,XCMPA #$FFBEQ ZDC63INCASTA $37,XANDCC #$FERTSZDC63 BSR ZDC98BCS ZDC97LDX >CURFCBLDA $3A,XADDA #$03BNE ZDC87LDD $1E,XCMPD $11,XBEQ ZDC7FLDB #$17ORCC #$01RTSZDC7F LDD $40,XZDC82 STD $38,XLDA #$04ZDC87 STA $3A,XLDD $13,XSTD $35,XLDA #$01STA $37,XANDCC #$FEZDC97 RTSZDC98 LDD $38,XJSR >ZD620BCS ZDC97LDX >CURFCBTFR X,YLDB $3A,XABXLDB #$03ZDCAB LDA $35,YLEAY $01,YSTA $40,XLEAX $01,XDECBBNE ZDCABJSR >WRSECTBCC ZDC97JMP >ZDBC1ZDCC0 JSR >OPNRECJSR >ZD60CBCS ZDD0ELDX >CURFCBCLRACLRBSTD $20,XLDA $67,XSTA $3C,XCLRBZDCD7 CLR $40,XLEAX $01,XDECBBNE ZDCD7LDX >CURFCBANDCC #$FERTS*** BACKUP ONE RECORD*BAKREC LDX >CURFCBLDA $17,XBEQ ZDD0ALDD $20,XSUBD #$0001BPL ZDCF8JMP >ZDD9A*** POSITION TO RECORD N*ZDCF8 STD $20,XPOSREC JSR >ZDAB1BCS ZDD0ERORABCC ZDD0ACLR ,XLDA $17,XBNE ZDD0FZDD0A LDB #$12ORCC #$01ZDD0E RTSZDD0F CLR >ZD411LDD $11,XLDY $20,XBEQ ZDD85JSR >ZDD9FBCS ZDD0ECLRACLRBZDD22 TST $02,XBEQ ZDD9AADDB $02,XADCA #$00STX >ZD40FLDX >CURFCBCMPD $20,XBCC ZDD62LDX >ZD40FLEAX $03,XPSHS ALDA >ZD411INCASTA >ZD411CMPA #$54BEQ ZDD50CMPA #$A8PULS ABEQ ZDD9ABRA ZDD22ZDD50 PSHS BLDX >CURFCBLDD $40,XBSR ZDD9FBCS ZDD9APULS BPULS ABRA ZDD22ZDD62 SUBD $20,XLDX >ZD40FLDA $02,XPSHS BSUBA ,S+DECATFR A,BLDA ,XADDB $01,XLDX >CURFCBBCS ZDD7FZDD7A CMPB $3C,XBLS ZDD85ZDD7F SUBB $3C,XINCABRA ZDD7AZDD85 JSR >ZD620BCS ZDD9ELDX >CURFCBLDD $42,XCMPD $20,XBEQ ZDDAALDB #$19BRA ZDD9CZDD9A LDB #$18ZDD9C ORCC #$01ZDD9E RTSZDD9F JSR >ZD620BCS ZDDACLDX >CURFCBLDB #$44ABXZDDAA ANDCC #$FEZDDAC RTSZDDAD LDX >CURFCBLDB #$0BZDDB2 LDA $24,XSTA $04,XLEAX $01,XDECBBNE ZDDB2RTS*** FIND NEXT DRIVE*NXTDRV LDX >CURFCBLDA $03,XINCACMPA #$04BCC ZDDD6STA $03,XBNE ZDDD0JSR >DRVRDYBRA ZDDD3ZDDD0 JSR >QUICKZDDD3 BCS NXTDRVRTSZDDD6 LDB #$10ORCC #$01RTSEND
