diff --git a/pidrive/makefile b/pidrive/makefile index 0ddf6d8..85616a3 100755 --- a/pidrive/makefile +++ b/pidrive/makefile @@ -1,6 +1,6 @@ .SUFFIXES = AFLAGS = -o $@ -ROM = ROM\#062000 +ROM = ROM.BIN VDRV = PIDRIVE\#062000 VCLK = PICLOCK\#062000 # diff --git a/pidrive/rom.cfg b/pidrive/rom.cfg index 76191eb..461de18 100755 --- a/pidrive/rom.cfg +++ b/pidrive/rom.cfg @@ -1,5 +1,5 @@ MEMORY { - ROM: start = $c700, size = $100, file = %O; + ROM: start = $c000, size = $8000, file = %O; } SEGMENTS { CODE: load = ROM, type = ro; diff --git a/pidrive/rom.s b/pidrive/rom.s old mode 100755 new mode 100644 index c247982..44605c7 --- a/pidrive/rom.s +++ b/pidrive/rom.s @@ -1,219 +1,38 @@ -.DEFINE EQU = +.DEFINE EQU = .DEFINE DB .BYTE .DEFINE DW .WORD .DEFINE PAGE .ALIGN 256 .DEFINE ORG .ORG .CODE -ROMSLOT EQU $07 -PISLOT EQU $02 ; ROMSLOT -BOOTDEV EQU ROMSLOT*16 - ORG $C000+ROMSLOT*256 -;* -;* ACIA REGISTERS -;* -ACIADR EQU $C088+PISLOT*16 -ACIASR EQU $C089+PISLOT*16 -ACIACR EQU $C08A+PISLOT*16 -ACIAMR EQU $C08B+PISLOT*16 -;* -;* APPLE I/O LOCATIONS -;* -INDCTR EQU $0400 -KEYBD EQU $C000 -STROBE EQU $C010 -;* -;* DRIVER SCRATCHPAD -;* -PAD0 EQU $0478+ROMSLOT -PAD1 EQU $04F8+ROMSLOT -PAD2 EQU $0578+ROMSLOT -PAD3 EQU $05F8+ROMSLOT -PAD4 EQU $0678+ROMSLOT -PAD5 EQU $06F8+ROMSLOT -PAD6 EQU $0778+ROMSLOT -PAD7 EQU $07F8+ROMSLOT -;* -;* UTIL ROUTINES -;* -WAIT EQU $FCA8 -COUT EQU $FDED -CROUT EQU $FD8E -PRBYTE EQU $FDDA -PRHEX EQU $FDE3 -PRNTAX EQU $F941 -RDKEY EQU $FD0C -RDCHAR EQU $FD35 -GETLN EQU $FD6A -;* -;* ZERO PAGE PARAMETERS -;* -PDCMD EQU $42 -PDUNIT EQU $43 -PDBUFF EQU $44 -PDBUFL EQU $44 -PDBUFH EQU $45 -PDBLKL EQU $46 -PDBLKH EQU $47 -;* -;* PRODOS COMMANDS -;* -PDSTAT EQU 0 -PDREAD EQU 1 -PDWRITE EQU 2 -PDFORMT EQU 3 -;* -;* PRODOS ERRORS -;* -PDNOERR EQU $00 -PDIOERR EQU $27 -PDNODEV EQU $28 -PDWRPRT EQU $2B -;* -;* AUTOSTART BOOT SIGNATURE -;* - LDX #$20 - LDY #$00 - LDX #$03 - STX $3C -;* -;* INIT ACIA -;* - STY PAD1 ; CLEAR SYNCED FLAG - STY ACIASR ; RESET STATUS REGISTER - LDA #$0B - STA ACIACR ; SET CONTROL REGISTER - LDA #$10 - STA ACIAMR ; SET COMMAND REGISTER (115K BAUD) -;* -;* CREATE COMMAND BUFFER FOR BOOT BLOCK -;* - STY PDUNIT - STY PDBUFL - STY PDBLKL - STY PDBLKH - INY ; LDY #PDREAD - STY PDCMD - LDY #$08 - STY PDBUFH - JSR DOCMD - BCC BOOT - LDA $00 - BEQ CONT - RTS -CONT: JMP $FABA ; JUMP BACK TO AUTOSTART BOOT SCANNER ROM -BOOT: LDX #BOOTDEV - STX PDUNIT - JMP $801 -;* -;* PRODOS INTELLIGENT DEVICE ENTRYPOINT -;* -DOCMD: PHP - SEI - LDA PAD1 - CMP #$81 - BEQ SNDCMD -;* -;* SYNC WITH HOST -;* -SYNC: LDA #$80 - STA ACIADR - LDA INDCTR - PHA - INX - TXA - AND #$07 - TAX - LDA SPIN,X - STA INDCTR - LDA #$FF - JSR WAIT - PLA - STA INDCTR - LDA KEYBD - BPL CHKRSP - STA STROBE - BMI IOERR -SPIN: DB $A1, $AF, $AD, $DC, $A1, $AF, $AD, $DC -CHKRSP: LDA ACIASR - AND #$08 - BEQ SYNC - LDA ACIADR - CMP #$81 - BNE SYNC - STA PAD1 -SNDCMD: LDA PDUNIT - ASL - LDA PDCMD - ROL - ASL - ORA #$A0 - STA PAD0 - JSR SENDACC - LDA PDBLKL - JSR SENDACC - LDA PDBLKH - JSR SENDACC -CHKACK: JSR RECVACC - TAX - DEX - CPX PAD0 - BNE CHKACK - LDY PDCMD - BEQ STATUS - LDX #$02 ; # OF PAGES TO XFER - DEY ; CPY #PDREAD - BEQ RDBLK - DEY ; CMP #PDWRITE - BEQ WRBLK -IOERR: LDA #PDIOERR -CMDERR: PLP - SEC - RTS -RDBLK: JSR RECVACC - STA (PDBUFF),Y - INY - BNE RDBLK - INC PDBUFH - DEX - BNE RDBLK -STATUS: LDX #$FF - DEY ; LDY #$FF -CMDEX: JSR RECVACC - BNE CMDERR - PLP - CLC - RTS -WRBLK: LDA (PDBUFF),Y - JSR SENDACC - INY - BNE WRBLK - INC PDBUFH - DEX - BNE WRBLK - BEQ CMDEX -;* -;* ACIA I/O ROUTINES -;* -SENDACC: - PHA -SENDWT: LDA ACIASR - AND #$10 - BEQ SENDWT - PLA - STA ACIADR - RTS -RECVACC: -RECVWT: LDA ACIASR - AND #$08 - BEQ RECVWT - LDA ACIADR - RTS -ENDCMD: - .REPEAT $C000+ROMSLOT*256+250-* - DB $FF - .ENDREP - DB "Pi" - DW 0 - DB $97 - DB