mirror of
https://github.com/JohnSnape/6502code.git
synced 2024-12-22 00:29:17 +00:00
156 lines
8.6 KiB
Plaintext
156 lines
8.6 KiB
Plaintext
0800- 4 .OR $800
|
|
0800- 5 ***********************************************************
|
|
0800- 6 * *
|
|
0800- 7 * DUMP:THIS PROGRAM WILL ALLOW ITS USER TO DUMP AN ENTIRE *
|
|
0800- 8 * TRACK IN ITS RAW FORM INTO MEMORY FOR EXAMINATION. *
|
|
0800- 9 * *
|
|
0800- 10 * INPUT: $02 = TRACK TO BE READ *
|
|
0800- 11 * *
|
|
0800- 12 * OUTPUT:$1000 = ADDRESS OF TRACK IMAGE *
|
|
0800- 13 * *
|
|
0800- 14 * ENTRY POINT: $800 *
|
|
0800- 15 * *
|
|
0800- 16 * PROGRAMMER: DON D WORTH 2/19/81 *
|
|
0800- 17 * *
|
|
0800- 18 ***********************************************************
|
|
0800- 19
|
|
0800- 20 * ZPAGE DEFINITIONS
|
|
0800- 21
|
|
0000- 22 PTR .EQ $0 WORK POINTER
|
|
0002- 23 TRACK .EQ $2 TRACK TO BE READ/WRITTEN
|
|
003C- 24 A1L .EQ $3C MONITOR POINTER
|
|
003E- 25 A2L .EQ $3E MONITOR POINTER
|
|
0048- 26 PREG .EQ $48 MONITOR STATUS REGISTER
|
|
0800- 27
|
|
0800- 28 * OTHER ADDRESSES
|
|
0800- 29
|
|
1000- 30 BUFFER .EQ $1000 TRACK IMAGE AREA
|
|
03E3- 31 LOCRPL .EQ $3E3 LOCATE RWTS PARMLIST SUBRTN
|
|
03D9- 32 RWTS .EQ $3D9 RWTS SUBROUTINE
|
|
FDED- 33 COUT .EQ $FDED PRINT ONE CHAR SUBROUTINE
|
|
FDB3- 34 XAM .EQ $FDB3 MONITOR HEX DUMP SUBRTN
|
|
0800- 35
|
|
0800- 36 * DISK I/O SELECTS
|
|
0800- 37
|
|
C080- 38 DRVSM0 .EQ $C080 STEP MOTOR POSITIONS
|
|
C081- 39 DRVSM1 .EQ $C081
|
|
C082- 40 DRVSM2 .EQ $C082
|
|
C083- 41 DRVSM3 .EQ $C083
|
|
C084- 42 DRVSM4 .EQ $C084
|
|
C085- 43 DRVSM5 .EQ $C085
|
|
C086- 44 DRVSM6 .EQ $C086
|
|
C087- 45 DRVSM7 .EQ $C087
|
|
C088- 46 DRVOFF .EQ $C088 TURN DRIVE OFF AFTER 6 REVS
|
|
C089- 47 DRVON .EQ $C089 TURN DRIVE ON
|
|
C08A- 48 DRVSL1 .EQ $C08A SELECT DRIVE 1
|
|
C08B- 49 DRVSL2 .EQ $C08B SELECT DRIVE 2
|
|
C08C- 50 DRVRD .EQ $C08C READ DATA LATCH
|
|
C08D- 51 DRVWR .EQ $C08D WRITE DATA LATCH
|
|
C08E- 52 DRVRDM .EQ $C08E SET READ MODE
|
|
C08F- 53 DRVWRM .EQ $C08F SET WRITE MODE
|
|
0800- 54
|
|
0800- 55 * RWTS PARMLIST DEFINITION
|
|
0800- 56
|
|
0800-00 57 RPLIOB .DA #0 IOB TYPE ($01)
|
|
0801-00 58 RPLSLT .DA #0 SLOT*16
|
|
0802-00 59 RPLDRV .DA #0 DRIVE
|
|
0803-00 60 RPLVOL .DA #0 VOLUME
|
|
0804-00 61 RPLTRK .DA #0 TRACK
|
|
0805-00 62 RPLSEC .DA #0 SECTOR
|
|
0806-00 63 RPLDCT .DA #0000 ADDRESS OF DCT
|
|
0807-00 64 RPLBUF .DA #0000 ADDRESS OF BUFFER
|
|
0808-00 65 RPLSIZ .DA #0000 SECTOR SIZE
|
|
0809-00 66 RPLCMD .DA #0 COMMAND CODE
|
|
0000- 67 RPLCNL .EQ $00 NULL COMMAND
|
|
0001- 68 RPLCRD .EQ $01 READ COMMAND
|
|
0002- 69 RPLCWR .EQ $02 WRITE COMMAND
|
|
0004- 70 RPLCFM .EQ $04 FORMAT COMMAND
|
|
080A-00 71 RPLRCD .DA #0 RETURN CODE
|
|
0010- 72 RPLRWP .EQ $10 WRITE PROTECTED
|
|
0020- 73 RPLRVM .EQ $20 VOLUME MISMATCH
|
|
0040- 74 RPLRDE .EQ $40 DRIVE ERROR
|
|
0080- 75 RPLRRE .EQ $80 READ ERROR
|
|
080B-00 76 RPLTVL .DA #0 TRUE VOLUME
|
|
080C-00 77 RPLPSL .DA #0 PREVIOUS SLOT
|
|
080D-00 78 RPLPDR .DA #0 PREVIOUS DRIVE
|
|
080E- 79
|
|
080E- 80 * USE RWTS TO POSITION THE ARM TO THE DESIRED TRACK
|
|
080E- 81
|
|
080E-20 E3 03 82 ( 6) DUMP JSR LOCRPL LOCATE RWTS PARMLIST
|
|
0811-84 00 83 ( 3) STY PTR AND SAVE POINTER
|
|
0813-85 01 84 ( 2) STA PTR+1
|
|
0815- 85
|
|
0815-A5 02 86 ( 3) LDA TRACK GET TRACK TO READ/WRITE
|
|
0817-A0 04 87 ( 2) LDY #RPLTRK STORE IN RWTS LIST
|
|
0819-91 00 88 ( 6) STA (PTR),Y
|
|
081B- 89
|
|
081B-A9 00 90 ( 2) LDA #RPLCNL NULL OPERATION
|
|
081D-A0 09 91 ( 2) LDY #RPLCMD AND STORE IN LIST
|
|
081F-91 00 92 ( 6) STA (PTR),Y
|
|
0821- 93
|
|
0821-A9 00 94 ( 2) LDA #0 ANY VOLUME WILL DO
|
|
0823-A0 03 95 ( 2) LDY #RPLVOL
|
|
0825-91 00 96 ( 6) STA (PTR),Y
|
|
0827-20 E3 03 97 ( 6) JSR LOCRPL RELOAD POINTER TO PARMS
|
|
082A-20 D9 03 98 ( 6) JSR RWTS CALL RWTS
|
|
082D-A9 00 99 ( 2) LDA #0
|
|
082F-85 48 100 ( 2) STA PREG FIX P REG SO DOS IS HAPPY
|
|
0831- 101
|
|
0831- 102 * PREPARE TO DUMP TRACK TO MEMORY
|
|
0831- 103
|
|
0831-A0 01 104 ( 2) LDY #RPLSLT GET SLOT*16
|
|
0833-B1 00 105 ( 5*) LDA (PTR),Y
|
|
0835-AA 106 ( 2) TAX
|
|
0836-BD 89 C0 107 ( 4*) LDA DRVON,X KEEP DRIVE ON
|
|
0839-BD 8E C0 108 ( 4*) LDA DRVRDM,X INSURE READ MODE
|
|
083C- 109
|
|
083C-A9 10 110 ( 2) LDA #BUFFER/$100 POINT AT DATA
|
|
083E-85 00 111 ( 2) STA PTR
|
|
0840-A9 00 112 ( 2) LDA #BUFFER
|
|
0842-85 01 113 ( 2) STA PTR+1
|
|
0844-A0 00 114 ( 2) LDY #0
|
|
0846- 115
|
|
0846- 116 * START DUMPING AT THE BEGINNING OF A SECTOR ADDRESS
|
|
0846- 117 * FIELD OR A SECTOR DATA FIELD
|
|
0846- 118
|
|
0846-BD 8C C0 119 ( 4*) LOOP1 LDA DRVRD,X WAIT FOR NEXT BYTE
|
|
0849-10 FB 120 (2**) BPL LOOP1
|
|
084B-C9 FF 121 ( 2) CMP #$FF AUTOSYNC?
|
|
084D-D0 F7 122 (2**) BNE LOOP1 NO, DON'T START IN MIDDLE
|
|
084F-BD 8C C0 123 ( 4*) LOOP2 LDA DRVRD,X WAIT FOR NEXT BYTE
|
|
0852-10 FB 124 (2**) BPL LOOP2
|
|
0854-C9 FF 125 ( 2) CMP #$FF TWO AUTOSYNCS?
|
|
0856-D0 EE 126 (2**) BNE LOOP1 NOT YET
|
|
0858-BD 8C C0 127 ( 4*) LOOP3 LDA DRVRD,X
|
|
085B-10 FB 128 (2**) BPL LOOP3
|
|
085D-C9 FF 129 ( 2) CMP #$FF STILL AUTOSYNCS?
|
|
085F-F0 F7 130 (2**) BEQ LOOP3 YES, WAIT FOR DATA BYTE
|
|
0861-D0 05 131 (2**) BNE LOOP4 ELSE, START STORING DATA
|
|
0863- 132
|
|
0863- 133 * ONCE ALIGNED, BEGIN COPYING THE TRACK TO MEMORY.
|
|
0863- 134 * COPY AT LEAST TWICE ITS LENGTH TO INSURE WE GET IT
|
|
0863- 135 * ALL.
|
|
0863- 136
|
|
0863-BD 8C C0 137 ( 4*) LOOPD LDA DRVRD,X WAIT FOR NEXT DATA BYTE
|
|
0866-10 FB 138 (2**) BPL LOOPD
|
|
0868-91 00 139 ( 6) LOOP4 STA (PTR),Y STORE IN MEMORY
|
|
086A-E6 00 140 ( 5) INC PTR BUMP POINTER
|
|
086C-D0 F5 141 (2**) BNE LOOPD
|
|
086E-E6 01 142 ( 5) INC PTR+1
|
|
0870-A5 01 143 ( 3) LDA PTR+1
|
|
0872-C9 40 144 ( 2) CMP #$40 DONE AT LEAST A TRACK?
|
|
0874-90 ED 145 (2**) BCC LOOPD NO, CONTINUE
|
|
0876-BD 88 C0 146 ( 4*) LDA DRVOFF,X TURN DRIVE OFF
|
|
0879- 147
|
|
0879- 148 * WHEN FINISHED, DUMP SOME OF TRACK IN HEX ON SCREEN
|
|
0879- 149
|
|
0879-A9 10 150 ( 2) EXIT LDA #BUFFER/$100 DUMP 800.8AF
|
|
087B-85 3C 151 ( 2) STA A1L
|
|
087D-A9 00 152 ( 2) LDA #BUFFER
|
|
087F-85 3D 153 ( 2) STA A1L+1
|
|
0881-A9 BF 154 ( 2) LDA #BUFFER/$100+$AF
|
|
0883-85 3E 155 ( 2) STA A2L
|
|
0885-A9 AF 156 ( 2) LDA #BUFFER+$AF
|
|
0887-85 3F 157 ( 2) STA A2L+1
|
|
0889-4C B3 FD 158 ( 3) JMP XAM EXIT VIA HEX DISPLAY
|