mirror of
https://github.com/rigreco/UniDisk.git
synced 2024-06-11 20:29:31 +00:00
Compare commits
24 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
82721aee29 | ||
|
ffedffdd11 | ||
|
0612e79002 | ||
|
415c2dd97e | ||
|
34cf31e767 | ||
|
972848e5fb | ||
|
a549adee54 | ||
|
aeadfa78c6 | ||
|
922a76874b | ||
|
61da5dca89 | ||
|
1c1ddc5321 | ||
|
a638973485 | ||
|
bff74d57f3 | ||
|
4a03b5906d | ||
|
a408d30fc3 | ||
|
6cecfbb810 | ||
|
165d047026 | ||
|
7e6c9e12da | ||
|
fd9e784226 | ||
|
9bd61f0ef1 | ||
|
133025abfe | ||
|
48fc19a077 | ||
|
2b392695a6 | ||
|
afbd3795da |
39
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
39
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
|
@ -0,0 +1,39 @@
|
|||
---
|
||||
name: Bug report
|
||||
about: Create a report to help us improve
|
||||
title: ''
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**Describe the bug**
|
||||
A clear and concise description of what the bug is.
|
||||
|
||||
**To Reproduce**
|
||||
Steps to reproduce the behavior:
|
||||
1. Go to '...'
|
||||
2. Click on '....'
|
||||
3. Scroll down to '....'
|
||||
4. See error
|
||||
|
||||
**Expected behavior**
|
||||
A clear and concise description of what you expected to happen.
|
||||
|
||||
**Screenshots**
|
||||
If applicable, add screenshots to help explain your problem.
|
||||
|
||||
**Build Device (please complete the following information):**
|
||||
- Device: [Mac/PC]
|
||||
- OS:
|
||||
- IDE: [e.g. VS Code, Eclipse]
|
||||
- Build Solution [MakeFile]:
|
||||
|
||||
**Build/Target Device (please complete the following information):**
|
||||
- Device: [e.g. Apple //c]
|
||||
- Unidisks: [n., Model]
|
||||
- OS: [e.g. ProDos]
|
||||
- Compiler: [e.g. Merlin Assembler]
|
||||
|
||||
**Additional context**
|
||||
Add any other context about the problem here.
|
20
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
20
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
|
@ -0,0 +1,20 @@
|
|||
---
|
||||
name: Feature request
|
||||
about: Suggest an idea for this project
|
||||
title: ''
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**Is your feature request related to a problem? Please describe.**
|
||||
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
||||
|
||||
**Describe the solution you'd like**
|
||||
A clear and concise description of what you want to happen.
|
||||
|
||||
**Describe alternatives you've considered**
|
||||
A clear and concise description of any alternative solutions or features you've considered.
|
||||
|
||||
**Additional context**
|
||||
Add any other context or screenshots about the feature request here.
|
74
.github/workflows/Build.yml
vendored
Normal file
74
.github/workflows/Build.yml
vendored
Normal file
|
@ -0,0 +1,74 @@
|
|||
# This is a basic workflow for Merlin32 cross-dev Tools with GitHub Actions for UNIDISK project
|
||||
# https://brutaldeluxe.fr/products/crossdevtools/
|
||||
|
||||
# The Actions are based on digarok repository:
|
||||
# https://github.com/digarok/install-merlin32-action
|
||||
# https://github.com/digarok/install-cadius-action
|
||||
|
||||
name: CI
|
||||
|
||||
# Controls when the action will run. Triggers the workflow on push or pull request
|
||||
# events but only for the master branch
|
||||
on:
|
||||
push:
|
||||
branches: [ master ]
|
||||
paths:
|
||||
- 'src/TESTBAS'
|
||||
- 'src/TESTBIN.s'
|
||||
pull_request:
|
||||
branches: [ master ]
|
||||
paths:
|
||||
- 'src/TESTBAS'
|
||||
- 'src/TESTBIN.s'
|
||||
|
||||
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
|
||||
jobs:
|
||||
# This workflow contains a single job called "build"
|
||||
build:
|
||||
|
||||
# The type of runner that the job will run on
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
# Steps represent a sequence of tasks that will be executed as part of the job
|
||||
steps:
|
||||
|
||||
- uses: actions/checkout@v1
|
||||
|
||||
# This will install Merlin32 on your Github Runner machine
|
||||
- name: install-merlin32-action
|
||||
uses: digarok/install-merlin32-action@v0.1.1
|
||||
|
||||
# Now you can use it to assemble your source code
|
||||
- name: Assembly Step
|
||||
run: merlin32 -V src/TESTBIN.s
|
||||
|
||||
# CHK Errors (if the previous step failure, there's errors in the source code, then it will upload the errors text file in artifact)
|
||||
- name: CHK errors
|
||||
if: ${{ failure() }}
|
||||
uses: actions/upload-artifact@v1
|
||||
with:
|
||||
name: Error
|
||||
path: ./src/error_output.txt
|
||||
|
||||
# This will install Cadius on your Github Runner machine
|
||||
- name: Install Cadius
|
||||
uses: digarok/install-cadius-action@v0.1.1
|
||||
|
||||
# This will make bootalble ProDOS DISK image
|
||||
- name: Make bootable ProDOS image
|
||||
run: |
|
||||
cadius createvolume ./src/virtual.po unidisk 140KB
|
||||
cadius addfile ./src/virtual.po /unidisk/ ./PRODOS.2.4.2/PRODOS
|
||||
cadius addfile ./src/virtual.po /unidisk/ ./PRODOS.2.4.2/BASIC.SYSTEM
|
||||
echo "TESTBAS=Type(04),AuxType(0000),VersionCreate(24),MinVersion(00),Access(E3)" > ./src/_FileInformation.txt
|
||||
cadius addfile ./src/virtual.po /unidisk/ ./src/TESTBAS
|
||||
echo "TESTBIN=Type(06),AuxType(8000),VersionCreate(24),MinVersion(00),Access(E3)" >> ./src/_FileInformation.txt
|
||||
cadius addfile ./src/virtual.po /unidisk/ ./src/TESTBIN
|
||||
cadius catalog ./src/virtual.po
|
||||
ls -al src
|
||||
|
||||
# This will upload entire work directory in artifact
|
||||
- uses: actions/upload-artifact@v1
|
||||
with:
|
||||
name: Output
|
||||
path: ./src/
|
BIN
AppleII/Chksum
Normal file
BIN
AppleII/Chksum
Normal file
Binary file not shown.
40
AppleII/Chksum_Output.txt
Normal file
40
AppleII/Chksum_Output.txt
Normal file
|
@ -0,0 +1,40 @@
|
|||
------+--------------------+-------------+----+---------+------+-----------------------+-------------------------------------------------------------------
|
||||
Line | # File Line | Line Type | MX | Reloc | Size | Address Object Code | Source Code
|
||||
------+--------------------+-------------+----+---------+------+-----------------------+-------------------------------------------------------------------
|
||||
1 | 1 Chksum.s 1 | Equivalence | 11 | | 0 | 00/8000 | COut equ $FDED
|
||||
2 | 1 Chksum.s 2 | Equivalence | 11 | | 0 | 00/8000 | PTR equ $EB
|
||||
3 | 1 Chksum.s 3 | Code | 11 | | 2 | 00/8000 : A9 00 | STARTCHK lda #<STARTCHK
|
||||
4 | 1 Chksum.s 4 | Code | 11 | | 2 | 00/8002 : 85 EB | sta {$EB}
|
||||
5 | 1 Chksum.s 5 | Code | 11 | | 2 | 00/8004 : A9 80 | lda #>STARTCHK
|
||||
6 | 1 Chksum.s 6 | Code | 11 | | 2 | 00/8006 : 85 EC | sta {$EB}+1
|
||||
7 | 1 Chksum.s 7 | Code | 11 | | 2 | 00/8008 : A0 00 | ldy #$00
|
||||
8 | 1 Chksum.s 8 | Code | 11 | | 2 | 00/800A : A9 00 | lda #$00
|
||||
9 | 1 Chksum.s 9 | Code | 11 | | 1 | 00/800C : 48 | pha
|
||||
10 | 1 Chksum.s 10 | Empty | 11 | | 0 | 00/800D |
|
||||
11 | 1 Chksum.s 11 | Code | 11 | | 1 | 00/800D : 68 | LOOP pla
|
||||
12 | 1 Chksum.s 12 | Code | 11 | | 2 | 00/800E : 51 EB | eor ({$EB}),y
|
||||
13 | 1 Chksum.s 13 | Code | 11 | | 1 | 00/8010 : 48 | pha
|
||||
14 | 1 Chksum.s 14 | Code | 11 | | 2 | 00/8011 : E6 EB | inc {$EB}
|
||||
15 | 1 Chksum.s 15 | Code | 11 | | 2 | 00/8013 : D0 02 | bne CHK
|
||||
16 | 1 Chksum.s 16 | Code | 11 | | 2 | 00/8015 : E6 EC | inc {$EB}+1
|
||||
17 | 1 Chksum.s 17 | Code | 11 | | 2 | 00/8017 : A5 EC | CHK lda {$EB}+1
|
||||
18 | 1 Chksum.s 18 | Code | 11 | | 2 | 00/8019 : C9 80 | cmp #>PROGEND
|
||||
19 | 1 Chksum.s 19 | Code | 11 | | 2 | 00/801B : 90 F0 | bcc LOOP
|
||||
20 | 1 Chksum.s 20 | Code | 11 | | 2 | 00/801D : A5 EB | lda {$EB}
|
||||
21 | 1 Chksum.s 21 | Code | 11 | | 2 | 00/801F : C9 30 | cmp #<PROGEND
|
||||
22 | 1 Chksum.s 22 | Code | 11 | | 2 | 00/8021 : 90 EA | bcc LOOP
|
||||
23 | 1 Chksum.s 23 | Code | 11 | | 2 | 00/8023 : F0 E8 | beq LOOP
|
||||
24 | 1 Chksum.s 24 | Code | 11 | | 1 | 00/8025 : 68 | CHKCS pla
|
||||
25 | 1 Chksum.s 25 | Code | 11 | | 3 | 00/8026 : CD 31 80 | cmp CHKSUM
|
||||
26 | 1 Chksum.s 26 | Code | 11 | | 2 | 00/8029 : D0 07 | bne ERROR
|
||||
27 | 1 Chksum.s 27 | Code | 11 | | 2 | 00/802B : A9 00 | REALSTART lda #0
|
||||
28 | 1 Chksum.s 28 | Code | 11 | | 1 | 00/802D : 1A | inc A
|
||||
29 | 1 Chksum.s 29 | Code | 11 | | 2 | 00/802E : 85 FA | sta $FA
|
||||
30 | 1 Chksum.s 30 | Code | 11 | | 1 | 00/8030 : 60 | PROGEND rts
|
||||
31 | 1 Chksum.s 31 | Data | 11 | | 1 | 00/8031 : 00 | CHKSUM chk
|
||||
32 | 1 Chksum.s 32 | Code | 11 | | 3 | 00/8032 : 8D 3B 80 | ERROR sta CHKCALC
|
||||
33 | 1 Chksum.s 33 | Code | 11 | | 2 | 00/8035 : A9 C5 | lda #"E"
|
||||
34 | 1 Chksum.s 34 | Code | 11 | | 3 | 00/8037 : 20 ED FD | jsr {$FDED}
|
||||
35 | 1 Chksum.s 35 | Code | 11 | | 1 | 00/803A : 60 | rts
|
||||
36 | 1 Chksum.s 36 | Data | 11 | | 1 | 00/803B : 00 | CHKCALC dfb $00
|
||||
------+--------------------+-------------+----+---------+------+-----------------------+-------------------------------------------------------------------
|
|
@ -1,14 +0,0 @@
|
|||
2 PRINT CHR$ (4);"BLOAD UNIDRIVE4P"
|
||||
5 PRINT CHR$ (4);"BLOAD CONV3P"
|
||||
15 INPUT "N1 ? ";X
|
||||
20 CALL 32768,X
|
||||
27 CALL 24576
|
||||
30 CALL 32831,Y
|
||||
40 PRINT Y
|
||||
50 PRINT CHR$ (4);"BLOAD UNIDRIVE4P2"
|
||||
55 INPUT "N1 ? ";X
|
||||
60 CALL 32768,X
|
||||
65 CALL 24576
|
||||
70 CALL 32831,Y
|
||||
80 PRINT Y
|
||||
90 GOTO 55
|
|
@ -1,147 +1,147 @@
|
|||
------+----------------------+-------------+----+---------+------+-----------------------+-------------------------------------------------------------------
|
||||
Line | # File Line | Line Type | MX | Reloc | Size | Address Object Code | Source Code
|
||||
------+----------------------+-------------+----+---------+------+-----------------------+-------------------------------------------------------------------
|
||||
1 | 1 Conv3p.asm 1 | Comment | 11 | | 0 | 00/8000 | * @com.wudsn.ide.asm.hardware=APPLE2
|
||||
2 | 1 Conv3p.asm 2 | Comment | 11 | | 0 | 00/8000 | ************************************
|
||||
3 | 1 Conv3p.asm 3 | Comment | 11 | | 0 | 00/8000 | * BASIC TO FAC TO FP1 *
|
||||
4 | 1 Conv3p.asm 4 | Comment | 11 | | 0 | 00/8000 | * X=NUMBER *
|
||||
5 | 1 Conv3p.asm 5 | Comment | 11 | | 0 | 00/8000 | * CALL 32768,X 768,X *
|
||||
6 | 1 Conv3p.asm 6 | Comment | 11 | | 0 | 00/8000 | ************************************
|
||||
7 | 1 Conv3p.asm 7 | Directive | 11 | | 0 | 00/8000 | org $8000
|
||||
8 | 1 Conv3p.asm 8 | Empty | 11 | | 0 | 00/8000 |
|
||||
9 | 1 Conv3p.asm 9 | Equivalence | 11 | | 0 | 00/8000 | CHKCOM equ $DEBE
|
||||
10 | 1 Conv3p.asm 10 | Equivalence | 11 | | 0 | 00/8000 | FRMNUM equ $DD67
|
||||
11 | 1 Conv3p.asm 11 | Equivalence | 11 | | 0 | 00/8000 | PTRGET equ $DFE3
|
||||
12 | 1 Conv3p.asm 12 | Equivalence | 11 | | 0 | 00/8000 | MOVMF equ $EB2B
|
||||
13 | 1 Conv3p.asm 13 | Equivalence | 11 | | 0 | 00/8000 | MOVFM equ $EAF9
|
||||
14 | 1 Conv3p.asm 14 | Empty | 11 | | 0 | 00/8000 |
|
||||
15 | 1 Conv3p.asm 15 | Comment | 11 | | 0 | 00/8000 | ** Woz FP Accumulator 4 Byte + 1 Byte Extra + 1 Byte SIGN**
|
||||
16 | 1 Conv3p.asm 16 | Equivalence | 11 | | 0 | 00/8000 | FP1 equ $FA ;Translate F8 --> FA
|
||||
17 | 1 Conv3p.asm 17 | Equivalence | 11 | | 0 | 00/8000 | E equ $FE ;Translate FC --> FE
|
||||
18 | 1 Conv3p.asm 18 | Equivalence | 11 | | 0 | 00/8000 | SIGN equ $EB
|
||||
19 | 1 Conv3p.asm 19 | Empty | 11 | | 0 | 00/8000 |
|
||||
20 | 1 Conv3p.asm 20 | Equivalence | 11 | | 0 | 00/8000 | FP2 equ $EC
|
||||
21 | 1 Conv3p.asm 21 | Empty | 11 | | 0 | 00/8000 |
|
||||
22 | 1 Conv3p.asm 22 | Comment | 11 | | 0 | 00/8000 | ** Applesoft FP Accumulator 5 Byte + 1 Byte Sign **
|
||||
23 | 1 Conv3p.asm 23 | Equivalence | 11 | | 0 | 00/8000 | FAC equ $9D
|
||||
24 | 1 Conv3p.asm 24 | Empty | 11 | | 0 | 00/8000 |
|
||||
25 | 1 Conv3p.asm 25 | Equivalence | 11 | | 0 | 00/8000 | RSLT equ $7000
|
||||
26 | 1 Conv3p.asm 26 | Empty | 11 | | 0 | 00/8000 |
|
||||
27 | 1 Conv3p.asm 27 | Comment | 11 | | 0 | 00/8000 | ***************************
|
||||
28 | 1 Conv3p.asm 28 | Empty | 11 | | 0 | 00/8000 |
|
||||
29 | 1 Conv3p.asm 29 | Code | 11 | | 3 | 00/8000 : 20 BE DE | ENTRY1 jsr {$DEBE}
|
||||
30 | 1 Conv3p.asm 30 | Code | 11 | | 3 | 00/8003 : 20 67 DD | jsr {$DD67} ;VARIABLE X ->FAC (6 Byte Unpacked)
|
||||
31 | 1 Conv3p.asm 31 | Empty | 11 | | 0 | 00/8006 |
|
||||
32 | 1 Conv3p.asm 32 | Comment | 11 | | 0 | 00/8006 | ** FPC to FP1 conversion **
|
||||
33 | 1 Conv3p.asm 33 | Empty | 11 | | 0 | 00/8006 |
|
||||
34 | 1 Conv3p.asm 34 | Code | 11 | | 2 | 00/8006 : A5 9D | lda {$9D}
|
||||
35 | 1 Conv3p.asm 35 | Code | 11 | | 1 | 00/8008 : 3A | dec A ; dec the EXP
|
||||
36 | 1 Conv3p.asm 36 | Code | 11 | | 2 | 00/8009 : 85 FA | sta {$FA}
|
||||
37 | 1 Conv3p.asm 37 | Code | 11 | | 2 | 00/800B : 85 EC | sta {$EC} ; Copy
|
||||
38 | 1 Conv3p.asm 38 | Empty | 11 | | 0 | 00/800D |
|
||||
39 | 1 Conv3p.asm 39 | Code | 11 | | 2 | 00/800D : A5 A2 | lda {$9D}+5
|
||||
40 | 1 Conv3p.asm 40 | Code | 11 | | 2 | 00/800F : 30 0D | bmi NEG ; chk the Hi bit of 1 byte Mantissa
|
||||
41 | 1 Conv3p.asm 41 | Empty | 11 | | 0 | 00/8011 |
|
||||
42 | 1 Conv3p.asm 42 | Code | 11 | | 1 | 00/8011 : 18 | POS clc ; Hi bit 0 for negative
|
||||
43 | 1 Conv3p.asm 43 | Code | 11 | | 2 | 00/8012 : A5 A2 | lda {$9D}+5
|
||||
44 | 1 Conv3p.asm 44 | Empty | 11 | | 0 | 00/8014 |
|
||||
45 | 1 Conv3p.asm 45 | Code | 11 | | 2 | 00/8014 : 09 80 | ora #$80 ; Set Hi Bit 1 byte Mantissa (change Sign only if is positive)
|
||||
46 | 1 Conv3p.asm 46 | Code | 11 | | 1 | 00/8016 : 6A | ror ; Didide for 2^1
|
||||
47 | 1 Conv3p.asm 47 | Empty | 11 | | 0 | 00/8017 |
|
||||
48 | 1 Conv3p.asm 48 | Code | 11 | | 2 | 00/8017 : 85 FB | sta {$FA}+1
|
||||
49 | 1 Conv3p.asm 49 | Code | 11 | | 2 | 00/8019 : 85 ED | sta {$EC}+1 ; Copy
|
||||
50 | 1 Conv3p.asm 50 | Empty | 11 | | 0 | 00/801B |
|
||||
51 | 1 Conv3p.asm 51 | Code | 11 | | 3 | 00/801B : 4C 2B 80 | jmp CONT
|
||||
52 | 1 Conv3p.asm 52 | Empty | 11 | | 0 | 00/801E |
|
||||
53 | 1 Conv3p.asm 53 | Code | 11 | | 1 | 00/801E : 18 | NEG clc ; Hi bit 1 for positive
|
||||
54 | 1 Conv3p.asm 54 | Code | 11 | | 2 | 00/801F : A5 A2 | lda {$9D}+5
|
||||
55 | 1 Conv3p.asm 55 | Empty | 11 | | 0 | 00/8021 |
|
||||
56 | 1 Conv3p.asm 56 | Code | 11 | | 1 | 00/8021 : 6A | ror ; Didide for 2^1
|
||||
57 | 1 Conv3p.asm 57 | Empty | 11 | | 0 | 00/8022 |
|
||||
58 | 1 Conv3p.asm 58 | Code | 11 | | 2 | 00/8022 : 49 FF | eor #$FF ; One's complement, NOT
|
||||
59 | 1 Conv3p.asm 59 | Code | 11 | | 1 | 00/8024 : 18 | clc
|
||||
60 | 1 Conv3p.asm 60 | Code | 11 | | 2 | 00/8025 : 69 01 | adc #01 ; Two's complement, +1
|
||||
61 | 1 Conv3p.asm 61 | Empty | 11 | | 0 | 00/8027 |
|
||||
62 | 1 Conv3p.asm 62 | Code | 11 | | 2 | 00/8027 : 85 FB | sta {$FA}+1
|
||||
63 | 1 Conv3p.asm 63 | Code | 11 | | 2 | 00/8029 : 85 ED | sta {$EC}+1 ; Copy
|
||||
64 | 1 Conv3p.asm 64 | Empty | 11 | | 0 | 00/802B |
|
||||
65 | 1 Conv3p.asm 65 | Code | 11 | | 2 | 00/802B : A5 9F | CONT lda {$9D}+2
|
||||
66 | 1 Conv3p.asm 66 | Code | 11 | | 1 | 00/802D : 6A | ror
|
||||
67 | 1 Conv3p.asm 67 | Code | 11 | | 2 | 00/802E : 85 FC | sta {$FA}+2
|
||||
68 | 1 Conv3p.asm 68 | Code | 11 | | 2 | 00/8030 : 85 EE | sta {$EC}+2 ; Copy
|
||||
69 | 1 Conv3p.asm 69 | Empty | 11 | | 0 | 00/8032 |
|
||||
70 | 1 Conv3p.asm 70 | Code | 11 | | 2 | 00/8032 : A5 A0 | lda {$9D}+3
|
||||
71 | 1 Conv3p.asm 71 | Code | 11 | | 1 | 00/8034 : 6A | ror
|
||||
72 | 1 Conv3p.asm 72 | Code | 11 | | 2 | 00/8035 : 85 FD | sta {$FA}+3
|
||||
73 | 1 Conv3p.asm 73 | Code | 11 | | 2 | 00/8037 : 85 EF | sta {$EC}+3 ; Copy FP2=FP1 X2=X1
|
||||
74 | 1 Conv3p.asm 74 | Empty | 11 | | 0 | 00/8039 |
|
||||
75 | 1 Conv3p.asm 75 | Code | 11 | | 2 | 00/8039 : A5 A1 | lda {$9D}+4
|
||||
76 | 1 Conv3p.asm 76 | Code | 11 | | 1 | 00/803B : 6A | ror
|
||||
77 | 1 Conv3p.asm 77 | Code | 11 | | 2 | 00/803C : 85 FE | sta {$FE}
|
||||
78 | 1 Conv3p.asm 78 | Empty | 11 | | 0 | 00/803E |
|
||||
79 | 1 Conv3p.asm 79 | Comment | 11 | | 0 | 00/803E | ;brk
|
||||
80 | 1 Conv3p.asm 80 | Code | 11 | | 1 | 00/803E : 60 | rts
|
||||
81 | 1 Conv3p.asm 81 | Empty | 11 | | 0 | 00/803F |
|
||||
82 | 1 Conv3p.asm 82 | Comment | 11 | | 0 | 00/803F | ************************************
|
||||
83 | 1 Conv3p.asm 83 | Comment | 11 | | 0 | 00/803F | * FP1 TO FAC TO BASIC *
|
||||
84 | 1 Conv3p.asm 84 | Comment | 11 | | 0 | 00/803F | * CALL 32831,Y 831,Y *
|
||||
85 | 1 Conv3p.asm 85 | Comment | 11 | | 0 | 00/803F | * PRINT Y *
|
||||
86 | 1 Conv3p.asm 86 | Comment | 11 | | 0 | 00/803F | ************************************
|
||||
87 | 1 Conv3p.asm 87 | Empty | 11 | | 0 | 00/803F |
|
||||
88 | 1 Conv3p.asm 88 | Comment | 11 | | 0 | 00/803F | *
|
||||
89 | 1 Conv3p.asm 89 | Comment | 11 | | 0 | 00/803F | ** FP1 to FAC conversion **
|
||||
90 | 1 Conv3p.asm 90 | Comment | 11 | | 0 | 00/803F | *
|
||||
91 | 1 Conv3p.asm 91 | Code | 11 | | 3 | 00/803F : AD 00 70 | ENTRY2 lda {$7000} ; X1 1 Byte --> 9D FAC
|
||||
92 | 1 Conv3p.asm 92 | Code | 11 | | 1 | 00/8042 : 1A | inc A ; 2^(FP1+1) inc EXP
|
||||
93 | 1 Conv3p.asm 93 | Code | 11 | | 2 | 00/8043 : 85 9D | sta {$9D}
|
||||
94 | 1 Conv3p.asm 94 | Empty | 11 | | 0 | 00/8045 |
|
||||
95 | 1 Conv3p.asm 95 | Code | 11 | | 3 | 00/8045 : AD 01 70 | lda {$7000}+1
|
||||
96 | 1 Conv3p.asm 96 | Code | 11 | | 2 | 00/8048 : 30 0C | bmi NEG2 ; chk the Hi bit of 1 byte Mantissa
|
||||
97 | 1 Conv3p.asm 97 | Empty | 11 | | 0 | 00/804A |
|
||||
98 | 1 Conv3p.asm 98 | Empty | 11 | | 0 | 00/804A |
|
||||
99 | 1 Conv3p.asm 99 | Code | 11 | | 1 | 00/804A : 18 | POS2 clc
|
||||
100 | 1 Conv3p.asm 100 | Code | 11 | | 3 | 00/804B : AD 01 70 | lda {$7000}+1 ; M1 Hi 2 Byte --> 9E FAC
|
||||
101 | 1 Conv3p.asm 101 | Code | 11 | | 1 | 00/804E : 2A | rol ; Multiply for 2^1
|
||||
102 | 1 Conv3p.asm 102 | Empty | 11 | | 0 | 00/804F |
|
||||
103 | 1 Conv3p.asm 103 | Code | 11 | | 2 | 00/804F : 09 80 | ora #$80 ; Set Hi Bit 1 byte Mantissa (change Sign only if is positive)
|
||||
104 | 1 Conv3p.asm 104 | Code | 11 | | 2 | 00/8051 : 85 9E | sta {$9D}+1 ; To 6^ Byte of FAC Unpacked
|
||||
105 | 1 Conv3p.asm 105 | Empty | 11 | | 0 | 00/8053 |
|
||||
106 | 1 Conv3p.asm 106 | Comment | 11 | | 0 | 00/8053 | ;sta FAC+5 ; To 1^ Byte Mantissa of FAC UnPacked
|
||||
107 | 1 Conv3p.asm 107 | Code | 11 | | 3 | 00/8053 : 4C 63 80 | jmp CONT2
|
||||
108 | 1 Conv3p.asm 108 | Empty | 11 | | 0 | 00/8056 |
|
||||
109 | 1 Conv3p.asm 109 | Code | 11 | | 3 | 00/8056 : AD 01 70 | NEG2 lda {$7000}+1
|
||||
110 | 1 Conv3p.asm 110 | Empty | 11 | | 0 | 00/8059 |
|
||||
111 | 1 Conv3p.asm 111 | Code | 11 | | 1 | 00/8059 : 38 | sec
|
||||
112 | 1 Conv3p.asm 112 | Code | 11 | | 2 | 00/805A : E9 01 | sbc #01 ; One's complement inv -1
|
||||
113 | 1 Conv3p.asm 113 | Code | 11 | | 2 | 00/805C : 49 FF | eor #$FF ; Two's complement inv NOT
|
||||
114 | 1 Conv3p.asm 114 | Empty | 11 | | 0 | 00/805E |
|
||||
115 | 1 Conv3p.asm 115 | Code | 11 | | 1 | 00/805E : 2A | rol ; Multiply for 2^1
|
||||
116 | 1 Conv3p.asm 116 | Empty | 11 | | 0 | 00/805F |
|
||||
117 | 1 Conv3p.asm 117 | Code | 11 | | 2 | 00/805F : 85 9E | sta {$9D}+1 ; To 1^ Byte Mantissa of FAC Packed
|
||||
118 | 1 Conv3p.asm 118 | Code | 11 | | 2 | 00/8061 : 85 A2 | sta {$9D}+5 ; To 6^ Byte of FAC Unpacked
|
||||
119 | 1 Conv3p.asm 119 | Empty | 11 | | 0 | 00/8063 |
|
||||
120 | 1 Conv3p.asm 120 | Empty | 11 | | 0 | 00/8063 |
|
||||
121 | 1 Conv3p.asm 121 | Code | 11 | | 3 | 00/8063 : AD 02 70 | CONT2 lda {$7000}+2 ; M1 3 Byte --> 9F FAC
|
||||
122 | 1 Conv3p.asm 122 | Code | 11 | | 1 | 00/8066 : 2A | rol
|
||||
123 | 1 Conv3p.asm 123 | Code | 11 | | 2 | 00/8067 : 85 9F | sta {$9D}+2
|
||||
124 | 1 Conv3p.asm 124 | Empty | 11 | | 0 | 00/8069 |
|
||||
125 | 1 Conv3p.asm 125 | Code | 11 | | 3 | 00/8069 : AD 03 70 | lda {$7000}+3 ; M1 Lo 4 Byte --> A0 FAC
|
||||
126 | 1 Conv3p.asm 126 | Code | 11 | | 1 | 00/806C : 2A | rol
|
||||
127 | 1 Conv3p.asm 127 | Code | 11 | | 2 | 00/806D : 85 A0 | sta {$9D}+3
|
||||
128 | 1 Conv3p.asm 128 | Empty | 11 | | 0 | 00/806F |
|
||||
129 | 1 Conv3p.asm 129 | Code | 11 | | 2 | 00/806F : A5 FE | lda {$FE} ; Extra 5 Byte --> A1 FAC
|
||||
130 | 1 Conv3p.asm 130 | Code | 11 | | 1 | 00/8071 : 2A | rol
|
||||
131 | 1 Conv3p.asm 131 | Code | 11 | | 2 | 00/8072 : 85 A1 | sta {$9D}+4
|
||||
132 | 1 Conv3p.asm 132 | Empty | 11 | | 0 | 00/8074 |
|
||||
133 | 1 Conv3p.asm 133 | Comment | 11 | | 0 | 00/8074 | ;brk
|
||||
134 | 1 Conv3p.asm 134 | Comment | 11 | | 0 | 00/8074 | ***************************
|
||||
135 | 1 Conv3p.asm 135 | Comment | 11 | | 0 | 00/8074 | *
|
||||
136 | 1 Conv3p.asm 136 | Code | 11 | | 3 | 00/8074 : 20 BE DE | jsr {$DEBE}
|
||||
137 | 1 Conv3p.asm 137 | Code | 11 | | 3 | 00/8077 : 20 E3 DF | jsr {$DFE3} ; Return the Y and A pointing to the specific variabile
|
||||
138 | 1 Conv3p.asm 138 | Code | 11 | | 1 | 00/807A : AA | tax
|
||||
139 | 1 Conv3p.asm 139 | Code | 11 | | 3 | 00/807B : 20 2B EB | jsr {$EB2B} ;FAC->VARIABLE Y (5 Bytes Packed)
|
||||
140 | 1 Conv3p.asm 140 | Empty | 11 | | 0 | 00/807E |
|
||||
141 | 1 Conv3p.asm 141 | Comment | 11 | | 0 | 00/807E | ;brk
|
||||
142 | 1 Conv3p.asm 142 | Code | 11 | | 1 | 00/807E : 60 | rts
|
||||
143 | 1 Conv3p.asm 143 | Data | 11 | | 1 | 00/807F : 00 | chk
|
||||
------+----------------------+-------------+----+---------+------+-----------------------+-------------------------------------------------------------------
|
||||
------+----------------------+-------------+----+---------+------+-----------------------+-------------------------------------------------------------------
|
||||
Line | # File Line | Line Type | MX | Reloc | Size | Address Object Code | Source Code
|
||||
------+----------------------+-------------+----+---------+------+-----------------------+-------------------------------------------------------------------
|
||||
1 | 1 Conv3p.asm 1 | Comment | 11 | | 0 | 00/8000 | * @com.wudsn.ide.asm.hardware=APPLE2
|
||||
2 | 1 Conv3p.asm 2 | Comment | 11 | | 0 | 00/8000 | ************************************
|
||||
3 | 1 Conv3p.asm 3 | Comment | 11 | | 0 | 00/8000 | * BASIC TO FAC TO FP1 *
|
||||
4 | 1 Conv3p.asm 4 | Comment | 11 | | 0 | 00/8000 | * X=NUMBER *
|
||||
5 | 1 Conv3p.asm 5 | Comment | 11 | | 0 | 00/8000 | * CALL 32768,X 768,X *
|
||||
6 | 1 Conv3p.asm 6 | Comment | 11 | | 0 | 00/8000 | ************************************
|
||||
7 | 1 Conv3p.asm 7 | Directive | 11 | | 0 | 00/8000 | org $8000
|
||||
8 | 1 Conv3p.asm 8 | Empty | 11 | | 0 | 00/8000 |
|
||||
9 | 1 Conv3p.asm 9 | Equivalence | 11 | | 0 | 00/8000 | CHKCOM equ $DEBE
|
||||
10 | 1 Conv3p.asm 10 | Equivalence | 11 | | 0 | 00/8000 | FRMNUM equ $DD67
|
||||
11 | 1 Conv3p.asm 11 | Equivalence | 11 | | 0 | 00/8000 | PTRGET equ $DFE3
|
||||
12 | 1 Conv3p.asm 12 | Equivalence | 11 | | 0 | 00/8000 | MOVMF equ $EB2B
|
||||
13 | 1 Conv3p.asm 13 | Equivalence | 11 | | 0 | 00/8000 | MOVFM equ $EAF9
|
||||
14 | 1 Conv3p.asm 14 | Empty | 11 | | 0 | 00/8000 |
|
||||
15 | 1 Conv3p.asm 15 | Comment | 11 | | 0 | 00/8000 | ** Woz FP Accumulator 4 Byte + 1 Byte Extra + 1 Byte SIGN**
|
||||
16 | 1 Conv3p.asm 16 | Equivalence | 11 | | 0 | 00/8000 | FP1 equ $FA ;Translate F8 --> FA
|
||||
17 | 1 Conv3p.asm 17 | Equivalence | 11 | | 0 | 00/8000 | E equ $FE ;Translate FC --> FE
|
||||
18 | 1 Conv3p.asm 18 | Equivalence | 11 | | 0 | 00/8000 | SIGN equ $EB
|
||||
19 | 1 Conv3p.asm 19 | Empty | 11 | | 0 | 00/8000 |
|
||||
20 | 1 Conv3p.asm 20 | Equivalence | 11 | | 0 | 00/8000 | FP2 equ $EC
|
||||
21 | 1 Conv3p.asm 21 | Empty | 11 | | 0 | 00/8000 |
|
||||
22 | 1 Conv3p.asm 22 | Comment | 11 | | 0 | 00/8000 | ** Applesoft FP Accumulator 5 Byte + 1 Byte Sign **
|
||||
23 | 1 Conv3p.asm 23 | Equivalence | 11 | | 0 | 00/8000 | FAC equ $9D
|
||||
24 | 1 Conv3p.asm 24 | Empty | 11 | | 0 | 00/8000 |
|
||||
25 | 1 Conv3p.asm 25 | Equivalence | 11 | | 0 | 00/8000 | RSLT equ $7000
|
||||
26 | 1 Conv3p.asm 26 | Empty | 11 | | 0 | 00/8000 |
|
||||
27 | 1 Conv3p.asm 27 | Comment | 11 | | 0 | 00/8000 | ***************************
|
||||
28 | 1 Conv3p.asm 28 | Empty | 11 | | 0 | 00/8000 |
|
||||
29 | 1 Conv3p.asm 29 | Code | 11 | | 3 | 00/8000 : 20 BE DE | ENTRY1 jsr {$DEBE}
|
||||
30 | 1 Conv3p.asm 30 | Code | 11 | | 3 | 00/8003 : 20 67 DD | jsr {$DD67} ;VARIABLE X ->FAC (6 Byte Unpacked)
|
||||
31 | 1 Conv3p.asm 31 | Empty | 11 | | 0 | 00/8006 |
|
||||
32 | 1 Conv3p.asm 32 | Comment | 11 | | 0 | 00/8006 | ** FPC to FP1 conversion **
|
||||
33 | 1 Conv3p.asm 33 | Empty | 11 | | 0 | 00/8006 |
|
||||
34 | 1 Conv3p.asm 34 | Code | 11 | | 2 | 00/8006 : A5 9D | lda {$9D}
|
||||
35 | 1 Conv3p.asm 35 | Code | 11 | | 1 | 00/8008 : 3A | dec A ; dec the EXP
|
||||
36 | 1 Conv3p.asm 36 | Code | 11 | | 2 | 00/8009 : 85 FA | sta {$FA}
|
||||
37 | 1 Conv3p.asm 37 | Code | 11 | | 2 | 00/800B : 85 EC | sta {$EC} ; Copy
|
||||
38 | 1 Conv3p.asm 38 | Empty | 11 | | 0 | 00/800D |
|
||||
39 | 1 Conv3p.asm 39 | Code | 11 | | 2 | 00/800D : A5 A2 | lda {$9D}+5
|
||||
40 | 1 Conv3p.asm 40 | Code | 11 | | 2 | 00/800F : 30 0D | bmi NEG ; chk the Hi bit of 1 byte Mantissa
|
||||
41 | 1 Conv3p.asm 41 | Empty | 11 | | 0 | 00/8011 |
|
||||
42 | 1 Conv3p.asm 42 | Code | 11 | | 1 | 00/8011 : 18 | POS clc ; Hi bit 0 for negative
|
||||
43 | 1 Conv3p.asm 43 | Code | 11 | | 2 | 00/8012 : A5 A2 | lda {$9D}+5
|
||||
44 | 1 Conv3p.asm 44 | Empty | 11 | | 0 | 00/8014 |
|
||||
45 | 1 Conv3p.asm 45 | Code | 11 | | 2 | 00/8014 : 09 80 | ora #$80 ; Set Hi Bit 1 byte Mantissa (change Sign only if is positive)
|
||||
46 | 1 Conv3p.asm 46 | Code | 11 | | 1 | 00/8016 : 6A | ror ; Didide for 2^1
|
||||
47 | 1 Conv3p.asm 47 | Empty | 11 | | 0 | 00/8017 |
|
||||
48 | 1 Conv3p.asm 48 | Code | 11 | | 2 | 00/8017 : 85 FB | sta {$FA}+1
|
||||
49 | 1 Conv3p.asm 49 | Code | 11 | | 2 | 00/8019 : 85 ED | sta {$EC}+1 ; Copy
|
||||
50 | 1 Conv3p.asm 50 | Empty | 11 | | 0 | 00/801B |
|
||||
51 | 1 Conv3p.asm 51 | Code | 11 | | 3 | 00/801B : 4C 2B 80 | jmp CONT
|
||||
52 | 1 Conv3p.asm 52 | Empty | 11 | | 0 | 00/801E |
|
||||
53 | 1 Conv3p.asm 53 | Code | 11 | | 1 | 00/801E : 18 | NEG clc ; Hi bit 1 for positive
|
||||
54 | 1 Conv3p.asm 54 | Code | 11 | | 2 | 00/801F : A5 A2 | lda {$9D}+5
|
||||
55 | 1 Conv3p.asm 55 | Empty | 11 | | 0 | 00/8021 |
|
||||
56 | 1 Conv3p.asm 56 | Code | 11 | | 1 | 00/8021 : 6A | ror ; Didide for 2^1
|
||||
57 | 1 Conv3p.asm 57 | Empty | 11 | | 0 | 00/8022 |
|
||||
58 | 1 Conv3p.asm 58 | Code | 11 | | 2 | 00/8022 : 49 FF | eor #$FF ; One's complement, NOT
|
||||
59 | 1 Conv3p.asm 59 | Code | 11 | | 1 | 00/8024 : 18 | clc
|
||||
60 | 1 Conv3p.asm 60 | Code | 11 | | 2 | 00/8025 : 69 01 | adc #01 ; Two's complement, +1
|
||||
61 | 1 Conv3p.asm 61 | Empty | 11 | | 0 | 00/8027 |
|
||||
62 | 1 Conv3p.asm 62 | Code | 11 | | 2 | 00/8027 : 85 FB | sta {$FA}+1
|
||||
63 | 1 Conv3p.asm 63 | Code | 11 | | 2 | 00/8029 : 85 ED | sta {$EC}+1 ; Copy
|
||||
64 | 1 Conv3p.asm 64 | Empty | 11 | | 0 | 00/802B |
|
||||
65 | 1 Conv3p.asm 65 | Code | 11 | | 2 | 00/802B : A5 9F | CONT lda {$9D}+2
|
||||
66 | 1 Conv3p.asm 66 | Code | 11 | | 1 | 00/802D : 6A | ror
|
||||
67 | 1 Conv3p.asm 67 | Code | 11 | | 2 | 00/802E : 85 FC | sta {$FA}+2
|
||||
68 | 1 Conv3p.asm 68 | Code | 11 | | 2 | 00/8030 : 85 EE | sta {$EC}+2 ; Copy
|
||||
69 | 1 Conv3p.asm 69 | Empty | 11 | | 0 | 00/8032 |
|
||||
70 | 1 Conv3p.asm 70 | Code | 11 | | 2 | 00/8032 : A5 A0 | lda {$9D}+3
|
||||
71 | 1 Conv3p.asm 71 | Code | 11 | | 1 | 00/8034 : 6A | ror
|
||||
72 | 1 Conv3p.asm 72 | Code | 11 | | 2 | 00/8035 : 85 FD | sta {$FA}+3
|
||||
73 | 1 Conv3p.asm 73 | Code | 11 | | 2 | 00/8037 : 85 EF | sta {$EC}+3 ; Copy FP2=FP1 X2=X1
|
||||
74 | 1 Conv3p.asm 74 | Empty | 11 | | 0 | 00/8039 |
|
||||
75 | 1 Conv3p.asm 75 | Code | 11 | | 2 | 00/8039 : A5 A1 | lda {$9D}+4
|
||||
76 | 1 Conv3p.asm 76 | Code | 11 | | 1 | 00/803B : 6A | ror
|
||||
77 | 1 Conv3p.asm 77 | Code | 11 | | 2 | 00/803C : 85 FE | sta {$FE}
|
||||
78 | 1 Conv3p.asm 78 | Empty | 11 | | 0 | 00/803E |
|
||||
79 | 1 Conv3p.asm 79 | Comment | 11 | | 0 | 00/803E | ;brk
|
||||
80 | 1 Conv3p.asm 80 | Code | 11 | | 1 | 00/803E : 60 | rts
|
||||
81 | 1 Conv3p.asm 81 | Empty | 11 | | 0 | 00/803F |
|
||||
82 | 1 Conv3p.asm 82 | Comment | 11 | | 0 | 00/803F | ************************************
|
||||
83 | 1 Conv3p.asm 83 | Comment | 11 | | 0 | 00/803F | * FP1 TO FAC TO BASIC *
|
||||
84 | 1 Conv3p.asm 84 | Comment | 11 | | 0 | 00/803F | * CALL 32831,Y 831,Y *
|
||||
85 | 1 Conv3p.asm 85 | Comment | 11 | | 0 | 00/803F | * PRINT Y *
|
||||
86 | 1 Conv3p.asm 86 | Comment | 11 | | 0 | 00/803F | ************************************
|
||||
87 | 1 Conv3p.asm 87 | Empty | 11 | | 0 | 00/803F |
|
||||
88 | 1 Conv3p.asm 88 | Comment | 11 | | 0 | 00/803F | *
|
||||
89 | 1 Conv3p.asm 89 | Comment | 11 | | 0 | 00/803F | ** FP1 to FAC conversion **
|
||||
90 | 1 Conv3p.asm 90 | Comment | 11 | | 0 | 00/803F | *
|
||||
91 | 1 Conv3p.asm 91 | Code | 11 | | 3 | 00/803F : AD 00 70 | ENTRY2 lda {$7000} ; X1 1 Byte --> 9D FAC
|
||||
92 | 1 Conv3p.asm 92 | Code | 11 | | 1 | 00/8042 : 1A | inc A ; 2^(FP1+1) inc EXP
|
||||
93 | 1 Conv3p.asm 93 | Code | 11 | | 2 | 00/8043 : 85 9D | sta {$9D}
|
||||
94 | 1 Conv3p.asm 94 | Empty | 11 | | 0 | 00/8045 |
|
||||
95 | 1 Conv3p.asm 95 | Code | 11 | | 3 | 00/8045 : AD 01 70 | lda {$7000}+1
|
||||
96 | 1 Conv3p.asm 96 | Code | 11 | | 2 | 00/8048 : 30 0C | bmi NEG2 ; chk the Hi bit of 1 byte Mantissa
|
||||
97 | 1 Conv3p.asm 97 | Empty | 11 | | 0 | 00/804A |
|
||||
98 | 1 Conv3p.asm 98 | Empty | 11 | | 0 | 00/804A |
|
||||
99 | 1 Conv3p.asm 99 | Code | 11 | | 1 | 00/804A : 18 | POS2 clc
|
||||
100 | 1 Conv3p.asm 100 | Code | 11 | | 3 | 00/804B : AD 01 70 | lda {$7000}+1 ; M1 Hi 2 Byte --> 9E FAC
|
||||
101 | 1 Conv3p.asm 101 | Code | 11 | | 1 | 00/804E : 2A | rol ; Multiply for 2^1
|
||||
102 | 1 Conv3p.asm 102 | Empty | 11 | | 0 | 00/804F |
|
||||
103 | 1 Conv3p.asm 103 | Code | 11 | | 2 | 00/804F : 09 80 | ora #$80 ; Set Hi Bit 1 byte Mantissa (change Sign only if is positive)
|
||||
104 | 1 Conv3p.asm 104 | Code | 11 | | 2 | 00/8051 : 85 9E | sta {$9D}+1 ; To 6^ Byte of FAC Unpacked
|
||||
105 | 1 Conv3p.asm 105 | Empty | 11 | | 0 | 00/8053 |
|
||||
106 | 1 Conv3p.asm 106 | Comment | 11 | | 0 | 00/8053 | ;sta FAC+5 ; To 1^ Byte Mantissa of FAC UnPacked
|
||||
107 | 1 Conv3p.asm 107 | Code | 11 | | 3 | 00/8053 : 4C 63 80 | jmp CONT2
|
||||
108 | 1 Conv3p.asm 108 | Empty | 11 | | 0 | 00/8056 |
|
||||
109 | 1 Conv3p.asm 109 | Code | 11 | | 3 | 00/8056 : AD 01 70 | NEG2 lda {$7000}+1
|
||||
110 | 1 Conv3p.asm 110 | Empty | 11 | | 0 | 00/8059 |
|
||||
111 | 1 Conv3p.asm 111 | Code | 11 | | 1 | 00/8059 : 38 | sec
|
||||
112 | 1 Conv3p.asm 112 | Code | 11 | | 2 | 00/805A : E9 01 | sbc #01 ; One's complement inv -1
|
||||
113 | 1 Conv3p.asm 113 | Code | 11 | | 2 | 00/805C : 49 FF | eor #$FF ; Two's complement inv NOT
|
||||
114 | 1 Conv3p.asm 114 | Empty | 11 | | 0 | 00/805E |
|
||||
115 | 1 Conv3p.asm 115 | Code | 11 | | 1 | 00/805E : 2A | rol ; Multiply for 2^1
|
||||
116 | 1 Conv3p.asm 116 | Empty | 11 | | 0 | 00/805F |
|
||||
117 | 1 Conv3p.asm 117 | Code | 11 | | 2 | 00/805F : 85 9E | sta {$9D}+1 ; To 1^ Byte Mantissa of FAC Packed
|
||||
118 | 1 Conv3p.asm 118 | Code | 11 | | 2 | 00/8061 : 85 A2 | sta {$9D}+5 ; To 6^ Byte of FAC Unpacked
|
||||
119 | 1 Conv3p.asm 119 | Empty | 11 | | 0 | 00/8063 |
|
||||
120 | 1 Conv3p.asm 120 | Empty | 11 | | 0 | 00/8063 |
|
||||
121 | 1 Conv3p.asm 121 | Code | 11 | | 3 | 00/8063 : AD 02 70 | CONT2 lda {$7000}+2 ; M1 3 Byte --> 9F FAC
|
||||
122 | 1 Conv3p.asm 122 | Code | 11 | | 1 | 00/8066 : 2A | rol
|
||||
123 | 1 Conv3p.asm 123 | Code | 11 | | 2 | 00/8067 : 85 9F | sta {$9D}+2
|
||||
124 | 1 Conv3p.asm 124 | Empty | 11 | | 0 | 00/8069 |
|
||||
125 | 1 Conv3p.asm 125 | Code | 11 | | 3 | 00/8069 : AD 03 70 | lda {$7000}+3 ; M1 Lo 4 Byte --> A0 FAC
|
||||
126 | 1 Conv3p.asm 126 | Code | 11 | | 1 | 00/806C : 2A | rol
|
||||
127 | 1 Conv3p.asm 127 | Code | 11 | | 2 | 00/806D : 85 A0 | sta {$9D}+3
|
||||
128 | 1 Conv3p.asm 128 | Empty | 11 | | 0 | 00/806F |
|
||||
129 | 1 Conv3p.asm 129 | Code | 11 | | 2 | 00/806F : A5 FE | lda {$FE} ; Extra 5 Byte --> A1 FAC
|
||||
130 | 1 Conv3p.asm 130 | Code | 11 | | 1 | 00/8071 : 2A | rol
|
||||
131 | 1 Conv3p.asm 131 | Code | 11 | | 2 | 00/8072 : 85 A1 | sta {$9D}+4
|
||||
132 | 1 Conv3p.asm 132 | Empty | 11 | | 0 | 00/8074 |
|
||||
133 | 1 Conv3p.asm 133 | Comment | 11 | | 0 | 00/8074 | ;brk
|
||||
134 | 1 Conv3p.asm 134 | Comment | 11 | | 0 | 00/8074 | ***************************
|
||||
135 | 1 Conv3p.asm 135 | Comment | 11 | | 0 | 00/8074 | *
|
||||
136 | 1 Conv3p.asm 136 | Code | 11 | | 3 | 00/8074 : 20 BE DE | jsr {$DEBE}
|
||||
137 | 1 Conv3p.asm 137 | Code | 11 | | 3 | 00/8077 : 20 E3 DF | jsr {$DFE3} ; Return the Y and A pointing to the specific variabile
|
||||
138 | 1 Conv3p.asm 138 | Code | 11 | | 1 | 00/807A : AA | tax
|
||||
139 | 1 Conv3p.asm 139 | Code | 11 | | 3 | 00/807B : 20 2B EB | jsr {$EB2B} ;FAC->VARIABLE Y (5 Bytes Packed)
|
||||
140 | 1 Conv3p.asm 140 | Empty | 11 | | 0 | 00/807E |
|
||||
141 | 1 Conv3p.asm 141 | Comment | 11 | | 0 | 00/807E | ;brk
|
||||
142 | 1 Conv3p.asm 142 | Code | 11 | | 1 | 00/807E : 60 | rts
|
||||
143 | 1 Conv3p.asm 143 | Data | 11 | | 1 | 00/807F : 00 | chk
|
||||
------+----------------------+-------------+----+---------+------+-----------------------+-------------------------------------------------------------------
|
|
@ -1,15 +1,15 @@
|
|||
10 HOME
|
||||
15 PRINT CHR$ (4);"BLOAD UNIFP1"
|
||||
20 PRINT CHR$ (4);"BLOAD CONV3P"
|
||||
25 X = 1
|
||||
30 CALL 32768,X
|
||||
35 CALL 24576
|
||||
40 PRINT CHR$ (4);"BLOAD UNIFP2"
|
||||
45 HGR2 : HCOLOR= 3
|
||||
50 FOR X = - 10 TO 10 STEP .2
|
||||
55 CALL 32768,X
|
||||
60 CALL 24576
|
||||
65 Y = PEEK (29) + 256 * PEEK (30)
|
||||
70 rem CALL 32831,Y
|
||||
75 HPLOT X * 5 + 140,Y + 10
|
||||
10 HOME
|
||||
15 PRINT CHR$ (4);"BLOAD UNIFP1"
|
||||
20 PRINT CHR$ (4);"BLOAD CONV3P"
|
||||
25 X = 1
|
||||
30 CALL 32768,X
|
||||
35 CALL 24576
|
||||
40 PRINT CHR$ (4);"BLOAD UNIFP2"
|
||||
45 HGR2 : HCOLOR= 3
|
||||
50 FOR X = - 10 TO 10 STEP .2
|
||||
55 CALL 32768,X
|
||||
60 CALL 24576
|
||||
65 Y = PEEK (29) + 256 * PEEK (30)
|
||||
70 rem CALL 32831,Y
|
||||
75 HPLOT X * 5 + 140,Y + 10
|
||||
80 NEXT
|
|
@ -1,15 +1,15 @@
|
|||
10 HOME
|
||||
15 PRINT CHR$ (4);"BLOAD UNIFP1"
|
||||
20 PRINT CHR$ (4);"BLOAD CONV3P"
|
||||
25 X = 1
|
||||
30 CALL 32768,X
|
||||
35 CALL 24576
|
||||
40 PRINT CHR$ (4);"BLOAD UNIFP2"
|
||||
45 HGR2 : HCOLOR= 3
|
||||
50 FOR X = - 10 TO 10 STEP .2
|
||||
55 CALL 32768,X
|
||||
60 CALL 24576
|
||||
65 Y = PEEK (29) + 256 * PEEK (30)
|
||||
70 rem CALL 32831,Y
|
||||
75 HPLOT X * 5 + 140,Y + 10
|
||||
10 HOME
|
||||
15 PRINT CHR$ (4);"BLOAD UNIFP1"
|
||||
20 PRINT CHR$ (4);"BLOAD CONV3P"
|
||||
25 X = 1
|
||||
30 CALL 32768,X
|
||||
35 CALL 24576
|
||||
40 PRINT CHR$ (4);"BLOAD UNIFP2"
|
||||
45 HGR2 : HCOLOR= 3
|
||||
50 FOR X = - 10 TO 10 STEP .2
|
||||
55 CALL 32768,X
|
||||
60 CALL 24576
|
||||
65 Y = PEEK (29) + 256 * PEEK (30)
|
||||
70 rem CALL 32831,Y
|
||||
75 HPLOT X * 5 + 140,Y + 10
|
||||
80 NEXT
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -1,326 +1,326 @@
|
|||
*
|
||||
* Unidisk 3.5 Driver <alfa>
|
||||
*
|
||||
* The target of this project is to use the Unidisk 3.5 drive to perform
|
||||
* specific numerical routines (integers and floating point numbers)
|
||||
* calculation in order to use it as a Apple II co-processor unit.
|
||||
*
|
||||
* Copyright (C) 2015 Riccardo Greco <rigreco.grc@gmail.com>.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*
|
||||
* @com.wudsn.ide.asm.hardware=APPLE2
|
||||
XC
|
||||
** CHKSUM Pointer *
|
||||
PTR equ $08
|
||||
** Protocol Converter Call
|
||||
ZPTempL equ $0006 ;Temporary zero page storage
|
||||
ZPTempH equ $0007
|
||||
** Zero page storage **
|
||||
N1 equ $FA ;25 4 Byte FP FA--FD (FP1)
|
||||
N2 equ $EC ;27 4 Byte FP EC--EF (FP2)
|
||||
RSLT equ $1D ; $7000 ;29
|
||||
*** Monitor routines ***
|
||||
COut equ $FDED ;Console output ASCII
|
||||
CROut equ $FD8E ;Carriage return
|
||||
** Command Code **
|
||||
StatusCmd equ 0
|
||||
** Status Code **
|
||||
StatusUNI equ 5
|
||||
*
|
||||
ControlCmd equ 4
|
||||
** Control Codes **
|
||||
Run equ 5
|
||||
SetDWLoad equ 6
|
||||
DWLoad equ 7
|
||||
*
|
||||
org $6000
|
||||
*****************************************************
|
||||
************** CHKSUM MAIN Routine ******************
|
||||
*
|
||||
;STARTCHK lda #<STARTCHK
|
||||
; sta PTR
|
||||
; lda #>STARTCHK
|
||||
; sta PTR+1
|
||||
; ldy #$00
|
||||
; lda #$00
|
||||
; pha
|
||||
;LOOP pla
|
||||
; eor (PTR),y
|
||||
; pha
|
||||
; inc PTR
|
||||
; bne CHK
|
||||
; inc PTR+1
|
||||
;CHK lda PTR+1
|
||||
; cmp #>PROGEND
|
||||
; bcc LOOP
|
||||
; lda PTR
|
||||
; cmp #<PROGEND
|
||||
; bcc LOOP
|
||||
; beq LOOP
|
||||
;CHKCS pla
|
||||
; cmp CHKSUM
|
||||
; bne ERRCHK
|
||||
***********************************************
|
||||
* Find a Protocol Converter in one of the slots.
|
||||
START jsr FindPC
|
||||
bcs Error
|
||||
*** Set Address ***
|
||||
jsr Dispatch
|
||||
dfb ControlCmd
|
||||
dw SET_ADD
|
||||
*
|
||||
jsr EXEC ; Jump the Error routine
|
||||
rts
|
||||
**************** CHKSUM ERROR Routine ***************
|
||||
*
|
||||
;ERRCHK sta CHKCALC
|
||||
; lda #"E"
|
||||
; jsr COut
|
||||
; rts
|
||||
;CHKCALC dfb $00
|
||||
**************** PROTOCOL CONVERTER ERROR Routine ***
|
||||
Error equ *
|
||||
*
|
||||
* There is either no PC around, or there was no give message
|
||||
*
|
||||
ldx #0
|
||||
err1 equ *
|
||||
lda Message,x
|
||||
beq errout
|
||||
jsr COut
|
||||
inx
|
||||
bne err1
|
||||
*
|
||||
errout equ *
|
||||
rts
|
||||
*
|
||||
Message asc 'NO PC OR NO DEVICE'
|
||||
dfb $8D,0
|
||||
*******************************************************
|
||||
*
|
||||
|
||||
** Set the Input Value first in Dynamic data **
|
||||
** 4 Byte N1 to FP1 **
|
||||
EXEC lda N1 ;X1
|
||||
sta FP1 ; Absolute addressing
|
||||
lda N1+1 ;M1 (1)
|
||||
sta FP1+1
|
||||
lda N1+2 ;M1 (2)
|
||||
sta FP1+2
|
||||
lda N1+3 ;M1 (3)
|
||||
sta FP1+3
|
||||
|
||||
** 4 Byte N2 to FP2 **
|
||||
lda N2 ;X2
|
||||
sta FP2
|
||||
lda N2+1 ;M2 (1)
|
||||
sta FP2+1
|
||||
lda N2+2 ;M2 (2)
|
||||
sta FP2+2
|
||||
lda N2+3 ;M2 (3)
|
||||
sta FP2+3
|
||||
|
||||
*** Download ***
|
||||
jsr Dispatch
|
||||
dfb ControlCmd
|
||||
dw DOWNLOAD
|
||||
** Set Unidisk Registers **
|
||||
;First time execution
|
||||
lda #$00 ; Target the first time entry point
|
||||
sta LowPC_reg ; First time set init value of PC, just for the next execution
|
||||
* The program begin to PC preset to $0500 *
|
||||
*
|
||||
** Execute **
|
||||
jsr Dispatch
|
||||
dfb ControlCmd
|
||||
dw EXE
|
||||
** Read **
|
||||
READ jsr Dispatch
|
||||
dfb StatusCmd
|
||||
dw DParms
|
||||
bcs Error
|
||||
*
|
||||
**** Store Output results in //c ****
|
||||
|
||||
* First time execute *
|
||||
* lda UNIAcc_reg
|
||||
* sta RSLT
|
||||
lda UNIX_reg
|
||||
sta RSLT ; Store the result
|
||||
lda UNIY_reg
|
||||
sta RSLT+1
|
||||
|
||||
** Second time execute **
|
||||
* lda #$3C ; Target the secont time entry point
|
||||
* sta LowPC_reg ; Second time set new value of PC
|
||||
** Execute **
|
||||
* jsr Dispatch
|
||||
* dfb ControlCmd
|
||||
* dw EXE
|
||||
** Read **
|
||||
* jsr Dispatch
|
||||
* dfb StatusCmd
|
||||
* dw DParms
|
||||
* bcs Error
|
||||
|
||||
* Second time execute only to read the latest Byte of FP1*
|
||||
* lda UNIAcc_reg
|
||||
* sta RSLT+3
|
||||
*
|
||||
PROGEND rts
|
||||
CHKSUM chk
|
||||
******************************************************
|
||||
FindPC equ *
|
||||
*
|
||||
* Search slot 7 to slot 1 looking for signature bytes
|
||||
*
|
||||
ldx #7 ;Do for seven slots
|
||||
lda #$C7
|
||||
sta ZPTempH
|
||||
lda #$00
|
||||
sta ZPTempL
|
||||
*
|
||||
newslot equ *
|
||||
ldy #7
|
||||
*
|
||||
again equ *
|
||||
lda (ZPTempL),y
|
||||
cmp sigtab,y ;One for byte signature
|
||||
beq maybe ;Found one signature byte
|
||||
dec ZPTempH
|
||||
dex
|
||||
bne newslot
|
||||
*
|
||||
* if we get here, no PC find
|
||||
sec
|
||||
rts
|
||||
*
|
||||
* if we get here, no byte find on PC
|
||||
maybe equ *
|
||||
dey
|
||||
dey ;if N=1 then all sig bytes OK
|
||||
bpl again
|
||||
* Found PC interface. Set up call address.
|
||||
* we already have high byte ($CN), we need low byte
|
||||
*
|
||||
foundPC equ *
|
||||
lda #$FF
|
||||
sta ZPTempL
|
||||
ldy #0 ;For indirect load
|
||||
lda (ZPTempL),y ;Get the byte
|
||||
*
|
||||
* Now the Acc has the low oreder ProDOS entry point.
|
||||
* The PC entry is three locations past this ...
|
||||
*
|
||||
clc
|
||||
adc #3
|
||||
sta ZPTempL
|
||||
*
|
||||
* Now ZPTempL has PC entry point.
|
||||
* Return with carry clear.
|
||||
*
|
||||
clc
|
||||
rts
|
||||
***********************************************************
|
||||
*
|
||||
* There are the PC signature bytes in their relative order.
|
||||
* The $FF bytes are filler bytes and are not compared.
|
||||
*
|
||||
sigtab dfb $FF,$20,$FF,$00
|
||||
dfb $FF,$03,$FF,$00
|
||||
*
|
||||
Dispatch equ *
|
||||
jmp (ZPTempL) ;Simulate an indirect JSR to PC
|
||||
*
|
||||
*** Status Parameter Set for UNI ***
|
||||
DParms equ *
|
||||
DPParmsCt dfb 3 ;Status calls have three parameters
|
||||
DPUnit dfb 1
|
||||
DPBuffer dw UNI
|
||||
DPStatCode dfb StatusUNI
|
||||
*
|
||||
*
|
||||
*
|
||||
*** Status List UNI ***
|
||||
UNI equ *
|
||||
dfb 0
|
||||
UNIError dfb 0
|
||||
UNIRetries dfb 0
|
||||
UNIAcc_reg dfb 0
|
||||
UNIX_reg dfb 0
|
||||
UNIY_reg dfb 0
|
||||
UNIP_val dfb 0
|
||||
HHH dfb 0
|
||||
*
|
||||
*** Set Address ***
|
||||
SET_ADD equ *
|
||||
dfb 3
|
||||
dfb 1
|
||||
dw CNTL_LIST3
|
||||
dfb SetDWLoad
|
||||
*
|
||||
*** Download ***
|
||||
DOWNLOAD equ *
|
||||
dfb 3
|
||||
dfb 1
|
||||
dw CNTL_LIST4
|
||||
dfb DWLoad
|
||||
*
|
||||
*** Execute ***
|
||||
EXE equ *
|
||||
dfb 3
|
||||
dfb 1
|
||||
dw CNTL_LIST2
|
||||
dfb Run
|
||||
*
|
||||
******** CONTROL LISTS ********
|
||||
*
|
||||
*
|
||||
*** Execute ***
|
||||
CNTL_LIST2 equ *
|
||||
Clow_byte dfb $06
|
||||
Chigh_byte dfb $00
|
||||
AccValue dfb $00 ; Init Value Unidisk Accumulator Register
|
||||
X_reg dfb $00 ; Init Value Unidisk X Register
|
||||
Y_reg dfb $00 ; Init Value Unidisk Y Register
|
||||
ProStatus dfb $00 ; Init Value Unidisk Status Register
|
||||
LowPC_reg dfb $00 ; Init Value Unidisk Program Counter $0500 at eny dowload
|
||||
HighPC_reg dfb $05 ; $05 first execution, $3C second execution
|
||||
*
|
||||
*** Set Address ***
|
||||
CNTL_LIST3 equ *
|
||||
CountL_byte dfb $02
|
||||
CountH_byte dfb $00
|
||||
LByte_Addr dfb $30 ; ORG of Unidisk program, set begin data address $062E
|
||||
HByte_Addr dfb $06
|
||||
*
|
||||
*** Download ***
|
||||
CNTL_LIST4 equ *
|
||||
LenghtL_byte dfb $08 ;<----- Lenght of Unidisk program Lo - Byte 312 byte
|
||||
LenghtH_byte dfb $00 ;<----- Lenght of Unidisk program Hi Byte
|
||||
*
|
||||
**************** Start UNIDISK Program ****************
|
||||
*
|
||||
|
||||
** Input Dynamic Data append in the end of Unidisk routine **
|
||||
FP1 dfb $00
|
||||
dfb $00
|
||||
dfb $00
|
||||
dfb $00
|
||||
*
|
||||
FP2 dfb $00
|
||||
dfb $00
|
||||
dfb $00
|
||||
dfb $00
|
||||
*
|
||||
* Unidisk 3.5 Driver <alfa>
|
||||
*
|
||||
* The target of this project is to use the Unidisk 3.5 drive to perform
|
||||
* specific numerical routines (integers and floating point numbers)
|
||||
* calculation in order to use it as a Apple II co-processor unit.
|
||||
*
|
||||
* Copyright (C) 2015 Riccardo Greco <rigreco.grc@gmail.com>.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*
|
||||
* @com.wudsn.ide.asm.hardware=APPLE2
|
||||
XC
|
||||
** CHKSUM Pointer *
|
||||
PTR equ $08
|
||||
** Protocol Converter Call
|
||||
ZPTempL equ $0006 ;Temporary zero page storage
|
||||
ZPTempH equ $0007
|
||||
** Zero page storage **
|
||||
N1 equ $FA ;25 4 Byte FP FA--FD (FP1)
|
||||
N2 equ $EC ;27 4 Byte FP EC--EF (FP2)
|
||||
RSLT equ $1D ; $7000 ;29
|
||||
*** Monitor routines ***
|
||||
COut equ $FDED ;Console output ASCII
|
||||
CROut equ $FD8E ;Carriage return
|
||||
** Command Code **
|
||||
StatusCmd equ 0
|
||||
** Status Code **
|
||||
StatusUNI equ 5
|
||||
*
|
||||
ControlCmd equ 4
|
||||
** Control Codes **
|
||||
Run equ 5
|
||||
SetDWLoad equ 6
|
||||
DWLoad equ 7
|
||||
*
|
||||
org $6000
|
||||
*****************************************************
|
||||
************** CHKSUM MAIN Routine ******************
|
||||
*
|
||||
;STARTCHK lda #<STARTCHK
|
||||
; sta PTR
|
||||
; lda #>STARTCHK
|
||||
; sta PTR+1
|
||||
; ldy #$00
|
||||
; lda #$00
|
||||
; pha
|
||||
;LOOP pla
|
||||
; eor (PTR),y
|
||||
; pha
|
||||
; inc PTR
|
||||
; bne CHK
|
||||
; inc PTR+1
|
||||
;CHK lda PTR+1
|
||||
; cmp #>PROGEND
|
||||
; bcc LOOP
|
||||
; lda PTR
|
||||
; cmp #<PROGEND
|
||||
; bcc LOOP
|
||||
; beq LOOP
|
||||
;CHKCS pla
|
||||
; cmp CHKSUM
|
||||
; bne ERRCHK
|
||||
***********************************************
|
||||
* Find a Protocol Converter in one of the slots.
|
||||
START jsr FindPC
|
||||
bcs Error
|
||||
*** Set Address ***
|
||||
jsr Dispatch
|
||||
dfb ControlCmd
|
||||
dw SET_ADD
|
||||
*
|
||||
jsr EXEC ; Jump the Error routine
|
||||
rts
|
||||
**************** CHKSUM ERROR Routine ***************
|
||||
*
|
||||
;ERRCHK sta CHKCALC
|
||||
; lda #"E"
|
||||
; jsr COut
|
||||
; rts
|
||||
;CHKCALC dfb $00
|
||||
**************** PROTOCOL CONVERTER ERROR Routine ***
|
||||
Error equ *
|
||||
*
|
||||
* There is either no PC around, or there was no give message
|
||||
*
|
||||
ldx #0
|
||||
err1 equ *
|
||||
lda Message,x
|
||||
beq errout
|
||||
jsr COut
|
||||
inx
|
||||
bne err1
|
||||
*
|
||||
errout equ *
|
||||
rts
|
||||
*
|
||||
Message asc 'NO PC OR NO DEVICE'
|
||||
dfb $8D,0
|
||||
*******************************************************
|
||||
*
|
||||
|
||||
** Set the Input Value first in Dynamic data **
|
||||
** 4 Byte N1 to FP1 **
|
||||
EXEC lda N1 ;X1
|
||||
sta FP1 ; Absolute addressing
|
||||
lda N1+1 ;M1 (1)
|
||||
sta FP1+1
|
||||
lda N1+2 ;M1 (2)
|
||||
sta FP1+2
|
||||
lda N1+3 ;M1 (3)
|
||||
sta FP1+3
|
||||
|
||||
** 4 Byte N2 to FP2 **
|
||||
lda N2 ;X2
|
||||
sta FP2
|
||||
lda N2+1 ;M2 (1)
|
||||
sta FP2+1
|
||||
lda N2+2 ;M2 (2)
|
||||
sta FP2+2
|
||||
lda N2+3 ;M2 (3)
|
||||
sta FP2+3
|
||||
|
||||
*** Download ***
|
||||
jsr Dispatch
|
||||
dfb ControlCmd
|
||||
dw DOWNLOAD
|
||||
** Set Unidisk Registers **
|
||||
;First time execution
|
||||
lda #$00 ; Target the first time entry point
|
||||
sta LowPC_reg ; First time set init value of PC, just for the next execution
|
||||
* The program begin to PC preset to $0500 *
|
||||
*
|
||||
** Execute **
|
||||
jsr Dispatch
|
||||
dfb ControlCmd
|
||||
dw EXE
|
||||
** Read **
|
||||
READ jsr Dispatch
|
||||
dfb StatusCmd
|
||||
dw DParms
|
||||
bcs Error
|
||||
*
|
||||
**** Store Output results in //c ****
|
||||
|
||||
* First time execute *
|
||||
* lda UNIAcc_reg
|
||||
* sta RSLT
|
||||
lda UNIX_reg
|
||||
sta RSLT ; Store the result
|
||||
lda UNIY_reg
|
||||
sta RSLT+1
|
||||
|
||||
** Second time execute **
|
||||
* lda #$3C ; Target the secont time entry point
|
||||
* sta LowPC_reg ; Second time set new value of PC
|
||||
** Execute **
|
||||
* jsr Dispatch
|
||||
* dfb ControlCmd
|
||||
* dw EXE
|
||||
** Read **
|
||||
* jsr Dispatch
|
||||
* dfb StatusCmd
|
||||
* dw DParms
|
||||
* bcs Error
|
||||
|
||||
* Second time execute only to read the latest Byte of FP1*
|
||||
* lda UNIAcc_reg
|
||||
* sta RSLT+3
|
||||
*
|
||||
PROGEND rts
|
||||
CHKSUM chk
|
||||
******************************************************
|
||||
FindPC equ *
|
||||
*
|
||||
* Search slot 7 to slot 1 looking for signature bytes
|
||||
*
|
||||
ldx #7 ;Do for seven slots
|
||||
lda #$C7
|
||||
sta ZPTempH
|
||||
lda #$00
|
||||
sta ZPTempL
|
||||
*
|
||||
newslot equ *
|
||||
ldy #7
|
||||
*
|
||||
again equ *
|
||||
lda (ZPTempL),y
|
||||
cmp sigtab,y ;One for byte signature
|
||||
beq maybe ;Found one signature byte
|
||||
dec ZPTempH
|
||||
dex
|
||||
bne newslot
|
||||
*
|
||||
* if we get here, no PC find
|
||||
sec
|
||||
rts
|
||||
*
|
||||
* if we get here, no byte find on PC
|
||||
maybe equ *
|
||||
dey
|
||||
dey ;if N=1 then all sig bytes OK
|
||||
bpl again
|
||||
* Found PC interface. Set up call address.
|
||||
* we already have high byte ($CN), we need low byte
|
||||
*
|
||||
foundPC equ *
|
||||
lda #$FF
|
||||
sta ZPTempL
|
||||
ldy #0 ;For indirect load
|
||||
lda (ZPTempL),y ;Get the byte
|
||||
*
|
||||
* Now the Acc has the low oreder ProDOS entry point.
|
||||
* The PC entry is three locations past this ...
|
||||
*
|
||||
clc
|
||||
adc #3
|
||||
sta ZPTempL
|
||||
*
|
||||
* Now ZPTempL has PC entry point.
|
||||
* Return with carry clear.
|
||||
*
|
||||
clc
|
||||
rts
|
||||
***********************************************************
|
||||
*
|
||||
* There are the PC signature bytes in their relative order.
|
||||
* The $FF bytes are filler bytes and are not compared.
|
||||
*
|
||||
sigtab dfb $FF,$20,$FF,$00
|
||||
dfb $FF,$03,$FF,$00
|
||||
*
|
||||
Dispatch equ *
|
||||
jmp (ZPTempL) ;Simulate an indirect JSR to PC
|
||||
*
|
||||
*** Status Parameter Set for UNI ***
|
||||
DParms equ *
|
||||
DPParmsCt dfb 3 ;Status calls have three parameters
|
||||
DPUnit dfb 1
|
||||
DPBuffer dw UNI
|
||||
DPStatCode dfb StatusUNI
|
||||
*
|
||||
*
|
||||
*
|
||||
*** Status List UNI ***
|
||||
UNI equ *
|
||||
dfb 0
|
||||
UNIError dfb 0
|
||||
UNIRetries dfb 0
|
||||
UNIAcc_reg dfb 0
|
||||
UNIX_reg dfb 0
|
||||
UNIY_reg dfb 0
|
||||
UNIP_val dfb 0
|
||||
HHH dfb 0
|
||||
*
|
||||
*** Set Address ***
|
||||
SET_ADD equ *
|
||||
dfb 3
|
||||
dfb 1
|
||||
dw CNTL_LIST3
|
||||
dfb SetDWLoad
|
||||
*
|
||||
*** Download ***
|
||||
DOWNLOAD equ *
|
||||
dfb 3
|
||||
dfb 1
|
||||
dw CNTL_LIST4
|
||||
dfb DWLoad
|
||||
*
|
||||
*** Execute ***
|
||||
EXE equ *
|
||||
dfb 3
|
||||
dfb 1
|
||||
dw CNTL_LIST2
|
||||
dfb Run
|
||||
*
|
||||
******** CONTROL LISTS ********
|
||||
*
|
||||
*
|
||||
*** Execute ***
|
||||
CNTL_LIST2 equ *
|
||||
Clow_byte dfb $06
|
||||
Chigh_byte dfb $00
|
||||
AccValue dfb $00 ; Init Value Unidisk Accumulator Register
|
||||
X_reg dfb $00 ; Init Value Unidisk X Register
|
||||
Y_reg dfb $00 ; Init Value Unidisk Y Register
|
||||
ProStatus dfb $00 ; Init Value Unidisk Status Register
|
||||
LowPC_reg dfb $00 ; Init Value Unidisk Program Counter $0500 at eny dowload
|
||||
HighPC_reg dfb $05 ; $05 first execution, $3C second execution
|
||||
*
|
||||
*** Set Address ***
|
||||
CNTL_LIST3 equ *
|
||||
CountL_byte dfb $02
|
||||
CountH_byte dfb $00
|
||||
LByte_Addr dfb $30 ; ORG of Unidisk program, set begin data address $062E
|
||||
HByte_Addr dfb $06
|
||||
*
|
||||
*** Download ***
|
||||
CNTL_LIST4 equ *
|
||||
LenghtL_byte dfb $08 ;<----- Lenght of Unidisk program Lo - Byte 312 byte
|
||||
LenghtH_byte dfb $00 ;<----- Lenght of Unidisk program Hi Byte
|
||||
*
|
||||
**************** Start UNIDISK Program ****************
|
||||
*
|
||||
|
||||
** Input Dynamic Data append in the end of Unidisk routine **
|
||||
FP1 dfb $00
|
||||
dfb $00
|
||||
dfb $00
|
||||
dfb $00
|
||||
*
|
||||
FP2 dfb $00
|
||||
dfb $00
|
||||
dfb $00
|
||||
dfb $00
|
||||
**************** End UNIDISK Program ****************
|
|
@ -1,351 +1,351 @@
|
|||
------+----------------------+-------------+----+---------+------+-----------------------+-------------------------------------------------------------------
|
||||
Line | # File Line | Line Type | MX | Reloc | Size | Address Object Code | Source Code
|
||||
------+----------------------+-------------+----+---------+------+-----------------------+-------------------------------------------------------------------
|
||||
1 | 1 UniFP2.asm 1 | Comment | 11 | | 0 | 00/8000 | *
|
||||
2 | 1 UniFP2.asm 2 | Comment | 11 | | 0 | 00/8000 | * Unidisk 3.5 Driver <alfa>
|
||||
3 | 1 UniFP2.asm 3 | Comment | 11 | | 0 | 00/8000 | *
|
||||
4 | 1 UniFP2.asm 4 | Comment | 11 | | 0 | 00/8000 | * The target of this project is to use the Unidisk 3.5 drive to perform
|
||||
5 | 1 UniFP2.asm 5 | Comment | 11 | | 0 | 00/8000 | * specific numerical routines (integers and floating point numbers)
|
||||
6 | 1 UniFP2.asm 6 | Comment | 11 | | 0 | 00/8000 | * calculation in order to use it as a Apple II co-processor unit.
|
||||
7 | 1 UniFP2.asm 7 | Comment | 11 | | 0 | 00/8000 | *
|
||||
8 | 1 UniFP2.asm 8 | Comment | 11 | | 0 | 00/8000 | * Copyright (C) 2015 Riccardo Greco <rigreco.grc@gmail.com>.
|
||||
9 | 1 UniFP2.asm 9 | Comment | 11 | | 0 | 00/8000 | *
|
||||
10 | 1 UniFP2.asm 10 | Comment | 11 | | 0 | 00/8000 | * This program is free software: you can redistribute it and/or modify
|
||||
11 | 1 UniFP2.asm 11 | Comment | 11 | | 0 | 00/8000 | * it under the terms of the GNU General Public License as published by
|
||||
12 | 1 UniFP2.asm 12 | Comment | 11 | | 0 | 00/8000 | * the Free Software Foundation, either version 3 of the License, or
|
||||
13 | 1 UniFP2.asm 13 | Comment | 11 | | 0 | 00/8000 | * (at your option) any later version.
|
||||
14 | 1 UniFP2.asm 14 | Comment | 11 | | 0 | 00/8000 | * This program is distributed in the hope that it will be useful,
|
||||
15 | 1 UniFP2.asm 15 | Comment | 11 | | 0 | 00/8000 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
16 | 1 UniFP2.asm 16 | Comment | 11 | | 0 | 00/8000 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
17 | 1 UniFP2.asm 17 | Comment | 11 | | 0 | 00/8000 | * GNU General Public License for more details.
|
||||
18 | 1 UniFP2.asm 18 | Comment | 11 | | 0 | 00/8000 | * You should have received a copy of the GNU General Public License
|
||||
19 | 1 UniFP2.asm 19 | Comment | 11 | | 0 | 00/8000 | * along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
20 | 1 UniFP2.asm 20 | Comment | 11 | | 0 | 00/8000 | *
|
||||
21 | 1 UniFP2.asm 21 | Comment | 11 | | 0 | 00/8000 | *
|
||||
22 | 1 UniFP2.asm 22 | Comment | 11 | | 0 | 00/8000 | * @com.wudsn.ide.asm.hardware=APPLE2
|
||||
23 | 1 UniFP2.asm 23 | Directive | 11 | | 0 | 00/8000 | XC
|
||||
24 | 1 UniFP2.asm 24 | Comment | 11 | | 0 | 00/8000 | ** CHKSUM Pointer *
|
||||
25 | 1 UniFP2.asm 25 | Equivalence | 11 | | 0 | 00/8000 | PTR equ $08
|
||||
26 | 1 UniFP2.asm 26 | Comment | 11 | | 0 | 00/8000 | ** Protocol Converter Call
|
||||
27 | 1 UniFP2.asm 27 | Equivalence | 11 | | 0 | 00/8000 | ZPTempL equ $0006 ;Temporary zero page storage
|
||||
28 | 1 UniFP2.asm 28 | Equivalence | 11 | | 0 | 00/8000 | ZPTempH equ $0007
|
||||
29 | 1 UniFP2.asm 29 | Comment | 11 | | 0 | 00/8000 | ** Zero page storage **
|
||||
30 | 1 UniFP2.asm 30 | Equivalence | 11 | | 0 | 00/8000 | N1 equ $FA ;25 4 Byte FP FA--FD (FP1)
|
||||
31 | 1 UniFP2.asm 31 | Equivalence | 11 | | 0 | 00/8000 | N2 equ $EC ;27 4 Byte FP EC--EF (FP2)
|
||||
32 | 1 UniFP2.asm 32 | Equivalence | 11 | | 0 | 00/8000 | RSLT equ $1D ; $7000 ;29
|
||||
33 | 1 UniFP2.asm 33 | Comment | 11 | | 0 | 00/8000 | *** Monitor routines ***
|
||||
34 | 1 UniFP2.asm 34 | Equivalence | 11 | | 0 | 00/8000 | COut equ $FDED ;Console output ASCII
|
||||
35 | 1 UniFP2.asm 35 | Equivalence | 11 | | 0 | 00/8000 | CROut equ $FD8E ;Carriage return
|
||||
36 | 1 UniFP2.asm 36 | Comment | 11 | | 0 | 00/8000 | ** Command Code **
|
||||
37 | 1 UniFP2.asm 37 | Equivalence | 11 | | 0 | 00/8000 | StatusCmd equ 0
|
||||
38 | 1 UniFP2.asm 38 | Comment | 11 | | 0 | 00/8000 | ** Status Code **
|
||||
39 | 1 UniFP2.asm 39 | Equivalence | 11 | | 0 | 00/8000 | StatusUNI equ 5
|
||||
40 | 1 UniFP2.asm 40 | Comment | 11 | | 0 | 00/8000 | *
|
||||
41 | 1 UniFP2.asm 41 | Equivalence | 11 | | 0 | 00/8000 | ControlCmd equ 4
|
||||
42 | 1 UniFP2.asm 42 | Comment | 11 | | 0 | 00/8000 | ** Control Codes **
|
||||
43 | 1 UniFP2.asm 43 | Equivalence | 11 | | 0 | 00/8000 | Run equ 5
|
||||
44 | 1 UniFP2.asm 44 | Equivalence | 11 | | 0 | 00/8000 | SetDWLoad equ 6
|
||||
45 | 1 UniFP2.asm 45 | Equivalence | 11 | | 0 | 00/8000 | DWLoad equ 7
|
||||
46 | 1 UniFP2.asm 46 | Comment | 11 | | 0 | 00/8000 | *
|
||||
47 | 1 UniFP2.asm 47 | Directive | 11 | | 0 | 00/8000 | org $6000
|
||||
48 | 1 UniFP2.asm 48 | Comment | 11 | | 0 | 00/6000 | *****************************************************
|
||||
49 | 1 UniFP2.asm 49 | Comment | 11 | | 0 | 00/6000 | ************** CHKSUM MAIN Routine ******************
|
||||
50 | 1 UniFP2.asm 50 | Comment | 11 | | 0 | 00/6000 | *
|
||||
51 | 1 UniFP2.asm 51 | Comment | 11 | | 0 | 00/6000 | ;STARTCHK lda #<STARTCHK
|
||||
52 | 1 UniFP2.asm 52 | Comment | 11 | | 0 | 00/6000 | ; sta PTR
|
||||
53 | 1 UniFP2.asm 53 | Comment | 11 | | 0 | 00/6000 | ; lda #>STARTCHK
|
||||
54 | 1 UniFP2.asm 54 | Comment | 11 | | 0 | 00/6000 | ; sta PTR+1
|
||||
55 | 1 UniFP2.asm 55 | Comment | 11 | | 0 | 00/6000 | ; ldy #$00
|
||||
56 | 1 UniFP2.asm 56 | Comment | 11 | | 0 | 00/6000 | ; lda #$00
|
||||
57 | 1 UniFP2.asm 57 | Comment | 11 | | 0 | 00/6000 | ; pha
|
||||
58 | 1 UniFP2.asm 58 | Comment | 11 | | 0 | 00/6000 | ;LOOP pla
|
||||
59 | 1 UniFP2.asm 59 | Comment | 11 | | 0 | 00/6000 | ; eor (PTR),y
|
||||
60 | 1 UniFP2.asm 60 | Comment | 11 | | 0 | 00/6000 | ; pha
|
||||
61 | 1 UniFP2.asm 61 | Comment | 11 | | 0 | 00/6000 | ; inc PTR
|
||||
62 | 1 UniFP2.asm 62 | Comment | 11 | | 0 | 00/6000 | ; bne CHK
|
||||
63 | 1 UniFP2.asm 63 | Comment | 11 | | 0 | 00/6000 | ; inc PTR+1
|
||||
64 | 1 UniFP2.asm 64 | Comment | 11 | | 0 | 00/6000 | ;CHK lda PTR+1
|
||||
65 | 1 UniFP2.asm 65 | Comment | 11 | | 0 | 00/6000 | ; cmp #>PROGEND
|
||||
66 | 1 UniFP2.asm 66 | Comment | 11 | | 0 | 00/6000 | ; bcc LOOP
|
||||
67 | 1 UniFP2.asm 67 | Comment | 11 | | 0 | 00/6000 | ; lda PTR
|
||||
68 | 1 UniFP2.asm 68 | Comment | 11 | | 0 | 00/6000 | ; cmp #<PROGEND
|
||||
69 | 1 UniFP2.asm 69 | Comment | 11 | | 0 | 00/6000 | ; bcc LOOP
|
||||
70 | 1 UniFP2.asm 70 | Comment | 11 | | 0 | 00/6000 | ; beq LOOP
|
||||
71 | 1 UniFP2.asm 71 | Comment | 11 | | 0 | 00/6000 | ;CHKCS pla
|
||||
72 | 1 UniFP2.asm 72 | Comment | 11 | | 0 | 00/6000 | ; cmp CHKSUM
|
||||
73 | 1 UniFP2.asm 73 | Comment | 11 | | 0 | 00/6000 | ; bne ERRCHK
|
||||
74 | 1 UniFP2.asm 74 | Comment | 11 | | 0 | 00/6000 | ***********************************************
|
||||
75 | 1 UniFP2.asm 75 | Comment | 11 | | 0 | 00/6000 | * Find a Protocol Converter in one of the slots.
|
||||
76 | 1 UniFP2.asm 76 | Code | 11 | | 3 | 00/6000 : 20 7E 60 | START jsr {ozunid_4}
|
||||
77 | 1 UniFP2.asm 77 | Code | 11 | | 2 | 00/6003 : B0 0A | bcs {ozunid_1}
|
||||
78 | 1 UniFP2.asm 78 | Comment | 11 | | 0 | 00/6005 | *** Set Address ***
|
||||
79 | 1 UniFP2.asm 79 | Code | 11 | | 3 | 00/6005 : 20 B3 60 | jsr {ozunid_9}
|
||||
80 | 1 UniFP2.asm 80 | Data | 11 | | 1 | 00/6008 : 04 | dfb {4}
|
||||
81 | 1 UniFP2.asm 81 | Data | 11 | | 2 | 00/6009 : C3 60 | dw {ozunid_12}
|
||||
82 | 1 UniFP2.asm 82 | Comment | 11 | | 0 | 00/600B | *
|
||||
83 | 1 UniFP2.asm 83 | Code | 11 | | 3 | 00/600B : 20 31 60 | jsr EXEC ; Jump the Error routine
|
||||
84 | 1 UniFP2.asm 84 | Code | 11 | | 1 | 00/600E : 60 | rts
|
||||
85 | 1 UniFP2.asm 85 | Comment | 11 | | 0 | 00/600F | **************** CHKSUM ERROR Routine ***************
|
||||
86 | 1 UniFP2.asm 86 | Comment | 11 | | 0 | 00/600F | *
|
||||
87 | 1 UniFP2.asm 87 | Comment | 11 | | 0 | 00/600F | ;ERRCHK sta CHKCALC
|
||||
88 | 1 UniFP2.asm 88 | Comment | 11 | | 0 | 00/600F | ; lda #"E"
|
||||
89 | 1 UniFP2.asm 89 | Comment | 11 | | 0 | 00/600F | ; jsr COut
|
||||
90 | 1 UniFP2.asm 90 | Comment | 11 | | 0 | 00/600F | ; rts
|
||||
91 | 1 UniFP2.asm 91 | Comment | 11 | | 0 | 00/600F | ;CHKCALC dfb $00
|
||||
92 | 1 UniFP2.asm 92 | Comment | 11 | | 0 | 00/600F | **************** PROTOCOL CONVERTER ERROR Routine ***
|
||||
93 | 1 UniFP2.asm 93 | Empty | 11 | | 0 | 00/600F | ozunid_1
|
||||
94 | 1 UniFP2.asm 93 | Equivalence | 11 | | 0 | 00/600F | Error equ ozunid_1
|
||||
95 | 1 UniFP2.asm 94 | Comment | 11 | | 0 | 00/600F | *
|
||||
96 | 1 UniFP2.asm 95 | Comment | 11 | | 0 | 00/600F | * There is either no PC around, or there was no give message
|
||||
97 | 1 UniFP2.asm 96 | Comment | 11 | | 0 | 00/600F | *
|
||||
98 | 1 UniFP2.asm 97 | Code | 11 | | 2 | 00/600F : A2 00 | ldx #0
|
||||
99 | 1 UniFP2.asm 98 | Empty | 11 | | 0 | 00/6011 | ozunid_2
|
||||
100 | 1 UniFP2.asm 98 | Equivalence | 11 | | 0 | 00/6011 | err1 equ ozunid_2
|
||||
101 | 1 UniFP2.asm 99 | Code | 11 | | 3 | 00/6011 : BD 1D 60 | lda Message,x
|
||||
102 | 1 UniFP2.asm 100 | Code | 11 | | 2 | 00/6014 : F0 06 | beq {ozunid_3}
|
||||
103 | 1 UniFP2.asm 101 | Code | 11 | | 3 | 00/6016 : 20 ED FD | jsr {$FDED}
|
||||
104 | 1 UniFP2.asm 102 | Code | 11 | | 1 | 00/6019 : E8 | inx
|
||||
105 | 1 UniFP2.asm 103 | Code | 11 | | 2 | 00/601A : D0 F5 | bne {ozunid_2}
|
||||
106 | 1 UniFP2.asm 104 | Comment | 11 | | 0 | 00/601C | *
|
||||
107 | 1 UniFP2.asm 105 | Empty | 11 | | 0 | 00/601C | ozunid_3
|
||||
108 | 1 UniFP2.asm 105 | Equivalence | 11 | | 0 | 00/601C | errout equ ozunid_3
|
||||
109 | 1 UniFP2.asm 106 | Code | 11 | | 1 | 00/601C : 60 | rts
|
||||
110 | 1 UniFP2.asm 107 | Comment | 11 | | 0 | 00/601D | *
|
||||
111 | 1 UniFP2.asm 108 | Data | 11 | | 18 | 00/601D : 4E 4F 20 50 | Message asc 'NO PC OR NO DEVICE'
|
||||
| | | | | | 43 20 4F 52 |
|
||||
| | | | | | 20 4E 4F 20 |
|
||||
| | | | | | 44 45 56 49 |
|
||||
| | | | | | 43 45 |
|
||||
112 | 1 UniFP2.asm 109 | Data | 11 | | 2 | 00/602F : 8D 00 | dfb $8D,0
|
||||
113 | 1 UniFP2.asm 110 | Comment | 11 | | 0 | 00/6031 | *******************************************************
|
||||
114 | 1 UniFP2.asm 111 | Comment | 11 | | 0 | 00/6031 | *
|
||||
115 | 1 UniFP2.asm 112 | Empty | 11 | | 0 | 00/6031 |
|
||||
116 | 1 UniFP2.asm 113 | Comment | 11 | | 0 | 00/6031 | ** Set the Input Value first in Dynamic data **
|
||||
117 | 1 UniFP2.asm 114 | Comment | 11 | | 0 | 00/6031 | ** 4 Byte N1 to FP1 **
|
||||
118 | 1 UniFP2.asm 115 | Code | 11 | | 2 | 00/6031 : A5 FA | EXEC lda {$FA} ;X1
|
||||
119 | 1 UniFP2.asm 116 | Code | 11 | | 3 | 00/6033 : 8D E0 60 | sta FP1 ; Absolute addressing
|
||||
120 | 1 UniFP2.asm 117 | Code | 11 | | 2 | 00/6036 : A5 FB | lda {$FA}+1 ;M1 (1)
|
||||
121 | 1 UniFP2.asm 118 | Code | 11 | | 3 | 00/6038 : 8D E1 60 | sta FP1+1
|
||||
122 | 1 UniFP2.asm 119 | Code | 11 | | 2 | 00/603B : A5 FC | lda {$FA}+2 ;M1 (2)
|
||||
123 | 1 UniFP2.asm 120 | Code | 11 | | 3 | 00/603D : 8D E2 60 | sta FP1+2
|
||||
124 | 1 UniFP2.asm 121 | Code | 11 | | 2 | 00/6040 : A5 FD | lda {$FA}+3 ;M1 (3)
|
||||
125 | 1 UniFP2.asm 122 | Code | 11 | | 3 | 00/6042 : 8D E3 60 | sta FP1+3
|
||||
126 | 1 UniFP2.asm 123 | Empty | 11 | | 0 | 00/6045 |
|
||||
127 | 1 UniFP2.asm 124 | Comment | 11 | | 0 | 00/6045 | ** 4 Byte N2 to FP2 **
|
||||
128 | 1 UniFP2.asm 125 | Code | 11 | | 2 | 00/6045 : A5 EC | lda {$EC} ;X2
|
||||
129 | 1 UniFP2.asm 126 | Code | 11 | | 3 | 00/6047 : 8D E4 60 | sta FP2
|
||||
130 | 1 UniFP2.asm 127 | Code | 11 | | 2 | 00/604A : A5 ED | lda {$EC}+1 ;M2 (1)
|
||||
131 | 1 UniFP2.asm 128 | Code | 11 | | 3 | 00/604C : 8D E5 60 | sta FP2+1
|
||||
132 | 1 UniFP2.asm 129 | Code | 11 | | 2 | 00/604F : A5 EE | lda {$EC}+2 ;M2 (2)
|
||||
133 | 1 UniFP2.asm 130 | Code | 11 | | 3 | 00/6051 : 8D E6 60 | sta FP2+2
|
||||
134 | 1 UniFP2.asm 131 | Code | 11 | | 2 | 00/6054 : A5 EF | lda {$EC}+3 ;M2 (3)
|
||||
135 | 1 UniFP2.asm 132 | Code | 11 | | 3 | 00/6056 : 8D E7 60 | sta FP2+3
|
||||
136 | 1 UniFP2.asm 133 | Empty | 11 | | 0 | 00/6059 |
|
||||
137 | 1 UniFP2.asm 134 | Comment | 11 | | 0 | 00/6059 | *** Download ***
|
||||
138 | 1 UniFP2.asm 135 | Code | 11 | | 3 | 00/6059 : 20 B3 60 | jsr {ozunid_9}
|
||||
139 | 1 UniFP2.asm 136 | Data | 11 | | 1 | 00/605C : 04 | dfb {4}
|
||||
140 | 1 UniFP2.asm 137 | Data | 11 | | 2 | 00/605D : C8 60 | dw {ozunid_13}
|
||||
141 | 1 UniFP2.asm 138 | Comment | 11 | | 0 | 00/605F | ** Set Unidisk Registers **
|
||||
142 | 1 UniFP2.asm 139 | Comment | 11 | | 0 | 00/605F | ;First time execution
|
||||
143 | 1 UniFP2.asm 140 | Code | 11 | | 2 | 00/605F : A9 00 | lda #$00 ; Target the first time entry point
|
||||
144 | 1 UniFP2.asm 141 | Code | 11 | | 3 | 00/6061 : 8D D8 60 | sta LowPC_reg ; First time set init value of PC, just for the next execution
|
||||
145 | 1 UniFP2.asm 142 | Comment | 11 | | 0 | 00/6064 | * The program begin to PC preset to $0500 *
|
||||
146 | 1 UniFP2.asm 143 | Comment | 11 | | 0 | 00/6064 | *
|
||||
147 | 1 UniFP2.asm 144 | Comment | 11 | | 0 | 00/6064 | ** Execute **
|
||||
148 | 1 UniFP2.asm 145 | Code | 11 | | 3 | 00/6064 : 20 B3 60 | jsr {ozunid_9}
|
||||
149 | 1 UniFP2.asm 146 | Data | 11 | | 1 | 00/6067 : 04 | dfb {4}
|
||||
150 | 1 UniFP2.asm 147 | Data | 11 | | 2 | 00/6068 : CD 60 | dw {ozunid_14}
|
||||
151 | 1 UniFP2.asm 148 | Comment | 11 | | 0 | 00/606A | ** Read **
|
||||
152 | 1 UniFP2.asm 149 | Code | 11 | | 3 | 00/606A : 20 B3 60 | READ jsr {ozunid_9}
|
||||
153 | 1 UniFP2.asm 150 | Data | 11 | | 1 | 00/606D : 00 | dfb {0}
|
||||
154 | 1 UniFP2.asm 151 | Data | 11 | | 2 | 00/606E : B6 60 | dw {ozunid_10}
|
||||
155 | 1 UniFP2.asm 152 | Code | 11 | | 2 | 00/6070 : B0 9D | bcs {ozunid_1}
|
||||
156 | 1 UniFP2.asm 153 | Comment | 11 | | 0 | 00/6072 | *
|
||||
157 | 1 UniFP2.asm 154 | Comment | 11 | | 0 | 00/6072 | **** Store Output results in //c ****
|
||||
158 | 1 UniFP2.asm 155 | Empty | 11 | | 0 | 00/6072 |
|
||||
159 | 1 UniFP2.asm 156 | Comment | 11 | | 0 | 00/6072 | * First time execute *
|
||||
160 | 1 UniFP2.asm 157 | Comment | 11 | | 0 | 00/6072 | * lda UNIAcc_reg
|
||||
161 | 1 UniFP2.asm 158 | Comment | 11 | | 0 | 00/6072 | * sta RSLT
|
||||
162 | 1 UniFP2.asm 159 | Code | 11 | | 3 | 00/6072 : AD BF 60 | lda UNIX_reg
|
||||
163 | 1 UniFP2.asm 160 | Code | 11 | | 2 | 00/6075 : 85 1D | sta {$1D} ; Store the result
|
||||
164 | 1 UniFP2.asm 161 | Code | 11 | | 3 | 00/6077 : AD C0 60 | lda UNIY_reg
|
||||
165 | 1 UniFP2.asm 162 | Code | 11 | | 2 | 00/607A : 85 1E | sta {$1D}+1
|
||||
166 | 1 UniFP2.asm 163 | Empty | 11 | | 0 | 00/607C |
|
||||
167 | 1 UniFP2.asm 164 | Comment | 11 | | 0 | 00/607C | ** Second time execute **
|
||||
168 | 1 UniFP2.asm 165 | Comment | 11 | | 0 | 00/607C | * lda #$3C ; Target the secont time entry point
|
||||
169 | 1 UniFP2.asm 166 | Comment | 11 | | 0 | 00/607C | * sta LowPC_reg ; Second time set new value of PC
|
||||
170 | 1 UniFP2.asm 167 | Comment | 11 | | 0 | 00/607C | ** Execute **
|
||||
171 | 1 UniFP2.asm 168 | Comment | 11 | | 0 | 00/607C | * jsr Dispatch
|
||||
172 | 1 UniFP2.asm 169 | Comment | 11 | | 0 | 00/607C | * dfb ControlCmd
|
||||
173 | 1 UniFP2.asm 170 | Comment | 11 | | 0 | 00/607C | * dw EXE
|
||||
174 | 1 UniFP2.asm 171 | Comment | 11 | | 0 | 00/607C | ** Read **
|
||||
175 | 1 UniFP2.asm 172 | Comment | 11 | | 0 | 00/607C | * jsr Dispatch
|
||||
176 | 1 UniFP2.asm 173 | Comment | 11 | | 0 | 00/607C | * dfb StatusCmd
|
||||
177 | 1 UniFP2.asm 174 | Comment | 11 | | 0 | 00/607C | * dw DParms
|
||||
178 | 1 UniFP2.asm 175 | Comment | 11 | | 0 | 00/607C | * bcs Error
|
||||
179 | 1 UniFP2.asm 176 | Empty | 11 | | 0 | 00/607C |
|
||||
180 | 1 UniFP2.asm 177 | Comment | 11 | | 0 | 00/607C | * Second time execute only to read the latest Byte of FP1*
|
||||
181 | 1 UniFP2.asm 178 | Comment | 11 | | 0 | 00/607C | * lda UNIAcc_reg
|
||||
182 | 1 UniFP2.asm 179 | Comment | 11 | | 0 | 00/607C | * sta RSLT+3
|
||||
183 | 1 UniFP2.asm 180 | Comment | 11 | | 0 | 00/607C | *
|
||||
184 | 1 UniFP2.asm 181 | Code | 11 | | 1 | 00/607C : 60 | PROGEND rts
|
||||
185 | 1 UniFP2.asm 182 | Data | 11 | | 1 | 00/607D : 00 | CHKSUM chk
|
||||
186 | 1 UniFP2.asm 183 | Comment | 11 | | 0 | 00/607E | ******************************************************
|
||||
187 | 1 UniFP2.asm 184 | Empty | 11 | | 0 | 00/607E | ozunid_4
|
||||
188 | 1 UniFP2.asm 184 | Equivalence | 11 | | 0 | 00/607E | FindPC equ ozunid_4
|
||||
189 | 1 UniFP2.asm 185 | Comment | 11 | | 0 | 00/607E | *
|
||||
190 | 1 UniFP2.asm 186 | Comment | 11 | | 0 | 00/607E | * Search slot 7 to slot 1 looking for signature bytes
|
||||
191 | 1 UniFP2.asm 187 | Comment | 11 | | 0 | 00/607E | *
|
||||
192 | 1 UniFP2.asm 188 | Code | 11 | | 2 | 00/607E : A2 07 | ldx #7 ;Do for seven slots
|
||||
193 | 1 UniFP2.asm 189 | Code | 11 | | 2 | 00/6080 : A9 C7 | lda #$C7
|
||||
194 | 1 UniFP2.asm 190 | Code | 11 | | 2 | 00/6082 : 85 07 | sta {$0007}
|
||||
195 | 1 UniFP2.asm 191 | Code | 11 | | 2 | 00/6084 : A9 00 | lda #$00
|
||||
196 | 1 UniFP2.asm 192 | Code | 11 | | 2 | 00/6086 : 85 06 | sta {$0006}
|
||||
197 | 1 UniFP2.asm 193 | Comment | 11 | | 0 | 00/6088 | *
|
||||
198 | 1 UniFP2.asm 194 | Empty | 11 | | 0 | 00/6088 | ozunid_5
|
||||
199 | 1 UniFP2.asm 194 | Equivalence | 11 | | 0 | 00/6088 | newslot equ ozunid_5
|
||||
200 | 1 UniFP2.asm 195 | Code | 11 | | 2 | 00/6088 : A0 07 | ldy #7
|
||||
201 | 1 UniFP2.asm 196 | Comment | 11 | | 0 | 00/608A | *
|
||||
202 | 1 UniFP2.asm 197 | Empty | 11 | | 0 | 00/608A | ozunid_6
|
||||
203 | 1 UniFP2.asm 197 | Equivalence | 11 | | 0 | 00/608A | again equ ozunid_6
|
||||
204 | 1 UniFP2.asm 198 | Code | 11 | | 2 | 00/608A : B1 06 | lda ({$0006}),y
|
||||
205 | 1 UniFP2.asm 199 | Code | 11 | | 3 | 00/608C : D9 AB 60 | cmp sigtab,y ;One for byte signature
|
||||
206 | 1 UniFP2.asm 200 | Code | 11 | | 2 | 00/608F : F0 07 | beq {ozunid_7} ;Found one signature byte
|
||||
207 | 1 UniFP2.asm 201 | Code | 11 | | 2 | 00/6091 : C6 07 | dec {$0007}
|
||||
208 | 1 UniFP2.asm 202 | Code | 11 | | 1 | 00/6093 : CA | dex
|
||||
209 | 1 UniFP2.asm 203 | Code | 11 | | 2 | 00/6094 : D0 F2 | bne {ozunid_5}
|
||||
210 | 1 UniFP2.asm 204 | Comment | 11 | | 0 | 00/6096 | *
|
||||
211 | 1 UniFP2.asm 205 | Comment | 11 | | 0 | 00/6096 | * if we get here, no PC find
|
||||
212 | 1 UniFP2.asm 206 | Code | 11 | | 1 | 00/6096 : 38 | sec
|
||||
213 | 1 UniFP2.asm 207 | Code | 11 | | 1 | 00/6097 : 60 | rts
|
||||
214 | 1 UniFP2.asm 208 | Comment | 11 | | 0 | 00/6098 | *
|
||||
215 | 1 UniFP2.asm 209 | Comment | 11 | | 0 | 00/6098 | * if we get here, no byte find on PC
|
||||
216 | 1 UniFP2.asm 210 | Empty | 11 | | 0 | 00/6098 | ozunid_7
|
||||
217 | 1 UniFP2.asm 210 | Equivalence | 11 | | 0 | 00/6098 | maybe equ ozunid_7
|
||||
218 | 1 UniFP2.asm 211 | Code | 11 | | 1 | 00/6098 : 88 | dey
|
||||
219 | 1 UniFP2.asm 212 | Code | 11 | | 1 | 00/6099 : 88 | dey ;if N=1 then all sig bytes OK
|
||||
220 | 1 UniFP2.asm 213 | Code | 11 | | 2 | 00/609A : 10 EE | bpl {ozunid_6}
|
||||
221 | 1 UniFP2.asm 214 | Comment | 11 | | 0 | 00/609C | * Found PC interface. Set up call address.
|
||||
222 | 1 UniFP2.asm 215 | Comment | 11 | | 0 | 00/609C | * we already have high byte ($CN), we need low byte
|
||||
223 | 1 UniFP2.asm 216 | Comment | 11 | | 0 | 00/609C | *
|
||||
224 | 1 UniFP2.asm 217 | Empty | 11 | | 0 | 00/609C | ozunid_8
|
||||
225 | 1 UniFP2.asm 217 | Equivalence | 11 | | 0 | 00/609C | foundPC equ ozunid_8
|
||||
226 | 1 UniFP2.asm 218 | Code | 11 | | 2 | 00/609C : A9 FF | lda #$FF
|
||||
227 | 1 UniFP2.asm 219 | Code | 11 | | 2 | 00/609E : 85 06 | sta {$0006}
|
||||
228 | 1 UniFP2.asm 220 | Code | 11 | | 2 | 00/60A0 : A0 00 | ldy #0 ;For indirect load
|
||||
229 | 1 UniFP2.asm 221 | Code | 11 | | 2 | 00/60A2 : B1 06 | lda ({$0006}),y ;Get the byte
|
||||
230 | 1 UniFP2.asm 222 | Comment | 11 | | 0 | 00/60A4 | *
|
||||
231 | 1 UniFP2.asm 223 | Comment | 11 | | 0 | 00/60A4 | * Now the Acc has the low oreder ProDOS entry point.
|
||||
232 | 1 UniFP2.asm 224 | Comment | 11 | | 0 | 00/60A4 | * The PC entry is three locations past this ...
|
||||
233 | 1 UniFP2.asm 225 | Comment | 11 | | 0 | 00/60A4 | *
|
||||
234 | 1 UniFP2.asm 226 | Code | 11 | | 1 | 00/60A4 : 18 | clc
|
||||
235 | 1 UniFP2.asm 227 | Code | 11 | | 2 | 00/60A5 : 69 03 | adc #3
|
||||
236 | 1 UniFP2.asm 228 | Code | 11 | | 2 | 00/60A7 : 85 06 | sta {$0006}
|
||||
237 | 1 UniFP2.asm 229 | Comment | 11 | | 0 | 00/60A9 | *
|
||||
238 | 1 UniFP2.asm 230 | Comment | 11 | | 0 | 00/60A9 | * Now ZPTempL has PC entry point.
|
||||
239 | 1 UniFP2.asm 231 | Comment | 11 | | 0 | 00/60A9 | * Return with carry clear.
|
||||
240 | 1 UniFP2.asm 232 | Comment | 11 | | 0 | 00/60A9 | *
|
||||
241 | 1 UniFP2.asm 233 | Code | 11 | | 1 | 00/60A9 : 18 | clc
|
||||
242 | 1 UniFP2.asm 234 | Code | 11 | | 1 | 00/60AA : 60 | rts
|
||||
243 | 1 UniFP2.asm 235 | Comment | 11 | | 0 | 00/60AB | ***********************************************************
|
||||
244 | 1 UniFP2.asm 236 | Comment | 11 | | 0 | 00/60AB | *
|
||||
245 | 1 UniFP2.asm 237 | Comment | 11 | | 0 | 00/60AB | * There are the PC signature bytes in their relative order.
|
||||
246 | 1 UniFP2.asm 238 | Comment | 11 | | 0 | 00/60AB | * The $FF bytes are filler bytes and are not compared.
|
||||
247 | 1 UniFP2.asm 239 | Comment | 11 | | 0 | 00/60AB | *
|
||||
248 | 1 UniFP2.asm 240 | Data | 11 | | 4 | 00/60AB : FF 20 FF 00 | sigtab dfb $FF,$20,$FF,$00
|
||||
249 | 1 UniFP2.asm 241 | Data | 11 | | 4 | 00/60AF : FF 03 FF 00 | dfb $FF,$03,$FF,$00
|
||||
250 | 1 UniFP2.asm 242 | Comment | 11 | | 0 | 00/60B3 | *
|
||||
251 | 1 UniFP2.asm 243 | Empty | 11 | | 0 | 00/60B3 | ozunid_9
|
||||
252 | 1 UniFP2.asm 243 | Equivalence | 11 | | 0 | 00/60B3 | Dispatch equ ozunid_9
|
||||
253 | 1 UniFP2.asm 244 | Code | 11 | | 3 | 00/60B3 : 6C 06 00 | jmp ({$0006}) ;Simulate an indirect JSR to PC
|
||||
254 | 1 UniFP2.asm 245 | Comment | 11 | | 0 | 00/60B6 | *
|
||||
255 | 1 UniFP2.asm 246 | Comment | 11 | | 0 | 00/60B6 | *** Status Parameter Set for UNI ***
|
||||
256 | 1 UniFP2.asm 247 | Empty | 11 | | 0 | 00/60B6 | ozunid_10
|
||||
257 | 1 UniFP2.asm 247 | Equivalence | 11 | | 0 | 00/60B6 | DParms equ ozunid_10
|
||||
258 | 1 UniFP2.asm 248 | Data | 11 | | 1 | 00/60B6 : 03 | DPParmsCt dfb 3 ;Status calls have three parameters
|
||||
259 | 1 UniFP2.asm 249 | Data | 11 | | 1 | 00/60B7 : 01 | DPUnit dfb 1
|
||||
260 | 1 UniFP2.asm 250 | Data | 11 | | 2 | 00/60B8 : BB 60 | DPBuffer dw {ozunid_11}
|
||||
261 | 1 UniFP2.asm 251 | Data | 11 | | 1 | 00/60BA : 05 | DPStatCode dfb {5}
|
||||
262 | 1 UniFP2.asm 252 | Comment | 11 | | 0 | 00/60BB | *
|
||||
263 | 1 UniFP2.asm 253 | Comment | 11 | | 0 | 00/60BB | *
|
||||
264 | 1 UniFP2.asm 254 | Comment | 11 | | 0 | 00/60BB | *
|
||||
265 | 1 UniFP2.asm 255 | Comment | 11 | | 0 | 00/60BB | *** Status List UNI ***
|
||||
266 | 1 UniFP2.asm 256 | Empty | 11 | | 0 | 00/60BB | ozunid_11
|
||||
267 | 1 UniFP2.asm 256 | Equivalence | 11 | | 0 | 00/60BB | UNI equ ozunid_11
|
||||
268 | 1 UniFP2.asm 257 | Data | 11 | | 1 | 00/60BB : 00 | dfb 0
|
||||
269 | 1 UniFP2.asm 258 | Data | 11 | | 1 | 00/60BC : 00 | UNIError dfb 0
|
||||
270 | 1 UniFP2.asm 259 | Data | 11 | | 1 | 00/60BD : 00 | UNIRetries dfb 0
|
||||
271 | 1 UniFP2.asm 260 | Data | 11 | | 1 | 00/60BE : 00 | UNIAcc_reg dfb 0
|
||||
272 | 1 UniFP2.asm 261 | Data | 11 | | 1 | 00/60BF : 00 | UNIX_reg dfb 0
|
||||
273 | 1 UniFP2.asm 262 | Data | 11 | | 1 | 00/60C0 : 00 | UNIY_reg dfb 0
|
||||
274 | 1 UniFP2.asm 263 | Data | 11 | | 1 | 00/60C1 : 00 | UNIP_val dfb 0
|
||||
275 | 1 UniFP2.asm 264 | Data | 11 | | 1 | 00/60C2 : 00 | HHH dfb 0
|
||||
276 | 1 UniFP2.asm 265 | Comment | 11 | | 0 | 00/60C3 | *
|
||||
277 | 1 UniFP2.asm 266 | Comment | 11 | | 0 | 00/60C3 | *** Set Address ***
|
||||
278 | 1 UniFP2.asm 267 | Empty | 11 | | 0 | 00/60C3 | ozunid_12
|
||||
279 | 1 UniFP2.asm 267 | Equivalence | 11 | | 0 | 00/60C3 | SET_ADD equ ozunid_12
|
||||
280 | 1 UniFP2.asm 268 | Data | 11 | | 1 | 00/60C3 : 03 | dfb 3
|
||||
281 | 1 UniFP2.asm 269 | Data | 11 | | 1 | 00/60C4 : 01 | dfb 1
|
||||
282 | 1 UniFP2.asm 270 | Data | 11 | | 2 | 00/60C5 : DA 60 | dw {ozunid_16}
|
||||
283 | 1 UniFP2.asm 271 | Data | 11 | | 1 | 00/60C7 : 06 | dfb {6}
|
||||
284 | 1 UniFP2.asm 272 | Comment | 11 | | 0 | 00/60C8 | *
|
||||
285 | 1 UniFP2.asm 273 | Comment | 11 | | 0 | 00/60C8 | *** Download ***
|
||||
286 | 1 UniFP2.asm 274 | Empty | 11 | | 0 | 00/60C8 | ozunid_13
|
||||
287 | 1 UniFP2.asm 274 | Equivalence | 11 | | 0 | 00/60C8 | DOWNLOAD equ ozunid_13
|
||||
288 | 1 UniFP2.asm 275 | Data | 11 | | 1 | 00/60C8 : 03 | dfb 3
|
||||
289 | 1 UniFP2.asm 276 | Data | 11 | | 1 | 00/60C9 : 01 | dfb 1
|
||||
290 | 1 UniFP2.asm 277 | Data | 11 | | 2 | 00/60CA : DE 60 | dw {ozunid_17}
|
||||
291 | 1 UniFP2.asm 278 | Data | 11 | | 1 | 00/60CC : 07 | dfb {7}
|
||||
292 | 1 UniFP2.asm 279 | Comment | 11 | | 0 | 00/60CD | *
|
||||
293 | 1 UniFP2.asm 280 | Comment | 11 | | 0 | 00/60CD | *** Execute ***
|
||||
294 | 1 UniFP2.asm 281 | Empty | 11 | | 0 | 00/60CD | ozunid_14
|
||||
295 | 1 UniFP2.asm 281 | Equivalence | 11 | | 0 | 00/60CD | EXE equ ozunid_14
|
||||
296 | 1 UniFP2.asm 282 | Data | 11 | | 1 | 00/60CD : 03 | dfb 3
|
||||
297 | 1 UniFP2.asm 283 | Data | 11 | | 1 | 00/60CE : 01 | dfb 1
|
||||
298 | 1 UniFP2.asm 284 | Data | 11 | | 2 | 00/60CF : D2 60 | dw {ozunid_15}
|
||||
299 | 1 UniFP2.asm 285 | Data | 11 | | 1 | 00/60D1 : 05 | dfb {5}
|
||||
300 | 1 UniFP2.asm 286 | Comment | 11 | | 0 | 00/60D2 | *
|
||||
301 | 1 UniFP2.asm 287 | Comment | 11 | | 0 | 00/60D2 | ******** CONTROL LISTS ********
|
||||
302 | 1 UniFP2.asm 288 | Comment | 11 | | 0 | 00/60D2 | *
|
||||
303 | 1 UniFP2.asm 289 | Comment | 11 | | 0 | 00/60D2 | *
|
||||
304 | 1 UniFP2.asm 290 | Comment | 11 | | 0 | 00/60D2 | *** Execute ***
|
||||
305 | 1 UniFP2.asm 291 | Empty | 11 | | 0 | 00/60D2 | ozunid_15
|
||||
306 | 1 UniFP2.asm 291 | Equivalence | 11 | | 0 | 00/60D2 | CNTL_LIST2 equ ozunid_15
|
||||
307 | 1 UniFP2.asm 292 | Data | 11 | | 1 | 00/60D2 : 06 | Clow_byte dfb $06
|
||||
308 | 1 UniFP2.asm 293 | Data | 11 | | 1 | 00/60D3 : 00 | Chigh_byte dfb $00
|
||||
309 | 1 UniFP2.asm 294 | Data | 11 | | 1 | 00/60D4 : 00 | AccValue dfb $00 ; Init Value Unidisk Accumulator Register
|
||||
310 | 1 UniFP2.asm 295 | Data | 11 | | 1 | 00/60D5 : 00 | X_reg dfb $00 ; Init Value Unidisk X Register
|
||||
311 | 1 UniFP2.asm 296 | Data | 11 | | 1 | 00/60D6 : 00 | Y_reg dfb $00 ; Init Value Unidisk Y Register
|
||||
312 | 1 UniFP2.asm 297 | Data | 11 | | 1 | 00/60D7 : 00 | ProStatus dfb $00 ; Init Value Unidisk Status Register
|
||||
313 | 1 UniFP2.asm 298 | Data | 11 | | 1 | 00/60D8 : 00 | LowPC_reg dfb $00 ; Init Value Unidisk Program Counter $0500 at eny dowload
|
||||
314 | 1 UniFP2.asm 299 | Data | 11 | | 1 | 00/60D9 : 05 | HighPC_reg dfb $05 ; $05 first execution, $3C second execution
|
||||
315 | 1 UniFP2.asm 300 | Comment | 11 | | 0 | 00/60DA | *
|
||||
316 | 1 UniFP2.asm 301 | Comment | 11 | | 0 | 00/60DA | *** Set Address ***
|
||||
317 | 1 UniFP2.asm 302 | Empty | 11 | | 0 | 00/60DA | ozunid_16
|
||||
318 | 1 UniFP2.asm 302 | Equivalence | 11 | | 0 | 00/60DA | CNTL_LIST3 equ ozunid_16
|
||||
319 | 1 UniFP2.asm 303 | Data | 11 | | 1 | 00/60DA : 02 | CountL_byte dfb $02
|
||||
320 | 1 UniFP2.asm 304 | Data | 11 | | 1 | 00/60DB : 00 | CountH_byte dfb $00
|
||||
321 | 1 UniFP2.asm 305 | Data | 11 | | 1 | 00/60DC : 2D | LByte_Addr dfb $2D ; ORG of Unidisk program, set begin data address $062E
|
||||
322 | 1 UniFP2.asm 306 | Data | 11 | | 1 | 00/60DD : 06 | HByte_Addr dfb $06
|
||||
323 | 1 UniFP2.asm 307 | Comment | 11 | | 0 | 00/60DE | *
|
||||
324 | 1 UniFP2.asm 308 | Comment | 11 | | 0 | 00/60DE | *** Download ***
|
||||
325 | 1 UniFP2.asm 309 | Empty | 11 | | 0 | 00/60DE | ozunid_17
|
||||
326 | 1 UniFP2.asm 309 | Equivalence | 11 | | 0 | 00/60DE | CNTL_LIST4 equ ozunid_17
|
||||
327 | 1 UniFP2.asm 310 | Data | 11 | | 1 | 00/60DE : 08 | LenghtL_byte dfb $08 ;<----- Lenght of Unidisk program Lo - Byte 312 byte
|
||||
328 | 1 UniFP2.asm 311 | Data | 11 | | 1 | 00/60DF : 00 | LenghtH_byte dfb $00 ;<----- Lenght of Unidisk program Hi Byte
|
||||
329 | 1 UniFP2.asm 312 | Comment | 11 | | 0 | 00/60E0 | *
|
||||
330 | 1 UniFP2.asm 313 | Comment | 11 | | 0 | 00/60E0 | **************** Start UNIDISK Program ****************
|
||||
331 | 1 UniFP2.asm 314 | Comment | 11 | | 0 | 00/60E0 | *
|
||||
332 | 1 UniFP2.asm 315 | Empty | 11 | | 0 | 00/60E0 |
|
||||
333 | 1 UniFP2.asm 316 | Comment | 11 | | 0 | 00/60E0 | ** Input Dynamic Data append in the end of Unidisk routine **
|
||||
334 | 1 UniFP2.asm 317 | Data | 11 | | 1 | 00/60E0 : 00 | FP1 dfb $00
|
||||
335 | 1 UniFP2.asm 318 | Data | 11 | | 1 | 00/60E1 : 00 | dfb $00
|
||||
336 | 1 UniFP2.asm 319 | Data | 11 | | 1 | 00/60E2 : 00 | dfb $00
|
||||
337 | 1 UniFP2.asm 320 | Data | 11 | | 1 | 00/60E3 : 00 | dfb $00
|
||||
338 | 1 UniFP2.asm 321 | Comment | 11 | | 0 | 00/60E4 | *
|
||||
339 | 1 UniFP2.asm 322 | Data | 11 | | 1 | 00/60E4 : 00 | FP2 dfb $00
|
||||
340 | 1 UniFP2.asm 323 | Data | 11 | | 1 | 00/60E5 : 00 | dfb $00
|
||||
341 | 1 UniFP2.asm 324 | Data | 11 | | 1 | 00/60E6 : 00 | dfb $00
|
||||
342 | 1 UniFP2.asm 325 | Data | 11 | | 1 | 00/60E7 : 00 | dfb $00
|
||||
343 | 1 UniFP2.asm 326 | Comment | 11 | | 0 | 00/60E8 | **************** End UNIDISK Program ****************
|
||||
------+----------------------+-------------+----+---------+------+-----------------------+-------------------------------------------------------------------
|
||||
------+----------------------+-------------+----+---------+------+-----------------------+-------------------------------------------------------------------
|
||||
Line | # File Line | Line Type | MX | Reloc | Size | Address Object Code | Source Code
|
||||
------+----------------------+-------------+----+---------+------+-----------------------+-------------------------------------------------------------------
|
||||
1 | 1 UniFP2.asm 1 | Comment | 11 | | 0 | 00/8000 | *
|
||||
2 | 1 UniFP2.asm 2 | Comment | 11 | | 0 | 00/8000 | * Unidisk 3.5 Driver <alfa>
|
||||
3 | 1 UniFP2.asm 3 | Comment | 11 | | 0 | 00/8000 | *
|
||||
4 | 1 UniFP2.asm 4 | Comment | 11 | | 0 | 00/8000 | * The target of this project is to use the Unidisk 3.5 drive to perform
|
||||
5 | 1 UniFP2.asm 5 | Comment | 11 | | 0 | 00/8000 | * specific numerical routines (integers and floating point numbers)
|
||||
6 | 1 UniFP2.asm 6 | Comment | 11 | | 0 | 00/8000 | * calculation in order to use it as a Apple II co-processor unit.
|
||||
7 | 1 UniFP2.asm 7 | Comment | 11 | | 0 | 00/8000 | *
|
||||
8 | 1 UniFP2.asm 8 | Comment | 11 | | 0 | 00/8000 | * Copyright (C) 2015 Riccardo Greco <rigreco.grc@gmail.com>.
|
||||
9 | 1 UniFP2.asm 9 | Comment | 11 | | 0 | 00/8000 | *
|
||||
10 | 1 UniFP2.asm 10 | Comment | 11 | | 0 | 00/8000 | * This program is free software: you can redistribute it and/or modify
|
||||
11 | 1 UniFP2.asm 11 | Comment | 11 | | 0 | 00/8000 | * it under the terms of the GNU General Public License as published by
|
||||
12 | 1 UniFP2.asm 12 | Comment | 11 | | 0 | 00/8000 | * the Free Software Foundation, either version 3 of the License, or
|
||||
13 | 1 UniFP2.asm 13 | Comment | 11 | | 0 | 00/8000 | * (at your option) any later version.
|
||||
14 | 1 UniFP2.asm 14 | Comment | 11 | | 0 | 00/8000 | * This program is distributed in the hope that it will be useful,
|
||||
15 | 1 UniFP2.asm 15 | Comment | 11 | | 0 | 00/8000 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
16 | 1 UniFP2.asm 16 | Comment | 11 | | 0 | 00/8000 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
17 | 1 UniFP2.asm 17 | Comment | 11 | | 0 | 00/8000 | * GNU General Public License for more details.
|
||||
18 | 1 UniFP2.asm 18 | Comment | 11 | | 0 | 00/8000 | * You should have received a copy of the GNU General Public License
|
||||
19 | 1 UniFP2.asm 19 | Comment | 11 | | 0 | 00/8000 | * along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
20 | 1 UniFP2.asm 20 | Comment | 11 | | 0 | 00/8000 | *
|
||||
21 | 1 UniFP2.asm 21 | Comment | 11 | | 0 | 00/8000 | *
|
||||
22 | 1 UniFP2.asm 22 | Comment | 11 | | 0 | 00/8000 | * @com.wudsn.ide.asm.hardware=APPLE2
|
||||
23 | 1 UniFP2.asm 23 | Directive | 11 | | 0 | 00/8000 | XC
|
||||
24 | 1 UniFP2.asm 24 | Comment | 11 | | 0 | 00/8000 | ** CHKSUM Pointer *
|
||||
25 | 1 UniFP2.asm 25 | Equivalence | 11 | | 0 | 00/8000 | PTR equ $08
|
||||
26 | 1 UniFP2.asm 26 | Comment | 11 | | 0 | 00/8000 | ** Protocol Converter Call
|
||||
27 | 1 UniFP2.asm 27 | Equivalence | 11 | | 0 | 00/8000 | ZPTempL equ $0006 ;Temporary zero page storage
|
||||
28 | 1 UniFP2.asm 28 | Equivalence | 11 | | 0 | 00/8000 | ZPTempH equ $0007
|
||||
29 | 1 UniFP2.asm 29 | Comment | 11 | | 0 | 00/8000 | ** Zero page storage **
|
||||
30 | 1 UniFP2.asm 30 | Equivalence | 11 | | 0 | 00/8000 | N1 equ $FA ;25 4 Byte FP FA--FD (FP1)
|
||||
31 | 1 UniFP2.asm 31 | Equivalence | 11 | | 0 | 00/8000 | N2 equ $EC ;27 4 Byte FP EC--EF (FP2)
|
||||
32 | 1 UniFP2.asm 32 | Equivalence | 11 | | 0 | 00/8000 | RSLT equ $1D ; $7000 ;29
|
||||
33 | 1 UniFP2.asm 33 | Comment | 11 | | 0 | 00/8000 | *** Monitor routines ***
|
||||
34 | 1 UniFP2.asm 34 | Equivalence | 11 | | 0 | 00/8000 | COut equ $FDED ;Console output ASCII
|
||||
35 | 1 UniFP2.asm 35 | Equivalence | 11 | | 0 | 00/8000 | CROut equ $FD8E ;Carriage return
|
||||
36 | 1 UniFP2.asm 36 | Comment | 11 | | 0 | 00/8000 | ** Command Code **
|
||||
37 | 1 UniFP2.asm 37 | Equivalence | 11 | | 0 | 00/8000 | StatusCmd equ 0
|
||||
38 | 1 UniFP2.asm 38 | Comment | 11 | | 0 | 00/8000 | ** Status Code **
|
||||
39 | 1 UniFP2.asm 39 | Equivalence | 11 | | 0 | 00/8000 | StatusUNI equ 5
|
||||
40 | 1 UniFP2.asm 40 | Comment | 11 | | 0 | 00/8000 | *
|
||||
41 | 1 UniFP2.asm 41 | Equivalence | 11 | | 0 | 00/8000 | ControlCmd equ 4
|
||||
42 | 1 UniFP2.asm 42 | Comment | 11 | | 0 | 00/8000 | ** Control Codes **
|
||||
43 | 1 UniFP2.asm 43 | Equivalence | 11 | | 0 | 00/8000 | Run equ 5
|
||||
44 | 1 UniFP2.asm 44 | Equivalence | 11 | | 0 | 00/8000 | SetDWLoad equ 6
|
||||
45 | 1 UniFP2.asm 45 | Equivalence | 11 | | 0 | 00/8000 | DWLoad equ 7
|
||||
46 | 1 UniFP2.asm 46 | Comment | 11 | | 0 | 00/8000 | *
|
||||
47 | 1 UniFP2.asm 47 | Directive | 11 | | 0 | 00/8000 | org $6000
|
||||
48 | 1 UniFP2.asm 48 | Comment | 11 | | 0 | 00/6000 | *****************************************************
|
||||
49 | 1 UniFP2.asm 49 | Comment | 11 | | 0 | 00/6000 | ************** CHKSUM MAIN Routine ******************
|
||||
50 | 1 UniFP2.asm 50 | Comment | 11 | | 0 | 00/6000 | *
|
||||
51 | 1 UniFP2.asm 51 | Comment | 11 | | 0 | 00/6000 | ;STARTCHK lda #<STARTCHK
|
||||
52 | 1 UniFP2.asm 52 | Comment | 11 | | 0 | 00/6000 | ; sta PTR
|
||||
53 | 1 UniFP2.asm 53 | Comment | 11 | | 0 | 00/6000 | ; lda #>STARTCHK
|
||||
54 | 1 UniFP2.asm 54 | Comment | 11 | | 0 | 00/6000 | ; sta PTR+1
|
||||
55 | 1 UniFP2.asm 55 | Comment | 11 | | 0 | 00/6000 | ; ldy #$00
|
||||
56 | 1 UniFP2.asm 56 | Comment | 11 | | 0 | 00/6000 | ; lda #$00
|
||||
57 | 1 UniFP2.asm 57 | Comment | 11 | | 0 | 00/6000 | ; pha
|
||||
58 | 1 UniFP2.asm 58 | Comment | 11 | | 0 | 00/6000 | ;LOOP pla
|
||||
59 | 1 UniFP2.asm 59 | Comment | 11 | | 0 | 00/6000 | ; eor (PTR),y
|
||||
60 | 1 UniFP2.asm 60 | Comment | 11 | | 0 | 00/6000 | ; pha
|
||||
61 | 1 UniFP2.asm 61 | Comment | 11 | | 0 | 00/6000 | ; inc PTR
|
||||
62 | 1 UniFP2.asm 62 | Comment | 11 | | 0 | 00/6000 | ; bne CHK
|
||||
63 | 1 UniFP2.asm 63 | Comment | 11 | | 0 | 00/6000 | ; inc PTR+1
|
||||
64 | 1 UniFP2.asm 64 | Comment | 11 | | 0 | 00/6000 | ;CHK lda PTR+1
|
||||
65 | 1 UniFP2.asm 65 | Comment | 11 | | 0 | 00/6000 | ; cmp #>PROGEND
|
||||
66 | 1 UniFP2.asm 66 | Comment | 11 | | 0 | 00/6000 | ; bcc LOOP
|
||||
67 | 1 UniFP2.asm 67 | Comment | 11 | | 0 | 00/6000 | ; lda PTR
|
||||
68 | 1 UniFP2.asm 68 | Comment | 11 | | 0 | 00/6000 | ; cmp #<PROGEND
|
||||
69 | 1 UniFP2.asm 69 | Comment | 11 | | 0 | 00/6000 | ; bcc LOOP
|
||||
70 | 1 UniFP2.asm 70 | Comment | 11 | | 0 | 00/6000 | ; beq LOOP
|
||||
71 | 1 UniFP2.asm 71 | Comment | 11 | | 0 | 00/6000 | ;CHKCS pla
|
||||
72 | 1 UniFP2.asm 72 | Comment | 11 | | 0 | 00/6000 | ; cmp CHKSUM
|
||||
73 | 1 UniFP2.asm 73 | Comment | 11 | | 0 | 00/6000 | ; bne ERRCHK
|
||||
74 | 1 UniFP2.asm 74 | Comment | 11 | | 0 | 00/6000 | ***********************************************
|
||||
75 | 1 UniFP2.asm 75 | Comment | 11 | | 0 | 00/6000 | * Find a Protocol Converter in one of the slots.
|
||||
76 | 1 UniFP2.asm 76 | Code | 11 | | 3 | 00/6000 : 20 7E 60 | START jsr {ozunid_4}
|
||||
77 | 1 UniFP2.asm 77 | Code | 11 | | 2 | 00/6003 : B0 0A | bcs {ozunid_1}
|
||||
78 | 1 UniFP2.asm 78 | Comment | 11 | | 0 | 00/6005 | *** Set Address ***
|
||||
79 | 1 UniFP2.asm 79 | Code | 11 | | 3 | 00/6005 : 20 B3 60 | jsr {ozunid_9}
|
||||
80 | 1 UniFP2.asm 80 | Data | 11 | | 1 | 00/6008 : 04 | dfb {4}
|
||||
81 | 1 UniFP2.asm 81 | Data | 11 | | 2 | 00/6009 : C3 60 | dw {ozunid_12}
|
||||
82 | 1 UniFP2.asm 82 | Comment | 11 | | 0 | 00/600B | *
|
||||
83 | 1 UniFP2.asm 83 | Code | 11 | | 3 | 00/600B : 20 31 60 | jsr EXEC ; Jump the Error routine
|
||||
84 | 1 UniFP2.asm 84 | Code | 11 | | 1 | 00/600E : 60 | rts
|
||||
85 | 1 UniFP2.asm 85 | Comment | 11 | | 0 | 00/600F | **************** CHKSUM ERROR Routine ***************
|
||||
86 | 1 UniFP2.asm 86 | Comment | 11 | | 0 | 00/600F | *
|
||||
87 | 1 UniFP2.asm 87 | Comment | 11 | | 0 | 00/600F | ;ERRCHK sta CHKCALC
|
||||
88 | 1 UniFP2.asm 88 | Comment | 11 | | 0 | 00/600F | ; lda #"E"
|
||||
89 | 1 UniFP2.asm 89 | Comment | 11 | | 0 | 00/600F | ; jsr COut
|
||||
90 | 1 UniFP2.asm 90 | Comment | 11 | | 0 | 00/600F | ; rts
|
||||
91 | 1 UniFP2.asm 91 | Comment | 11 | | 0 | 00/600F | ;CHKCALC dfb $00
|
||||
92 | 1 UniFP2.asm 92 | Comment | 11 | | 0 | 00/600F | **************** PROTOCOL CONVERTER ERROR Routine ***
|
||||
93 | 1 UniFP2.asm 93 | Empty | 11 | | 0 | 00/600F | ozunid_1
|
||||
94 | 1 UniFP2.asm 93 | Equivalence | 11 | | 0 | 00/600F | Error equ ozunid_1
|
||||
95 | 1 UniFP2.asm 94 | Comment | 11 | | 0 | 00/600F | *
|
||||
96 | 1 UniFP2.asm 95 | Comment | 11 | | 0 | 00/600F | * There is either no PC around, or there was no give message
|
||||
97 | 1 UniFP2.asm 96 | Comment | 11 | | 0 | 00/600F | *
|
||||
98 | 1 UniFP2.asm 97 | Code | 11 | | 2 | 00/600F : A2 00 | ldx #0
|
||||
99 | 1 UniFP2.asm 98 | Empty | 11 | | 0 | 00/6011 | ozunid_2
|
||||
100 | 1 UniFP2.asm 98 | Equivalence | 11 | | 0 | 00/6011 | err1 equ ozunid_2
|
||||
101 | 1 UniFP2.asm 99 | Code | 11 | | 3 | 00/6011 : BD 1D 60 | lda Message,x
|
||||
102 | 1 UniFP2.asm 100 | Code | 11 | | 2 | 00/6014 : F0 06 | beq {ozunid_3}
|
||||
103 | 1 UniFP2.asm 101 | Code | 11 | | 3 | 00/6016 : 20 ED FD | jsr {$FDED}
|
||||
104 | 1 UniFP2.asm 102 | Code | 11 | | 1 | 00/6019 : E8 | inx
|
||||
105 | 1 UniFP2.asm 103 | Code | 11 | | 2 | 00/601A : D0 F5 | bne {ozunid_2}
|
||||
106 | 1 UniFP2.asm 104 | Comment | 11 | | 0 | 00/601C | *
|
||||
107 | 1 UniFP2.asm 105 | Empty | 11 | | 0 | 00/601C | ozunid_3
|
||||
108 | 1 UniFP2.asm 105 | Equivalence | 11 | | 0 | 00/601C | errout equ ozunid_3
|
||||
109 | 1 UniFP2.asm 106 | Code | 11 | | 1 | 00/601C : 60 | rts
|
||||
110 | 1 UniFP2.asm 107 | Comment | 11 | | 0 | 00/601D | *
|
||||
111 | 1 UniFP2.asm 108 | Data | 11 | | 18 | 00/601D : 4E 4F 20 50 | Message asc 'NO PC OR NO DEVICE'
|
||||
| | | | | | 43 20 4F 52 |
|
||||
| | | | | | 20 4E 4F 20 |
|
||||
| | | | | | 44 45 56 49 |
|
||||
| | | | | | 43 45 |
|
||||
112 | 1 UniFP2.asm 109 | Data | 11 | | 2 | 00/602F : 8D 00 | dfb $8D,0
|
||||
113 | 1 UniFP2.asm 110 | Comment | 11 | | 0 | 00/6031 | *******************************************************
|
||||
114 | 1 UniFP2.asm 111 | Comment | 11 | | 0 | 00/6031 | *
|
||||
115 | 1 UniFP2.asm 112 | Empty | 11 | | 0 | 00/6031 |
|
||||
116 | 1 UniFP2.asm 113 | Comment | 11 | | 0 | 00/6031 | ** Set the Input Value first in Dynamic data **
|
||||
117 | 1 UniFP2.asm 114 | Comment | 11 | | 0 | 00/6031 | ** 4 Byte N1 to FP1 **
|
||||
118 | 1 UniFP2.asm 115 | Code | 11 | | 2 | 00/6031 : A5 FA | EXEC lda {$FA} ;X1
|
||||
119 | 1 UniFP2.asm 116 | Code | 11 | | 3 | 00/6033 : 8D E0 60 | sta FP1 ; Absolute addressing
|
||||
120 | 1 UniFP2.asm 117 | Code | 11 | | 2 | 00/6036 : A5 FB | lda {$FA}+1 ;M1 (1)
|
||||
121 | 1 UniFP2.asm 118 | Code | 11 | | 3 | 00/6038 : 8D E1 60 | sta FP1+1
|
||||
122 | 1 UniFP2.asm 119 | Code | 11 | | 2 | 00/603B : A5 FC | lda {$FA}+2 ;M1 (2)
|
||||
123 | 1 UniFP2.asm 120 | Code | 11 | | 3 | 00/603D : 8D E2 60 | sta FP1+2
|
||||
124 | 1 UniFP2.asm 121 | Code | 11 | | 2 | 00/6040 : A5 FD | lda {$FA}+3 ;M1 (3)
|
||||
125 | 1 UniFP2.asm 122 | Code | 11 | | 3 | 00/6042 : 8D E3 60 | sta FP1+3
|
||||
126 | 1 UniFP2.asm 123 | Empty | 11 | | 0 | 00/6045 |
|
||||
127 | 1 UniFP2.asm 124 | Comment | 11 | | 0 | 00/6045 | ** 4 Byte N2 to FP2 **
|
||||
128 | 1 UniFP2.asm 125 | Code | 11 | | 2 | 00/6045 : A5 EC | lda {$EC} ;X2
|
||||
129 | 1 UniFP2.asm 126 | Code | 11 | | 3 | 00/6047 : 8D E4 60 | sta FP2
|
||||
130 | 1 UniFP2.asm 127 | Code | 11 | | 2 | 00/604A : A5 ED | lda {$EC}+1 ;M2 (1)
|
||||
131 | 1 UniFP2.asm 128 | Code | 11 | | 3 | 00/604C : 8D E5 60 | sta FP2+1
|
||||
132 | 1 UniFP2.asm 129 | Code | 11 | | 2 | 00/604F : A5 EE | lda {$EC}+2 ;M2 (2)
|
||||
133 | 1 UniFP2.asm 130 | Code | 11 | | 3 | 00/6051 : 8D E6 60 | sta FP2+2
|
||||
134 | 1 UniFP2.asm 131 | Code | 11 | | 2 | 00/6054 : A5 EF | lda {$EC}+3 ;M2 (3)
|
||||
135 | 1 UniFP2.asm 132 | Code | 11 | | 3 | 00/6056 : 8D E7 60 | sta FP2+3
|
||||
136 | 1 UniFP2.asm 133 | Empty | 11 | | 0 | 00/6059 |
|
||||
137 | 1 UniFP2.asm 134 | Comment | 11 | | 0 | 00/6059 | *** Download ***
|
||||
138 | 1 UniFP2.asm 135 | Code | 11 | | 3 | 00/6059 : 20 B3 60 | jsr {ozunid_9}
|
||||
139 | 1 UniFP2.asm 136 | Data | 11 | | 1 | 00/605C : 04 | dfb {4}
|
||||
140 | 1 UniFP2.asm 137 | Data | 11 | | 2 | 00/605D : C8 60 | dw {ozunid_13}
|
||||
141 | 1 UniFP2.asm 138 | Comment | 11 | | 0 | 00/605F | ** Set Unidisk Registers **
|
||||
142 | 1 UniFP2.asm 139 | Comment | 11 | | 0 | 00/605F | ;First time execution
|
||||
143 | 1 UniFP2.asm 140 | Code | 11 | | 2 | 00/605F : A9 00 | lda #$00 ; Target the first time entry point
|
||||
144 | 1 UniFP2.asm 141 | Code | 11 | | 3 | 00/6061 : 8D D8 60 | sta LowPC_reg ; First time set init value of PC, just for the next execution
|
||||
145 | 1 UniFP2.asm 142 | Comment | 11 | | 0 | 00/6064 | * The program begin to PC preset to $0500 *
|
||||
146 | 1 UniFP2.asm 143 | Comment | 11 | | 0 | 00/6064 | *
|
||||
147 | 1 UniFP2.asm 144 | Comment | 11 | | 0 | 00/6064 | ** Execute **
|
||||
148 | 1 UniFP2.asm 145 | Code | 11 | | 3 | 00/6064 : 20 B3 60 | jsr {ozunid_9}
|
||||
149 | 1 UniFP2.asm 146 | Data | 11 | | 1 | 00/6067 : 04 | dfb {4}
|
||||
150 | 1 UniFP2.asm 147 | Data | 11 | | 2 | 00/6068 : CD 60 | dw {ozunid_14}
|
||||
151 | 1 UniFP2.asm 148 | Comment | 11 | | 0 | 00/606A | ** Read **
|
||||
152 | 1 UniFP2.asm 149 | Code | 11 | | 3 | 00/606A : 20 B3 60 | READ jsr {ozunid_9}
|
||||
153 | 1 UniFP2.asm 150 | Data | 11 | | 1 | 00/606D : 00 | dfb {0}
|
||||
154 | 1 UniFP2.asm 151 | Data | 11 | | 2 | 00/606E : B6 60 | dw {ozunid_10}
|
||||
155 | 1 UniFP2.asm 152 | Code | 11 | | 2 | 00/6070 : B0 9D | bcs {ozunid_1}
|
||||
156 | 1 UniFP2.asm 153 | Comment | 11 | | 0 | 00/6072 | *
|
||||
157 | 1 UniFP2.asm 154 | Comment | 11 | | 0 | 00/6072 | **** Store Output results in //c ****
|
||||
158 | 1 UniFP2.asm 155 | Empty | 11 | | 0 | 00/6072 |
|
||||
159 | 1 UniFP2.asm 156 | Comment | 11 | | 0 | 00/6072 | * First time execute *
|
||||
160 | 1 UniFP2.asm 157 | Comment | 11 | | 0 | 00/6072 | * lda UNIAcc_reg
|
||||
161 | 1 UniFP2.asm 158 | Comment | 11 | | 0 | 00/6072 | * sta RSLT
|
||||
162 | 1 UniFP2.asm 159 | Code | 11 | | 3 | 00/6072 : AD BF 60 | lda UNIX_reg
|
||||
163 | 1 UniFP2.asm 160 | Code | 11 | | 2 | 00/6075 : 85 1D | sta {$1D} ; Store the result
|
||||
164 | 1 UniFP2.asm 161 | Code | 11 | | 3 | 00/6077 : AD C0 60 | lda UNIY_reg
|
||||
165 | 1 UniFP2.asm 162 | Code | 11 | | 2 | 00/607A : 85 1E | sta {$1D}+1
|
||||
166 | 1 UniFP2.asm 163 | Empty | 11 | | 0 | 00/607C |
|
||||
167 | 1 UniFP2.asm 164 | Comment | 11 | | 0 | 00/607C | ** Second time execute **
|
||||
168 | 1 UniFP2.asm 165 | Comment | 11 | | 0 | 00/607C | * lda #$3C ; Target the secont time entry point
|
||||
169 | 1 UniFP2.asm 166 | Comment | 11 | | 0 | 00/607C | * sta LowPC_reg ; Second time set new value of PC
|
||||
170 | 1 UniFP2.asm 167 | Comment | 11 | | 0 | 00/607C | ** Execute **
|
||||
171 | 1 UniFP2.asm 168 | Comment | 11 | | 0 | 00/607C | * jsr Dispatch
|
||||
172 | 1 UniFP2.asm 169 | Comment | 11 | | 0 | 00/607C | * dfb ControlCmd
|
||||
173 | 1 UniFP2.asm 170 | Comment | 11 | | 0 | 00/607C | * dw EXE
|
||||
174 | 1 UniFP2.asm 171 | Comment | 11 | | 0 | 00/607C | ** Read **
|
||||
175 | 1 UniFP2.asm 172 | Comment | 11 | | 0 | 00/607C | * jsr Dispatch
|
||||
176 | 1 UniFP2.asm 173 | Comment | 11 | | 0 | 00/607C | * dfb StatusCmd
|
||||
177 | 1 UniFP2.asm 174 | Comment | 11 | | 0 | 00/607C | * dw DParms
|
||||
178 | 1 UniFP2.asm 175 | Comment | 11 | | 0 | 00/607C | * bcs Error
|
||||
179 | 1 UniFP2.asm 176 | Empty | 11 | | 0 | 00/607C |
|
||||
180 | 1 UniFP2.asm 177 | Comment | 11 | | 0 | 00/607C | * Second time execute only to read the latest Byte of FP1*
|
||||
181 | 1 UniFP2.asm 178 | Comment | 11 | | 0 | 00/607C | * lda UNIAcc_reg
|
||||
182 | 1 UniFP2.asm 179 | Comment | 11 | | 0 | 00/607C | * sta RSLT+3
|
||||
183 | 1 UniFP2.asm 180 | Comment | 11 | | 0 | 00/607C | *
|
||||
184 | 1 UniFP2.asm 181 | Code | 11 | | 1 | 00/607C : 60 | PROGEND rts
|
||||
185 | 1 UniFP2.asm 182 | Data | 11 | | 1 | 00/607D : 00 | CHKSUM chk
|
||||
186 | 1 UniFP2.asm 183 | Comment | 11 | | 0 | 00/607E | ******************************************************
|
||||
187 | 1 UniFP2.asm 184 | Empty | 11 | | 0 | 00/607E | ozunid_4
|
||||
188 | 1 UniFP2.asm 184 | Equivalence | 11 | | 0 | 00/607E | FindPC equ ozunid_4
|
||||
189 | 1 UniFP2.asm 185 | Comment | 11 | | 0 | 00/607E | *
|
||||
190 | 1 UniFP2.asm 186 | Comment | 11 | | 0 | 00/607E | * Search slot 7 to slot 1 looking for signature bytes
|
||||
191 | 1 UniFP2.asm 187 | Comment | 11 | | 0 | 00/607E | *
|
||||
192 | 1 UniFP2.asm 188 | Code | 11 | | 2 | 00/607E : A2 07 | ldx #7 ;Do for seven slots
|
||||
193 | 1 UniFP2.asm 189 | Code | 11 | | 2 | 00/6080 : A9 C7 | lda #$C7
|
||||
194 | 1 UniFP2.asm 190 | Code | 11 | | 2 | 00/6082 : 85 07 | sta {$0007}
|
||||
195 | 1 UniFP2.asm 191 | Code | 11 | | 2 | 00/6084 : A9 00 | lda #$00
|
||||
196 | 1 UniFP2.asm 192 | Code | 11 | | 2 | 00/6086 : 85 06 | sta {$0006}
|
||||
197 | 1 UniFP2.asm 193 | Comment | 11 | | 0 | 00/6088 | *
|
||||
198 | 1 UniFP2.asm 194 | Empty | 11 | | 0 | 00/6088 | ozunid_5
|
||||
199 | 1 UniFP2.asm 194 | Equivalence | 11 | | 0 | 00/6088 | newslot equ ozunid_5
|
||||
200 | 1 UniFP2.asm 195 | Code | 11 | | 2 | 00/6088 : A0 07 | ldy #7
|
||||
201 | 1 UniFP2.asm 196 | Comment | 11 | | 0 | 00/608A | *
|
||||
202 | 1 UniFP2.asm 197 | Empty | 11 | | 0 | 00/608A | ozunid_6
|
||||
203 | 1 UniFP2.asm 197 | Equivalence | 11 | | 0 | 00/608A | again equ ozunid_6
|
||||
204 | 1 UniFP2.asm 198 | Code | 11 | | 2 | 00/608A : B1 06 | lda ({$0006}),y
|
||||
205 | 1 UniFP2.asm 199 | Code | 11 | | 3 | 00/608C : D9 AB 60 | cmp sigtab,y ;One for byte signature
|
||||
206 | 1 UniFP2.asm 200 | Code | 11 | | 2 | 00/608F : F0 07 | beq {ozunid_7} ;Found one signature byte
|
||||
207 | 1 UniFP2.asm 201 | Code | 11 | | 2 | 00/6091 : C6 07 | dec {$0007}
|
||||
208 | 1 UniFP2.asm 202 | Code | 11 | | 1 | 00/6093 : CA | dex
|
||||
209 | 1 UniFP2.asm 203 | Code | 11 | | 2 | 00/6094 : D0 F2 | bne {ozunid_5}
|
||||
210 | 1 UniFP2.asm 204 | Comment | 11 | | 0 | 00/6096 | *
|
||||
211 | 1 UniFP2.asm 205 | Comment | 11 | | 0 | 00/6096 | * if we get here, no PC find
|
||||
212 | 1 UniFP2.asm 206 | Code | 11 | | 1 | 00/6096 : 38 | sec
|
||||
213 | 1 UniFP2.asm 207 | Code | 11 | | 1 | 00/6097 : 60 | rts
|
||||
214 | 1 UniFP2.asm 208 | Comment | 11 | | 0 | 00/6098 | *
|
||||
215 | 1 UniFP2.asm 209 | Comment | 11 | | 0 | 00/6098 | * if we get here, no byte find on PC
|
||||
216 | 1 UniFP2.asm 210 | Empty | 11 | | 0 | 00/6098 | ozunid_7
|
||||
217 | 1 UniFP2.asm 210 | Equivalence | 11 | | 0 | 00/6098 | maybe equ ozunid_7
|
||||
218 | 1 UniFP2.asm 211 | Code | 11 | | 1 | 00/6098 : 88 | dey
|
||||
219 | 1 UniFP2.asm 212 | Code | 11 | | 1 | 00/6099 : 88 | dey ;if N=1 then all sig bytes OK
|
||||
220 | 1 UniFP2.asm 213 | Code | 11 | | 2 | 00/609A : 10 EE | bpl {ozunid_6}
|
||||
221 | 1 UniFP2.asm 214 | Comment | 11 | | 0 | 00/609C | * Found PC interface. Set up call address.
|
||||
222 | 1 UniFP2.asm 215 | Comment | 11 | | 0 | 00/609C | * we already have high byte ($CN), we need low byte
|
||||
223 | 1 UniFP2.asm 216 | Comment | 11 | | 0 | 00/609C | *
|
||||
224 | 1 UniFP2.asm 217 | Empty | 11 | | 0 | 00/609C | ozunid_8
|
||||
225 | 1 UniFP2.asm 217 | Equivalence | 11 | | 0 | 00/609C | foundPC equ ozunid_8
|
||||
226 | 1 UniFP2.asm 218 | Code | 11 | | 2 | 00/609C : A9 FF | lda #$FF
|
||||
227 | 1 UniFP2.asm 219 | Code | 11 | | 2 | 00/609E : 85 06 | sta {$0006}
|
||||
228 | 1 UniFP2.asm 220 | Code | 11 | | 2 | 00/60A0 : A0 00 | ldy #0 ;For indirect load
|
||||
229 | 1 UniFP2.asm 221 | Code | 11 | | 2 | 00/60A2 : B1 06 | lda ({$0006}),y ;Get the byte
|
||||
230 | 1 UniFP2.asm 222 | Comment | 11 | | 0 | 00/60A4 | *
|
||||
231 | 1 UniFP2.asm 223 | Comment | 11 | | 0 | 00/60A4 | * Now the Acc has the low oreder ProDOS entry point.
|
||||
232 | 1 UniFP2.asm 224 | Comment | 11 | | 0 | 00/60A4 | * The PC entry is three locations past this ...
|
||||
233 | 1 UniFP2.asm 225 | Comment | 11 | | 0 | 00/60A4 | *
|
||||
234 | 1 UniFP2.asm 226 | Code | 11 | | 1 | 00/60A4 : 18 | clc
|
||||
235 | 1 UniFP2.asm 227 | Code | 11 | | 2 | 00/60A5 : 69 03 | adc #3
|
||||
236 | 1 UniFP2.asm 228 | Code | 11 | | 2 | 00/60A7 : 85 06 | sta {$0006}
|
||||
237 | 1 UniFP2.asm 229 | Comment | 11 | | 0 | 00/60A9 | *
|
||||
238 | 1 UniFP2.asm 230 | Comment | 11 | | 0 | 00/60A9 | * Now ZPTempL has PC entry point.
|
||||
239 | 1 UniFP2.asm 231 | Comment | 11 | | 0 | 00/60A9 | * Return with carry clear.
|
||||
240 | 1 UniFP2.asm 232 | Comment | 11 | | 0 | 00/60A9 | *
|
||||
241 | 1 UniFP2.asm 233 | Code | 11 | | 1 | 00/60A9 : 18 | clc
|
||||
242 | 1 UniFP2.asm 234 | Code | 11 | | 1 | 00/60AA : 60 | rts
|
||||
243 | 1 UniFP2.asm 235 | Comment | 11 | | 0 | 00/60AB | ***********************************************************
|
||||
244 | 1 UniFP2.asm 236 | Comment | 11 | | 0 | 00/60AB | *
|
||||
245 | 1 UniFP2.asm 237 | Comment | 11 | | 0 | 00/60AB | * There are the PC signature bytes in their relative order.
|
||||
246 | 1 UniFP2.asm 238 | Comment | 11 | | 0 | 00/60AB | * The $FF bytes are filler bytes and are not compared.
|
||||
247 | 1 UniFP2.asm 239 | Comment | 11 | | 0 | 00/60AB | *
|
||||
248 | 1 UniFP2.asm 240 | Data | 11 | | 4 | 00/60AB : FF 20 FF 00 | sigtab dfb $FF,$20,$FF,$00
|
||||
249 | 1 UniFP2.asm 241 | Data | 11 | | 4 | 00/60AF : FF 03 FF 00 | dfb $FF,$03,$FF,$00
|
||||
250 | 1 UniFP2.asm 242 | Comment | 11 | | 0 | 00/60B3 | *
|
||||
251 | 1 UniFP2.asm 243 | Empty | 11 | | 0 | 00/60B3 | ozunid_9
|
||||
252 | 1 UniFP2.asm 243 | Equivalence | 11 | | 0 | 00/60B3 | Dispatch equ ozunid_9
|
||||
253 | 1 UniFP2.asm 244 | Code | 11 | | 3 | 00/60B3 : 6C 06 00 | jmp ({$0006}) ;Simulate an indirect JSR to PC
|
||||
254 | 1 UniFP2.asm 245 | Comment | 11 | | 0 | 00/60B6 | *
|
||||
255 | 1 UniFP2.asm 246 | Comment | 11 | | 0 | 00/60B6 | *** Status Parameter Set for UNI ***
|
||||
256 | 1 UniFP2.asm 247 | Empty | 11 | | 0 | 00/60B6 | ozunid_10
|
||||
257 | 1 UniFP2.asm 247 | Equivalence | 11 | | 0 | 00/60B6 | DParms equ ozunid_10
|
||||
258 | 1 UniFP2.asm 248 | Data | 11 | | 1 | 00/60B6 : 03 | DPParmsCt dfb 3 ;Status calls have three parameters
|
||||
259 | 1 UniFP2.asm 249 | Data | 11 | | 1 | 00/60B7 : 01 | DPUnit dfb 1
|
||||
260 | 1 UniFP2.asm 250 | Data | 11 | | 2 | 00/60B8 : BB 60 | DPBuffer dw {ozunid_11}
|
||||
261 | 1 UniFP2.asm 251 | Data | 11 | | 1 | 00/60BA : 05 | DPStatCode dfb {5}
|
||||
262 | 1 UniFP2.asm 252 | Comment | 11 | | 0 | 00/60BB | *
|
||||
263 | 1 UniFP2.asm 253 | Comment | 11 | | 0 | 00/60BB | *
|
||||
264 | 1 UniFP2.asm 254 | Comment | 11 | | 0 | 00/60BB | *
|
||||
265 | 1 UniFP2.asm 255 | Comment | 11 | | 0 | 00/60BB | *** Status List UNI ***
|
||||
266 | 1 UniFP2.asm 256 | Empty | 11 | | 0 | 00/60BB | ozunid_11
|
||||
267 | 1 UniFP2.asm 256 | Equivalence | 11 | | 0 | 00/60BB | UNI equ ozunid_11
|
||||
268 | 1 UniFP2.asm 257 | Data | 11 | | 1 | 00/60BB : 00 | dfb 0
|
||||
269 | 1 UniFP2.asm 258 | Data | 11 | | 1 | 00/60BC : 00 | UNIError dfb 0
|
||||
270 | 1 UniFP2.asm 259 | Data | 11 | | 1 | 00/60BD : 00 | UNIRetries dfb 0
|
||||
271 | 1 UniFP2.asm 260 | Data | 11 | | 1 | 00/60BE : 00 | UNIAcc_reg dfb 0
|
||||
272 | 1 UniFP2.asm 261 | Data | 11 | | 1 | 00/60BF : 00 | UNIX_reg dfb 0
|
||||
273 | 1 UniFP2.asm 262 | Data | 11 | | 1 | 00/60C0 : 00 | UNIY_reg dfb 0
|
||||
274 | 1 UniFP2.asm 263 | Data | 11 | | 1 | 00/60C1 : 00 | UNIP_val dfb 0
|
||||
275 | 1 UniFP2.asm 264 | Data | 11 | | 1 | 00/60C2 : 00 | HHH dfb 0
|
||||
276 | 1 UniFP2.asm 265 | Comment | 11 | | 0 | 00/60C3 | *
|
||||
277 | 1 UniFP2.asm 266 | Comment | 11 | | 0 | 00/60C3 | *** Set Address ***
|
||||
278 | 1 UniFP2.asm 267 | Empty | 11 | | 0 | 00/60C3 | ozunid_12
|
||||
279 | 1 UniFP2.asm 267 | Equivalence | 11 | | 0 | 00/60C3 | SET_ADD equ ozunid_12
|
||||
280 | 1 UniFP2.asm 268 | Data | 11 | | 1 | 00/60C3 : 03 | dfb 3
|
||||
281 | 1 UniFP2.asm 269 | Data | 11 | | 1 | 00/60C4 : 01 | dfb 1
|
||||
282 | 1 UniFP2.asm 270 | Data | 11 | | 2 | 00/60C5 : DA 60 | dw {ozunid_16}
|
||||
283 | 1 UniFP2.asm 271 | Data | 11 | | 1 | 00/60C7 : 06 | dfb {6}
|
||||
284 | 1 UniFP2.asm 272 | Comment | 11 | | 0 | 00/60C8 | *
|
||||
285 | 1 UniFP2.asm 273 | Comment | 11 | | 0 | 00/60C8 | *** Download ***
|
||||
286 | 1 UniFP2.asm 274 | Empty | 11 | | 0 | 00/60C8 | ozunid_13
|
||||
287 | 1 UniFP2.asm 274 | Equivalence | 11 | | 0 | 00/60C8 | DOWNLOAD equ ozunid_13
|
||||
288 | 1 UniFP2.asm 275 | Data | 11 | | 1 | 00/60C8 : 03 | dfb 3
|
||||
289 | 1 UniFP2.asm 276 | Data | 11 | | 1 | 00/60C9 : 01 | dfb 1
|
||||
290 | 1 UniFP2.asm 277 | Data | 11 | | 2 | 00/60CA : DE 60 | dw {ozunid_17}
|
||||
291 | 1 UniFP2.asm 278 | Data | 11 | | 1 | 00/60CC : 07 | dfb {7}
|
||||
292 | 1 UniFP2.asm 279 | Comment | 11 | | 0 | 00/60CD | *
|
||||
293 | 1 UniFP2.asm 280 | Comment | 11 | | 0 | 00/60CD | *** Execute ***
|
||||
294 | 1 UniFP2.asm 281 | Empty | 11 | | 0 | 00/60CD | ozunid_14
|
||||
295 | 1 UniFP2.asm 281 | Equivalence | 11 | | 0 | 00/60CD | EXE equ ozunid_14
|
||||
296 | 1 UniFP2.asm 282 | Data | 11 | | 1 | 00/60CD : 03 | dfb 3
|
||||
297 | 1 UniFP2.asm 283 | Data | 11 | | 1 | 00/60CE : 01 | dfb 1
|
||||
298 | 1 UniFP2.asm 284 | Data | 11 | | 2 | 00/60CF : D2 60 | dw {ozunid_15}
|
||||
299 | 1 UniFP2.asm 285 | Data | 11 | | 1 | 00/60D1 : 05 | dfb {5}
|
||||
300 | 1 UniFP2.asm 286 | Comment | 11 | | 0 | 00/60D2 | *
|
||||
301 | 1 UniFP2.asm 287 | Comment | 11 | | 0 | 00/60D2 | ******** CONTROL LISTS ********
|
||||
302 | 1 UniFP2.asm 288 | Comment | 11 | | 0 | 00/60D2 | *
|
||||
303 | 1 UniFP2.asm 289 | Comment | 11 | | 0 | 00/60D2 | *
|
||||
304 | 1 UniFP2.asm 290 | Comment | 11 | | 0 | 00/60D2 | *** Execute ***
|
||||
305 | 1 UniFP2.asm 291 | Empty | 11 | | 0 | 00/60D2 | ozunid_15
|
||||
306 | 1 UniFP2.asm 291 | Equivalence | 11 | | 0 | 00/60D2 | CNTL_LIST2 equ ozunid_15
|
||||
307 | 1 UniFP2.asm 292 | Data | 11 | | 1 | 00/60D2 : 06 | Clow_byte dfb $06
|
||||
308 | 1 UniFP2.asm 293 | Data | 11 | | 1 | 00/60D3 : 00 | Chigh_byte dfb $00
|
||||
309 | 1 UniFP2.asm 294 | Data | 11 | | 1 | 00/60D4 : 00 | AccValue dfb $00 ; Init Value Unidisk Accumulator Register
|
||||
310 | 1 UniFP2.asm 295 | Data | 11 | | 1 | 00/60D5 : 00 | X_reg dfb $00 ; Init Value Unidisk X Register
|
||||
311 | 1 UniFP2.asm 296 | Data | 11 | | 1 | 00/60D6 : 00 | Y_reg dfb $00 ; Init Value Unidisk Y Register
|
||||
312 | 1 UniFP2.asm 297 | Data | 11 | | 1 | 00/60D7 : 00 | ProStatus dfb $00 ; Init Value Unidisk Status Register
|
||||
313 | 1 UniFP2.asm 298 | Data | 11 | | 1 | 00/60D8 : 00 | LowPC_reg dfb $00 ; Init Value Unidisk Program Counter $0500 at eny dowload
|
||||
314 | 1 UniFP2.asm 299 | Data | 11 | | 1 | 00/60D9 : 05 | HighPC_reg dfb $05 ; $05 first execution, $3C second execution
|
||||
315 | 1 UniFP2.asm 300 | Comment | 11 | | 0 | 00/60DA | *
|
||||
316 | 1 UniFP2.asm 301 | Comment | 11 | | 0 | 00/60DA | *** Set Address ***
|
||||
317 | 1 UniFP2.asm 302 | Empty | 11 | | 0 | 00/60DA | ozunid_16
|
||||
318 | 1 UniFP2.asm 302 | Equivalence | 11 | | 0 | 00/60DA | CNTL_LIST3 equ ozunid_16
|
||||
319 | 1 UniFP2.asm 303 | Data | 11 | | 1 | 00/60DA : 02 | CountL_byte dfb $02
|
||||
320 | 1 UniFP2.asm 304 | Data | 11 | | 1 | 00/60DB : 00 | CountH_byte dfb $00
|
||||
321 | 1 UniFP2.asm 305 | Data | 11 | | 1 | 00/60DC : 2D | LByte_Addr dfb $2D ; ORG of Unidisk program, set begin data address $062E
|
||||
322 | 1 UniFP2.asm 306 | Data | 11 | | 1 | 00/60DD : 06 | HByte_Addr dfb $06
|
||||
323 | 1 UniFP2.asm 307 | Comment | 11 | | 0 | 00/60DE | *
|
||||
324 | 1 UniFP2.asm 308 | Comment | 11 | | 0 | 00/60DE | *** Download ***
|
||||
325 | 1 UniFP2.asm 309 | Empty | 11 | | 0 | 00/60DE | ozunid_17
|
||||
326 | 1 UniFP2.asm 309 | Equivalence | 11 | | 0 | 00/60DE | CNTL_LIST4 equ ozunid_17
|
||||
327 | 1 UniFP2.asm 310 | Data | 11 | | 1 | 00/60DE : 08 | LenghtL_byte dfb $08 ;<----- Lenght of Unidisk program Lo - Byte 312 byte
|
||||
328 | 1 UniFP2.asm 311 | Data | 11 | | 1 | 00/60DF : 00 | LenghtH_byte dfb $00 ;<----- Lenght of Unidisk program Hi Byte
|
||||
329 | 1 UniFP2.asm 312 | Comment | 11 | | 0 | 00/60E0 | *
|
||||
330 | 1 UniFP2.asm 313 | Comment | 11 | | 0 | 00/60E0 | **************** Start UNIDISK Program ****************
|
||||
331 | 1 UniFP2.asm 314 | Comment | 11 | | 0 | 00/60E0 | *
|
||||
332 | 1 UniFP2.asm 315 | Empty | 11 | | 0 | 00/60E0 |
|
||||
333 | 1 UniFP2.asm 316 | Comment | 11 | | 0 | 00/60E0 | ** Input Dynamic Data append in the end of Unidisk routine **
|
||||
334 | 1 UniFP2.asm 317 | Data | 11 | | 1 | 00/60E0 : 00 | FP1 dfb $00
|
||||
335 | 1 UniFP2.asm 318 | Data | 11 | | 1 | 00/60E1 : 00 | dfb $00
|
||||
336 | 1 UniFP2.asm 319 | Data | 11 | | 1 | 00/60E2 : 00 | dfb $00
|
||||
337 | 1 UniFP2.asm 320 | Data | 11 | | 1 | 00/60E3 : 00 | dfb $00
|
||||
338 | 1 UniFP2.asm 321 | Comment | 11 | | 0 | 00/60E4 | *
|
||||
339 | 1 UniFP2.asm 322 | Data | 11 | | 1 | 00/60E4 : 00 | FP2 dfb $00
|
||||
340 | 1 UniFP2.asm 323 | Data | 11 | | 1 | 00/60E5 : 00 | dfb $00
|
||||
341 | 1 UniFP2.asm 324 | Data | 11 | | 1 | 00/60E6 : 00 | dfb $00
|
||||
342 | 1 UniFP2.asm 325 | Data | 11 | | 1 | 00/60E7 : 00 | dfb $00
|
||||
343 | 1 UniFP2.asm 326 | Comment | 11 | | 0 | 00/60E8 | **************** End UNIDISK Program ****************
|
||||
------+----------------------+-------------+----+---------+------+-----------------------+-------------------------------------------------------------------
|
|
@ -1,3 +1,3 @@
|
|||
Conv3p=Type(00),AuxType(0000),VersionCreate(70),MinVersion(BE),Access(E3),FolderInfo1(000000000000000000000000000000000000),FolderInfo2(000000000000000000000000000000000000)
|
||||
UniFP2=Type(00),AuxType(0000),VersionCreate(70),MinVersion(BE),Access(E3),FolderInfo1(000000000000000000000000000000000000),FolderInfo2(000000000000000000000000000000000000)
|
||||
UniFP1=Type(00),AuxType(0000),VersionCreate(70),MinVersion(BE),Access(E3),FolderInfo1(000000000000000000000000000000000000),FolderInfo2(000000000000000000000000000000000000)
|
||||
Conv3p=Type(00),AuxType(0000),VersionCreate(70),MinVersion(BE),Access(E3),FolderInfo1(000000000000000000000000000000000000),FolderInfo2(000000000000000000000000000000000000)
|
||||
UniFP2=Type(00),AuxType(0000),VersionCreate(70),MinVersion(BE),Access(E3),FolderInfo1(000000000000000000000000000000000000),FolderInfo2(000000000000000000000000000000000000)
|
||||
UniFP1=Type(00),AuxType(0000),VersionCreate(70),MinVersion(BE),Access(E3),FolderInfo1(000000000000000000000000000000000000),FolderInfo2(000000000000000000000000000000000000)
|
|
@ -1,15 +1,15 @@
|
|||
5 HOME
|
||||
10 PRINT CHR$ (4);"BLOAD UNIDRIVE4P"
|
||||
12 PRINT CHR$ (4);"BLOAD CONV3P"
|
||||
15 INPUT "N1 ? ";X
|
||||
20 CALL 32768,X
|
||||
27 CALL 24576
|
||||
30 CALL 32831,Y
|
||||
40 PRINT Y
|
||||
50 PRINT CHR$ (4);"BLOAD UNIDRIVE4P2"
|
||||
55 INPUT "N1 ? ";X
|
||||
60 CALL 32768,X
|
||||
65 CALL 24576
|
||||
70 CALL 32831,Y
|
||||
80 PRINT Y
|
||||
5 HOME
|
||||
10 PRINT CHR$ (4);"BLOAD UNIDRIVE4P"
|
||||
12 PRINT CHR$ (4);"BLOAD CONV3P"
|
||||
15 INPUT "N1 ? ";X
|
||||
20 CALL 32768,X
|
||||
27 CALL 24576
|
||||
30 CALL 32831,Y
|
||||
40 PRINT Y
|
||||
50 PRINT CHR$ (4);"BLOAD UNIDRIVE4P2"
|
||||
55 INPUT "N1 ? ";X
|
||||
60 CALL 32768,X
|
||||
65 CALL 24576
|
||||
70 CALL 32831,Y
|
||||
80 PRINT Y
|
||||
90 GOTO 55
|
|
@ -1,143 +1,143 @@
|
|||
* @com.wudsn.ide.asm.hardware=APPLE2
|
||||
************************************
|
||||
* BASIC TO FAC TO FP1 *
|
||||
* X=NUMBER *
|
||||
* CALL 32768,X 768,X *
|
||||
************************************
|
||||
org $8000
|
||||
|
||||
CHKCOM equ $DEBE
|
||||
FRMNUM equ $DD67
|
||||
PTRGET equ $DFE3
|
||||
MOVMF equ $EB2B
|
||||
MOVFM equ $EAF9
|
||||
|
||||
** Woz FP Accumulator 4 Byte + 1 Byte Extra + 1 Byte SIGN**
|
||||
FP1 equ $FA ;Translate F8 --> FA
|
||||
E equ $FE ;Translate FC --> FE
|
||||
SIGN equ $EB
|
||||
|
||||
FP2 equ $EC
|
||||
|
||||
** Applesoft FP Accumulator 5 Byte + 1 Byte Sign **
|
||||
FAC equ $9D
|
||||
|
||||
RSLT equ $7000
|
||||
|
||||
***************************
|
||||
|
||||
ENTRY1 jsr CHKCOM
|
||||
jsr FRMNUM ;VARIABLE X ->FAC (6 Byte Unpacked)
|
||||
|
||||
** FPC to FP1 conversion **
|
||||
|
||||
lda FAC
|
||||
dec A ; dec the EXP
|
||||
sta FP1
|
||||
sta FP2 ; Copy
|
||||
|
||||
lda FAC+5
|
||||
bmi NEG ; chk the Hi bit of 1 byte Mantissa
|
||||
|
||||
POS clc ; Hi bit 0 for negative
|
||||
lda FAC+5
|
||||
|
||||
ora #$80 ; Set Hi Bit 1 byte Mantissa (change Sign only if is positive)
|
||||
ror ; Didide for 2^1
|
||||
|
||||
sta FP1+1
|
||||
sta FP2+1 ; Copy
|
||||
|
||||
jmp CONT
|
||||
|
||||
NEG clc ; Hi bit 1 for positive
|
||||
lda FAC+5
|
||||
|
||||
ror ; Didide for 2^1
|
||||
|
||||
eor #$FF ; One's complement, NOT
|
||||
clc
|
||||
adc #01 ; Two's complement, +1
|
||||
|
||||
sta FP1+1
|
||||
sta FP2+1 ; Copy
|
||||
|
||||
CONT lda FAC+2
|
||||
ror
|
||||
sta FP1+2
|
||||
sta FP2+2 ; Copy
|
||||
|
||||
lda FAC+3
|
||||
ror
|
||||
sta FP1+3
|
||||
sta FP2+3 ; Copy FP2=FP1 X2=X1
|
||||
|
||||
lda FAC+4
|
||||
ror
|
||||
sta E
|
||||
|
||||
;brk
|
||||
rts
|
||||
|
||||
************************************
|
||||
* FP1 TO FAC TO BASIC *
|
||||
* CALL 32831,Y 831,Y *
|
||||
* PRINT Y *
|
||||
************************************
|
||||
|
||||
*
|
||||
** FP1 to FAC conversion **
|
||||
*
|
||||
ENTRY2 lda RSLT ; X1 1 Byte --> 9D FAC
|
||||
inc A ; 2^(FP1+1) inc EXP
|
||||
sta FAC
|
||||
|
||||
lda RSLT+1
|
||||
bmi NEG2 ; chk the Hi bit of 1 byte Mantissa
|
||||
|
||||
|
||||
POS2 clc
|
||||
lda RSLT+1 ; M1 Hi 2 Byte --> 9E FAC
|
||||
rol ; Multiply for 2^1
|
||||
|
||||
ora #$80 ; Set Hi Bit 1 byte Mantissa (change Sign only if is positive)
|
||||
sta FAC+1 ; To 6^ Byte of FAC Unpacked
|
||||
|
||||
;sta FAC+5 ; To 1^ Byte Mantissa of FAC UnPacked
|
||||
jmp CONT2
|
||||
|
||||
NEG2 lda RSLT+1
|
||||
|
||||
sec
|
||||
sbc #01 ; One's complement inv -1
|
||||
eor #$FF ; Two's complement inv NOT
|
||||
|
||||
rol ; Multiply for 2^1
|
||||
|
||||
sta FAC+1 ; To 1^ Byte Mantissa of FAC Packed
|
||||
sta FAC+5 ; To 6^ Byte of FAC Unpacked
|
||||
|
||||
|
||||
CONT2 lda RSLT+2 ; M1 3 Byte --> 9F FAC
|
||||
rol
|
||||
sta FAC+2
|
||||
|
||||
lda RSLT+3 ; M1 Lo 4 Byte --> A0 FAC
|
||||
rol
|
||||
sta FAC+3
|
||||
|
||||
lda E ; Extra 5 Byte --> A1 FAC
|
||||
rol
|
||||
sta FAC+4
|
||||
|
||||
;brk
|
||||
***************************
|
||||
*
|
||||
jsr CHKCOM
|
||||
jsr PTRGET ; Return the Y and A pointing to the specific variabile
|
||||
tax
|
||||
jsr MOVMF ;FAC->VARIABLE Y (5 Bytes Packed)
|
||||
|
||||
;brk
|
||||
rts
|
||||
* @com.wudsn.ide.asm.hardware=APPLE2
|
||||
************************************
|
||||
* BASIC TO FAC TO FP1 *
|
||||
* X=NUMBER *
|
||||
* CALL 32768,X 768,X *
|
||||
************************************
|
||||
org $8000
|
||||
|
||||
CHKCOM equ $DEBE
|
||||
FRMNUM equ $DD67
|
||||
PTRGET equ $DFE3
|
||||
MOVMF equ $EB2B
|
||||
MOVFM equ $EAF9
|
||||
|
||||
** Woz FP Accumulator 4 Byte + 1 Byte Extra + 1 Byte SIGN**
|
||||
FP1 equ $FA ;Translate F8 --> FA
|
||||
E equ $FE ;Translate FC --> FE
|
||||
SIGN equ $EB
|
||||
|
||||
FP2 equ $EC
|
||||
|
||||
** Applesoft FP Accumulator 5 Byte + 1 Byte Sign **
|
||||
FAC equ $9D
|
||||
|
||||
RSLT equ $7000
|
||||
|
||||
***************************
|
||||
|
||||
ENTRY1 jsr CHKCOM
|
||||
jsr FRMNUM ;VARIABLE X ->FAC (6 Byte Unpacked)
|
||||
|
||||
** FPC to FP1 conversion **
|
||||
|
||||
lda FAC
|
||||
dec A ; dec the EXP
|
||||
sta FP1
|
||||
sta FP2 ; Copy
|
||||
|
||||
lda FAC+5
|
||||
bmi NEG ; chk the Hi bit of 1 byte Mantissa
|
||||
|
||||
POS clc ; Hi bit 0 for negative
|
||||
lda FAC+5
|
||||
|
||||
ora #$80 ; Set Hi Bit 1 byte Mantissa (change Sign only if is positive)
|
||||
ror ; Didide for 2^1
|
||||
|
||||
sta FP1+1
|
||||
sta FP2+1 ; Copy
|
||||
|
||||
jmp CONT
|
||||
|
||||
NEG clc ; Hi bit 1 for positive
|
||||
lda FAC+5
|
||||
|
||||
ror ; Didide for 2^1
|
||||
|
||||
eor #$FF ; One's complement, NOT
|
||||
clc
|
||||
adc #01 ; Two's complement, +1
|
||||
|
||||
sta FP1+1
|
||||
sta FP2+1 ; Copy
|
||||
|
||||
CONT lda FAC+2
|
||||
ror
|
||||
sta FP1+2
|
||||
sta FP2+2 ; Copy
|
||||
|
||||
lda FAC+3
|
||||
ror
|
||||
sta FP1+3
|
||||
sta FP2+3 ; Copy FP2=FP1 X2=X1
|
||||
|
||||
lda FAC+4
|
||||
ror
|
||||
sta E
|
||||
|
||||
;brk
|
||||
rts
|
||||
|
||||
************************************
|
||||
* FP1 TO FAC TO BASIC *
|
||||
* CALL 32831,Y 831,Y *
|
||||
* PRINT Y *
|
||||
************************************
|
||||
|
||||
*
|
||||
** FP1 to FAC conversion **
|
||||
*
|
||||
ENTRY2 lda RSLT ; X1 1 Byte --> 9D FAC
|
||||
inc A ; 2^(FP1+1) inc EXP
|
||||
sta FAC
|
||||
|
||||
lda RSLT+1
|
||||
bmi NEG2 ; chk the Hi bit of 1 byte Mantissa
|
||||
|
||||
|
||||
POS2 clc
|
||||
lda RSLT+1 ; M1 Hi 2 Byte --> 9E FAC
|
||||
rol ; Multiply for 2^1
|
||||
|
||||
ora #$80 ; Set Hi Bit 1 byte Mantissa (change Sign only if is positive)
|
||||
sta FAC+1 ; To 6^ Byte of FAC Unpacked
|
||||
|
||||
;sta FAC+5 ; To 1^ Byte Mantissa of FAC UnPacked
|
||||
jmp CONT2
|
||||
|
||||
NEG2 lda RSLT+1
|
||||
|
||||
sec
|
||||
sbc #01 ; One's complement inv -1
|
||||
eor #$FF ; Two's complement inv NOT
|
||||
|
||||
rol ; Multiply for 2^1
|
||||
|
||||
sta FAC+1 ; To 1^ Byte Mantissa of FAC Packed
|
||||
sta FAC+5 ; To 6^ Byte of FAC Unpacked
|
||||
|
||||
|
||||
CONT2 lda RSLT+2 ; M1 3 Byte --> 9F FAC
|
||||
rol
|
||||
sta FAC+2
|
||||
|
||||
lda RSLT+3 ; M1 Lo 4 Byte --> A0 FAC
|
||||
rol
|
||||
sta FAC+3
|
||||
|
||||
lda E ; Extra 5 Byte --> A1 FAC
|
||||
rol
|
||||
sta FAC+4
|
||||
|
||||
;brk
|
||||
***************************
|
||||
*
|
||||
jsr CHKCOM
|
||||
jsr PTRGET ; Return the Y and A pointing to the specific variabile
|
||||
tax
|
||||
jsr MOVMF ;FAC->VARIABLE Y (5 Bytes Packed)
|
||||
|
||||
;brk
|
||||
rts
|
||||
chk
|
|
@ -1,143 +1,143 @@
|
|||
* @com.wudsn.ide.asm.hardware=APPLE2
|
||||
************************************
|
||||
* BASIC TO FAC TO FP1 *
|
||||
* X=NUMBER *
|
||||
* CALL 32768,X 768,X *
|
||||
************************************
|
||||
org $8000
|
||||
|
||||
CHKCOM equ $DEBE
|
||||
FRMNUM equ $DD67
|
||||
PTRGET equ $DFE3
|
||||
MOVMF equ $EB2B
|
||||
MOVFM equ $EAF9
|
||||
|
||||
** Woz FP Accumulator 4 Byte + 1 Byte Extra + 1 Byte SIGN**
|
||||
FP1 equ $FA ;Translate F8 --> FA
|
||||
E equ $FE ;Translate FC --> FE
|
||||
SIGN equ $EB
|
||||
|
||||
FP2 equ $EC
|
||||
|
||||
** Applesoft FP Accumulator 5 Byte + 1 Byte Sign **
|
||||
FAC equ $9D
|
||||
|
||||
RSLT equ $7000
|
||||
|
||||
***************************
|
||||
|
||||
ENTRY1 jsr CHKCOM
|
||||
jsr FRMNUM ;VARIABLE X ->FAC (6 Byte Unpacked)
|
||||
|
||||
** FPC to FP1 conversion **
|
||||
|
||||
lda FAC
|
||||
dec A ; dec the EXP
|
||||
sta FP1
|
||||
sta FP2 ; Copy
|
||||
|
||||
lda FAC+5
|
||||
bmi NEG ; chk the Hi bit of 1 byte Mantissa
|
||||
|
||||
POS clc ; Hi bit 0 for negative
|
||||
lda FAC+5
|
||||
|
||||
ora #$80 ; Set Hi Bit 1 byte Mantissa (change Sign only if is positive)
|
||||
ror ; Didide for 2^1
|
||||
|
||||
sta FP1+1
|
||||
sta FP2+1 ; Copy
|
||||
|
||||
jmp CONT
|
||||
|
||||
NEG clc ; Hi bit 1 for positive
|
||||
lda FAC+5
|
||||
|
||||
ror ; Didide for 2^1
|
||||
|
||||
eor #$FF ; One's complement, NOT
|
||||
clc
|
||||
adc #01 ; Two's complement, +1
|
||||
|
||||
sta FP1+1
|
||||
sta FP2+1 ; Copy
|
||||
|
||||
CONT lda FAC+2
|
||||
ror
|
||||
sta FP1+2
|
||||
sta FP2+2 ; Copy
|
||||
|
||||
lda FAC+3
|
||||
ror
|
||||
sta FP1+3
|
||||
sta FP2+3 ; Copy FP2=FP1 X2=X1
|
||||
|
||||
lda FAC+4
|
||||
ror
|
||||
sta E
|
||||
|
||||
;brk
|
||||
rts
|
||||
|
||||
************************************
|
||||
* FP1 TO FAC TO BASIC *
|
||||
* CALL 32831,Y 831,Y *
|
||||
* PRINT Y *
|
||||
************************************
|
||||
|
||||
*
|
||||
** FP1 to FAC conversion **
|
||||
*
|
||||
ENTRY2 lda RSLT ; X1 1 Byte --> 9D FAC
|
||||
inc A ; 2^(FP1+1) inc EXP
|
||||
sta FAC
|
||||
|
||||
lda RSLT+1
|
||||
bmi NEG2 ; chk the Hi bit of 1 byte Mantissa
|
||||
|
||||
|
||||
POS2 clc
|
||||
lda RSLT+1 ; M1 Hi 2 Byte --> 9E FAC
|
||||
rol ; Multiply for 2^1
|
||||
|
||||
ora #$80 ; Set Hi Bit 1 byte Mantissa (change Sign only if is positive)
|
||||
sta FAC+1 ; To 6^ Byte of FAC Unpacked
|
||||
|
||||
;sta FAC+5 ; To 1^ Byte Mantissa of FAC UnPacked
|
||||
jmp CONT2
|
||||
|
||||
NEG2 lda RSLT+1
|
||||
|
||||
sec
|
||||
sbc #01 ; One's complement inv -1
|
||||
eor #$FF ; Two's complement inv NOT
|
||||
|
||||
rol ; Multiply for 2^1
|
||||
|
||||
sta FAC+1 ; To 1^ Byte Mantissa of FAC Packed
|
||||
sta FAC+5 ; To 6^ Byte of FAC Unpacked
|
||||
|
||||
|
||||
CONT2 lda RSLT+2 ; M1 3 Byte --> 9F FAC
|
||||
rol
|
||||
sta FAC+2
|
||||
|
||||
lda RSLT+3 ; M1 Lo 4 Byte --> A0 FAC
|
||||
rol
|
||||
sta FAC+3
|
||||
|
||||
lda E ; Extra 5 Byte --> A1 FAC
|
||||
rol
|
||||
sta FAC+4
|
||||
|
||||
;brk
|
||||
***************************
|
||||
*
|
||||
jsr CHKCOM
|
||||
jsr PTRGET ; Return the Y and A pointing to the specific variabile
|
||||
tax
|
||||
jsr MOVMF ;FAC->VARIABLE Y (5 Bytes Packed)
|
||||
|
||||
;brk
|
||||
rts
|
||||
* @com.wudsn.ide.asm.hardware=APPLE2
|
||||
************************************
|
||||
* BASIC TO FAC TO FP1 *
|
||||
* X=NUMBER *
|
||||
* CALL 32768,X 768,X *
|
||||
************************************
|
||||
org $8000
|
||||
|
||||
CHKCOM equ $DEBE
|
||||
FRMNUM equ $DD67
|
||||
PTRGET equ $DFE3
|
||||
MOVMF equ $EB2B
|
||||
MOVFM equ $EAF9
|
||||
|
||||
** Woz FP Accumulator 4 Byte + 1 Byte Extra + 1 Byte SIGN**
|
||||
FP1 equ $FA ;Translate F8 --> FA
|
||||
E equ $FE ;Translate FC --> FE
|
||||
SIGN equ $EB
|
||||
|
||||
FP2 equ $EC
|
||||
|
||||
** Applesoft FP Accumulator 5 Byte + 1 Byte Sign **
|
||||
FAC equ $9D
|
||||
|
||||
RSLT equ $7000
|
||||
|
||||
***************************
|
||||
|
||||
ENTRY1 jsr CHKCOM
|
||||
jsr FRMNUM ;VARIABLE X ->FAC (6 Byte Unpacked)
|
||||
|
||||
** FPC to FP1 conversion **
|
||||
|
||||
lda FAC
|
||||
dec A ; dec the EXP
|
||||
sta FP1
|
||||
sta FP2 ; Copy
|
||||
|
||||
lda FAC+5
|
||||
bmi NEG ; chk the Hi bit of 1 byte Mantissa
|
||||
|
||||
POS clc ; Hi bit 0 for negative
|
||||
lda FAC+5
|
||||
|
||||
ora #$80 ; Set Hi Bit 1 byte Mantissa (change Sign only if is positive)
|
||||
ror ; Didide for 2^1
|
||||
|
||||
sta FP1+1
|
||||
sta FP2+1 ; Copy
|
||||
|
||||
jmp CONT
|
||||
|
||||
NEG clc ; Hi bit 1 for positive
|
||||
lda FAC+5
|
||||
|
||||
ror ; Didide for 2^1
|
||||
|
||||
eor #$FF ; One's complement, NOT
|
||||
clc
|
||||
adc #01 ; Two's complement, +1
|
||||
|
||||
sta FP1+1
|
||||
sta FP2+1 ; Copy
|
||||
|
||||
CONT lda FAC+2
|
||||
ror
|
||||
sta FP1+2
|
||||
sta FP2+2 ; Copy
|
||||
|
||||
lda FAC+3
|
||||
ror
|
||||
sta FP1+3
|
||||
sta FP2+3 ; Copy FP2=FP1 X2=X1
|
||||
|
||||
lda FAC+4
|
||||
ror
|
||||
sta E
|
||||
|
||||
;brk
|
||||
rts
|
||||
|
||||
************************************
|
||||
* FP1 TO FAC TO BASIC *
|
||||
* CALL 32831,Y 831,Y *
|
||||
* PRINT Y *
|
||||
************************************
|
||||
|
||||
*
|
||||
** FP1 to FAC conversion **
|
||||
*
|
||||
ENTRY2 lda RSLT ; X1 1 Byte --> 9D FAC
|
||||
inc A ; 2^(FP1+1) inc EXP
|
||||
sta FAC
|
||||
|
||||
lda RSLT+1
|
||||
bmi NEG2 ; chk the Hi bit of 1 byte Mantissa
|
||||
|
||||
|
||||
POS2 clc
|
||||
lda RSLT+1 ; M1 Hi 2 Byte --> 9E FAC
|
||||
rol ; Multiply for 2^1
|
||||
|
||||
ora #$80 ; Set Hi Bit 1 byte Mantissa (change Sign only if is positive)
|
||||
sta FAC+1 ; To 6^ Byte of FAC Unpacked
|
||||
|
||||
;sta FAC+5 ; To 1^ Byte Mantissa of FAC UnPacked
|
||||
jmp CONT2
|
||||
|
||||
NEG2 lda RSLT+1
|
||||
|
||||
sec
|
||||
sbc #01 ; One's complement inv -1
|
||||
eor #$FF ; Two's complement inv NOT
|
||||
|
||||
rol ; Multiply for 2^1
|
||||
|
||||
sta FAC+1 ; To 1^ Byte Mantissa of FAC Packed
|
||||
sta FAC+5 ; To 6^ Byte of FAC Unpacked
|
||||
|
||||
|
||||
CONT2 lda RSLT+2 ; M1 3 Byte --> 9F FAC
|
||||
rol
|
||||
sta FAC+2
|
||||
|
||||
lda RSLT+3 ; M1 Lo 4 Byte --> A0 FAC
|
||||
rol
|
||||
sta FAC+3
|
||||
|
||||
lda E ; Extra 5 Byte --> A1 FAC
|
||||
rol
|
||||
sta FAC+4
|
||||
|
||||
;brk
|
||||
***************************
|
||||
*
|
||||
jsr CHKCOM
|
||||
jsr PTRGET ; Return the Y and A pointing to the specific variabile
|
||||
tax
|
||||
jsr MOVMF ;FAC->VARIABLE Y (5 Bytes Packed)
|
||||
|
||||
;brk
|
||||
rts
|
||||
chk
|
|
@ -1,147 +1,147 @@
|
|||
------+----------------------+-------------+----+---------+------+-----------------------+-------------------------------------------------------------------
|
||||
Line | # File Line | Line Type | MX | Reloc | Size | Address Object Code | Source Code
|
||||
------+----------------------+-------------+----+---------+------+-----------------------+-------------------------------------------------------------------
|
||||
1 | 1 FPConv.asm 1 | Comment | 11 | | 0 | 00/8000 | * @com.wudsn.ide.asm.hardware=APPLE2
|
||||
2 | 1 FPConv.asm 2 | Comment | 11 | | 0 | 00/8000 | ************************************
|
||||
3 | 1 FPConv.asm 3 | Comment | 11 | | 0 | 00/8000 | * BASIC TO FAC TO FP1 *
|
||||
4 | 1 FPConv.asm 4 | Comment | 11 | | 0 | 00/8000 | * X=NUMBER *
|
||||
5 | 1 FPConv.asm 5 | Comment | 11 | | 0 | 00/8000 | * CALL 32768,X 768,X *
|
||||
6 | 1 FPConv.asm 6 | Comment | 11 | | 0 | 00/8000 | ************************************
|
||||
7 | 1 FPConv.asm 7 | Directive | 11 | | 0 | 00/8000 | org $8000
|
||||
8 | 1 FPConv.asm 8 | Empty | 11 | | 0 | 00/8000 |
|
||||
9 | 1 FPConv.asm 9 | Equivalence | 11 | | 0 | 00/8000 | CHKCOM equ $DEBE
|
||||
10 | 1 FPConv.asm 10 | Equivalence | 11 | | 0 | 00/8000 | FRMNUM equ $DD67
|
||||
11 | 1 FPConv.asm 11 | Equivalence | 11 | | 0 | 00/8000 | PTRGET equ $DFE3
|
||||
12 | 1 FPConv.asm 12 | Equivalence | 11 | | 0 | 00/8000 | MOVMF equ $EB2B
|
||||
13 | 1 FPConv.asm 13 | Equivalence | 11 | | 0 | 00/8000 | MOVFM equ $EAF9
|
||||
14 | 1 FPConv.asm 14 | Empty | 11 | | 0 | 00/8000 |
|
||||
15 | 1 FPConv.asm 15 | Comment | 11 | | 0 | 00/8000 | ** Woz FP Accumulator 4 Byte + 1 Byte Extra + 1 Byte SIGN**
|
||||
16 | 1 FPConv.asm 16 | Equivalence | 11 | | 0 | 00/8000 | FP1 equ $FA ;Translate F8 --> FA
|
||||
17 | 1 FPConv.asm 17 | Equivalence | 11 | | 0 | 00/8000 | E equ $FE ;Translate FC --> FE
|
||||
18 | 1 FPConv.asm 18 | Equivalence | 11 | | 0 | 00/8000 | SIGN equ $EB
|
||||
19 | 1 FPConv.asm 19 | Empty | 11 | | 0 | 00/8000 |
|
||||
20 | 1 FPConv.asm 20 | Equivalence | 11 | | 0 | 00/8000 | FP2 equ $EC
|
||||
21 | 1 FPConv.asm 21 | Empty | 11 | | 0 | 00/8000 |
|
||||
22 | 1 FPConv.asm 22 | Comment | 11 | | 0 | 00/8000 | ** Applesoft FP Accumulator 5 Byte + 1 Byte Sign **
|
||||
23 | 1 FPConv.asm 23 | Equivalence | 11 | | 0 | 00/8000 | FAC equ $9D
|
||||
24 | 1 FPConv.asm 24 | Empty | 11 | | 0 | 00/8000 |
|
||||
25 | 1 FPConv.asm 25 | Equivalence | 11 | | 0 | 00/8000 | RSLT equ $7000
|
||||
26 | 1 FPConv.asm 26 | Empty | 11 | | 0 | 00/8000 |
|
||||
27 | 1 FPConv.asm 27 | Comment | 11 | | 0 | 00/8000 | ***************************
|
||||
28 | 1 FPConv.asm 28 | Empty | 11 | | 0 | 00/8000 |
|
||||
29 | 1 FPConv.asm 29 | Code | 11 | | 3 | 00/8000 : 20 BE DE | ENTRY1 jsr {$DEBE}
|
||||
30 | 1 FPConv.asm 30 | Code | 11 | | 3 | 00/8003 : 20 67 DD | jsr {$DD67} ;VARIABLE X ->FAC (6 Byte Unpacked)
|
||||
31 | 1 FPConv.asm 31 | Empty | 11 | | 0 | 00/8006 |
|
||||
32 | 1 FPConv.asm 32 | Comment | 11 | | 0 | 00/8006 | ** FPC to FP1 conversion **
|
||||
33 | 1 FPConv.asm 33 | Empty | 11 | | 0 | 00/8006 |
|
||||
34 | 1 FPConv.asm 34 | Code | 11 | | 2 | 00/8006 : A5 9D | lda {$9D}
|
||||
35 | 1 FPConv.asm 35 | Code | 11 | | 1 | 00/8008 : 3A | dec A ; dec the EXP
|
||||
36 | 1 FPConv.asm 36 | Code | 11 | | 2 | 00/8009 : 85 FA | sta {$FA}
|
||||
37 | 1 FPConv.asm 37 | Code | 11 | | 2 | 00/800B : 85 EC | sta {$EC} ; Copy
|
||||
38 | 1 FPConv.asm 38 | Empty | 11 | | 0 | 00/800D |
|
||||
39 | 1 FPConv.asm 39 | Code | 11 | | 2 | 00/800D : A5 A2 | lda {$9D}+5
|
||||
40 | 1 FPConv.asm 40 | Code | 11 | | 2 | 00/800F : 30 0D | bmi NEG ; chk the Hi bit of 1 byte Mantissa
|
||||
41 | 1 FPConv.asm 41 | Empty | 11 | | 0 | 00/8011 |
|
||||
42 | 1 FPConv.asm 42 | Code | 11 | | 1 | 00/8011 : 18 | POS clc ; Hi bit 0 for negative
|
||||
43 | 1 FPConv.asm 43 | Code | 11 | | 2 | 00/8012 : A5 A2 | lda {$9D}+5
|
||||
44 | 1 FPConv.asm 44 | Empty | 11 | | 0 | 00/8014 |
|
||||
45 | 1 FPConv.asm 45 | Code | 11 | | 2 | 00/8014 : 09 80 | ora #$80 ; Set Hi Bit 1 byte Mantissa (change Sign only if is positive)
|
||||
46 | 1 FPConv.asm 46 | Code | 11 | | 1 | 00/8016 : 6A | ror ; Didide for 2^1
|
||||
47 | 1 FPConv.asm 47 | Empty | 11 | | 0 | 00/8017 |
|
||||
48 | 1 FPConv.asm 48 | Code | 11 | | 2 | 00/8017 : 85 FB | sta {$FA}+1
|
||||
49 | 1 FPConv.asm 49 | Code | 11 | | 2 | 00/8019 : 85 ED | sta {$EC}+1 ; Copy
|
||||
50 | 1 FPConv.asm 50 | Empty | 11 | | 0 | 00/801B |
|
||||
51 | 1 FPConv.asm 51 | Code | 11 | | 3 | 00/801B : 4C 2B 80 | jmp CONT
|
||||
52 | 1 FPConv.asm 52 | Empty | 11 | | 0 | 00/801E |
|
||||
53 | 1 FPConv.asm 53 | Code | 11 | | 1 | 00/801E : 18 | NEG clc ; Hi bit 1 for positive
|
||||
54 | 1 FPConv.asm 54 | Code | 11 | | 2 | 00/801F : A5 A2 | lda {$9D}+5
|
||||
55 | 1 FPConv.asm 55 | Empty | 11 | | 0 | 00/8021 |
|
||||
56 | 1 FPConv.asm 56 | Code | 11 | | 1 | 00/8021 : 6A | ror ; Didide for 2^1
|
||||
57 | 1 FPConv.asm 57 | Empty | 11 | | 0 | 00/8022 |
|
||||
58 | 1 FPConv.asm 58 | Code | 11 | | 2 | 00/8022 : 49 FF | eor #$FF ; One's complement, NOT
|
||||
59 | 1 FPConv.asm 59 | Code | 11 | | 1 | 00/8024 : 18 | clc
|
||||
60 | 1 FPConv.asm 60 | Code | 11 | | 2 | 00/8025 : 69 01 | adc #01 ; Two's complement, +1
|
||||
61 | 1 FPConv.asm 61 | Empty | 11 | | 0 | 00/8027 |
|
||||
62 | 1 FPConv.asm 62 | Code | 11 | | 2 | 00/8027 : 85 FB | sta {$FA}+1
|
||||
63 | 1 FPConv.asm 63 | Code | 11 | | 2 | 00/8029 : 85 ED | sta {$EC}+1 ; Copy
|
||||
64 | 1 FPConv.asm 64 | Empty | 11 | | 0 | 00/802B |
|
||||
65 | 1 FPConv.asm 65 | Code | 11 | | 2 | 00/802B : A5 9F | CONT lda {$9D}+2
|
||||
66 | 1 FPConv.asm 66 | Code | 11 | | 1 | 00/802D : 6A | ror
|
||||
67 | 1 FPConv.asm 67 | Code | 11 | | 2 | 00/802E : 85 FC | sta {$FA}+2
|
||||
68 | 1 FPConv.asm 68 | Code | 11 | | 2 | 00/8030 : 85 EE | sta {$EC}+2 ; Copy
|
||||
69 | 1 FPConv.asm 69 | Empty | 11 | | 0 | 00/8032 |
|
||||
70 | 1 FPConv.asm 70 | Code | 11 | | 2 | 00/8032 : A5 A0 | lda {$9D}+3
|
||||
71 | 1 FPConv.asm 71 | Code | 11 | | 1 | 00/8034 : 6A | ror
|
||||
72 | 1 FPConv.asm 72 | Code | 11 | | 2 | 00/8035 : 85 FD | sta {$FA}+3
|
||||
73 | 1 FPConv.asm 73 | Code | 11 | | 2 | 00/8037 : 85 EF | sta {$EC}+3 ; Copy FP2=FP1 X2=X1
|
||||
74 | 1 FPConv.asm 74 | Empty | 11 | | 0 | 00/8039 |
|
||||
75 | 1 FPConv.asm 75 | Code | 11 | | 2 | 00/8039 : A5 A1 | lda {$9D}+4
|
||||
76 | 1 FPConv.asm 76 | Code | 11 | | 1 | 00/803B : 6A | ror
|
||||
77 | 1 FPConv.asm 77 | Code | 11 | | 2 | 00/803C : 85 FE | sta {$FE}
|
||||
78 | 1 FPConv.asm 78 | Empty | 11 | | 0 | 00/803E |
|
||||
79 | 1 FPConv.asm 79 | Comment | 11 | | 0 | 00/803E | ;brk
|
||||
80 | 1 FPConv.asm 80 | Code | 11 | | 1 | 00/803E : 60 | rts
|
||||
81 | 1 FPConv.asm 81 | Empty | 11 | | 0 | 00/803F |
|
||||
82 | 1 FPConv.asm 82 | Comment | 11 | | 0 | 00/803F | ************************************
|
||||
83 | 1 FPConv.asm 83 | Comment | 11 | | 0 | 00/803F | * FP1 TO FAC TO BASIC *
|
||||
84 | 1 FPConv.asm 84 | Comment | 11 | | 0 | 00/803F | * CALL 32831,Y 831,Y *
|
||||
85 | 1 FPConv.asm 85 | Comment | 11 | | 0 | 00/803F | * PRINT Y *
|
||||
86 | 1 FPConv.asm 86 | Comment | 11 | | 0 | 00/803F | ************************************
|
||||
87 | 1 FPConv.asm 87 | Empty | 11 | | 0 | 00/803F |
|
||||
88 | 1 FPConv.asm 88 | Comment | 11 | | 0 | 00/803F | *
|
||||
89 | 1 FPConv.asm 89 | Comment | 11 | | 0 | 00/803F | ** FP1 to FAC conversion **
|
||||
90 | 1 FPConv.asm 90 | Comment | 11 | | 0 | 00/803F | *
|
||||
91 | 1 FPConv.asm 91 | Code | 11 | | 3 | 00/803F : AD 00 70 | ENTRY2 lda {$7000} ; X1 1 Byte --> 9D FAC
|
||||
92 | 1 FPConv.asm 92 | Code | 11 | | 1 | 00/8042 : 1A | inc A ; 2^(FP1+1) inc EXP
|
||||
93 | 1 FPConv.asm 93 | Code | 11 | | 2 | 00/8043 : 85 9D | sta {$9D}
|
||||
94 | 1 FPConv.asm 94 | Empty | 11 | | 0 | 00/8045 |
|
||||
95 | 1 FPConv.asm 95 | Code | 11 | | 3 | 00/8045 : AD 01 70 | lda {$7000}+1
|
||||
96 | 1 FPConv.asm 96 | Code | 11 | | 2 | 00/8048 : 30 0C | bmi NEG2 ; chk the Hi bit of 1 byte Mantissa
|
||||
97 | 1 FPConv.asm 97 | Empty | 11 | | 0 | 00/804A |
|
||||
98 | 1 FPConv.asm 98 | Empty | 11 | | 0 | 00/804A |
|
||||
99 | 1 FPConv.asm 99 | Code | 11 | | 1 | 00/804A : 18 | POS2 clc
|
||||
100 | 1 FPConv.asm 100 | Code | 11 | | 3 | 00/804B : AD 01 70 | lda {$7000}+1 ; M1 Hi 2 Byte --> 9E FAC
|
||||
101 | 1 FPConv.asm 101 | Code | 11 | | 1 | 00/804E : 2A | rol ; Multiply for 2^1
|
||||
102 | 1 FPConv.asm 102 | Empty | 11 | | 0 | 00/804F |
|
||||
103 | 1 FPConv.asm 103 | Code | 11 | | 2 | 00/804F : 09 80 | ora #$80 ; Set Hi Bit 1 byte Mantissa (change Sign only if is positive)
|
||||
104 | 1 FPConv.asm 104 | Code | 11 | | 2 | 00/8051 : 85 9E | sta {$9D}+1 ; To 6^ Byte of FAC Unpacked
|
||||
105 | 1 FPConv.asm 105 | Empty | 11 | | 0 | 00/8053 |
|
||||
106 | 1 FPConv.asm 106 | Comment | 11 | | 0 | 00/8053 | ;sta FAC+5 ; To 1^ Byte Mantissa of FAC UnPacked
|
||||
107 | 1 FPConv.asm 107 | Code | 11 | | 3 | 00/8053 : 4C 63 80 | jmp CONT2
|
||||
108 | 1 FPConv.asm 108 | Empty | 11 | | 0 | 00/8056 |
|
||||
109 | 1 FPConv.asm 109 | Code | 11 | | 3 | 00/8056 : AD 01 70 | NEG2 lda {$7000}+1
|
||||
110 | 1 FPConv.asm 110 | Empty | 11 | | 0 | 00/8059 |
|
||||
111 | 1 FPConv.asm 111 | Code | 11 | | 1 | 00/8059 : 38 | sec
|
||||
112 | 1 FPConv.asm 112 | Code | 11 | | 2 | 00/805A : E9 01 | sbc #01 ; One's complement inv -1
|
||||
113 | 1 FPConv.asm 113 | Code | 11 | | 2 | 00/805C : 49 FF | eor #$FF ; Two's complement inv NOT
|
||||
114 | 1 FPConv.asm 114 | Empty | 11 | | 0 | 00/805E |
|
||||
115 | 1 FPConv.asm 115 | Code | 11 | | 1 | 00/805E : 2A | rol ; Multiply for 2^1
|
||||
116 | 1 FPConv.asm 116 | Empty | 11 | | 0 | 00/805F |
|
||||
117 | 1 FPConv.asm 117 | Code | 11 | | 2 | 00/805F : 85 9E | sta {$9D}+1 ; To 1^ Byte Mantissa of FAC Packed
|
||||
118 | 1 FPConv.asm 118 | Code | 11 | | 2 | 00/8061 : 85 A2 | sta {$9D}+5 ; To 6^ Byte of FAC Unpacked
|
||||
119 | 1 FPConv.asm 119 | Empty | 11 | | 0 | 00/8063 |
|
||||
120 | 1 FPConv.asm 120 | Empty | 11 | | 0 | 00/8063 |
|
||||
121 | 1 FPConv.asm 121 | Code | 11 | | 3 | 00/8063 : AD 02 70 | CONT2 lda {$7000}+2 ; M1 3 Byte --> 9F FAC
|
||||
122 | 1 FPConv.asm 122 | Code | 11 | | 1 | 00/8066 : 2A | rol
|
||||
123 | 1 FPConv.asm 123 | Code | 11 | | 2 | 00/8067 : 85 9F | sta {$9D}+2
|
||||
124 | 1 FPConv.asm 124 | Empty | 11 | | 0 | 00/8069 |
|
||||
125 | 1 FPConv.asm 125 | Code | 11 | | 3 | 00/8069 : AD 03 70 | lda {$7000}+3 ; M1 Lo 4 Byte --> A0 FAC
|
||||
126 | 1 FPConv.asm 126 | Code | 11 | | 1 | 00/806C : 2A | rol
|
||||
127 | 1 FPConv.asm 127 | Code | 11 | | 2 | 00/806D : 85 A0 | sta {$9D}+3
|
||||
128 | 1 FPConv.asm 128 | Empty | 11 | | 0 | 00/806F |
|
||||
129 | 1 FPConv.asm 129 | Code | 11 | | 2 | 00/806F : A5 FE | lda {$FE} ; Extra 5 Byte --> A1 FAC
|
||||
130 | 1 FPConv.asm 130 | Code | 11 | | 1 | 00/8071 : 2A | rol
|
||||
131 | 1 FPConv.asm 131 | Code | 11 | | 2 | 00/8072 : 85 A1 | sta {$9D}+4
|
||||
132 | 1 FPConv.asm 132 | Empty | 11 | | 0 | 00/8074 |
|
||||
133 | 1 FPConv.asm 133 | Comment | 11 | | 0 | 00/8074 | ;brk
|
||||
134 | 1 FPConv.asm 134 | Comment | 11 | | 0 | 00/8074 | ***************************
|
||||
135 | 1 FPConv.asm 135 | Comment | 11 | | 0 | 00/8074 | *
|
||||
136 | 1 FPConv.asm 136 | Code | 11 | | 3 | 00/8074 : 20 BE DE | jsr {$DEBE}
|
||||
137 | 1 FPConv.asm 137 | Code | 11 | | 3 | 00/8077 : 20 E3 DF | jsr {$DFE3} ; Return the Y and A pointing to the specific variabile
|
||||
138 | 1 FPConv.asm 138 | Code | 11 | | 1 | 00/807A : AA | tax
|
||||
139 | 1 FPConv.asm 139 | Code | 11 | | 3 | 00/807B : 20 2B EB | jsr {$EB2B} ;FAC->VARIABLE Y (5 Bytes Packed)
|
||||
140 | 1 FPConv.asm 140 | Empty | 11 | | 0 | 00/807E |
|
||||
141 | 1 FPConv.asm 141 | Comment | 11 | | 0 | 00/807E | ;brk
|
||||
142 | 1 FPConv.asm 142 | Code | 11 | | 1 | 00/807E : 60 | rts
|
||||
143 | 1 FPConv.asm 143 | Data | 11 | | 1 | 00/807F : 00 | chk
|
||||
------+----------------------+-------------+----+---------+------+-----------------------+-------------------------------------------------------------------
|
||||
------+----------------------+-------------+----+---------+------+-----------------------+-------------------------------------------------------------------
|
||||
Line | # File Line | Line Type | MX | Reloc | Size | Address Object Code | Source Code
|
||||
------+----------------------+-------------+----+---------+------+-----------------------+-------------------------------------------------------------------
|
||||
1 | 1 FPConv.asm 1 | Comment | 11 | | 0 | 00/8000 | * @com.wudsn.ide.asm.hardware=APPLE2
|
||||
2 | 1 FPConv.asm 2 | Comment | 11 | | 0 | 00/8000 | ************************************
|
||||
3 | 1 FPConv.asm 3 | Comment | 11 | | 0 | 00/8000 | * BASIC TO FAC TO FP1 *
|
||||
4 | 1 FPConv.asm 4 | Comment | 11 | | 0 | 00/8000 | * X=NUMBER *
|
||||
5 | 1 FPConv.asm 5 | Comment | 11 | | 0 | 00/8000 | * CALL 32768,X 768,X *
|
||||
6 | 1 FPConv.asm 6 | Comment | 11 | | 0 | 00/8000 | ************************************
|
||||
7 | 1 FPConv.asm 7 | Directive | 11 | | 0 | 00/8000 | org $8000
|
||||
8 | 1 FPConv.asm 8 | Empty | 11 | | 0 | 00/8000 |
|
||||
9 | 1 FPConv.asm 9 | Equivalence | 11 | | 0 | 00/8000 | CHKCOM equ $DEBE
|
||||
10 | 1 FPConv.asm 10 | Equivalence | 11 | | 0 | 00/8000 | FRMNUM equ $DD67
|
||||
11 | 1 FPConv.asm 11 | Equivalence | 11 | | 0 | 00/8000 | PTRGET equ $DFE3
|
||||
12 | 1 FPConv.asm 12 | Equivalence | 11 | | 0 | 00/8000 | MOVMF equ $EB2B
|
||||
13 | 1 FPConv.asm 13 | Equivalence | 11 | | 0 | 00/8000 | MOVFM equ $EAF9
|
||||
14 | 1 FPConv.asm 14 | Empty | 11 | | 0 | 00/8000 |
|
||||
15 | 1 FPConv.asm 15 | Comment | 11 | | 0 | 00/8000 | ** Woz FP Accumulator 4 Byte + 1 Byte Extra + 1 Byte SIGN**
|
||||
16 | 1 FPConv.asm 16 | Equivalence | 11 | | 0 | 00/8000 | FP1 equ $FA ;Translate F8 --> FA
|
||||
17 | 1 FPConv.asm 17 | Equivalence | 11 | | 0 | 00/8000 | E equ $FE ;Translate FC --> FE
|
||||
18 | 1 FPConv.asm 18 | Equivalence | 11 | | 0 | 00/8000 | SIGN equ $EB
|
||||
19 | 1 FPConv.asm 19 | Empty | 11 | | 0 | 00/8000 |
|
||||
20 | 1 FPConv.asm 20 | Equivalence | 11 | | 0 | 00/8000 | FP2 equ $EC
|
||||
21 | 1 FPConv.asm 21 | Empty | 11 | | 0 | 00/8000 |
|
||||
22 | 1 FPConv.asm 22 | Comment | 11 | | 0 | 00/8000 | ** Applesoft FP Accumulator 5 Byte + 1 Byte Sign **
|
||||
23 | 1 FPConv.asm 23 | Equivalence | 11 | | 0 | 00/8000 | FAC equ $9D
|
||||
24 | 1 FPConv.asm 24 | Empty | 11 | | 0 | 00/8000 |
|
||||
25 | 1 FPConv.asm 25 | Equivalence | 11 | | 0 | 00/8000 | RSLT equ $7000
|
||||
26 | 1 FPConv.asm 26 | Empty | 11 | | 0 | 00/8000 |
|
||||
27 | 1 FPConv.asm 27 | Comment | 11 | | 0 | 00/8000 | ***************************
|
||||
28 | 1 FPConv.asm 28 | Empty | 11 | | 0 | 00/8000 |
|
||||
29 | 1 FPConv.asm 29 | Code | 11 | | 3 | 00/8000 : 20 BE DE | ENTRY1 jsr {$DEBE}
|
||||
30 | 1 FPConv.asm 30 | Code | 11 | | 3 | 00/8003 : 20 67 DD | jsr {$DD67} ;VARIABLE X ->FAC (6 Byte Unpacked)
|
||||
31 | 1 FPConv.asm 31 | Empty | 11 | | 0 | 00/8006 |
|
||||
32 | 1 FPConv.asm 32 | Comment | 11 | | 0 | 00/8006 | ** FPC to FP1 conversion **
|
||||
33 | 1 FPConv.asm 33 | Empty | 11 | | 0 | 00/8006 |
|
||||
34 | 1 FPConv.asm 34 | Code | 11 | | 2 | 00/8006 : A5 9D | lda {$9D}
|
||||
35 | 1 FPConv.asm 35 | Code | 11 | | 1 | 00/8008 : 3A | dec A ; dec the EXP
|
||||
36 | 1 FPConv.asm 36 | Code | 11 | | 2 | 00/8009 : 85 FA | sta {$FA}
|
||||
37 | 1 FPConv.asm 37 | Code | 11 | | 2 | 00/800B : 85 EC | sta {$EC} ; Copy
|
||||
38 | 1 FPConv.asm 38 | Empty | 11 | | 0 | 00/800D |
|
||||
39 | 1 FPConv.asm 39 | Code | 11 | | 2 | 00/800D : A5 A2 | lda {$9D}+5
|
||||
40 | 1 FPConv.asm 40 | Code | 11 | | 2 | 00/800F : 30 0D | bmi NEG ; chk the Hi bit of 1 byte Mantissa
|
||||
41 | 1 FPConv.asm 41 | Empty | 11 | | 0 | 00/8011 |
|
||||
42 | 1 FPConv.asm 42 | Code | 11 | | 1 | 00/8011 : 18 | POS clc ; Hi bit 0 for negative
|
||||
43 | 1 FPConv.asm 43 | Code | 11 | | 2 | 00/8012 : A5 A2 | lda {$9D}+5
|
||||
44 | 1 FPConv.asm 44 | Empty | 11 | | 0 | 00/8014 |
|
||||
45 | 1 FPConv.asm 45 | Code | 11 | | 2 | 00/8014 : 09 80 | ora #$80 ; Set Hi Bit 1 byte Mantissa (change Sign only if is positive)
|
||||
46 | 1 FPConv.asm 46 | Code | 11 | | 1 | 00/8016 : 6A | ror ; Didide for 2^1
|
||||
47 | 1 FPConv.asm 47 | Empty | 11 | | 0 | 00/8017 |
|
||||
48 | 1 FPConv.asm 48 | Code | 11 | | 2 | 00/8017 : 85 FB | sta {$FA}+1
|
||||
49 | 1 FPConv.asm 49 | Code | 11 | | 2 | 00/8019 : 85 ED | sta {$EC}+1 ; Copy
|
||||
50 | 1 FPConv.asm 50 | Empty | 11 | | 0 | 00/801B |
|
||||
51 | 1 FPConv.asm 51 | Code | 11 | | 3 | 00/801B : 4C 2B 80 | jmp CONT
|
||||
52 | 1 FPConv.asm 52 | Empty | 11 | | 0 | 00/801E |
|
||||
53 | 1 FPConv.asm 53 | Code | 11 | | 1 | 00/801E : 18 | NEG clc ; Hi bit 1 for positive
|
||||
54 | 1 FPConv.asm 54 | Code | 11 | | 2 | 00/801F : A5 A2 | lda {$9D}+5
|
||||
55 | 1 FPConv.asm 55 | Empty | 11 | | 0 | 00/8021 |
|
||||
56 | 1 FPConv.asm 56 | Code | 11 | | 1 | 00/8021 : 6A | ror ; Didide for 2^1
|
||||
57 | 1 FPConv.asm 57 | Empty | 11 | | 0 | 00/8022 |
|
||||
58 | 1 FPConv.asm 58 | Code | 11 | | 2 | 00/8022 : 49 FF | eor #$FF ; One's complement, NOT
|
||||
59 | 1 FPConv.asm 59 | Code | 11 | | 1 | 00/8024 : 18 | clc
|
||||
60 | 1 FPConv.asm 60 | Code | 11 | | 2 | 00/8025 : 69 01 | adc #01 ; Two's complement, +1
|
||||
61 | 1 FPConv.asm 61 | Empty | 11 | | 0 | 00/8027 |
|
||||
62 | 1 FPConv.asm 62 | Code | 11 | | 2 | 00/8027 : 85 FB | sta {$FA}+1
|
||||
63 | 1 FPConv.asm 63 | Code | 11 | | 2 | 00/8029 : 85 ED | sta {$EC}+1 ; Copy
|
||||
64 | 1 FPConv.asm 64 | Empty | 11 | | 0 | 00/802B |
|
||||
65 | 1 FPConv.asm 65 | Code | 11 | | 2 | 00/802B : A5 9F | CONT lda {$9D}+2
|
||||
66 | 1 FPConv.asm 66 | Code | 11 | | 1 | 00/802D : 6A | ror
|
||||
67 | 1 FPConv.asm 67 | Code | 11 | | 2 | 00/802E : 85 FC | sta {$FA}+2
|
||||
68 | 1 FPConv.asm 68 | Code | 11 | | 2 | 00/8030 : 85 EE | sta {$EC}+2 ; Copy
|
||||
69 | 1 FPConv.asm 69 | Empty | 11 | | 0 | 00/8032 |
|
||||
70 | 1 FPConv.asm 70 | Code | 11 | | 2 | 00/8032 : A5 A0 | lda {$9D}+3
|
||||
71 | 1 FPConv.asm 71 | Code | 11 | | 1 | 00/8034 : 6A | ror
|
||||
72 | 1 FPConv.asm 72 | Code | 11 | | 2 | 00/8035 : 85 FD | sta {$FA}+3
|
||||
73 | 1 FPConv.asm 73 | Code | 11 | | 2 | 00/8037 : 85 EF | sta {$EC}+3 ; Copy FP2=FP1 X2=X1
|
||||
74 | 1 FPConv.asm 74 | Empty | 11 | | 0 | 00/8039 |
|
||||
75 | 1 FPConv.asm 75 | Code | 11 | | 2 | 00/8039 : A5 A1 | lda {$9D}+4
|
||||
76 | 1 FPConv.asm 76 | Code | 11 | | 1 | 00/803B : 6A | ror
|
||||
77 | 1 FPConv.asm 77 | Code | 11 | | 2 | 00/803C : 85 FE | sta {$FE}
|
||||
78 | 1 FPConv.asm 78 | Empty | 11 | | 0 | 00/803E |
|
||||
79 | 1 FPConv.asm 79 | Comment | 11 | | 0 | 00/803E | ;brk
|
||||
80 | 1 FPConv.asm 80 | Code | 11 | | 1 | 00/803E : 60 | rts
|
||||
81 | 1 FPConv.asm 81 | Empty | 11 | | 0 | 00/803F |
|
||||
82 | 1 FPConv.asm 82 | Comment | 11 | | 0 | 00/803F | ************************************
|
||||
83 | 1 FPConv.asm 83 | Comment | 11 | | 0 | 00/803F | * FP1 TO FAC TO BASIC *
|
||||
84 | 1 FPConv.asm 84 | Comment | 11 | | 0 | 00/803F | * CALL 32831,Y 831,Y *
|
||||
85 | 1 FPConv.asm 85 | Comment | 11 | | 0 | 00/803F | * PRINT Y *
|
||||
86 | 1 FPConv.asm 86 | Comment | 11 | | 0 | 00/803F | ************************************
|
||||
87 | 1 FPConv.asm 87 | Empty | 11 | | 0 | 00/803F |
|
||||
88 | 1 FPConv.asm 88 | Comment | 11 | | 0 | 00/803F | *
|
||||
89 | 1 FPConv.asm 89 | Comment | 11 | | 0 | 00/803F | ** FP1 to FAC conversion **
|
||||
90 | 1 FPConv.asm 90 | Comment | 11 | | 0 | 00/803F | *
|
||||
91 | 1 FPConv.asm 91 | Code | 11 | | 3 | 00/803F : AD 00 70 | ENTRY2 lda {$7000} ; X1 1 Byte --> 9D FAC
|
||||
92 | 1 FPConv.asm 92 | Code | 11 | | 1 | 00/8042 : 1A | inc A ; 2^(FP1+1) inc EXP
|
||||
93 | 1 FPConv.asm 93 | Code | 11 | | 2 | 00/8043 : 85 9D | sta {$9D}
|
||||
94 | 1 FPConv.asm 94 | Empty | 11 | | 0 | 00/8045 |
|
||||
95 | 1 FPConv.asm 95 | Code | 11 | | 3 | 00/8045 : AD 01 70 | lda {$7000}+1
|
||||
96 | 1 FPConv.asm 96 | Code | 11 | | 2 | 00/8048 : 30 0C | bmi NEG2 ; chk the Hi bit of 1 byte Mantissa
|
||||
97 | 1 FPConv.asm 97 | Empty | 11 | | 0 | 00/804A |
|
||||
98 | 1 FPConv.asm 98 | Empty | 11 | | 0 | 00/804A |
|
||||
99 | 1 FPConv.asm 99 | Code | 11 | | 1 | 00/804A : 18 | POS2 clc
|
||||
100 | 1 FPConv.asm 100 | Code | 11 | | 3 | 00/804B : AD 01 70 | lda {$7000}+1 ; M1 Hi 2 Byte --> 9E FAC
|
||||
101 | 1 FPConv.asm 101 | Code | 11 | | 1 | 00/804E : 2A | rol ; Multiply for 2^1
|
||||
102 | 1 FPConv.asm 102 | Empty | 11 | | 0 | 00/804F |
|
||||
103 | 1 FPConv.asm 103 | Code | 11 | | 2 | 00/804F : 09 80 | ora #$80 ; Set Hi Bit 1 byte Mantissa (change Sign only if is positive)
|
||||
104 | 1 FPConv.asm 104 | Code | 11 | | 2 | 00/8051 : 85 9E | sta {$9D}+1 ; To 6^ Byte of FAC Unpacked
|
||||
105 | 1 FPConv.asm 105 | Empty | 11 | | 0 | 00/8053 |
|
||||
106 | 1 FPConv.asm 106 | Comment | 11 | | 0 | 00/8053 | ;sta FAC+5 ; To 1^ Byte Mantissa of FAC UnPacked
|
||||
107 | 1 FPConv.asm 107 | Code | 11 | | 3 | 00/8053 : 4C 63 80 | jmp CONT2
|
||||
108 | 1 FPConv.asm 108 | Empty | 11 | | 0 | 00/8056 |
|
||||
109 | 1 FPConv.asm 109 | Code | 11 | | 3 | 00/8056 : AD 01 70 | NEG2 lda {$7000}+1
|
||||
110 | 1 FPConv.asm 110 | Empty | 11 | | 0 | 00/8059 |
|
||||
111 | 1 FPConv.asm 111 | Code | 11 | | 1 | 00/8059 : 38 | sec
|
||||
112 | 1 FPConv.asm 112 | Code | 11 | | 2 | 00/805A : E9 01 | sbc #01 ; One's complement inv -1
|
||||
113 | 1 FPConv.asm 113 | Code | 11 | | 2 | 00/805C : 49 FF | eor #$FF ; Two's complement inv NOT
|
||||
114 | 1 FPConv.asm 114 | Empty | 11 | | 0 | 00/805E |
|
||||
115 | 1 FPConv.asm 115 | Code | 11 | | 1 | 00/805E : 2A | rol ; Multiply for 2^1
|
||||
116 | 1 FPConv.asm 116 | Empty | 11 | | 0 | 00/805F |
|
||||
117 | 1 FPConv.asm 117 | Code | 11 | | 2 | 00/805F : 85 9E | sta {$9D}+1 ; To 1^ Byte Mantissa of FAC Packed
|
||||
118 | 1 FPConv.asm 118 | Code | 11 | | 2 | 00/8061 : 85 A2 | sta {$9D}+5 ; To 6^ Byte of FAC Unpacked
|
||||
119 | 1 FPConv.asm 119 | Empty | 11 | | 0 | 00/8063 |
|
||||
120 | 1 FPConv.asm 120 | Empty | 11 | | 0 | 00/8063 |
|
||||
121 | 1 FPConv.asm 121 | Code | 11 | | 3 | 00/8063 : AD 02 70 | CONT2 lda {$7000}+2 ; M1 3 Byte --> 9F FAC
|
||||
122 | 1 FPConv.asm 122 | Code | 11 | | 1 | 00/8066 : 2A | rol
|
||||
123 | 1 FPConv.asm 123 | Code | 11 | | 2 | 00/8067 : 85 9F | sta {$9D}+2
|
||||
124 | 1 FPConv.asm 124 | Empty | 11 | | 0 | 00/8069 |
|
||||
125 | 1 FPConv.asm 125 | Code | 11 | | 3 | 00/8069 : AD 03 70 | lda {$7000}+3 ; M1 Lo 4 Byte --> A0 FAC
|
||||
126 | 1 FPConv.asm 126 | Code | 11 | | 1 | 00/806C : 2A | rol
|
||||
127 | 1 FPConv.asm 127 | Code | 11 | | 2 | 00/806D : 85 A0 | sta {$9D}+3
|
||||
128 | 1 FPConv.asm 128 | Empty | 11 | | 0 | 00/806F |
|
||||
129 | 1 FPConv.asm 129 | Code | 11 | | 2 | 00/806F : A5 FE | lda {$FE} ; Extra 5 Byte --> A1 FAC
|
||||
130 | 1 FPConv.asm 130 | Code | 11 | | 1 | 00/8071 : 2A | rol
|
||||
131 | 1 FPConv.asm 131 | Code | 11 | | 2 | 00/8072 : 85 A1 | sta {$9D}+4
|
||||
132 | 1 FPConv.asm 132 | Empty | 11 | | 0 | 00/8074 |
|
||||
133 | 1 FPConv.asm 133 | Comment | 11 | | 0 | 00/8074 | ;brk
|
||||
134 | 1 FPConv.asm 134 | Comment | 11 | | 0 | 00/8074 | ***************************
|
||||
135 | 1 FPConv.asm 135 | Comment | 11 | | 0 | 00/8074 | *
|
||||
136 | 1 FPConv.asm 136 | Code | 11 | | 3 | 00/8074 : 20 BE DE | jsr {$DEBE}
|
||||
137 | 1 FPConv.asm 137 | Code | 11 | | 3 | 00/8077 : 20 E3 DF | jsr {$DFE3} ; Return the Y and A pointing to the specific variabile
|
||||
138 | 1 FPConv.asm 138 | Code | 11 | | 1 | 00/807A : AA | tax
|
||||
139 | 1 FPConv.asm 139 | Code | 11 | | 3 | 00/807B : 20 2B EB | jsr {$EB2B} ;FAC->VARIABLE Y (5 Bytes Packed)
|
||||
140 | 1 FPConv.asm 140 | Empty | 11 | | 0 | 00/807E |
|
||||
141 | 1 FPConv.asm 141 | Comment | 11 | | 0 | 00/807E | ;brk
|
||||
142 | 1 FPConv.asm 142 | Code | 11 | | 1 | 00/807E : 60 | rts
|
||||
143 | 1 FPConv.asm 143 | Data | 11 | | 1 | 00/807F : 00 | chk
|
||||
------+----------------------+-------------+----+---------+------+-----------------------+-------------------------------------------------------------------
|
|
@ -1,326 +1,326 @@
|
|||
*
|
||||
* Unidisk 3.5 DATA <alfa>
|
||||
*
|
||||
* The target of this project is to use the Unidisk 3.5 drive to perform
|
||||
* specific numerical routines (integers and floating point numbers)
|
||||
* calculation in order to use it as a Apple II co-processor unit.
|
||||
*
|
||||
* Copyright (C) 2015 Riccardo Greco <rigreco.grc@gmail.com>.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*
|
||||
* @com.wudsn.ide.asm.hardware=APPLE2
|
||||
XC
|
||||
** CHKSUM Pointer *
|
||||
PTR equ $08
|
||||
** Protocol Converter Call
|
||||
ZPTempL equ $0006 ;Temporary zero page storage
|
||||
ZPTempH equ $0007
|
||||
** Zero page storage **
|
||||
N1 equ $FA ;25 4 Byte FP FA--FD (FP1)
|
||||
N2 equ $EC ;27 4 Byte FP EC--EF (FP2)
|
||||
RSLT equ $7000 ;29
|
||||
*** Monitor routines ***
|
||||
COut equ $FDED ;Console output ASCII
|
||||
CROut equ $FD8E ;Carriage return
|
||||
** Command Code **
|
||||
StatusCmd equ 0
|
||||
** Status Code **
|
||||
StatusUNI equ 5
|
||||
*
|
||||
ControlCmd equ 4
|
||||
** Control Codes **
|
||||
Run equ 5
|
||||
SetDWLoad equ 6
|
||||
DWLoad equ 7
|
||||
*
|
||||
org $6000
|
||||
*****************************************************
|
||||
************** CHKSUM MAIN Routine ******************
|
||||
*
|
||||
;STARTCHK lda #<STARTCHK
|
||||
; sta PTR
|
||||
; lda #>STARTCHK
|
||||
; sta PTR+1
|
||||
; ldy #$00
|
||||
; lda #$00
|
||||
; pha
|
||||
;LOOP pla
|
||||
; eor (PTR),y
|
||||
; pha
|
||||
; inc PTR
|
||||
; bne CHK
|
||||
; inc PTR+1
|
||||
;CHK lda PTR+1
|
||||
; cmp #>PROGEND
|
||||
; bcc LOOP
|
||||
; lda PTR
|
||||
; cmp #<PROGEND
|
||||
; bcc LOOP
|
||||
; beq LOOP
|
||||
;CHKCS pla
|
||||
; cmp CHKSUM
|
||||
; bne ERRCHK
|
||||
***********************************************
|
||||
* Find a Protocol Converter in one of the slots.
|
||||
START jsr FindPC
|
||||
bcs Error
|
||||
*** Set Address ***
|
||||
jsr Dispatch
|
||||
dfb ControlCmd
|
||||
dw SET_ADD
|
||||
*
|
||||
jsr EXEC ; Jump the Error routine
|
||||
rts
|
||||
**************** CHKSUM ERROR Routine ***************
|
||||
*
|
||||
;ERRCHK sta CHKCALC
|
||||
; lda #"E"
|
||||
; jsr COut
|
||||
; rts
|
||||
;CHKCALC dfb $00
|
||||
**************** PROTOCOL CONVERTER ERROR Routine ***
|
||||
Error equ *
|
||||
*
|
||||
* There is either no PC around, or there was no give message
|
||||
*
|
||||
ldx #0
|
||||
err1 equ *
|
||||
lda Message,x
|
||||
beq errout
|
||||
jsr COut
|
||||
inx
|
||||
bne err1
|
||||
*
|
||||
errout equ *
|
||||
rts
|
||||
*
|
||||
Message asc 'NO PC OR NO DEVICE'
|
||||
dfb $8D,0
|
||||
*******************************************************
|
||||
*
|
||||
|
||||
** Set the Input Value first in Dynamic data **
|
||||
** 4 Byte N1 to FP1 **
|
||||
EXEC lda N1 ;X1
|
||||
sta FP1 ; Absolute addressing
|
||||
lda N1+1 ;M1 (1)
|
||||
sta FP1+1
|
||||
lda N1+2 ;M1 (2)
|
||||
sta FP1+2
|
||||
lda N1+3 ;M1 (3)
|
||||
sta FP1+3
|
||||
|
||||
** 4 Byte N2 to FP2 **
|
||||
lda N2 ;X2
|
||||
sta FP2
|
||||
lda N2+1 ;M2 (1)
|
||||
sta FP2+1
|
||||
lda N2+2 ;M2 (2)
|
||||
sta FP2+2
|
||||
lda N2+3 ;M2 (3)
|
||||
sta FP2+3
|
||||
|
||||
*** Download ***
|
||||
jsr Dispatch
|
||||
dfb ControlCmd
|
||||
dw DOWNLOAD
|
||||
** Set Unidisk Registers **
|
||||
;First time execution
|
||||
lda #$00 ; Target the first time entry point
|
||||
sta LowPC_reg ; First time set init value of PC, just for the next execution
|
||||
* The program begin to PC preset to $0500 *
|
||||
*
|
||||
** Execute **
|
||||
jsr Dispatch
|
||||
dfb ControlCmd
|
||||
dw EXE
|
||||
** Read **
|
||||
READ jsr Dispatch
|
||||
dfb StatusCmd
|
||||
dw DParms
|
||||
bcs Error
|
||||
*
|
||||
**** Store Output results in //c ****
|
||||
|
||||
* First time execute *
|
||||
lda UNIAcc_reg
|
||||
sta RSLT
|
||||
lda UNIX_reg
|
||||
sta RSLT+1 ; Store the result
|
||||
lda UNIY_reg
|
||||
sta RSLT+2
|
||||
|
||||
** Second time execute **
|
||||
lda #$3C ; Target the second time entry point
|
||||
sta LowPC_reg ; Second time set new value of PC
|
||||
** Execute **
|
||||
jsr Dispatch
|
||||
dfb ControlCmd
|
||||
dw EXE
|
||||
** Read **
|
||||
jsr Dispatch
|
||||
dfb StatusCmd
|
||||
dw DParms
|
||||
* bcs Error
|
||||
|
||||
* Second time execute only to read the latest Byte of FP1*
|
||||
lda UNIAcc_reg
|
||||
sta RSLT+3
|
||||
*
|
||||
PROGEND rts
|
||||
CHKSUM chk
|
||||
******************************************************
|
||||
FindPC equ *
|
||||
*
|
||||
* Search slot 7 to slot 1 looking for signature bytes
|
||||
*
|
||||
ldx #7 ;Do for seven slots
|
||||
lda #$C7
|
||||
sta ZPTempH
|
||||
lda #$00
|
||||
sta ZPTempL
|
||||
*
|
||||
newslot equ *
|
||||
ldy #7
|
||||
*
|
||||
again equ *
|
||||
lda (ZPTempL),y
|
||||
cmp sigtab,y ;One for byte signature
|
||||
beq maybe ;Found one signature byte
|
||||
dec ZPTempH
|
||||
dex
|
||||
bne newslot
|
||||
*
|
||||
* if we get here, no PC find
|
||||
sec
|
||||
rts
|
||||
*
|
||||
* if we get here, no byte find on PC
|
||||
maybe equ *
|
||||
dey
|
||||
dey ;if N=1 then all sig bytes OK
|
||||
bpl again
|
||||
* Found PC interface. Set up call address.
|
||||
* we already have high byte ($CN), we need low byte
|
||||
*
|
||||
foundPC equ *
|
||||
lda #$FF
|
||||
sta ZPTempL
|
||||
ldy #0 ;For indirect load
|
||||
lda (ZPTempL),y ;Get the byte
|
||||
*
|
||||
* Now the Acc has the low oreder ProDOS entry point.
|
||||
* The PC entry is three locations past this ...
|
||||
*
|
||||
clc
|
||||
adc #3
|
||||
sta ZPTempL
|
||||
*
|
||||
* Now ZPTempL has PC entry point.
|
||||
* Return with carry clear.
|
||||
*
|
||||
clc
|
||||
rts
|
||||
***********************************************************
|
||||
*
|
||||
* There are the PC signature bytes in their relative order.
|
||||
* The $FF bytes are filler bytes and are not compared.
|
||||
*
|
||||
sigtab dfb $FF,$20,$FF,$00
|
||||
dfb $FF,$03,$FF,$00
|
||||
*
|
||||
Dispatch equ *
|
||||
jmp (ZPTempL) ;Simulate an indirect JSR to PC
|
||||
*
|
||||
*** Status Parameter Set for UNI ***
|
||||
DParms equ *
|
||||
DPParmsCt dfb 3 ;Status calls have three parameters
|
||||
DPUnit dfb 1
|
||||
DPBuffer dw UNI
|
||||
DPStatCode dfb StatusUNI
|
||||
*
|
||||
*
|
||||
*
|
||||
*** Status List UNI ***
|
||||
UNI equ *
|
||||
dfb 0
|
||||
UNIError dfb 0
|
||||
UNIRetries dfb 0
|
||||
UNIAcc_reg dfb 0
|
||||
UNIX_reg dfb 0
|
||||
UNIY_reg dfb 0
|
||||
UNIP_val dfb 0
|
||||
HHH dfb 0
|
||||
*
|
||||
*** Set Address ***
|
||||
SET_ADD equ *
|
||||
dfb 3
|
||||
dfb 1
|
||||
dw CNTL_LIST3
|
||||
dfb SetDWLoad
|
||||
*
|
||||
*** Download ***
|
||||
DOWNLOAD equ *
|
||||
dfb 3
|
||||
dfb 1
|
||||
dw CNTL_LIST4
|
||||
dfb DWLoad
|
||||
*
|
||||
*** Execute ***
|
||||
EXE equ *
|
||||
dfb 3
|
||||
dfb 1
|
||||
dw CNTL_LIST2
|
||||
dfb Run
|
||||
*
|
||||
******** CONTROL LISTS ********
|
||||
*
|
||||
*
|
||||
*** Execute ***
|
||||
CNTL_LIST2 equ *
|
||||
Clow_byte dfb $06
|
||||
Chigh_byte dfb $00
|
||||
AccValue dfb $00 ; Init Value Unidisk Accumulator Register
|
||||
X_reg dfb $00 ; Init Value Unidisk X Register
|
||||
Y_reg dfb $00 ; Init Value Unidisk Y Register
|
||||
ProStatus dfb $00 ; Init Value Unidisk Status Register
|
||||
LowPC_reg dfb $00 ; Init Value Unidisk Program Counter $0500 at eny dowload
|
||||
HighPC_reg dfb $05 ; $05 first execution, $3C second execution
|
||||
*
|
||||
*** Set Address ***
|
||||
CNTL_LIST3 equ *
|
||||
CountL_byte dfb $02
|
||||
CountH_byte dfb $00
|
||||
LByte_Addr dfb $2D ; ORG of Unidisk program, set begin data address $062D
|
||||
HByte_Addr dfb $06
|
||||
*
|
||||
*** Download ***
|
||||
CNTL_LIST4 equ *
|
||||
LenghtL_byte dfb $08 ;<----- Lenght of Unidisk program Lo - Byte 312 byte
|
||||
LenghtH_byte dfb $00 ;<----- Lenght of Unidisk program Hi Byte
|
||||
*
|
||||
**************** Start UNIDISK Program ****************
|
||||
*
|
||||
|
||||
** Input Dynamic Data append in the end of Unidisk routine **
|
||||
FP1 dfb $00
|
||||
dfb $00
|
||||
dfb $00
|
||||
dfb $00
|
||||
*
|
||||
FP2 dfb $00
|
||||
dfb $00
|
||||
dfb $00
|
||||
dfb $00
|
||||
*
|
||||
* Unidisk 3.5 DATA <alfa>
|
||||
*
|
||||
* The target of this project is to use the Unidisk 3.5 drive to perform
|
||||
* specific numerical routines (integers and floating point numbers)
|
||||
* calculation in order to use it as a Apple II co-processor unit.
|
||||
*
|
||||
* Copyright (C) 2015 Riccardo Greco <rigreco.grc@gmail.com>.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*
|
||||
* @com.wudsn.ide.asm.hardware=APPLE2
|
||||
XC
|
||||
** CHKSUM Pointer *
|
||||
PTR equ $08
|
||||
** Protocol Converter Call
|
||||
ZPTempL equ $0006 ;Temporary zero page storage
|
||||
ZPTempH equ $0007
|
||||
** Zero page storage **
|
||||
N1 equ $FA ;25 4 Byte FP FA--FD (FP1)
|
||||
N2 equ $EC ;27 4 Byte FP EC--EF (FP2)
|
||||
RSLT equ $7000 ;29
|
||||
*** Monitor routines ***
|
||||
COut equ $FDED ;Console output ASCII
|
||||
CROut equ $FD8E ;Carriage return
|
||||
** Command Code **
|
||||
StatusCmd equ 0
|
||||
** Status Code **
|
||||
StatusUNI equ 5
|
||||
*
|
||||
ControlCmd equ 4
|
||||
** Control Codes **
|
||||
Run equ 5
|
||||
SetDWLoad equ 6
|
||||
DWLoad equ 7
|
||||
*
|
||||
org $6000
|
||||
*****************************************************
|
||||
************** CHKSUM MAIN Routine ******************
|
||||
*
|
||||
;STARTCHK lda #<STARTCHK
|
||||
; sta PTR
|
||||
; lda #>STARTCHK
|
||||
; sta PTR+1
|
||||
; ldy #$00
|
||||
; lda #$00
|
||||
; pha
|
||||
;LOOP pla
|
||||
; eor (PTR),y
|
||||
; pha
|
||||
; inc PTR
|
||||
; bne CHK
|
||||
; inc PTR+1
|
||||
;CHK lda PTR+1
|
||||
; cmp #>PROGEND
|
||||
; bcc LOOP
|
||||
; lda PTR
|
||||
; cmp #<PROGEND
|
||||
; bcc LOOP
|
||||
; beq LOOP
|
||||
;CHKCS pla
|
||||
; cmp CHKSUM
|
||||
; bne ERRCHK
|
||||
***********************************************
|
||||
* Find a Protocol Converter in one of the slots.
|
||||
START jsr FindPC
|
||||
bcs Error
|
||||
*** Set Address ***
|
||||
jsr Dispatch
|
||||
dfb ControlCmd
|
||||
dw SET_ADD
|
||||
*
|
||||
jsr EXEC ; Jump the Error routine
|
||||
rts
|
||||
**************** CHKSUM ERROR Routine ***************
|
||||
*
|
||||
;ERRCHK sta CHKCALC
|
||||
; lda #"E"
|
||||
; jsr COut
|
||||
; rts
|
||||
;CHKCALC dfb $00
|
||||
**************** PROTOCOL CONVERTER ERROR Routine ***
|
||||
Error equ *
|
||||
*
|
||||
* There is either no PC around, or there was no give message
|
||||
*
|
||||
ldx #0
|
||||
err1 equ *
|
||||
lda Message,x
|
||||
beq errout
|
||||
jsr COut
|
||||
inx
|
||||
bne err1
|
||||
*
|
||||
errout equ *
|
||||
rts
|
||||
*
|
||||
Message asc 'NO PC OR NO DEVICE'
|
||||
dfb $8D,0
|
||||
*******************************************************
|
||||
*
|
||||
|
||||
** Set the Input Value first in Dynamic data **
|
||||
** 4 Byte N1 to FP1 **
|
||||
EXEC lda N1 ;X1
|
||||
sta FP1 ; Absolute addressing
|
||||
lda N1+1 ;M1 (1)
|
||||
sta FP1+1
|
||||
lda N1+2 ;M1 (2)
|
||||
sta FP1+2
|
||||
lda N1+3 ;M1 (3)
|
||||
sta FP1+3
|
||||
|
||||
** 4 Byte N2 to FP2 **
|
||||
lda N2 ;X2
|
||||
sta FP2
|
||||
lda N2+1 ;M2 (1)
|
||||
sta FP2+1
|
||||
lda N2+2 ;M2 (2)
|
||||
sta FP2+2
|
||||
lda N2+3 ;M2 (3)
|
||||
sta FP2+3
|
||||
|
||||
*** Download ***
|
||||
jsr Dispatch
|
||||
dfb ControlCmd
|
||||
dw DOWNLOAD
|
||||
** Set Unidisk Registers **
|
||||
;First time execution
|
||||
lda #$00 ; Target the first time entry point
|
||||
sta LowPC_reg ; First time set init value of PC, just for the next execution
|
||||
* The program begin to PC preset to $0500 *
|
||||
*
|
||||
** Execute **
|
||||
jsr Dispatch
|
||||
dfb ControlCmd
|
||||
dw EXE
|
||||
** Read **
|
||||
READ jsr Dispatch
|
||||
dfb StatusCmd
|
||||
dw DParms
|
||||
bcs Error
|
||||
*
|
||||
**** Store Output results in //c ****
|
||||
|
||||
* First time execute *
|
||||
lda UNIAcc_reg
|
||||
sta RSLT
|
||||
lda UNIX_reg
|
||||
sta RSLT+1 ; Store the result
|
||||
lda UNIY_reg
|
||||
sta RSLT+2
|
||||
|
||||
** Second time execute **
|
||||
lda #$3C ; Target the second time entry point
|
||||
sta LowPC_reg ; Second time set new value of PC
|
||||
** Execute **
|
||||
jsr Dispatch
|
||||
dfb ControlCmd
|
||||
dw EXE
|
||||
** Read **
|
||||
jsr Dispatch
|
||||
dfb StatusCmd
|
||||
dw DParms
|
||||
* bcs Error
|
||||
|
||||
* Second time execute only to read the latest Byte of FP1*
|
||||
lda UNIAcc_reg
|
||||
sta RSLT+3
|
||||
*
|
||||
PROGEND rts
|
||||
CHKSUM chk
|
||||
******************************************************
|
||||
FindPC equ *
|
||||
*
|
||||
* Search slot 7 to slot 1 looking for signature bytes
|
||||
*
|
||||
ldx #7 ;Do for seven slots
|
||||
lda #$C7
|
||||
sta ZPTempH
|
||||
lda #$00
|
||||
sta ZPTempL
|
||||
*
|
||||
newslot equ *
|
||||
ldy #7
|
||||
*
|
||||
again equ *
|
||||
lda (ZPTempL),y
|
||||
cmp sigtab,y ;One for byte signature
|
||||
beq maybe ;Found one signature byte
|
||||
dec ZPTempH
|
||||
dex
|
||||
bne newslot
|
||||
*
|
||||
* if we get here, no PC find
|
||||
sec
|
||||
rts
|
||||
*
|
||||
* if we get here, no byte find on PC
|
||||
maybe equ *
|
||||
dey
|
||||
dey ;if N=1 then all sig bytes OK
|
||||
bpl again
|
||||
* Found PC interface. Set up call address.
|
||||
* we already have high byte ($CN), we need low byte
|
||||
*
|
||||
foundPC equ *
|
||||
lda #$FF
|
||||
sta ZPTempL
|
||||
ldy #0 ;For indirect load
|
||||
lda (ZPTempL),y ;Get the byte
|
||||
*
|
||||
* Now the Acc has the low oreder ProDOS entry point.
|
||||
* The PC entry is three locations past this ...
|
||||
*
|
||||
clc
|
||||
adc #3
|
||||
sta ZPTempL
|
||||
*
|
||||
* Now ZPTempL has PC entry point.
|
||||
* Return with carry clear.
|
||||
*
|
||||
clc
|
||||
rts
|
||||
***********************************************************
|
||||
*
|
||||
* There are the PC signature bytes in their relative order.
|
||||
* The $FF bytes are filler bytes and are not compared.
|
||||
*
|
||||
sigtab dfb $FF,$20,$FF,$00
|
||||
dfb $FF,$03,$FF,$00
|
||||
*
|
||||
Dispatch equ *
|
||||
jmp (ZPTempL) ;Simulate an indirect JSR to PC
|
||||
*
|
||||
*** Status Parameter Set for UNI ***
|
||||
DParms equ *
|
||||
DPParmsCt dfb 3 ;Status calls have three parameters
|
||||
DPUnit dfb 1
|
||||
DPBuffer dw UNI
|
||||
DPStatCode dfb StatusUNI
|
||||
*
|
||||
*
|
||||
*
|
||||
*** Status List UNI ***
|
||||
UNI equ *
|
||||
dfb 0
|
||||
UNIError dfb 0
|
||||
UNIRetries dfb 0
|
||||
UNIAcc_reg dfb 0
|
||||
UNIX_reg dfb 0
|
||||
UNIY_reg dfb 0
|
||||
UNIP_val dfb 0
|
||||
HHH dfb 0
|
||||
*
|
||||
*** Set Address ***
|
||||
SET_ADD equ *
|
||||
dfb 3
|
||||
dfb 1
|
||||
dw CNTL_LIST3
|
||||
dfb SetDWLoad
|
||||
*
|
||||
*** Download ***
|
||||
DOWNLOAD equ *
|
||||
dfb 3
|
||||
dfb 1
|
||||
dw CNTL_LIST4
|
||||
dfb DWLoad
|
||||
*
|
||||
*** Execute ***
|
||||
EXE equ *
|
||||
dfb 3
|
||||
dfb 1
|
||||
dw CNTL_LIST2
|
||||
dfb Run
|
||||
*
|
||||
******** CONTROL LISTS ********
|
||||
*
|
||||
*
|
||||
*** Execute ***
|
||||
CNTL_LIST2 equ *
|
||||
Clow_byte dfb $06
|
||||
Chigh_byte dfb $00
|
||||
AccValue dfb $00 ; Init Value Unidisk Accumulator Register
|
||||
X_reg dfb $00 ; Init Value Unidisk X Register
|
||||
Y_reg dfb $00 ; Init Value Unidisk Y Register
|
||||
ProStatus dfb $00 ; Init Value Unidisk Status Register
|
||||
LowPC_reg dfb $00 ; Init Value Unidisk Program Counter $0500 at eny dowload
|
||||
HighPC_reg dfb $05 ; $05 first execution, $3C second execution
|
||||
*
|
||||
*** Set Address ***
|
||||
CNTL_LIST3 equ *
|
||||
CountL_byte dfb $02
|
||||
CountH_byte dfb $00
|
||||
LByte_Addr dfb $2D ; ORG of Unidisk program, set begin data address $062D
|
||||
HByte_Addr dfb $06
|
||||
*
|
||||
*** Download ***
|
||||
CNTL_LIST4 equ *
|
||||
LenghtL_byte dfb $08 ;<----- Lenght of Unidisk program Lo - Byte 312 byte
|
||||
LenghtH_byte dfb $00 ;<----- Lenght of Unidisk program Hi Byte
|
||||
*
|
||||
**************** Start UNIDISK Program ****************
|
||||
*
|
||||
|
||||
** Input Dynamic Data append in the end of Unidisk routine **
|
||||
FP1 dfb $00
|
||||
dfb $00
|
||||
dfb $00
|
||||
dfb $00
|
||||
*
|
||||
FP2 dfb $00
|
||||
dfb $00
|
||||
dfb $00
|
||||
dfb $00
|
||||
**************** End UNIDISK Program ****************
|
|
@ -1,351 +1,351 @@
|
|||
------+----------------------+-------------+----+---------+------+-----------------------+-------------------------------------------------------------------
|
||||
Line | # File Line | Line Type | MX | Reloc | Size | Address Object Code | Source Code
|
||||
------+----------------------+-------------+----+---------+------+-----------------------+-------------------------------------------------------------------
|
||||
1 | 1 FPData.asm 1 | Comment | 11 | | 0 | 00/8000 | *
|
||||
2 | 1 FPData.asm 2 | Comment | 11 | | 0 | 00/8000 | * Unidisk 3.5 DATA <alfa>
|
||||
3 | 1 FPData.asm 3 | Comment | 11 | | 0 | 00/8000 | *
|
||||
4 | 1 FPData.asm 4 | Comment | 11 | | 0 | 00/8000 | * The target of this project is to use the Unidisk 3.5 drive to perform
|
||||
5 | 1 FPData.asm 5 | Comment | 11 | | 0 | 00/8000 | * specific numerical routines (integers and floating point numbers)
|
||||
6 | 1 FPData.asm 6 | Comment | 11 | | 0 | 00/8000 | * calculation in order to use it as a Apple II co-processor unit.
|
||||
7 | 1 FPData.asm 7 | Comment | 11 | | 0 | 00/8000 | *
|
||||
8 | 1 FPData.asm 8 | Comment | 11 | | 0 | 00/8000 | * Copyright (C) 2015 Riccardo Greco <rigreco.grc@gmail.com>.
|
||||
9 | 1 FPData.asm 9 | Comment | 11 | | 0 | 00/8000 | *
|
||||
10 | 1 FPData.asm 10 | Comment | 11 | | 0 | 00/8000 | * This program is free software: you can redistribute it and/or modify
|
||||
11 | 1 FPData.asm 11 | Comment | 11 | | 0 | 00/8000 | * it under the terms of the GNU General Public License as published by
|
||||
12 | 1 FPData.asm 12 | Comment | 11 | | 0 | 00/8000 | * the Free Software Foundation, either version 3 of the License, or
|
||||
13 | 1 FPData.asm 13 | Comment | 11 | | 0 | 00/8000 | * (at your option) any later version.
|
||||
14 | 1 FPData.asm 14 | Comment | 11 | | 0 | 00/8000 | * This program is distributed in the hope that it will be useful,
|
||||
15 | 1 FPData.asm 15 | Comment | 11 | | 0 | 00/8000 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
16 | 1 FPData.asm 16 | Comment | 11 | | 0 | 00/8000 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
17 | 1 FPData.asm 17 | Comment | 11 | | 0 | 00/8000 | * GNU General Public License for more details.
|
||||
18 | 1 FPData.asm 18 | Comment | 11 | | 0 | 00/8000 | * You should have received a copy of the GNU General Public License
|
||||
19 | 1 FPData.asm 19 | Comment | 11 | | 0 | 00/8000 | * along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
20 | 1 FPData.asm 20 | Comment | 11 | | 0 | 00/8000 | *
|
||||
21 | 1 FPData.asm 21 | Comment | 11 | | 0 | 00/8000 | *
|
||||
22 | 1 FPData.asm 22 | Comment | 11 | | 0 | 00/8000 | * @com.wudsn.ide.asm.hardware=APPLE2
|
||||
23 | 1 FPData.asm 23 | Directive | 11 | | 0 | 00/8000 | XC
|
||||
24 | 1 FPData.asm 24 | Comment | 11 | | 0 | 00/8000 | ** CHKSUM Pointer *
|
||||
25 | 1 FPData.asm 25 | Equivalence | 11 | | 0 | 00/8000 | PTR equ $08
|
||||
26 | 1 FPData.asm 26 | Comment | 11 | | 0 | 00/8000 | ** Protocol Converter Call
|
||||
27 | 1 FPData.asm 27 | Equivalence | 11 | | 0 | 00/8000 | ZPTempL equ $0006 ;Temporary zero page storage
|
||||
28 | 1 FPData.asm 28 | Equivalence | 11 | | 0 | 00/8000 | ZPTempH equ $0007
|
||||
29 | 1 FPData.asm 29 | Comment | 11 | | 0 | 00/8000 | ** Zero page storage **
|
||||
30 | 1 FPData.asm 30 | Equivalence | 11 | | 0 | 00/8000 | N1 equ $FA ;25 4 Byte FP FA--FD (FP1)
|
||||
31 | 1 FPData.asm 31 | Equivalence | 11 | | 0 | 00/8000 | N2 equ $EC ;27 4 Byte FP EC--EF (FP2)
|
||||
32 | 1 FPData.asm 32 | Equivalence | 11 | | 0 | 00/8000 | RSLT equ $7000 ;29
|
||||
33 | 1 FPData.asm 33 | Comment | 11 | | 0 | 00/8000 | *** Monitor routines ***
|
||||
34 | 1 FPData.asm 34 | Equivalence | 11 | | 0 | 00/8000 | COut equ $FDED ;Console output ASCII
|
||||
35 | 1 FPData.asm 35 | Equivalence | 11 | | 0 | 00/8000 | CROut equ $FD8E ;Carriage return
|
||||
36 | 1 FPData.asm 36 | Comment | 11 | | 0 | 00/8000 | ** Command Code **
|
||||
37 | 1 FPData.asm 37 | Equivalence | 11 | | 0 | 00/8000 | StatusCmd equ 0
|
||||
38 | 1 FPData.asm 38 | Comment | 11 | | 0 | 00/8000 | ** Status Code **
|
||||
39 | 1 FPData.asm 39 | Equivalence | 11 | | 0 | 00/8000 | StatusUNI equ 5
|
||||
40 | 1 FPData.asm 40 | Comment | 11 | | 0 | 00/8000 | *
|
||||
41 | 1 FPData.asm 41 | Equivalence | 11 | | 0 | 00/8000 | ControlCmd equ 4
|
||||
42 | 1 FPData.asm 42 | Comment | 11 | | 0 | 00/8000 | ** Control Codes **
|
||||
43 | 1 FPData.asm 43 | Equivalence | 11 | | 0 | 00/8000 | Run equ 5
|
||||
44 | 1 FPData.asm 44 | Equivalence | 11 | | 0 | 00/8000 | SetDWLoad equ 6
|
||||
45 | 1 FPData.asm 45 | Equivalence | 11 | | 0 | 00/8000 | DWLoad equ 7
|
||||
46 | 1 FPData.asm 46 | Comment | 11 | | 0 | 00/8000 | *
|
||||
47 | 1 FPData.asm 47 | Directive | 11 | | 0 | 00/8000 | org $6000
|
||||
48 | 1 FPData.asm 48 | Comment | 11 | | 0 | 00/6000 | *****************************************************
|
||||
49 | 1 FPData.asm 49 | Comment | 11 | | 0 | 00/6000 | ************** CHKSUM MAIN Routine ******************
|
||||
50 | 1 FPData.asm 50 | Comment | 11 | | 0 | 00/6000 | *
|
||||
51 | 1 FPData.asm 51 | Comment | 11 | | 0 | 00/6000 | ;STARTCHK lda #<STARTCHK
|
||||
52 | 1 FPData.asm 52 | Comment | 11 | | 0 | 00/6000 | ; sta PTR
|
||||
53 | 1 FPData.asm 53 | Comment | 11 | | 0 | 00/6000 | ; lda #>STARTCHK
|
||||
54 | 1 FPData.asm 54 | Comment | 11 | | 0 | 00/6000 | ; sta PTR+1
|
||||
55 | 1 FPData.asm 55 | Comment | 11 | | 0 | 00/6000 | ; ldy #$00
|
||||
56 | 1 FPData.asm 56 | Comment | 11 | | 0 | 00/6000 | ; lda #$00
|
||||
57 | 1 FPData.asm 57 | Comment | 11 | | 0 | 00/6000 | ; pha
|
||||
58 | 1 FPData.asm 58 | Comment | 11 | | 0 | 00/6000 | ;LOOP pla
|
||||
59 | 1 FPData.asm 59 | Comment | 11 | | 0 | 00/6000 | ; eor (PTR),y
|
||||
60 | 1 FPData.asm 60 | Comment | 11 | | 0 | 00/6000 | ; pha
|
||||
61 | 1 FPData.asm 61 | Comment | 11 | | 0 | 00/6000 | ; inc PTR
|
||||
62 | 1 FPData.asm 62 | Comment | 11 | | 0 | 00/6000 | ; bne CHK
|
||||
63 | 1 FPData.asm 63 | Comment | 11 | | 0 | 00/6000 | ; inc PTR+1
|
||||
64 | 1 FPData.asm 64 | Comment | 11 | | 0 | 00/6000 | ;CHK lda PTR+1
|
||||
65 | 1 FPData.asm 65 | Comment | 11 | | 0 | 00/6000 | ; cmp #>PROGEND
|
||||
66 | 1 FPData.asm 66 | Comment | 11 | | 0 | 00/6000 | ; bcc LOOP
|
||||
67 | 1 FPData.asm 67 | Comment | 11 | | 0 | 00/6000 | ; lda PTR
|
||||
68 | 1 FPData.asm 68 | Comment | 11 | | 0 | 00/6000 | ; cmp #<PROGEND
|
||||
69 | 1 FPData.asm 69 | Comment | 11 | | 0 | 00/6000 | ; bcc LOOP
|
||||
70 | 1 FPData.asm 70 | Comment | 11 | | 0 | 00/6000 | ; beq LOOP
|
||||
71 | 1 FPData.asm 71 | Comment | 11 | | 0 | 00/6000 | ;CHKCS pla
|
||||
72 | 1 FPData.asm 72 | Comment | 11 | | 0 | 00/6000 | ; cmp CHKSUM
|
||||
73 | 1 FPData.asm 73 | Comment | 11 | | 0 | 00/6000 | ; bne ERRCHK
|
||||
74 | 1 FPData.asm 74 | Comment | 11 | | 0 | 00/6000 | ***********************************************
|
||||
75 | 1 FPData.asm 75 | Comment | 11 | | 0 | 00/6000 | * Find a Protocol Converter in one of the slots.
|
||||
76 | 1 FPData.asm 76 | Code | 11 | | 3 | 00/6000 : 20 9D 60 | START jsr {ozunid_4}
|
||||
77 | 1 FPData.asm 77 | Code | 11 | | 2 | 00/6003 : B0 0A | bcs {ozunid_1}
|
||||
78 | 1 FPData.asm 78 | Comment | 11 | | 0 | 00/6005 | *** Set Address ***
|
||||
79 | 1 FPData.asm 79 | Code | 11 | | 3 | 00/6005 : 20 D2 60 | jsr {ozunid_9}
|
||||
80 | 1 FPData.asm 80 | Data | 11 | | 1 | 00/6008 : 04 | dfb {4}
|
||||
81 | 1 FPData.asm 81 | Data | 11 | | 2 | 00/6009 : E2 60 | dw {ozunid_12}
|
||||
82 | 1 FPData.asm 82 | Comment | 11 | | 0 | 00/600B | *
|
||||
83 | 1 FPData.asm 83 | Code | 11 | | 3 | 00/600B : 20 31 60 | jsr EXEC ; Jump the Error routine
|
||||
84 | 1 FPData.asm 84 | Code | 11 | | 1 | 00/600E : 60 | rts
|
||||
85 | 1 FPData.asm 85 | Comment | 11 | | 0 | 00/600F | **************** CHKSUM ERROR Routine ***************
|
||||
86 | 1 FPData.asm 86 | Comment | 11 | | 0 | 00/600F | *
|
||||
87 | 1 FPData.asm 87 | Comment | 11 | | 0 | 00/600F | ;ERRCHK sta CHKCALC
|
||||
88 | 1 FPData.asm 88 | Comment | 11 | | 0 | 00/600F | ; lda #"E"
|
||||
89 | 1 FPData.asm 89 | Comment | 11 | | 0 | 00/600F | ; jsr COut
|
||||
90 | 1 FPData.asm 90 | Comment | 11 | | 0 | 00/600F | ; rts
|
||||
91 | 1 FPData.asm 91 | Comment | 11 | | 0 | 00/600F | ;CHKCALC dfb $00
|
||||
92 | 1 FPData.asm 92 | Comment | 11 | | 0 | 00/600F | **************** PROTOCOL CONVERTER ERROR Routine ***
|
||||
93 | 1 FPData.asm 93 | Empty | 11 | | 0 | 00/600F | ozunid_1
|
||||
94 | 1 FPData.asm 93 | Equivalence | 11 | | 0 | 00/600F | Error equ ozunid_1
|
||||
95 | 1 FPData.asm 94 | Comment | 11 | | 0 | 00/600F | *
|
||||
96 | 1 FPData.asm 95 | Comment | 11 | | 0 | 00/600F | * There is either no PC around, or there was no give message
|
||||
97 | 1 FPData.asm 96 | Comment | 11 | | 0 | 00/600F | *
|
||||
98 | 1 FPData.asm 97 | Code | 11 | | 2 | 00/600F : A2 00 | ldx #0
|
||||
99 | 1 FPData.asm 98 | Empty | 11 | | 0 | 00/6011 | ozunid_2
|
||||
100 | 1 FPData.asm 98 | Equivalence | 11 | | 0 | 00/6011 | err1 equ ozunid_2
|
||||
101 | 1 FPData.asm 99 | Code | 11 | | 3 | 00/6011 : BD 1D 60 | lda Message,x
|
||||
102 | 1 FPData.asm 100 | Code | 11 | | 2 | 00/6014 : F0 06 | beq {ozunid_3}
|
||||
103 | 1 FPData.asm 101 | Code | 11 | | 3 | 00/6016 : 20 ED FD | jsr {$FDED}
|
||||
104 | 1 FPData.asm 102 | Code | 11 | | 1 | 00/6019 : E8 | inx
|
||||
105 | 1 FPData.asm 103 | Code | 11 | | 2 | 00/601A : D0 F5 | bne {ozunid_2}
|
||||
106 | 1 FPData.asm 104 | Comment | 11 | | 0 | 00/601C | *
|
||||
107 | 1 FPData.asm 105 | Empty | 11 | | 0 | 00/601C | ozunid_3
|
||||
108 | 1 FPData.asm 105 | Equivalence | 11 | | 0 | 00/601C | errout equ ozunid_3
|
||||
109 | 1 FPData.asm 106 | Code | 11 | | 1 | 00/601C : 60 | rts
|
||||
110 | 1 FPData.asm 107 | Comment | 11 | | 0 | 00/601D | *
|
||||
111 | 1 FPData.asm 108 | Data | 11 | | 18 | 00/601D : 4E 4F 20 50 | Message asc 'NO PC OR NO DEVICE'
|
||||
| | | | | | 43 20 4F 52 |
|
||||
| | | | | | 20 4E 4F 20 |
|
||||
| | | | | | 44 45 56 49 |
|
||||
| | | | | | 43 45 |
|
||||
112 | 1 FPData.asm 109 | Data | 11 | | 2 | 00/602F : 8D 00 | dfb $8D,0
|
||||
113 | 1 FPData.asm 110 | Comment | 11 | | 0 | 00/6031 | *******************************************************
|
||||
114 | 1 FPData.asm 111 | Comment | 11 | | 0 | 00/6031 | *
|
||||
115 | 1 FPData.asm 112 | Empty | 11 | | 0 | 00/6031 |
|
||||
116 | 1 FPData.asm 113 | Comment | 11 | | 0 | 00/6031 | ** Set the Input Value first in Dynamic data **
|
||||
117 | 1 FPData.asm 114 | Comment | 11 | | 0 | 00/6031 | ** 4 Byte N1 to FP1 **
|
||||
118 | 1 FPData.asm 115 | Code | 11 | | 2 | 00/6031 : A5 FA | EXEC lda {$FA} ;X1
|
||||
119 | 1 FPData.asm 116 | Code | 11 | | 3 | 00/6033 : 8D FF 60 | sta FP1 ; Absolute addressing
|
||||
120 | 1 FPData.asm 117 | Code | 11 | | 2 | 00/6036 : A5 FB | lda {$FA}+1 ;M1 (1)
|
||||
121 | 1 FPData.asm 118 | Code | 11 | | 3 | 00/6038 : 8D 00 61 | sta FP1+1
|
||||
122 | 1 FPData.asm 119 | Code | 11 | | 2 | 00/603B : A5 FC | lda {$FA}+2 ;M1 (2)
|
||||
123 | 1 FPData.asm 120 | Code | 11 | | 3 | 00/603D : 8D 01 61 | sta FP1+2
|
||||
124 | 1 FPData.asm 121 | Code | 11 | | 2 | 00/6040 : A5 FD | lda {$FA}+3 ;M1 (3)
|
||||
125 | 1 FPData.asm 122 | Code | 11 | | 3 | 00/6042 : 8D 02 61 | sta FP1+3
|
||||
126 | 1 FPData.asm 123 | Empty | 11 | | 0 | 00/6045 |
|
||||
127 | 1 FPData.asm 124 | Comment | 11 | | 0 | 00/6045 | ** 4 Byte N2 to FP2 **
|
||||
128 | 1 FPData.asm 125 | Code | 11 | | 2 | 00/6045 : A5 EC | lda {$EC} ;X2
|
||||
129 | 1 FPData.asm 126 | Code | 11 | | 3 | 00/6047 : 8D 03 61 | sta FP2
|
||||
130 | 1 FPData.asm 127 | Code | 11 | | 2 | 00/604A : A5 ED | lda {$EC}+1 ;M2 (1)
|
||||
131 | 1 FPData.asm 128 | Code | 11 | | 3 | 00/604C : 8D 04 61 | sta FP2+1
|
||||
132 | 1 FPData.asm 129 | Code | 11 | | 2 | 00/604F : A5 EE | lda {$EC}+2 ;M2 (2)
|
||||
133 | 1 FPData.asm 130 | Code | 11 | | 3 | 00/6051 : 8D 05 61 | sta FP2+2
|
||||
134 | 1 FPData.asm 131 | Code | 11 | | 2 | 00/6054 : A5 EF | lda {$EC}+3 ;M2 (3)
|
||||
135 | 1 FPData.asm 132 | Code | 11 | | 3 | 00/6056 : 8D 06 61 | sta FP2+3
|
||||
136 | 1 FPData.asm 133 | Empty | 11 | | 0 | 00/6059 |
|
||||
137 | 1 FPData.asm 134 | Comment | 11 | | 0 | 00/6059 | *** Download ***
|
||||
138 | 1 FPData.asm 135 | Code | 11 | | 3 | 00/6059 : 20 D2 60 | jsr {ozunid_9}
|
||||
139 | 1 FPData.asm 136 | Data | 11 | | 1 | 00/605C : 04 | dfb {4}
|
||||
140 | 1 FPData.asm 137 | Data | 11 | | 2 | 00/605D : E7 60 | dw {ozunid_13}
|
||||
141 | 1 FPData.asm 138 | Comment | 11 | | 0 | 00/605F | ** Set Unidisk Registers **
|
||||
142 | 1 FPData.asm 139 | Comment | 11 | | 0 | 00/605F | ;First time execution
|
||||
143 | 1 FPData.asm 140 | Code | 11 | | 2 | 00/605F : A9 00 | lda #$00 ; Target the first time entry point
|
||||
144 | 1 FPData.asm 141 | Code | 11 | | 3 | 00/6061 : 8D F7 60 | sta LowPC_reg ; First time set init value of PC, just for the next execution
|
||||
145 | 1 FPData.asm 142 | Comment | 11 | | 0 | 00/6064 | * The program begin to PC preset to $0500 *
|
||||
146 | 1 FPData.asm 143 | Comment | 11 | | 0 | 00/6064 | *
|
||||
147 | 1 FPData.asm 144 | Comment | 11 | | 0 | 00/6064 | ** Execute **
|
||||
148 | 1 FPData.asm 145 | Code | 11 | | 3 | 00/6064 : 20 D2 60 | jsr {ozunid_9}
|
||||
149 | 1 FPData.asm 146 | Data | 11 | | 1 | 00/6067 : 04 | dfb {4}
|
||||
150 | 1 FPData.asm 147 | Data | 11 | | 2 | 00/6068 : EC 60 | dw {ozunid_14}
|
||||
151 | 1 FPData.asm 148 | Comment | 11 | | 0 | 00/606A | ** Read **
|
||||
152 | 1 FPData.asm 149 | Code | 11 | | 3 | 00/606A : 20 D2 60 | READ jsr {ozunid_9}
|
||||
153 | 1 FPData.asm 150 | Data | 11 | | 1 | 00/606D : 00 | dfb {0}
|
||||
154 | 1 FPData.asm 151 | Data | 11 | | 2 | 00/606E : D5 60 | dw {ozunid_10}
|
||||
155 | 1 FPData.asm 152 | Code | 11 | | 2 | 00/6070 : B0 9D | bcs {ozunid_1}
|
||||
156 | 1 FPData.asm 153 | Comment | 11 | | 0 | 00/6072 | *
|
||||
157 | 1 FPData.asm 154 | Comment | 11 | | 0 | 00/6072 | **** Store Output results in //c ****
|
||||
158 | 1 FPData.asm 155 | Empty | 11 | | 0 | 00/6072 |
|
||||
159 | 1 FPData.asm 156 | Comment | 11 | | 0 | 00/6072 | * First time execute *
|
||||
160 | 1 FPData.asm 157 | Code | 11 | | 3 | 00/6072 : AD DD 60 | lda UNIAcc_reg
|
||||
161 | 1 FPData.asm 158 | Code | 11 | | 3 | 00/6075 : 8D 00 70 | sta {$7000}
|
||||
162 | 1 FPData.asm 159 | Code | 11 | | 3 | 00/6078 : AD DE 60 | lda UNIX_reg
|
||||
163 | 1 FPData.asm 160 | Code | 11 | | 3 | 00/607B : 8D 01 70 | sta {$7000}+1 ; Store the result
|
||||
164 | 1 FPData.asm 161 | Code | 11 | | 3 | 00/607E : AD DF 60 | lda UNIY_reg
|
||||
165 | 1 FPData.asm 162 | Code | 11 | | 3 | 00/6081 : 8D 02 70 | sta {$7000}+2
|
||||
166 | 1 FPData.asm 163 | Empty | 11 | | 0 | 00/6084 |
|
||||
167 | 1 FPData.asm 164 | Comment | 11 | | 0 | 00/6084 | ** Second time execute **
|
||||
168 | 1 FPData.asm 165 | Code | 11 | | 2 | 00/6084 : A9 3C | lda #$3C ; Target the second time entry point
|
||||
169 | 1 FPData.asm 166 | Code | 11 | | 3 | 00/6086 : 8D F7 60 | sta LowPC_reg ; Second time set new value of PC
|
||||
170 | 1 FPData.asm 167 | Comment | 11 | | 0 | 00/6089 | ** Execute **
|
||||
171 | 1 FPData.asm 168 | Code | 11 | | 3 | 00/6089 : 20 D2 60 | jsr {ozunid_9}
|
||||
172 | 1 FPData.asm 169 | Data | 11 | | 1 | 00/608C : 04 | dfb {4}
|
||||
173 | 1 FPData.asm 170 | Data | 11 | | 2 | 00/608D : EC 60 | dw {ozunid_14}
|
||||
174 | 1 FPData.asm 171 | Comment | 11 | | 0 | 00/608F | ** Read **
|
||||
175 | 1 FPData.asm 172 | Code | 11 | | 3 | 00/608F : 20 D2 60 | jsr {ozunid_9}
|
||||
176 | 1 FPData.asm 173 | Data | 11 | | 1 | 00/6092 : 00 | dfb {0}
|
||||
177 | 1 FPData.asm 174 | Data | 11 | | 2 | 00/6093 : D5 60 | dw {ozunid_10}
|
||||
178 | 1 FPData.asm 175 | Comment | 11 | | 0 | 00/6095 | * bcs Error
|
||||
179 | 1 FPData.asm 176 | Empty | 11 | | 0 | 00/6095 |
|
||||
180 | 1 FPData.asm 177 | Comment | 11 | | 0 | 00/6095 | * Second time execute only to read the latest Byte of FP1*
|
||||
181 | 1 FPData.asm 178 | Code | 11 | | 3 | 00/6095 : AD DD 60 | lda UNIAcc_reg
|
||||
182 | 1 FPData.asm 179 | Code | 11 | | 3 | 00/6098 : 8D 03 70 | sta {$7000}+3
|
||||
183 | 1 FPData.asm 180 | Comment | 11 | | 0 | 00/609B | *
|
||||
184 | 1 FPData.asm 181 | Code | 11 | | 1 | 00/609B : 60 | PROGEND rts
|
||||
185 | 1 FPData.asm 182 | Data | 11 | | 1 | 00/609C : 00 | CHKSUM chk
|
||||
186 | 1 FPData.asm 183 | Comment | 11 | | 0 | 00/609D | ******************************************************
|
||||
187 | 1 FPData.asm 184 | Empty | 11 | | 0 | 00/609D | ozunid_4
|
||||
188 | 1 FPData.asm 184 | Equivalence | 11 | | 0 | 00/609D | FindPC equ ozunid_4
|
||||
189 | 1 FPData.asm 185 | Comment | 11 | | 0 | 00/609D | *
|
||||
190 | 1 FPData.asm 186 | Comment | 11 | | 0 | 00/609D | * Search slot 7 to slot 1 looking for signature bytes
|
||||
191 | 1 FPData.asm 187 | Comment | 11 | | 0 | 00/609D | *
|
||||
192 | 1 FPData.asm 188 | Code | 11 | | 2 | 00/609D : A2 07 | ldx #7 ;Do for seven slots
|
||||
193 | 1 FPData.asm 189 | Code | 11 | | 2 | 00/609F : A9 C7 | lda #$C7
|
||||
194 | 1 FPData.asm 190 | Code | 11 | | 2 | 00/60A1 : 85 07 | sta {$0007}
|
||||
195 | 1 FPData.asm 191 | Code | 11 | | 2 | 00/60A3 : A9 00 | lda #$00
|
||||
196 | 1 FPData.asm 192 | Code | 11 | | 2 | 00/60A5 : 85 06 | sta {$0006}
|
||||
197 | 1 FPData.asm 193 | Comment | 11 | | 0 | 00/60A7 | *
|
||||
198 | 1 FPData.asm 194 | Empty | 11 | | 0 | 00/60A7 | ozunid_5
|
||||
199 | 1 FPData.asm 194 | Equivalence | 11 | | 0 | 00/60A7 | newslot equ ozunid_5
|
||||
200 | 1 FPData.asm 195 | Code | 11 | | 2 | 00/60A7 : A0 07 | ldy #7
|
||||
201 | 1 FPData.asm 196 | Comment | 11 | | 0 | 00/60A9 | *
|
||||
202 | 1 FPData.asm 197 | Empty | 11 | | 0 | 00/60A9 | ozunid_6
|
||||
203 | 1 FPData.asm 197 | Equivalence | 11 | | 0 | 00/60A9 | again equ ozunid_6
|
||||
204 | 1 FPData.asm 198 | Code | 11 | | 2 | 00/60A9 : B1 06 | lda ({$0006}),y
|
||||
205 | 1 FPData.asm 199 | Code | 11 | | 3 | 00/60AB : D9 CA 60 | cmp sigtab,y ;One for byte signature
|
||||
206 | 1 FPData.asm 200 | Code | 11 | | 2 | 00/60AE : F0 07 | beq {ozunid_7} ;Found one signature byte
|
||||
207 | 1 FPData.asm 201 | Code | 11 | | 2 | 00/60B0 : C6 07 | dec {$0007}
|
||||
208 | 1 FPData.asm 202 | Code | 11 | | 1 | 00/60B2 : CA | dex
|
||||
209 | 1 FPData.asm 203 | Code | 11 | | 2 | 00/60B3 : D0 F2 | bne {ozunid_5}
|
||||
210 | 1 FPData.asm 204 | Comment | 11 | | 0 | 00/60B5 | *
|
||||
211 | 1 FPData.asm 205 | Comment | 11 | | 0 | 00/60B5 | * if we get here, no PC find
|
||||
212 | 1 FPData.asm 206 | Code | 11 | | 1 | 00/60B5 : 38 | sec
|
||||
213 | 1 FPData.asm 207 | Code | 11 | | 1 | 00/60B6 : 60 | rts
|
||||
214 | 1 FPData.asm 208 | Comment | 11 | | 0 | 00/60B7 | *
|
||||
215 | 1 FPData.asm 209 | Comment | 11 | | 0 | 00/60B7 | * if we get here, no byte find on PC
|
||||
216 | 1 FPData.asm 210 | Empty | 11 | | 0 | 00/60B7 | ozunid_7
|
||||
217 | 1 FPData.asm 210 | Equivalence | 11 | | 0 | 00/60B7 | maybe equ ozunid_7
|
||||
218 | 1 FPData.asm 211 | Code | 11 | | 1 | 00/60B7 : 88 | dey
|
||||
219 | 1 FPData.asm 212 | Code | 11 | | 1 | 00/60B8 : 88 | dey ;if N=1 then all sig bytes OK
|
||||
220 | 1 FPData.asm 213 | Code | 11 | | 2 | 00/60B9 : 10 EE | bpl {ozunid_6}
|
||||
221 | 1 FPData.asm 214 | Comment | 11 | | 0 | 00/60BB | * Found PC interface. Set up call address.
|
||||
222 | 1 FPData.asm 215 | Comment | 11 | | 0 | 00/60BB | * we already have high byte ($CN), we need low byte
|
||||
223 | 1 FPData.asm 216 | Comment | 11 | | 0 | 00/60BB | *
|
||||
224 | 1 FPData.asm 217 | Empty | 11 | | 0 | 00/60BB | ozunid_8
|
||||
225 | 1 FPData.asm 217 | Equivalence | 11 | | 0 | 00/60BB | foundPC equ ozunid_8
|
||||
226 | 1 FPData.asm 218 | Code | 11 | | 2 | 00/60BB : A9 FF | lda #$FF
|
||||
227 | 1 FPData.asm 219 | Code | 11 | | 2 | 00/60BD : 85 06 | sta {$0006}
|
||||
228 | 1 FPData.asm 220 | Code | 11 | | 2 | 00/60BF : A0 00 | ldy #0 ;For indirect load
|
||||
229 | 1 FPData.asm 221 | Code | 11 | | 2 | 00/60C1 : B1 06 | lda ({$0006}),y ;Get the byte
|
||||
230 | 1 FPData.asm 222 | Comment | 11 | | 0 | 00/60C3 | *
|
||||
231 | 1 FPData.asm 223 | Comment | 11 | | 0 | 00/60C3 | * Now the Acc has the low oreder ProDOS entry point.
|
||||
232 | 1 FPData.asm 224 | Comment | 11 | | 0 | 00/60C3 | * The PC entry is three locations past this ...
|
||||
233 | 1 FPData.asm 225 | Comment | 11 | | 0 | 00/60C3 | *
|
||||
234 | 1 FPData.asm 226 | Code | 11 | | 1 | 00/60C3 : 18 | clc
|
||||
235 | 1 FPData.asm 227 | Code | 11 | | 2 | 00/60C4 : 69 03 | adc #3
|
||||
236 | 1 FPData.asm 228 | Code | 11 | | 2 | 00/60C6 : 85 06 | sta {$0006}
|
||||
237 | 1 FPData.asm 229 | Comment | 11 | | 0 | 00/60C8 | *
|
||||
238 | 1 FPData.asm 230 | Comment | 11 | | 0 | 00/60C8 | * Now ZPTempL has PC entry point.
|
||||
239 | 1 FPData.asm 231 | Comment | 11 | | 0 | 00/60C8 | * Return with carry clear.
|
||||
240 | 1 FPData.asm 232 | Comment | 11 | | 0 | 00/60C8 | *
|
||||
241 | 1 FPData.asm 233 | Code | 11 | | 1 | 00/60C8 : 18 | clc
|
||||
242 | 1 FPData.asm 234 | Code | 11 | | 1 | 00/60C9 : 60 | rts
|
||||
243 | 1 FPData.asm 235 | Comment | 11 | | 0 | 00/60CA | ***********************************************************
|
||||
244 | 1 FPData.asm 236 | Comment | 11 | | 0 | 00/60CA | *
|
||||
245 | 1 FPData.asm 237 | Comment | 11 | | 0 | 00/60CA | * There are the PC signature bytes in their relative order.
|
||||
246 | 1 FPData.asm 238 | Comment | 11 | | 0 | 00/60CA | * The $FF bytes are filler bytes and are not compared.
|
||||
247 | 1 FPData.asm 239 | Comment | 11 | | 0 | 00/60CA | *
|
||||
248 | 1 FPData.asm 240 | Data | 11 | | 4 | 00/60CA : FF 20 FF 00 | sigtab dfb $FF,$20,$FF,$00
|
||||
249 | 1 FPData.asm 241 | Data | 11 | | 4 | 00/60CE : FF 03 FF 00 | dfb $FF,$03,$FF,$00
|
||||
250 | 1 FPData.asm 242 | Comment | 11 | | 0 | 00/60D2 | *
|
||||
251 | 1 FPData.asm 243 | Empty | 11 | | 0 | 00/60D2 | ozunid_9
|
||||
252 | 1 FPData.asm 243 | Equivalence | 11 | | 0 | 00/60D2 | Dispatch equ ozunid_9
|
||||
253 | 1 FPData.asm 244 | Code | 11 | | 3 | 00/60D2 : 6C 06 00 | jmp ({$0006}) ;Simulate an indirect JSR to PC
|
||||
254 | 1 FPData.asm 245 | Comment | 11 | | 0 | 00/60D5 | *
|
||||
255 | 1 FPData.asm 246 | Comment | 11 | | 0 | 00/60D5 | *** Status Parameter Set for UNI ***
|
||||
256 | 1 FPData.asm 247 | Empty | 11 | | 0 | 00/60D5 | ozunid_10
|
||||
257 | 1 FPData.asm 247 | Equivalence | 11 | | 0 | 00/60D5 | DParms equ ozunid_10
|
||||
258 | 1 FPData.asm 248 | Data | 11 | | 1 | 00/60D5 : 03 | DPParmsCt dfb 3 ;Status calls have three parameters
|
||||
259 | 1 FPData.asm 249 | Data | 11 | | 1 | 00/60D6 : 01 | DPUnit dfb 1
|
||||
260 | 1 FPData.asm 250 | Data | 11 | | 2 | 00/60D7 : DA 60 | DPBuffer dw {ozunid_11}
|
||||
261 | 1 FPData.asm 251 | Data | 11 | | 1 | 00/60D9 : 05 | DPStatCode dfb {5}
|
||||
262 | 1 FPData.asm 252 | Comment | 11 | | 0 | 00/60DA | *
|
||||
263 | 1 FPData.asm 253 | Comment | 11 | | 0 | 00/60DA | *
|
||||
264 | 1 FPData.asm 254 | Comment | 11 | | 0 | 00/60DA | *
|
||||
265 | 1 FPData.asm 255 | Comment | 11 | | 0 | 00/60DA | *** Status List UNI ***
|
||||
266 | 1 FPData.asm 256 | Empty | 11 | | 0 | 00/60DA | ozunid_11
|
||||
267 | 1 FPData.asm 256 | Equivalence | 11 | | 0 | 00/60DA | UNI equ ozunid_11
|
||||
268 | 1 FPData.asm 257 | Data | 11 | | 1 | 00/60DA : 00 | dfb 0
|
||||
269 | 1 FPData.asm 258 | Data | 11 | | 1 | 00/60DB : 00 | UNIError dfb 0
|
||||
270 | 1 FPData.asm 259 | Data | 11 | | 1 | 00/60DC : 00 | UNIRetries dfb 0
|
||||
271 | 1 FPData.asm 260 | Data | 11 | | 1 | 00/60DD : 00 | UNIAcc_reg dfb 0
|
||||
272 | 1 FPData.asm 261 | Data | 11 | | 1 | 00/60DE : 00 | UNIX_reg dfb 0
|
||||
273 | 1 FPData.asm 262 | Data | 11 | | 1 | 00/60DF : 00 | UNIY_reg dfb 0
|
||||
274 | 1 FPData.asm 263 | Data | 11 | | 1 | 00/60E0 : 00 | UNIP_val dfb 0
|
||||
275 | 1 FPData.asm 264 | Data | 11 | | 1 | 00/60E1 : 00 | HHH dfb 0
|
||||
276 | 1 FPData.asm 265 | Comment | 11 | | 0 | 00/60E2 | *
|
||||
277 | 1 FPData.asm 266 | Comment | 11 | | 0 | 00/60E2 | *** Set Address ***
|
||||
278 | 1 FPData.asm 267 | Empty | 11 | | 0 | 00/60E2 | ozunid_12
|
||||
279 | 1 FPData.asm 267 | Equivalence | 11 | | 0 | 00/60E2 | SET_ADD equ ozunid_12
|
||||
280 | 1 FPData.asm 268 | Data | 11 | | 1 | 00/60E2 : 03 | dfb 3
|
||||
281 | 1 FPData.asm 269 | Data | 11 | | 1 | 00/60E3 : 01 | dfb 1
|
||||
282 | 1 FPData.asm 270 | Data | 11 | | 2 | 00/60E4 : F9 60 | dw {ozunid_16}
|
||||
283 | 1 FPData.asm 271 | Data | 11 | | 1 | 00/60E6 : 06 | dfb {6}
|
||||
284 | 1 FPData.asm 272 | Comment | 11 | | 0 | 00/60E7 | *
|
||||
285 | 1 FPData.asm 273 | Comment | 11 | | 0 | 00/60E7 | *** Download ***
|
||||
286 | 1 FPData.asm 274 | Empty | 11 | | 0 | 00/60E7 | ozunid_13
|
||||
287 | 1 FPData.asm 274 | Equivalence | 11 | | 0 | 00/60E7 | DOWNLOAD equ ozunid_13
|
||||
288 | 1 FPData.asm 275 | Data | 11 | | 1 | 00/60E7 : 03 | dfb 3
|
||||
289 | 1 FPData.asm 276 | Data | 11 | | 1 | 00/60E8 : 01 | dfb 1
|
||||
290 | 1 FPData.asm 277 | Data | 11 | | 2 | 00/60E9 : FD 60 | dw {ozunid_17}
|
||||
291 | 1 FPData.asm 278 | Data | 11 | | 1 | 00/60EB : 07 | dfb {7}
|
||||
292 | 1 FPData.asm 279 | Comment | 11 | | 0 | 00/60EC | *
|
||||
293 | 1 FPData.asm 280 | Comment | 11 | | 0 | 00/60EC | *** Execute ***
|
||||
294 | 1 FPData.asm 281 | Empty | 11 | | 0 | 00/60EC | ozunid_14
|
||||
295 | 1 FPData.asm 281 | Equivalence | 11 | | 0 | 00/60EC | EXE equ ozunid_14
|
||||
296 | 1 FPData.asm 282 | Data | 11 | | 1 | 00/60EC : 03 | dfb 3
|
||||
297 | 1 FPData.asm 283 | Data | 11 | | 1 | 00/60ED : 01 | dfb 1
|
||||
298 | 1 FPData.asm 284 | Data | 11 | | 2 | 00/60EE : F1 60 | dw {ozunid_15}
|
||||
299 | 1 FPData.asm 285 | Data | 11 | | 1 | 00/60F0 : 05 | dfb {5}
|
||||
300 | 1 FPData.asm 286 | Comment | 11 | | 0 | 00/60F1 | *
|
||||
301 | 1 FPData.asm 287 | Comment | 11 | | 0 | 00/60F1 | ******** CONTROL LISTS ********
|
||||
302 | 1 FPData.asm 288 | Comment | 11 | | 0 | 00/60F1 | *
|
||||
303 | 1 FPData.asm 289 | Comment | 11 | | 0 | 00/60F1 | *
|
||||
304 | 1 FPData.asm 290 | Comment | 11 | | 0 | 00/60F1 | *** Execute ***
|
||||
305 | 1 FPData.asm 291 | Empty | 11 | | 0 | 00/60F1 | ozunid_15
|
||||
306 | 1 FPData.asm 291 | Equivalence | 11 | | 0 | 00/60F1 | CNTL_LIST2 equ ozunid_15
|
||||
307 | 1 FPData.asm 292 | Data | 11 | | 1 | 00/60F1 : 06 | Clow_byte dfb $06
|
||||
308 | 1 FPData.asm 293 | Data | 11 | | 1 | 00/60F2 : 00 | Chigh_byte dfb $00
|
||||
309 | 1 FPData.asm 294 | Data | 11 | | 1 | 00/60F3 : 00 | AccValue dfb $00 ; Init Value Unidisk Accumulator Register
|
||||
310 | 1 FPData.asm 295 | Data | 11 | | 1 | 00/60F4 : 00 | X_reg dfb $00 ; Init Value Unidisk X Register
|
||||
311 | 1 FPData.asm 296 | Data | 11 | | 1 | 00/60F5 : 00 | Y_reg dfb $00 ; Init Value Unidisk Y Register
|
||||
312 | 1 FPData.asm 297 | Data | 11 | | 1 | 00/60F6 : 00 | ProStatus dfb $00 ; Init Value Unidisk Status Register
|
||||
313 | 1 FPData.asm 298 | Data | 11 | | 1 | 00/60F7 : 00 | LowPC_reg dfb $00 ; Init Value Unidisk Program Counter $0500 at eny dowload
|
||||
314 | 1 FPData.asm 299 | Data | 11 | | 1 | 00/60F8 : 05 | HighPC_reg dfb $05 ; $05 first execution, $3C second execution
|
||||
315 | 1 FPData.asm 300 | Comment | 11 | | 0 | 00/60F9 | *
|
||||
316 | 1 FPData.asm 301 | Comment | 11 | | 0 | 00/60F9 | *** Set Address ***
|
||||
317 | 1 FPData.asm 302 | Empty | 11 | | 0 | 00/60F9 | ozunid_16
|
||||
318 | 1 FPData.asm 302 | Equivalence | 11 | | 0 | 00/60F9 | CNTL_LIST3 equ ozunid_16
|
||||
319 | 1 FPData.asm 303 | Data | 11 | | 1 | 00/60F9 : 02 | CountL_byte dfb $02
|
||||
320 | 1 FPData.asm 304 | Data | 11 | | 1 | 00/60FA : 00 | CountH_byte dfb $00
|
||||
321 | 1 FPData.asm 305 | Data | 11 | | 1 | 00/60FB : 2D | LByte_Addr dfb $2D ; ORG of Unidisk program, set begin data address $062D
|
||||
322 | 1 FPData.asm 306 | Data | 11 | | 1 | 00/60FC : 06 | HByte_Addr dfb $06
|
||||
323 | 1 FPData.asm 307 | Comment | 11 | | 0 | 00/60FD | *
|
||||
324 | 1 FPData.asm 308 | Comment | 11 | | 0 | 00/60FD | *** Download ***
|
||||
325 | 1 FPData.asm 309 | Empty | 11 | | 0 | 00/60FD | ozunid_17
|
||||
326 | 1 FPData.asm 309 | Equivalence | 11 | | 0 | 00/60FD | CNTL_LIST4 equ ozunid_17
|
||||
327 | 1 FPData.asm 310 | Data | 11 | | 1 | 00/60FD : 08 | LenghtL_byte dfb $08 ;<----- Lenght of Unidisk program Lo - Byte 312 byte
|
||||
328 | 1 FPData.asm 311 | Data | 11 | | 1 | 00/60FE : 00 | LenghtH_byte dfb $00 ;<----- Lenght of Unidisk program Hi Byte
|
||||
329 | 1 FPData.asm 312 | Comment | 11 | | 0 | 00/60FF | *
|
||||
330 | 1 FPData.asm 313 | Comment | 11 | | 0 | 00/60FF | **************** Start UNIDISK Program ****************
|
||||
331 | 1 FPData.asm 314 | Comment | 11 | | 0 | 00/60FF | *
|
||||
332 | 1 FPData.asm 315 | Empty | 11 | | 0 | 00/60FF |
|
||||
333 | 1 FPData.asm 316 | Comment | 11 | | 0 | 00/60FF | ** Input Dynamic Data append in the end of Unidisk routine **
|
||||
334 | 1 FPData.asm 317 | Data | 11 | | 1 | 00/60FF : 00 | FP1 dfb $00
|
||||
335 | 1 FPData.asm 318 | Data | 11 | | 1 | 00/6100 : 00 | dfb $00
|
||||
336 | 1 FPData.asm 319 | Data | 11 | | 1 | 00/6101 : 00 | dfb $00
|
||||
337 | 1 FPData.asm 320 | Data | 11 | | 1 | 00/6102 : 00 | dfb $00
|
||||
338 | 1 FPData.asm 321 | Comment | 11 | | 0 | 00/6103 | *
|
||||
339 | 1 FPData.asm 322 | Data | 11 | | 1 | 00/6103 : 00 | FP2 dfb $00
|
||||
340 | 1 FPData.asm 323 | Data | 11 | | 1 | 00/6104 : 00 | dfb $00
|
||||
341 | 1 FPData.asm 324 | Data | 11 | | 1 | 00/6105 : 00 | dfb $00
|
||||
342 | 1 FPData.asm 325 | Data | 11 | | 1 | 00/6106 : 00 | dfb $00
|
||||
343 | 1 FPData.asm 326 | Comment | 11 | | 0 | 00/6107 | **************** End UNIDISK Program ****************
|
||||
------+----------------------+-------------+----+---------+------+-----------------------+-------------------------------------------------------------------
|
||||
------+----------------------+-------------+----+---------+------+-----------------------+-------------------------------------------------------------------
|
||||
Line | # File Line | Line Type | MX | Reloc | Size | Address Object Code | Source Code
|
||||
------+----------------------+-------------+----+---------+------+-----------------------+-------------------------------------------------------------------
|
||||
1 | 1 FPData.asm 1 | Comment | 11 | | 0 | 00/8000 | *
|
||||
2 | 1 FPData.asm 2 | Comment | 11 | | 0 | 00/8000 | * Unidisk 3.5 DATA <alfa>
|
||||
3 | 1 FPData.asm 3 | Comment | 11 | | 0 | 00/8000 | *
|
||||
4 | 1 FPData.asm 4 | Comment | 11 | | 0 | 00/8000 | * The target of this project is to use the Unidisk 3.5 drive to perform
|
||||
5 | 1 FPData.asm 5 | Comment | 11 | | 0 | 00/8000 | * specific numerical routines (integers and floating point numbers)
|
||||
6 | 1 FPData.asm 6 | Comment | 11 | | 0 | 00/8000 | * calculation in order to use it as a Apple II co-processor unit.
|
||||
7 | 1 FPData.asm 7 | Comment | 11 | | 0 | 00/8000 | *
|
||||
8 | 1 FPData.asm 8 | Comment | 11 | | 0 | 00/8000 | * Copyright (C) 2015 Riccardo Greco <rigreco.grc@gmail.com>.
|
||||
9 | 1 FPData.asm 9 | Comment | 11 | | 0 | 00/8000 | *
|
||||
10 | 1 FPData.asm 10 | Comment | 11 | | 0 | 00/8000 | * This program is free software: you can redistribute it and/or modify
|
||||
11 | 1 FPData.asm 11 | Comment | 11 | | 0 | 00/8000 | * it under the terms of the GNU General Public License as published by
|
||||
12 | 1 FPData.asm 12 | Comment | 11 | | 0 | 00/8000 | * the Free Software Foundation, either version 3 of the License, or
|
||||
13 | 1 FPData.asm 13 | Comment | 11 | | 0 | 00/8000 | * (at your option) any later version.
|
||||
14 | 1 FPData.asm 14 | Comment | 11 | | 0 | 00/8000 | * This program is distributed in the hope that it will be useful,
|
||||
15 | 1 FPData.asm 15 | Comment | 11 | | 0 | 00/8000 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
16 | 1 FPData.asm 16 | Comment | 11 | | 0 | 00/8000 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
17 | 1 FPData.asm 17 | Comment | 11 | | 0 | 00/8000 | * GNU General Public License for more details.
|
||||
18 | 1 FPData.asm 18 | Comment | 11 | | 0 | 00/8000 | * You should have received a copy of the GNU General Public License
|
||||
19 | 1 FPData.asm 19 | Comment | 11 | | 0 | 00/8000 | * along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
20 | 1 FPData.asm 20 | Comment | 11 | | 0 | 00/8000 | *
|
||||
21 | 1 FPData.asm 21 | Comment | 11 | | 0 | 00/8000 | *
|
||||
22 | 1 FPData.asm 22 | Comment | 11 | | 0 | 00/8000 | * @com.wudsn.ide.asm.hardware=APPLE2
|
||||
23 | 1 FPData.asm 23 | Directive | 11 | | 0 | 00/8000 | XC
|
||||
24 | 1 FPData.asm 24 | Comment | 11 | | 0 | 00/8000 | ** CHKSUM Pointer *
|
||||
25 | 1 FPData.asm 25 | Equivalence | 11 | | 0 | 00/8000 | PTR equ $08
|
||||
26 | 1 FPData.asm 26 | Comment | 11 | | 0 | 00/8000 | ** Protocol Converter Call
|
||||
27 | 1 FPData.asm 27 | Equivalence | 11 | | 0 | 00/8000 | ZPTempL equ $0006 ;Temporary zero page storage
|
||||
28 | 1 FPData.asm 28 | Equivalence | 11 | | 0 | 00/8000 | ZPTempH equ $0007
|
||||
29 | 1 FPData.asm 29 | Comment | 11 | | 0 | 00/8000 | ** Zero page storage **
|
||||
30 | 1 FPData.asm 30 | Equivalence | 11 | | 0 | 00/8000 | N1 equ $FA ;25 4 Byte FP FA--FD (FP1)
|
||||
31 | 1 FPData.asm 31 | Equivalence | 11 | | 0 | 00/8000 | N2 equ $EC ;27 4 Byte FP EC--EF (FP2)
|
||||
32 | 1 FPData.asm 32 | Equivalence | 11 | | 0 | 00/8000 | RSLT equ $7000 ;29
|
||||
33 | 1 FPData.asm 33 | Comment | 11 | | 0 | 00/8000 | *** Monitor routines ***
|
||||
34 | 1 FPData.asm 34 | Equivalence | 11 | | 0 | 00/8000 | COut equ $FDED ;Console output ASCII
|
||||
35 | 1 FPData.asm 35 | Equivalence | 11 | | 0 | 00/8000 | CROut equ $FD8E ;Carriage return
|
||||
36 | 1 FPData.asm 36 | Comment | 11 | | 0 | 00/8000 | ** Command Code **
|
||||
37 | 1 FPData.asm 37 | Equivalence | 11 | | 0 | 00/8000 | StatusCmd equ 0
|
||||
38 | 1 FPData.asm 38 | Comment | 11 | | 0 | 00/8000 | ** Status Code **
|
||||
39 | 1 FPData.asm 39 | Equivalence | 11 | | 0 | 00/8000 | StatusUNI equ 5
|
||||
40 | 1 FPData.asm 40 | Comment | 11 | | 0 | 00/8000 | *
|
||||
41 | 1 FPData.asm 41 | Equivalence | 11 | | 0 | 00/8000 | ControlCmd equ 4
|
||||
42 | 1 FPData.asm 42 | Comment | 11 | | 0 | 00/8000 | ** Control Codes **
|
||||
43 | 1 FPData.asm 43 | Equivalence | 11 | | 0 | 00/8000 | Run equ 5
|
||||
44 | 1 FPData.asm 44 | Equivalence | 11 | | 0 | 00/8000 | SetDWLoad equ 6
|
||||
45 | 1 FPData.asm 45 | Equivalence | 11 | | 0 | 00/8000 | DWLoad equ 7
|
||||
46 | 1 FPData.asm 46 | Comment | 11 | | 0 | 00/8000 | *
|
||||
47 | 1 FPData.asm 47 | Directive | 11 | | 0 | 00/8000 | org $6000
|
||||
48 | 1 FPData.asm 48 | Comment | 11 | | 0 | 00/6000 | *****************************************************
|
||||
49 | 1 FPData.asm 49 | Comment | 11 | | 0 | 00/6000 | ************** CHKSUM MAIN Routine ******************
|
||||
50 | 1 FPData.asm 50 | Comment | 11 | | 0 | 00/6000 | *
|
||||
51 | 1 FPData.asm 51 | Comment | 11 | | 0 | 00/6000 | ;STARTCHK lda #<STARTCHK
|
||||
52 | 1 FPData.asm 52 | Comment | 11 | | 0 | 00/6000 | ; sta PTR
|
||||
53 | 1 FPData.asm 53 | Comment | 11 | | 0 | 00/6000 | ; lda #>STARTCHK
|
||||
54 | 1 FPData.asm 54 | Comment | 11 | | 0 | 00/6000 | ; sta PTR+1
|
||||
55 | 1 FPData.asm 55 | Comment | 11 | | 0 | 00/6000 | ; ldy #$00
|
||||
56 | 1 FPData.asm 56 | Comment | 11 | | 0 | 00/6000 | ; lda #$00
|
||||
57 | 1 FPData.asm 57 | Comment | 11 | | 0 | 00/6000 | ; pha
|
||||
58 | 1 FPData.asm 58 | Comment | 11 | | 0 | 00/6000 | ;LOOP pla
|
||||
59 | 1 FPData.asm 59 | Comment | 11 | | 0 | 00/6000 | ; eor (PTR),y
|
||||
60 | 1 FPData.asm 60 | Comment | 11 | | 0 | 00/6000 | ; pha
|
||||
61 | 1 FPData.asm 61 | Comment | 11 | | 0 | 00/6000 | ; inc PTR
|
||||
62 | 1 FPData.asm 62 | Comment | 11 | | 0 | 00/6000 | ; bne CHK
|
||||
63 | 1 FPData.asm 63 | Comment | 11 | | 0 | 00/6000 | ; inc PTR+1
|
||||
64 | 1 FPData.asm 64 | Comment | 11 | | 0 | 00/6000 | ;CHK lda PTR+1
|
||||
65 | 1 FPData.asm 65 | Comment | 11 | | 0 | 00/6000 | ; cmp #>PROGEND
|
||||
66 | 1 FPData.asm 66 | Comment | 11 | | 0 | 00/6000 | ; bcc LOOP
|
||||
67 | 1 FPData.asm 67 | Comment | 11 | | 0 | 00/6000 | ; lda PTR
|
||||
68 | 1 FPData.asm 68 | Comment | 11 | | 0 | 00/6000 | ; cmp #<PROGEND
|
||||
69 | 1 FPData.asm 69 | Comment | 11 | | 0 | 00/6000 | ; bcc LOOP
|
||||
70 | 1 FPData.asm 70 | Comment | 11 | | 0 | 00/6000 | ; beq LOOP
|
||||
71 | 1 FPData.asm 71 | Comment | 11 | | 0 | 00/6000 | ;CHKCS pla
|
||||
72 | 1 FPData.asm 72 | Comment | 11 | | 0 | 00/6000 | ; cmp CHKSUM
|
||||
73 | 1 FPData.asm 73 | Comment | 11 | | 0 | 00/6000 | ; bne ERRCHK
|
||||
74 | 1 FPData.asm 74 | Comment | 11 | | 0 | 00/6000 | ***********************************************
|
||||
75 | 1 FPData.asm 75 | Comment | 11 | | 0 | 00/6000 | * Find a Protocol Converter in one of the slots.
|
||||
76 | 1 FPData.asm 76 | Code | 11 | | 3 | 00/6000 : 20 9D 60 | START jsr {ozunid_4}
|
||||
77 | 1 FPData.asm 77 | Code | 11 | | 2 | 00/6003 : B0 0A | bcs {ozunid_1}
|
||||
78 | 1 FPData.asm 78 | Comment | 11 | | 0 | 00/6005 | *** Set Address ***
|
||||
79 | 1 FPData.asm 79 | Code | 11 | | 3 | 00/6005 : 20 D2 60 | jsr {ozunid_9}
|
||||
80 | 1 FPData.asm 80 | Data | 11 | | 1 | 00/6008 : 04 | dfb {4}
|
||||
81 | 1 FPData.asm 81 | Data | 11 | | 2 | 00/6009 : E2 60 | dw {ozunid_12}
|
||||
82 | 1 FPData.asm 82 | Comment | 11 | | 0 | 00/600B | *
|
||||
83 | 1 FPData.asm 83 | Code | 11 | | 3 | 00/600B : 20 31 60 | jsr EXEC ; Jump the Error routine
|
||||
84 | 1 FPData.asm 84 | Code | 11 | | 1 | 00/600E : 60 | rts
|
||||
85 | 1 FPData.asm 85 | Comment | 11 | | 0 | 00/600F | **************** CHKSUM ERROR Routine ***************
|
||||
86 | 1 FPData.asm 86 | Comment | 11 | | 0 | 00/600F | *
|
||||
87 | 1 FPData.asm 87 | Comment | 11 | | 0 | 00/600F | ;ERRCHK sta CHKCALC
|
||||
88 | 1 FPData.asm 88 | Comment | 11 | | 0 | 00/600F | ; lda #"E"
|
||||
89 | 1 FPData.asm 89 | Comment | 11 | | 0 | 00/600F | ; jsr COut
|
||||
90 | 1 FPData.asm 90 | Comment | 11 | | 0 | 00/600F | ; rts
|
||||
91 | 1 FPData.asm 91 | Comment | 11 | | 0 | 00/600F | ;CHKCALC dfb $00
|
||||
92 | 1 FPData.asm 92 | Comment | 11 | | 0 | 00/600F | **************** PROTOCOL CONVERTER ERROR Routine ***
|
||||
93 | 1 FPData.asm 93 | Empty | 11 | | 0 | 00/600F | ozunid_1
|
||||
94 | 1 FPData.asm 93 | Equivalence | 11 | | 0 | 00/600F | Error equ ozunid_1
|
||||
95 | 1 FPData.asm 94 | Comment | 11 | | 0 | 00/600F | *
|
||||
96 | 1 FPData.asm 95 | Comment | 11 | | 0 | 00/600F | * There is either no PC around, or there was no give message
|
||||
97 | 1 FPData.asm 96 | Comment | 11 | | 0 | 00/600F | *
|
||||
98 | 1 FPData.asm 97 | Code | 11 | | 2 | 00/600F : A2 00 | ldx #0
|
||||
99 | 1 FPData.asm 98 | Empty | 11 | | 0 | 00/6011 | ozunid_2
|
||||
100 | 1 FPData.asm 98 | Equivalence | 11 | | 0 | 00/6011 | err1 equ ozunid_2
|
||||
101 | 1 FPData.asm 99 | Code | 11 | | 3 | 00/6011 : BD 1D 60 | lda Message,x
|
||||
102 | 1 FPData.asm 100 | Code | 11 | | 2 | 00/6014 : F0 06 | beq {ozunid_3}
|
||||
103 | 1 FPData.asm 101 | Code | 11 | | 3 | 00/6016 : 20 ED FD | jsr {$FDED}
|
||||
104 | 1 FPData.asm 102 | Code | 11 | | 1 | 00/6019 : E8 | inx
|
||||
105 | 1 FPData.asm 103 | Code | 11 | | 2 | 00/601A : D0 F5 | bne {ozunid_2}
|
||||
106 | 1 FPData.asm 104 | Comment | 11 | | 0 | 00/601C | *
|
||||
107 | 1 FPData.asm 105 | Empty | 11 | | 0 | 00/601C | ozunid_3
|
||||
108 | 1 FPData.asm 105 | Equivalence | 11 | | 0 | 00/601C | errout equ ozunid_3
|
||||
109 | 1 FPData.asm 106 | Code | 11 | | 1 | 00/601C : 60 | rts
|
||||
110 | 1 FPData.asm 107 | Comment | 11 | | 0 | 00/601D | *
|
||||
111 | 1 FPData.asm 108 | Data | 11 | | 18 | 00/601D : 4E 4F 20 50 | Message asc 'NO PC OR NO DEVICE'
|
||||
| | | | | | 43 20 4F 52 |
|
||||
| | | | | | 20 4E 4F 20 |
|
||||
| | | | | | 44 45 56 49 |
|
||||
| | | | | | 43 45 |
|
||||
112 | 1 FPData.asm 109 | Data | 11 | | 2 | 00/602F : 8D 00 | dfb $8D,0
|
||||
113 | 1 FPData.asm 110 | Comment | 11 | | 0 | 00/6031 | *******************************************************
|
||||
114 | 1 FPData.asm 111 | Comment | 11 | | 0 | 00/6031 | *
|
||||
115 | 1 FPData.asm 112 | Empty | 11 | | 0 | 00/6031 |
|
||||
116 | 1 FPData.asm 113 | Comment | 11 | | 0 | 00/6031 | ** Set the Input Value first in Dynamic data **
|
||||
117 | 1 FPData.asm 114 | Comment | 11 | | 0 | 00/6031 | ** 4 Byte N1 to FP1 **
|
||||
118 | 1 FPData.asm 115 | Code | 11 | | 2 | 00/6031 : A5 FA | EXEC lda {$FA} ;X1
|
||||
119 | 1 FPData.asm 116 | Code | 11 | | 3 | 00/6033 : 8D FF 60 | sta FP1 ; Absolute addressing
|
||||
120 | 1 FPData.asm 117 | Code | 11 | | 2 | 00/6036 : A5 FB | lda {$FA}+1 ;M1 (1)
|
||||
121 | 1 FPData.asm 118 | Code | 11 | | 3 | 00/6038 : 8D 00 61 | sta FP1+1
|
||||
122 | 1 FPData.asm 119 | Code | 11 | | 2 | 00/603B : A5 FC | lda {$FA}+2 ;M1 (2)
|
||||
123 | 1 FPData.asm 120 | Code | 11 | | 3 | 00/603D : 8D 01 61 | sta FP1+2
|
||||
124 | 1 FPData.asm 121 | Code | 11 | | 2 | 00/6040 : A5 FD | lda {$FA}+3 ;M1 (3)
|
||||
125 | 1 FPData.asm 122 | Code | 11 | | 3 | 00/6042 : 8D 02 61 | sta FP1+3
|
||||
126 | 1 FPData.asm 123 | Empty | 11 | | 0 | 00/6045 |
|
||||
127 | 1 FPData.asm 124 | Comment | 11 | | 0 | 00/6045 | ** 4 Byte N2 to FP2 **
|
||||
128 | 1 FPData.asm 125 | Code | 11 | | 2 | 00/6045 : A5 EC | lda {$EC} ;X2
|
||||
129 | 1 FPData.asm 126 | Code | 11 | | 3 | 00/6047 : 8D 03 61 | sta FP2
|
||||
130 | 1 FPData.asm 127 | Code | 11 | | 2 | 00/604A : A5 ED | lda {$EC}+1 ;M2 (1)
|
||||
131 | 1 FPData.asm 128 | Code | 11 | | 3 | 00/604C : 8D 04 61 | sta FP2+1
|
||||
132 | 1 FPData.asm 129 | Code | 11 | | 2 | 00/604F : A5 EE | lda {$EC}+2 ;M2 (2)
|
||||
133 | 1 FPData.asm 130 | Code | 11 | | 3 | 00/6051 : 8D 05 61 | sta FP2+2
|
||||
134 | 1 FPData.asm 131 | Code | 11 | | 2 | 00/6054 : A5 EF | lda {$EC}+3 ;M2 (3)
|
||||
135 | 1 FPData.asm 132 | Code | 11 | | 3 | 00/6056 : 8D 06 61 | sta FP2+3
|
||||
136 | 1 FPData.asm 133 | Empty | 11 | | 0 | 00/6059 |
|
||||
137 | 1 FPData.asm 134 | Comment | 11 | | 0 | 00/6059 | *** Download ***
|
||||
138 | 1 FPData.asm 135 | Code | 11 | | 3 | 00/6059 : 20 D2 60 | jsr {ozunid_9}
|
||||
139 | 1 FPData.asm 136 | Data | 11 | | 1 | 00/605C : 04 | dfb {4}
|
||||
140 | 1 FPData.asm 137 | Data | 11 | | 2 | 00/605D : E7 60 | dw {ozunid_13}
|
||||
141 | 1 FPData.asm 138 | Comment | 11 | | 0 | 00/605F | ** Set Unidisk Registers **
|
||||
142 | 1 FPData.asm 139 | Comment | 11 | | 0 | 00/605F | ;First time execution
|
||||
143 | 1 FPData.asm 140 | Code | 11 | | 2 | 00/605F : A9 00 | lda #$00 ; Target the first time entry point
|
||||
144 | 1 FPData.asm 141 | Code | 11 | | 3 | 00/6061 : 8D F7 60 | sta LowPC_reg ; First time set init value of PC, just for the next execution
|
||||
145 | 1 FPData.asm 142 | Comment | 11 | | 0 | 00/6064 | * The program begin to PC preset to $0500 *
|
||||
146 | 1 FPData.asm 143 | Comment | 11 | | 0 | 00/6064 | *
|
||||
147 | 1 FPData.asm 144 | Comment | 11 | | 0 | 00/6064 | ** Execute **
|
||||
148 | 1 FPData.asm 145 | Code | 11 | | 3 | 00/6064 : 20 D2 60 | jsr {ozunid_9}
|
||||
149 | 1 FPData.asm 146 | Data | 11 | | 1 | 00/6067 : 04 | dfb {4}
|
||||
150 | 1 FPData.asm 147 | Data | 11 | | 2 | 00/6068 : EC 60 | dw {ozunid_14}
|
||||
151 | 1 FPData.asm 148 | Comment | 11 | | 0 | 00/606A | ** Read **
|
||||
152 | 1 FPData.asm 149 | Code | 11 | | 3 | 00/606A : 20 D2 60 | READ jsr {ozunid_9}
|
||||
153 | 1 FPData.asm 150 | Data | 11 | | 1 | 00/606D : 00 | dfb {0}
|
||||
154 | 1 FPData.asm 151 | Data | 11 | | 2 | 00/606E : D5 60 | dw {ozunid_10}
|
||||
155 | 1 FPData.asm 152 | Code | 11 | | 2 | 00/6070 : B0 9D | bcs {ozunid_1}
|
||||
156 | 1 FPData.asm 153 | Comment | 11 | | 0 | 00/6072 | *
|
||||
157 | 1 FPData.asm 154 | Comment | 11 | | 0 | 00/6072 | **** Store Output results in //c ****
|
||||
158 | 1 FPData.asm 155 | Empty | 11 | | 0 | 00/6072 |
|
||||
159 | 1 FPData.asm 156 | Comment | 11 | | 0 | 00/6072 | * First time execute *
|
||||
160 | 1 FPData.asm 157 | Code | 11 | | 3 | 00/6072 : AD DD 60 | lda UNIAcc_reg
|
||||
161 | 1 FPData.asm 158 | Code | 11 | | 3 | 00/6075 : 8D 00 70 | sta {$7000}
|
||||
162 | 1 FPData.asm 159 | Code | 11 | | 3 | 00/6078 : AD DE 60 | lda UNIX_reg
|
||||
163 | 1 FPData.asm 160 | Code | 11 | | 3 | 00/607B : 8D 01 70 | sta {$7000}+1 ; Store the result
|
||||
164 | 1 FPData.asm 161 | Code | 11 | | 3 | 00/607E : AD DF 60 | lda UNIY_reg
|
||||
165 | 1 FPData.asm 162 | Code | 11 | | 3 | 00/6081 : 8D 02 70 | sta {$7000}+2
|
||||
166 | 1 FPData.asm 163 | Empty | 11 | | 0 | 00/6084 |
|
||||
167 | 1 FPData.asm 164 | Comment | 11 | | 0 | 00/6084 | ** Second time execute **
|
||||
168 | 1 FPData.asm 165 | Code | 11 | | 2 | 00/6084 : A9 3C | lda #$3C ; Target the second time entry point
|
||||
169 | 1 FPData.asm 166 | Code | 11 | | 3 | 00/6086 : 8D F7 60 | sta LowPC_reg ; Second time set new value of PC
|
||||
170 | 1 FPData.asm 167 | Comment | 11 | | 0 | 00/6089 | ** Execute **
|
||||
171 | 1 FPData.asm 168 | Code | 11 | | 3 | 00/6089 : 20 D2 60 | jsr {ozunid_9}
|
||||
172 | 1 FPData.asm 169 | Data | 11 | | 1 | 00/608C : 04 | dfb {4}
|
||||
173 | 1 FPData.asm 170 | Data | 11 | | 2 | 00/608D : EC 60 | dw {ozunid_14}
|
||||
174 | 1 FPData.asm 171 | Comment | 11 | | 0 | 00/608F | ** Read **
|
||||
175 | 1 FPData.asm 172 | Code | 11 | | 3 | 00/608F : 20 D2 60 | jsr {ozunid_9}
|
||||
176 | 1 FPData.asm 173 | Data | 11 | | 1 | 00/6092 : 00 | dfb {0}
|
||||
177 | 1 FPData.asm 174 | Data | 11 | | 2 | 00/6093 : D5 60 | dw {ozunid_10}
|
||||
178 | 1 FPData.asm 175 | Comment | 11 | | 0 | 00/6095 | * bcs Error
|
||||
179 | 1 FPData.asm 176 | Empty | 11 | | 0 | 00/6095 |
|
||||
180 | 1 FPData.asm 177 | Comment | 11 | | 0 | 00/6095 | * Second time execute only to read the latest Byte of FP1*
|
||||
181 | 1 FPData.asm 178 | Code | 11 | | 3 | 00/6095 : AD DD 60 | lda UNIAcc_reg
|
||||
182 | 1 FPData.asm 179 | Code | 11 | | 3 | 00/6098 : 8D 03 70 | sta {$7000}+3
|
||||
183 | 1 FPData.asm 180 | Comment | 11 | | 0 | 00/609B | *
|
||||
184 | 1 FPData.asm 181 | Code | 11 | | 1 | 00/609B : 60 | PROGEND rts
|
||||
185 | 1 FPData.asm 182 | Data | 11 | | 1 | 00/609C : 00 | CHKSUM chk
|
||||
186 | 1 FPData.asm 183 | Comment | 11 | | 0 | 00/609D | ******************************************************
|
||||
187 | 1 FPData.asm 184 | Empty | 11 | | 0 | 00/609D | ozunid_4
|
||||
188 | 1 FPData.asm 184 | Equivalence | 11 | | 0 | 00/609D | FindPC equ ozunid_4
|
||||
189 | 1 FPData.asm 185 | Comment | 11 | | 0 | 00/609D | *
|
||||
190 | 1 FPData.asm 186 | Comment | 11 | | 0 | 00/609D | * Search slot 7 to slot 1 looking for signature bytes
|
||||
191 | 1 FPData.asm 187 | Comment | 11 | | 0 | 00/609D | *
|
||||
192 | 1 FPData.asm 188 | Code | 11 | | 2 | 00/609D : A2 07 | ldx #7 ;Do for seven slots
|
||||
193 | 1 FPData.asm 189 | Code | 11 | | 2 | 00/609F : A9 C7 | lda #$C7
|
||||
194 | 1 FPData.asm 190 | Code | 11 | | 2 | 00/60A1 : 85 07 | sta {$0007}
|
||||
195 | 1 FPData.asm 191 | Code | 11 | | 2 | 00/60A3 : A9 00 | lda #$00
|
||||
196 | 1 FPData.asm 192 | Code | 11 | | 2 | 00/60A5 : 85 06 | sta {$0006}
|
||||
197 | 1 FPData.asm 193 | Comment | 11 | | 0 | 00/60A7 | *
|
||||
198 | 1 FPData.asm 194 | Empty | 11 | | 0 | 00/60A7 | ozunid_5
|
||||
199 | 1 FPData.asm 194 | Equivalence | 11 | | 0 | 00/60A7 | newslot equ ozunid_5
|
||||
200 | 1 FPData.asm 195 | Code | 11 | | 2 | 00/60A7 : A0 07 | ldy #7
|
||||
201 | 1 FPData.asm 196 | Comment | 11 | | 0 | 00/60A9 | *
|
||||
202 | 1 FPData.asm 197 | Empty | 11 | | 0 | 00/60A9 | ozunid_6
|
||||
203 | 1 FPData.asm 197 | Equivalence | 11 | | 0 | 00/60A9 | again equ ozunid_6
|
||||
204 | 1 FPData.asm 198 | Code | 11 | | 2 | 00/60A9 : B1 06 | lda ({$0006}),y
|
||||
205 | 1 FPData.asm 199 | Code | 11 | | 3 | 00/60AB : D9 CA 60 | cmp sigtab,y ;One for byte signature
|
||||
206 | 1 FPData.asm 200 | Code | 11 | | 2 | 00/60AE : F0 07 | beq {ozunid_7} ;Found one signature byte
|
||||
207 | 1 FPData.asm 201 | Code | 11 | | 2 | 00/60B0 : C6 07 | dec {$0007}
|
||||
208 | 1 FPData.asm 202 | Code | 11 | | 1 | 00/60B2 : CA | dex
|
||||
209 | 1 FPData.asm 203 | Code | 11 | | 2 | 00/60B3 : D0 F2 | bne {ozunid_5}
|
||||
210 | 1 FPData.asm 204 | Comment | 11 | | 0 | 00/60B5 | *
|
||||
211 | 1 FPData.asm 205 | Comment | 11 | | 0 | 00/60B5 | * if we get here, no PC find
|
||||
212 | 1 FPData.asm 206 | Code | 11 | | 1 | 00/60B5 : 38 | sec
|
||||
213 | 1 FPData.asm 207 | Code | 11 | | 1 | 00/60B6 : 60 | rts
|
||||
214 | 1 FPData.asm 208 | Comment | 11 | | 0 | 00/60B7 | *
|
||||
215 | 1 FPData.asm 209 | Comment | 11 | | 0 | 00/60B7 | * if we get here, no byte find on PC
|
||||
216 | 1 FPData.asm 210 | Empty | 11 | | 0 | 00/60B7 | ozunid_7
|
||||
217 | 1 FPData.asm 210 | Equivalence | 11 | | 0 | 00/60B7 | maybe equ ozunid_7
|
||||
218 | 1 FPData.asm 211 | Code | 11 | | 1 | 00/60B7 : 88 | dey
|
||||
219 | 1 FPData.asm 212 | Code | 11 | | 1 | 00/60B8 : 88 | dey ;if N=1 then all sig bytes OK
|
||||
220 | 1 FPData.asm 213 | Code | 11 | | 2 | 00/60B9 : 10 EE | bpl {ozunid_6}
|
||||
221 | 1 FPData.asm 214 | Comment | 11 | | 0 | 00/60BB | * Found PC interface. Set up call address.
|
||||
222 | 1 FPData.asm 215 | Comment | 11 | | 0 | 00/60BB | * we already have high byte ($CN), we need low byte
|
||||
223 | 1 FPData.asm 216 | Comment | 11 | | 0 | 00/60BB | *
|
||||
224 | 1 FPData.asm 217 | Empty | 11 | | 0 | 00/60BB | ozunid_8
|
||||
225 | 1 FPData.asm 217 | Equivalence | 11 | | 0 | 00/60BB | foundPC equ ozunid_8
|
||||
226 | 1 FPData.asm 218 | Code | 11 | | 2 | 00/60BB : A9 FF | lda #$FF
|
||||
227 | 1 FPData.asm 219 | Code | 11 | | 2 | 00/60BD : 85 06 | sta {$0006}
|
||||
228 | 1 FPData.asm 220 | Code | 11 | | 2 | 00/60BF : A0 00 | ldy #0 ;For indirect load
|
||||
229 | 1 FPData.asm 221 | Code | 11 | | 2 | 00/60C1 : B1 06 | lda ({$0006}),y ;Get the byte
|
||||
230 | 1 FPData.asm 222 | Comment | 11 | | 0 | 00/60C3 | *
|
||||
231 | 1 FPData.asm 223 | Comment | 11 | | 0 | 00/60C3 | * Now the Acc has the low oreder ProDOS entry point.
|
||||
232 | 1 FPData.asm 224 | Comment | 11 | | 0 | 00/60C3 | * The PC entry is three locations past this ...
|
||||
233 | 1 FPData.asm 225 | Comment | 11 | | 0 | 00/60C3 | *
|
||||
234 | 1 FPData.asm 226 | Code | 11 | | 1 | 00/60C3 : 18 | clc
|
||||
235 | 1 FPData.asm 227 | Code | 11 | | 2 | 00/60C4 : 69 03 | adc #3
|
||||
236 | 1 FPData.asm 228 | Code | 11 | | 2 | 00/60C6 : 85 06 | sta {$0006}
|
||||
237 | 1 FPData.asm 229 | Comment | 11 | | 0 | 00/60C8 | *
|
||||
238 | 1 FPData.asm 230 | Comment | 11 | | 0 | 00/60C8 | * Now ZPTempL has PC entry point.
|
||||
239 | 1 FPData.asm 231 | Comment | 11 | | 0 | 00/60C8 | * Return with carry clear.
|
||||
240 | 1 FPData.asm 232 | Comment | 11 | | 0 | 00/60C8 | *
|
||||
241 | 1 FPData.asm 233 | Code | 11 | | 1 | 00/60C8 : 18 | clc
|
||||
242 | 1 FPData.asm 234 | Code | 11 | | 1 | 00/60C9 : 60 | rts
|
||||
243 | 1 FPData.asm 235 | Comment | 11 | | 0 | 00/60CA | ***********************************************************
|
||||
244 | 1 FPData.asm 236 | Comment | 11 | | 0 | 00/60CA | *
|
||||
245 | 1 FPData.asm 237 | Comment | 11 | | 0 | 00/60CA | * There are the PC signature bytes in their relative order.
|
||||
246 | 1 FPData.asm 238 | Comment | 11 | | 0 | 00/60CA | * The $FF bytes are filler bytes and are not compared.
|
||||
247 | 1 FPData.asm 239 | Comment | 11 | | 0 | 00/60CA | *
|
||||
248 | 1 FPData.asm 240 | Data | 11 | | 4 | 00/60CA : FF 20 FF 00 | sigtab dfb $FF,$20,$FF,$00
|
||||
249 | 1 FPData.asm 241 | Data | 11 | | 4 | 00/60CE : FF 03 FF 00 | dfb $FF,$03,$FF,$00
|
||||
250 | 1 FPData.asm 242 | Comment | 11 | | 0 | 00/60D2 | *
|
||||
251 | 1 FPData.asm 243 | Empty | 11 | | 0 | 00/60D2 | ozunid_9
|
||||
252 | 1 FPData.asm 243 | Equivalence | 11 | | 0 | 00/60D2 | Dispatch equ ozunid_9
|
||||
253 | 1 FPData.asm 244 | Code | 11 | | 3 | 00/60D2 : 6C 06 00 | jmp ({$0006}) ;Simulate an indirect JSR to PC
|
||||
254 | 1 FPData.asm 245 | Comment | 11 | | 0 | 00/60D5 | *
|
||||
255 | 1 FPData.asm 246 | Comment | 11 | | 0 | 00/60D5 | *** Status Parameter Set for UNI ***
|
||||
256 | 1 FPData.asm 247 | Empty | 11 | | 0 | 00/60D5 | ozunid_10
|
||||
257 | 1 FPData.asm 247 | Equivalence | 11 | | 0 | 00/60D5 | DParms equ ozunid_10
|
||||
258 | 1 FPData.asm 248 | Data | 11 | | 1 | 00/60D5 : 03 | DPParmsCt dfb 3 ;Status calls have three parameters
|
||||
259 | 1 FPData.asm 249 | Data | 11 | | 1 | 00/60D6 : 01 | DPUnit dfb 1
|
||||
260 | 1 FPData.asm 250 | Data | 11 | | 2 | 00/60D7 : DA 60 | DPBuffer dw {ozunid_11}
|
||||
261 | 1 FPData.asm 251 | Data | 11 | | 1 | 00/60D9 : 05 | DPStatCode dfb {5}
|
||||
262 | 1 FPData.asm 252 | Comment | 11 | | 0 | 00/60DA | *
|
||||
263 | 1 FPData.asm 253 | Comment | 11 | | 0 | 00/60DA | *
|
||||
264 | 1 FPData.asm 254 | Comment | 11 | | 0 | 00/60DA | *
|
||||
265 | 1 FPData.asm 255 | Comment | 11 | | 0 | 00/60DA | *** Status List UNI ***
|
||||
266 | 1 FPData.asm 256 | Empty | 11 | | 0 | 00/60DA | ozunid_11
|
||||
267 | 1 FPData.asm 256 | Equivalence | 11 | | 0 | 00/60DA | UNI equ ozunid_11
|
||||
268 | 1 FPData.asm 257 | Data | 11 | | 1 | 00/60DA : 00 | dfb 0
|
||||
269 | 1 FPData.asm 258 | Data | 11 | | 1 | 00/60DB : 00 | UNIError dfb 0
|
||||
270 | 1 FPData.asm 259 | Data | 11 | | 1 | 00/60DC : 00 | UNIRetries dfb 0
|
||||
271 | 1 FPData.asm 260 | Data | 11 | | 1 | 00/60DD : 00 | UNIAcc_reg dfb 0
|
||||
272 | 1 FPData.asm 261 | Data | 11 | | 1 | 00/60DE : 00 | UNIX_reg dfb 0
|
||||
273 | 1 FPData.asm 262 | Data | 11 | | 1 | 00/60DF : 00 | UNIY_reg dfb 0
|
||||
274 | 1 FPData.asm 263 | Data | 11 | | 1 | 00/60E0 : 00 | UNIP_val dfb 0
|
||||
275 | 1 FPData.asm 264 | Data | 11 | | 1 | 00/60E1 : 00 | HHH dfb 0
|
||||
276 | 1 FPData.asm 265 | Comment | 11 | | 0 | 00/60E2 | *
|
||||
277 | 1 FPData.asm 266 | Comment | 11 | | 0 | 00/60E2 | *** Set Address ***
|
||||
278 | 1 FPData.asm 267 | Empty | 11 | | 0 | 00/60E2 | ozunid_12
|
||||
279 | 1 FPData.asm 267 | Equivalence | 11 | | 0 | 00/60E2 | SET_ADD equ ozunid_12
|
||||
280 | 1 FPData.asm 268 | Data | 11 | | 1 | 00/60E2 : 03 | dfb 3
|
||||
281 | 1 FPData.asm 269 | Data | 11 | | 1 | 00/60E3 : 01 | dfb 1
|
||||
282 | 1 FPData.asm 270 | Data | 11 | | 2 | 00/60E4 : F9 60 | dw {ozunid_16}
|
||||
283 | 1 FPData.asm 271 | Data | 11 | | 1 | 00/60E6 : 06 | dfb {6}
|
||||
284 | 1 FPData.asm 272 | Comment | 11 | | 0 | 00/60E7 | *
|
||||
285 | 1 FPData.asm 273 | Comment | 11 | | 0 | 00/60E7 | *** Download ***
|
||||
286 | 1 FPData.asm 274 | Empty | 11 | | 0 | 00/60E7 | ozunid_13
|
||||
287 | 1 FPData.asm 274 | Equivalence | 11 | | 0 | 00/60E7 | DOWNLOAD equ ozunid_13
|
||||
288 | 1 FPData.asm 275 | Data | 11 | | 1 | 00/60E7 : 03 | dfb 3
|
||||
289 | 1 FPData.asm 276 | Data | 11 | | 1 | 00/60E8 : 01 | dfb 1
|
||||
290 | 1 FPData.asm 277 | Data | 11 | | 2 | 00/60E9 : FD 60 | dw {ozunid_17}
|
||||
291 | 1 FPData.asm 278 | Data | 11 | | 1 | 00/60EB : 07 | dfb {7}
|
||||
292 | 1 FPData.asm 279 | Comment | 11 | | 0 | 00/60EC | *
|
||||
293 | 1 FPData.asm 280 | Comment | 11 | | 0 | 00/60EC | *** Execute ***
|
||||
294 | 1 FPData.asm 281 | Empty | 11 | | 0 | 00/60EC | ozunid_14
|
||||
295 | 1 FPData.asm 281 | Equivalence | 11 | | 0 | 00/60EC | EXE equ ozunid_14
|
||||
296 | 1 FPData.asm 282 | Data | 11 | | 1 | 00/60EC : 03 | dfb 3
|
||||
297 | 1 FPData.asm 283 | Data | 11 | | 1 | 00/60ED : 01 | dfb 1
|
||||
298 | 1 FPData.asm 284 | Data | 11 | | 2 | 00/60EE : F1 60 | dw {ozunid_15}
|
||||
299 | 1 FPData.asm 285 | Data | 11 | | 1 | 00/60F0 : 05 | dfb {5}
|
||||
300 | 1 FPData.asm 286 | Comment | 11 | | 0 | 00/60F1 | *
|
||||
301 | 1 FPData.asm 287 | Comment | 11 | | 0 | 00/60F1 | ******** CONTROL LISTS ********
|
||||
302 | 1 FPData.asm 288 | Comment | 11 | | 0 | 00/60F1 | *
|
||||
303 | 1 FPData.asm 289 | Comment | 11 | | 0 | 00/60F1 | *
|
||||
304 | 1 FPData.asm 290 | Comment | 11 | | 0 | 00/60F1 | *** Execute ***
|
||||
305 | 1 FPData.asm 291 | Empty | 11 | | 0 | 00/60F1 | ozunid_15
|
||||
306 | 1 FPData.asm 291 | Equivalence | 11 | | 0 | 00/60F1 | CNTL_LIST2 equ ozunid_15
|
||||
307 | 1 FPData.asm 292 | Data | 11 | | 1 | 00/60F1 : 06 | Clow_byte dfb $06
|
||||
308 | 1 FPData.asm 293 | Data | 11 | | 1 | 00/60F2 : 00 | Chigh_byte dfb $00
|
||||
309 | 1 FPData.asm 294 | Data | 11 | | 1 | 00/60F3 : 00 | AccValue dfb $00 ; Init Value Unidisk Accumulator Register
|
||||
310 | 1 FPData.asm 295 | Data | 11 | | 1 | 00/60F4 : 00 | X_reg dfb $00 ; Init Value Unidisk X Register
|
||||
311 | 1 FPData.asm 296 | Data | 11 | | 1 | 00/60F5 : 00 | Y_reg dfb $00 ; Init Value Unidisk Y Register
|
||||
312 | 1 FPData.asm 297 | Data | 11 | | 1 | 00/60F6 : 00 | ProStatus dfb $00 ; Init Value Unidisk Status Register
|
||||
313 | 1 FPData.asm 298 | Data | 11 | | 1 | 00/60F7 : 00 | LowPC_reg dfb $00 ; Init Value Unidisk Program Counter $0500 at eny dowload
|
||||
314 | 1 FPData.asm 299 | Data | 11 | | 1 | 00/60F8 : 05 | HighPC_reg dfb $05 ; $05 first execution, $3C second execution
|
||||
315 | 1 FPData.asm 300 | Comment | 11 | | 0 | 00/60F9 | *
|
||||
316 | 1 FPData.asm 301 | Comment | 11 | | 0 | 00/60F9 | *** Set Address ***
|
||||
317 | 1 FPData.asm 302 | Empty | 11 | | 0 | 00/60F9 | ozunid_16
|
||||
318 | 1 FPData.asm 302 | Equivalence | 11 | | 0 | 00/60F9 | CNTL_LIST3 equ ozunid_16
|
||||
319 | 1 FPData.asm 303 | Data | 11 | | 1 | 00/60F9 : 02 | CountL_byte dfb $02
|
||||
320 | 1 FPData.asm 304 | Data | 11 | | 1 | 00/60FA : 00 | CountH_byte dfb $00
|
||||
321 | 1 FPData.asm 305 | Data | 11 | | 1 | 00/60FB : 2D | LByte_Addr dfb $2D ; ORG of Unidisk program, set begin data address $062D
|
||||
322 | 1 FPData.asm 306 | Data | 11 | | 1 | 00/60FC : 06 | HByte_Addr dfb $06
|
||||
323 | 1 FPData.asm 307 | Comment | 11 | | 0 | 00/60FD | *
|
||||
324 | 1 FPData.asm 308 | Comment | 11 | | 0 | 00/60FD | *** Download ***
|
||||
325 | 1 FPData.asm 309 | Empty | 11 | | 0 | 00/60FD | ozunid_17
|
||||
326 | 1 FPData.asm 309 | Equivalence | 11 | | 0 | 00/60FD | CNTL_LIST4 equ ozunid_17
|
||||
327 | 1 FPData.asm 310 | Data | 11 | | 1 | 00/60FD : 08 | LenghtL_byte dfb $08 ;<----- Lenght of Unidisk program Lo - Byte 312 byte
|
||||
328 | 1 FPData.asm 311 | Data | 11 | | 1 | 00/60FE : 00 | LenghtH_byte dfb $00 ;<----- Lenght of Unidisk program Hi Byte
|
||||
329 | 1 FPData.asm 312 | Comment | 11 | | 0 | 00/60FF | *
|
||||
330 | 1 FPData.asm 313 | Comment | 11 | | 0 | 00/60FF | **************** Start UNIDISK Program ****************
|
||||
331 | 1 FPData.asm 314 | Comment | 11 | | 0 | 00/60FF | *
|
||||
332 | 1 FPData.asm 315 | Empty | 11 | | 0 | 00/60FF |
|
||||
333 | 1 FPData.asm 316 | Comment | 11 | | 0 | 00/60FF | ** Input Dynamic Data append in the end of Unidisk routine **
|
||||
334 | 1 FPData.asm 317 | Data | 11 | | 1 | 00/60FF : 00 | FP1 dfb $00
|
||||
335 | 1 FPData.asm 318 | Data | 11 | | 1 | 00/6100 : 00 | dfb $00
|
||||
336 | 1 FPData.asm 319 | Data | 11 | | 1 | 00/6101 : 00 | dfb $00
|
||||
337 | 1 FPData.asm 320 | Data | 11 | | 1 | 00/6102 : 00 | dfb $00
|
||||
338 | 1 FPData.asm 321 | Comment | 11 | | 0 | 00/6103 | *
|
||||
339 | 1 FPData.asm 322 | Data | 11 | | 1 | 00/6103 : 00 | FP2 dfb $00
|
||||
340 | 1 FPData.asm 323 | Data | 11 | | 1 | 00/6104 : 00 | dfb $00
|
||||
341 | 1 FPData.asm 324 | Data | 11 | | 1 | 00/6105 : 00 | dfb $00
|
||||
342 | 1 FPData.asm 325 | Data | 11 | | 1 | 00/6106 : 00 | dfb $00
|
||||
343 | 1 FPData.asm 326 | Comment | 11 | | 0 | 00/6107 | **************** End UNIDISK Program ****************
|
||||
------+----------------------+-------------+----+---------+------+-----------------------+-------------------------------------------------------------------
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -1,11 +1,11 @@
|
|||
2 PRINT CHR$ (4);"BLOAD FPMain"
|
||||
5 PRINT CHR$ (4);"BLOAD FPConv"
|
||||
15 CALL 24576
|
||||
17 PRINT CHR$ (4);"BLOAD FPData"
|
||||
18 HGR2 : HCOLOR= 3
|
||||
20 FOR X = - 10 TO 10 STEP .2
|
||||
25 CALL 32768,X
|
||||
30 CALL 24576
|
||||
35 CALL 32831,Y
|
||||
40 HPLOT X * 5 + 140,Y + 10
|
||||
2 PRINT CHR$ (4);"BLOAD FPMain"
|
||||
5 PRINT CHR$ (4);"BLOAD FPConv"
|
||||
15 CALL 24576
|
||||
17 PRINT CHR$ (4);"BLOAD FPData"
|
||||
18 HGR2 : HCOLOR= 3
|
||||
20 FOR X = - 10 TO 10 STEP .2
|
||||
25 CALL 32768,X
|
||||
30 CALL 24576
|
||||
35 CALL 32831,Y
|
||||
40 HPLOT X * 5 + 140,Y + 10
|
||||
50 NEXT
|
|
@ -1,3 +1,3 @@
|
|||
FPData=Type(00),AuxType(0000),VersionCreate(70),MinVersion(BE),Access(E3),FolderInfo1(000000000000000000000000000000000000),FolderInfo2(000000000000000000000000000000000000)
|
||||
FPConv=Type(00),AuxType(0000),VersionCreate(70),MinVersion(BE),Access(E3),FolderInfo1(000000000000000000000000000000000000),FolderInfo2(000000000000000000000000000000000000)
|
||||
FPMain=Type(00),AuxType(0000),VersionCreate(70),MinVersion(BE),Access(E3),FolderInfo1(000000000000000000000000000000000000),FolderInfo2(000000000000000000000000000000000000)
|
||||
FPData=Type(00),AuxType(0000),VersionCreate(70),MinVersion(BE),Access(E3),FolderInfo1(000000000000000000000000000000000000),FolderInfo2(000000000000000000000000000000000000)
|
||||
FPConv=Type(00),AuxType(0000),VersionCreate(70),MinVersion(BE),Access(E3),FolderInfo1(000000000000000000000000000000000000),FolderInfo2(000000000000000000000000000000000000)
|
||||
FPMain=Type(00),AuxType(0000),VersionCreate(70),MinVersion(BE),Access(E3),FolderInfo1(000000000000000000000000000000000000),FolderInfo2(000000000000000000000000000000000000)
|
|
@ -1,10 +1,10 @@
|
|||
2 PRINT CHR$ (4);"BLOAD FPMain"
|
||||
5 PRINT CHR$ (4);"BLOAD FPConv"
|
||||
27 CALL 24576
|
||||
50 PRINT CHR$ (4);"BLOAD FPData"
|
||||
55 INPUT "N1 ? ";X
|
||||
60 CALL 32768,X
|
||||
65 CALL 24576
|
||||
70 CALL 32831,Y
|
||||
80 PRINT Y
|
||||
2 PRINT CHR$ (4);"BLOAD FPMain"
|
||||
5 PRINT CHR$ (4);"BLOAD FPConv"
|
||||
27 CALL 24576
|
||||
50 PRINT CHR$ (4);"BLOAD FPData"
|
||||
55 INPUT "N1 ? ";X
|
||||
60 CALL 32768,X
|
||||
65 CALL 24576
|
||||
70 CALL 32831,Y
|
||||
80 PRINT Y
|
||||
90 GOTO 55
|
16
AppleII/FP-operations/PARABOLA.bas
Normal file
16
AppleII/FP-operations/PARABOLA.bas
Normal file
|
@ -0,0 +1,16 @@
|
|||
5 HOME
|
||||
8 PRINT CHR$ (4);"BLOAD UNIDRIVE4P"
|
||||
10 PRINT CHR$ (4);"BLOAD CONV3P"
|
||||
12 X = 1
|
||||
15 CALL 32768,X
|
||||
20 CALL 24576
|
||||
25 PRINT CHR$ (4);"BLOAD UNIDRIVE4P2"
|
||||
30 HGR2 : HCOLOR= 3
|
||||
40 FOR X = - 10 TO 10 STEP .2
|
||||
45 CALL 32768,X
|
||||
50 CALL 24576
|
||||
55 CALL 32831,Y
|
||||
60 HPLOT X * 5 + 140,Y + 10
|
||||
65 NEXT
|
||||
70 GET A$
|
||||
75 TEXT
|
19
AppleII/FP-operations/SQUAREN.bas
Normal file
19
AppleII/FP-operations/SQUAREN.bas
Normal file
|
@ -0,0 +1,19 @@
|
|||
5 HOME
|
||||
10 PRINT CHR$ (4);"BLOAD UNIDRIVE4P"
|
||||
12 PRINT CHR$ (4);"BLOAD CONV3P"
|
||||
13 PRINT "FLOATING POINT SQUARE N"
|
||||
14 PRINT
|
||||
15 INPUT "TYPE REAL NUMBER TO SQUARE --> ";X
|
||||
20 CALL 32768,X
|
||||
27 CALL 24576
|
||||
30 CALL 32831,Y
|
||||
40 PRINT Y
|
||||
45 PRINT
|
||||
50 PRINT CHR$ (4);"BLOAD UNIDRIVE4P2"
|
||||
55 INPUT "N1 ? ";X
|
||||
60 CALL 32768,X
|
||||
65 CALL 24576
|
||||
70 CALL 32831,Y
|
||||
80 PRINT Y
|
||||
85 PRINT
|
||||
90 GOTO 55
|
|
@ -1,5 +1,5 @@
|
|||
10 HOME
|
||||
20 PRINT CHR$ (4);"BLOAD UNIDRIVE"
|
||||
20 PRINT CHR$ (4);"BLOAD UNICALC"
|
||||
25 INPUT "N1,N2? ";N1,N2
|
||||
30 POKE 10,N1
|
||||
35 POKE 11,N2
|
|
@ -1,9 +1,13 @@
|
|||
10 HOME
|
||||
20 PRINT CHR$ (4);"BLOAD UNIDRIVE2"
|
||||
22 PRINT "TWO BYTE SUM OF 2 INTEGER NUMBER N1+N2"
|
||||
23 PRINT
|
||||
25 INPUT "N1,N2? ";N1,N2
|
||||
30 POKE 25,(N1 - INT (N1 / 256) * 256)
|
||||
32 POKE 26, INT (N1 / 256)
|
||||
35 POKE 27,(N2 - INT (N2 / 256) * 256)
|
||||
37 POKE 28, INT (N2 / 256)
|
||||
40 CALL 32768
|
||||
50 PRINT : PRINT "RESULT IS "; PEEK (29) + 256 * PEEK (30)
|
||||
50 PRINT : PRINT "RESULT IS "; PEEK (29) + 256 * PEEK (30)
|
||||
55 PRINT
|
||||
60 GOTO 25
|
|
@ -23,8 +23,8 @@
|
|||
ZPTempL equ $0006 ;Temporary zero page storage
|
||||
ZPTempH equ $0007
|
||||
*** Pointers ***
|
||||
LowMain equ $000A
|
||||
HiMain equ $000B
|
||||
LowMain equ $000A ; Pointer to low byte of main memory address
|
||||
HiMain equ $000B ; Pointer to high byte of main memory address
|
||||
*** Monitor routines ***
|
||||
COut equ $FDED ;Console output ASCII
|
||||
COUT1 equ $FDF0 ;Output to screen
|
||||
|
@ -40,14 +40,14 @@ StatusUNI equ 5
|
|||
*
|
||||
ControlCmd equ 4
|
||||
** Control Codes **
|
||||
Eject equ 4
|
||||
Run equ 5
|
||||
SetDWLoad equ 6
|
||||
DWLoad equ 7
|
||||
Eject equ 4 ;Control code for ejecting disk
|
||||
Run equ 5 ;Control code for running program on Unidisk
|
||||
SetDWLoad equ 6 ;Control code for setting download address on Unidisk
|
||||
DWLoad equ 7 ;Control code for downloading data to Unidisk
|
||||
*
|
||||
org $8000
|
||||
*****************************************************
|
||||
* Presentation message **************
|
||||
* Presentation message loop to display message on screen using COut routine **************
|
||||
*
|
||||
ldx #0
|
||||
LOOP equ *
|
|
@ -1,7 +0,0 @@
|
|||
10 HOME
|
||||
20 PRINT CHR$ (4);"BLOAD UNIDRIVE3"
|
||||
25 INPUT "N ";N1
|
||||
30 POKE 25,(N1 - INT (N1 / 256) * 256)
|
||||
32 POKE 26, INT (N1 / 256)
|
||||
40 CALL 32768
|
||||
50 PRINT : PRINT "RESULT IS "; PEEK (29) + 256 * PEEK (30)
|
11
AppleII/N-integer-adc-2-Byte/SUM1N.bas
Normal file
11
AppleII/N-integer-adc-2-Byte/SUM1N.bas
Normal file
|
@ -0,0 +1,11 @@
|
|||
10 HOME
|
||||
20 PRINT CHR$ (4);"BLOAD UNIDRIVE3"
|
||||
22 PRINT "TWO BYTE SUM OF FIRST N INTEGER NUMBER 1+2+3+...+(N-1)+N"
|
||||
23 PRINT
|
||||
25 INPUT "TYPE INTEGER NUMBER N --> ";N1
|
||||
30 POKE 25,(N1 - INT (N1 / 256) * 256)
|
||||
32 POKE 26, INT (N1 / 256)
|
||||
40 CALL 32768
|
||||
50 PRINT : PRINT "RESULT IS "; PEEK (29) + 256 * PEEK (30)
|
||||
55 PRINT
|
||||
60 GOTO 25
|
Binary file not shown.
BIN
Images/UniDisk.png
Normal file
BIN
Images/UniDisk.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 402 KiB |
49
README.md
49
README.md
|
@ -1,15 +1,56 @@
|
|||
# Apple II UniDisk 3.5 drive project
|
||||
|
||||
The project is based on the knowing of internal structure of UniDisk 3.5 drive, it use same HW of Apple II machines. It's a smart device built by controlled drive board powered by 65c02 mp @2.0 Hz with 2KB RAM and 8KB ROM plus 527 byte of I/O peripheral registers, all addressing by memory mapped method. The UniDisk 3.5 drives can use directly by Apple //c with 3.5 ROM (ROM version 0) or by Apple IIe or an II Plus using special interface controller card aka "LIRON card". The Protocol Converter is a set of assembly-lenguage routines built in 3.5 ROM or in Liron controller used to support smart external I/O devices (aka SmartPort), like UniDisk 3.5. The target of project is allow to use UniDisk 3.5 drive resource to process data in-line or off-line the Apple II like a "co-processor". The project evolved steps by steps:
|
||||
The project is based on the knowledge of internal structure of UniDisk 3.5 drive, it uses same HW of Apple II machines. It is a smart device built by controlled drive board powered by
|
||||
|
||||
>65c02 mp @2.0 MHz (model GTEu G65SC02P-2 CMOS 8bit 2MHz PDIP40) with 2KB StaticRAM (model HITACHI HM6116LP-2 CMOS 8bit 120ns PDIP24) and 8KB ROM (model A2M2053-V1.0 TC5365P-8718 250ns PDIP28) plus 527 byte of Gate array I/O peripheral locations plus 15 byte of IWM registers in IWM Floppy Disk Controller PROM (model VLI VF4060-001 344-0041-B IWM PDIP28), all addressing by memory mapped method.
|
||||
|
||||
The UniDisk 3.5 drives can used directly by Apple //c with 3.5 ROM (ROM version 0) or by Apple IIe or an II Plus using special interface controller card aka "LIRON card".
|
||||
|
||||
>(C) 1985 Apple Computer, Inc.
|
||||
>
|
||||
>The firmware was written by Michael Askins.
|
||||
>
|
||||
>The Liron design team was:
|
||||
>* Josef Friedman, manager
|
||||
>* Cheng Lin, hardware
|
||||
>* Michael Askins, software
|
||||
>* Cecilia Arboleya, tech support
|
||||
>* Cameron Birse, tech support
|
||||
|
||||
|
||||
*The Protocol Converter (PC)* is a set of assembly-language routines built in 3.5 ROM or in Liron controller used to support smart external I/O devices (aka SmartPort), like UniDisk 3.5.
|
||||
|
||||
*The Protocol Converter Bus (CBus)* consists of hardware and software components that permit and control communications between the Apple II and intelligent I/O devices (s. a. UniDisk 3.5's) connected o its external disk port.
|
||||
|
||||
- The software part of the Protocol Converter Bus includes Protocol Converter and the CBus communication protocol;
|
||||
- The hardware component of the CBus is a daisy chain made up of the following:
|
||||
* The Apple II disk port
|
||||
* One or more Intelligent I/O devices (UniDisk drive)
|
||||
* One Disk II (optional). If included, the Disk II must be the terminal member of the daisy chain and remains dormant when a bus resident is addressed.
|
||||
|
||||
The target of project allows to use UniDisk 3.5 drive resource to process data in-line or off-line on the Apple II like a "co-processor".
|
||||
|
||||
The project evolved steps by steps:
|
||||
|
||||
1) Simply command and read information of UniDisk (DIB Device Information Block) using Protocol Converter STATUS Call;
|
||||
|
||||
2) Using Protocol Converter CONTROL Call to simply Eject disk;
|
||||
|
||||
3) Using Protocol Converter CONTROL Call (Set Dowload, Download, Run) to Download and Run a special 65c02 subroutine, and using STATUS Call to read the informations. This complex sistem allow to Dumping all UniDisk memory;
|
||||
|
||||
4) Use the seme mechanism of step (3) to download a simply routine to making integer operation at one or two Byte and read the relative results;
|
||||
5) Due to UniDisk, less the I/O Disk routine in its ROM, is a bare metal, i decide to implement the Floating Point routine by using WOZ original routine, but I was need to write the converter program from WOZ routine to Applesoft routine. This allow me to execute FP operations;
|
||||
|
||||
5) Due to UniDisk, less the I/O Disk routine in its ROM, is a bare metal, I decide to implement the Floating Point routine by using WOZ original routine, but I was need to write the converter program from WOZ routine to Applesoft routine. This allow me to execute FP operations;
|
||||
|
||||
6) Use the UniDisk FP operations to execute Graphics calculations.
|
||||
|
||||
This project required a great deal of effort due to use only the real Apple IIc machine to coding in 'Merlin' Assembler and 'Applesoft' Basic, because no Apple II simulator is able to emulate UniDisk Drive, at now.
|
||||
This project required a great deal of effort due to use only the real Apple IIc machine to coding in 'Merlin' Assembler and 'Applesoft' Basic and then execute the code, because no Apple II simulator is able to emulate UniDisk 3.5 Drive, at now.
|
||||
|
||||
This project allow this target:
|
||||
The PC/MAC next to the Apple II machine, connected by serial port, allows you to use different special software to compile, manage disks image and then send to Apple II. A custom all-in-one modern IDE also can be creating to automate all this process.
|
||||
|
||||
This project allows this target:
|
||||
* Scan, identify, command and dump memory of UniDisk 3.5
|
||||
* Allow to use UniDisk 3.5 like an Apple II "co-processor"
|
||||
|
||||
|
||||
![UniDisk](/Images/UniDisk.png)
|
||||
|
|
2
src/README.md
Normal file
2
src/README.md
Normal file
|
@ -0,0 +1,2 @@
|
|||
1) This is the forlders for test
|
||||
2) Keep the same name as the test files
|
8
src/TESTBAS
Normal file
8
src/TESTBAS
Normal file
|
@ -0,0 +1,8 @@
|
|||
10 HOME
|
||||
15 PRINT "1 BYTE ADC OPERATIONS - exec TESTBAS.TXT then save it"
|
||||
20 PRINT CHR$ (4);"BLOAD TESTBIN"
|
||||
25 INPUT "N1,N2? ";N1,N2
|
||||
30 POKE 10,N1
|
||||
35 POKE 11,N2
|
||||
40 CALL 32768
|
||||
50 PRINT : PRINT "RESULT IS "; PEEK (12)
|
392
src/TESTBIN.s
Normal file
392
src/TESTBIN.s
Normal file
|
@ -0,0 +1,392 @@
|
|||
* Actions test 2 10/4
|
||||
* Unidisk 3.5 Calc <beta>
|
||||
*
|
||||
* The target of this project is to use the Unidisk 3.5 drive to perform
|
||||
* specific numerical routines: 1 Byte Add integer numbers calculation;
|
||||
* in order to use it as a Apple II co-processor unit.
|
||||
*
|
||||
* Copyright (C) 2015 Riccardo Greco <rigreco.grc@gmail.com>.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*
|
||||
* @com.wudsn.ide.asm.hardware=APPLE2
|
||||
* Protocol Converter Call
|
||||
XC
|
||||
ZPTempL equ $0006 ;Temporary zero page storage
|
||||
ZPTempH equ $0007
|
||||
*** Pointers ***
|
||||
LowMain equ $000A
|
||||
HiMain equ $000B
|
||||
*** Monitor routines ***
|
||||
COut equ $FDED ;Console output ASCII
|
||||
COUT1 equ $FDF0 ;Output to screen
|
||||
CROut equ $FD8E ;Carriage return
|
||||
PRbyte equ $FDDA ;Print byte in hex
|
||||
PRBL2 equ $F94A ;Print many spaces
|
||||
KEYIN equ $FD1B ;Waits for keypress
|
||||
** Command Code **
|
||||
StatusCmd equ 0
|
||||
** Status Code **
|
||||
StatusDIB equ 3
|
||||
StatusUNI equ 5
|
||||
*
|
||||
ControlCmd equ 4
|
||||
** Control Codes **
|
||||
Eject equ 4
|
||||
Run equ 5
|
||||
SetDWLoad equ 6
|
||||
DWLoad equ 7
|
||||
*
|
||||
org $8000
|
||||
*****************************************************
|
||||
* Presentation message **************
|
||||
*
|
||||
ldx #0
|
||||
LOOP equ *
|
||||
lda DATA,x
|
||||
beq ME2
|
||||
jsr COut
|
||||
inx
|
||||
bne LOOP
|
||||
*
|
||||
DATA asc 'UNIDISK 3.5 UTILITY BY R. GRECO'
|
||||
dfb $8D,0 ; Inverse mode on
|
||||
|
||||
ME2 jsr CROut
|
||||
jsr CROut
|
||||
|
||||
ldx #0
|
||||
LOOP2 equ *
|
||||
lda DATA2,x
|
||||
beq START
|
||||
ora #$80
|
||||
jsr COut
|
||||
inx
|
||||
bne LOOP2
|
||||
*
|
||||
DATA2 asc 'A X Y P'
|
||||
dfb $8D,0 ; Inverse mode on
|
||||
*****************************************************
|
||||
*
|
||||
* Find a Protocol Converter in one of the slots.
|
||||
START jsr FindPC
|
||||
bcs Error
|
||||
*
|
||||
* Now make the DIB call to the first guy
|
||||
*
|
||||
* jsr Dispatch
|
||||
* dfb StatusCmd
|
||||
* dw DParmsDIB
|
||||
* bcs Error
|
||||
*
|
||||
* Got the DIB; now print the name string
|
||||
*
|
||||
* ldx #0
|
||||
* morechars equ *
|
||||
* lda DIBName,x
|
||||
* ora #$80 ;COut wants high Bit set
|
||||
* jsr COut ; ASCII
|
||||
* inx
|
||||
* cpx DIBNameLen
|
||||
* bne morechars
|
||||
*************************************
|
||||
* ldx #02 ; Set 2 space
|
||||
* jsr PRBL2
|
||||
** Print Type ***********************
|
||||
* lda DIBType
|
||||
* jsr PRbyte ; HEX form
|
||||
*************************************
|
||||
* ldx #02 ; Set 2 space
|
||||
* jsr PRBL2
|
||||
** Print Firmware version ***********
|
||||
* ldx #0
|
||||
* morechars2 equ *
|
||||
* lda DIBVersion,x
|
||||
* jsr PRbyte ; HEX form
|
||||
* inx
|
||||
* cpx #$02 ; 2 Byte
|
||||
* bne morechars2
|
||||
* jsr COut
|
||||
**************************************
|
||||
jsr CROut
|
||||
** Wait keypress to continue **
|
||||
*
|
||||
jsr KEYIN
|
||||
*
|
||||
*** Eject ***
|
||||
jsr Dispatch
|
||||
dfb ControlCmd
|
||||
dw E_JECT
|
||||
*** Set start HiMain Memory Pointers ***
|
||||
* lda #$20 ; Hi Byte start (//c ram)
|
||||
* sta HiMain ; HiMain=$20 set
|
||||
*** Set Address ***
|
||||
jsr Dispatch
|
||||
dfb ControlCmd
|
||||
dw SET_ADD
|
||||
*** Download ***
|
||||
jsr Dispatch
|
||||
dfb ControlCmd
|
||||
dw DOWNLOAD
|
||||
*
|
||||
jsr EXEC ; Jump the Error routine
|
||||
rts
|
||||
*********************************************
|
||||
Error equ *
|
||||
*
|
||||
* There's either no PC around, or there was no give message
|
||||
*
|
||||
ldx #0
|
||||
err1 equ *
|
||||
lda Message,x
|
||||
beq errout
|
||||
jsr COut
|
||||
inx
|
||||
bne err1
|
||||
*
|
||||
errout equ *
|
||||
rts
|
||||
*
|
||||
Message asc 'NO PC OR NO DEVICE'
|
||||
dfb $8D,0
|
||||
*********************************************
|
||||
|
||||
*** Set and Reset LoMain Memory Counter ***
|
||||
* RESET ldx #$FF ;Lo Byte start One more before $00 (//c ram)
|
||||
* clc
|
||||
* ldy Y_reg ; 1 time $DF --> Y
|
||||
* iny ; Y+ --> $FF
|
||||
* sty Y_reg ; Y --> Y_reg Uni=$FF
|
||||
*** Execute ***
|
||||
* EXEC inx
|
||||
* stx LowMain ; 1 time set LowMain=$00
|
||||
* stx X_reg
|
||||
EXEC jsr Dispatch
|
||||
dfb ControlCmd
|
||||
dw EXE
|
||||
READ jsr Dispatch
|
||||
dfb StatusCmd
|
||||
dw DParms
|
||||
bcs Error
|
||||
*
|
||||
**** Screen Output ****
|
||||
*
|
||||
*** Accumulator ***
|
||||
lda UNIAcc_reg
|
||||
jsr PRbyte
|
||||
ldx #03 ; Set 3 space
|
||||
jsr PRBL2
|
||||
*** X Register ***
|
||||
lda UNIX_reg
|
||||
jsr PRbyte
|
||||
ldx #01 ; Set one space
|
||||
jsr PRBL2
|
||||
*** Y Register ***
|
||||
lda UNIY_reg
|
||||
jsr PRbyte
|
||||
ldx #03 ; Set one space
|
||||
jsr PRBL2
|
||||
*** Process Status ***
|
||||
lda UNIP_val
|
||||
jsr PRbyte
|
||||
ldx #05 ; Set five space
|
||||
jsr PRBL2
|
||||
** //c Memory store adress **
|
||||
* lda HiMain
|
||||
* jsr PRbyte
|
||||
* lda LowMain
|
||||
* jsr PRbyte
|
||||
* jsr CROut
|
||||
**** Store in //c Main Memory ****
|
||||
* ldx X_reg
|
||||
* lda UNIAcc_reg ;#$FB Test
|
||||
* ldy #0
|
||||
* sta (LowMain),y
|
||||
* cpx UNIL_End
|
||||
* bne EXEC
|
||||
* UNIL_End dfb $FF ; Lo Byte stop (Unidisk) - $C0 for zero page
|
||||
*** Increment HiMain ***
|
||||
* inc HiMain
|
||||
* ldy Y_reg
|
||||
* cpy UNIH_End
|
||||
* bne RESET
|
||||
* UNIH_End dfb $FF ; Hi Byte stop (Unidisk) - $00 for zero page
|
||||
*
|
||||
rts
|
||||
|
||||
******************************************************
|
||||
FindPC equ *
|
||||
*
|
||||
* Search slot 7 to slot 1 looking for signature bytes
|
||||
*
|
||||
ldx #7 ;Do for seven slots
|
||||
lda #$C7
|
||||
sta ZPTempH
|
||||
lda #$00
|
||||
sta ZPTempL
|
||||
*
|
||||
newslot equ *
|
||||
ldy #7
|
||||
*
|
||||
again equ *
|
||||
lda (ZPTempL),y
|
||||
cmp sigtab,y ;One for byte signature
|
||||
beq maybe ;Found one signature byte
|
||||
dec ZPTempH
|
||||
dex
|
||||
bne newslot
|
||||
*
|
||||
* if we get here, no PC find
|
||||
sec
|
||||
rts
|
||||
*
|
||||
* if we get here, no byte find on PC
|
||||
maybe equ *
|
||||
dey
|
||||
dey ;if N=1 then all sig bytes OK
|
||||
bpl again
|
||||
* Found PC interface. Set up call address.
|
||||
* we already have high byte ($CN), we need low byte
|
||||
*
|
||||
foundPC equ *
|
||||
lda #$FF
|
||||
sta ZPTempL
|
||||
ldy #0 ;For indirect load
|
||||
lda (ZPTempL),y ;Get the byte
|
||||
*
|
||||
* Now the Acc has the low oreder ProDOS entry point.
|
||||
* The PC entry is three locations past this ...
|
||||
*
|
||||
clc
|
||||
adc #3
|
||||
sta ZPTempL
|
||||
*
|
||||
* Now ZPTempL has PC entry point.
|
||||
* Return with carry clear.
|
||||
*
|
||||
clc
|
||||
rts
|
||||
***********************************************************
|
||||
*
|
||||
* There are the PC signature bytes in their relative order.
|
||||
* The $FF bytes are filler bytes and are not compared.
|
||||
*
|
||||
sigtab dfb $FF,$20,$FF,$00
|
||||
dfb $FF,$03,$FF,$00
|
||||
*
|
||||
Dispatch equ *
|
||||
jmp (ZPTempL) ;Simulate an indirect JSR to PC
|
||||
*
|
||||
*** Status Parameter Set for UNI ***
|
||||
DParms equ *
|
||||
DPParmsCt dfb 3 ;Status calls have three parameters
|
||||
DPUnit dfb 1
|
||||
DPBuffer dw UNI
|
||||
DPStatCode dfb StatusUNI
|
||||
*
|
||||
*
|
||||
*** Status Parameter Set for DIB ***
|
||||
DParmsDIB equ *
|
||||
DPParmsCt2 dfb 3 ;Status calls have three parameters
|
||||
DPUnit2 dfb 1
|
||||
DPBuffer2 dw DIB
|
||||
DPStatCode2 dfb StatusDIB
|
||||
*
|
||||
*
|
||||
*** Status List DIB ***
|
||||
DIB equ *
|
||||
DIBStatByte1 dfb 0
|
||||
DIBDevSize dfb 0,0,0
|
||||
DIBNameLen dfb 0
|
||||
DIBName ds 16,0
|
||||
DIBType dfb 0
|
||||
DIBSubType dfb 0
|
||||
DIBVersion dw 0
|
||||
*
|
||||
*** Status List UNI ***
|
||||
UNI equ *
|
||||
dfb 0
|
||||
UNIError dfb 0
|
||||
UNIRetries dfb 0
|
||||
UNIAcc_reg dfb 0
|
||||
UNIX_reg dfb 0
|
||||
UNIY_reg dfb 0
|
||||
UNIP_val dfb 0
|
||||
HHH dfb 0
|
||||
*
|
||||
*** Set Address ***
|
||||
SET_ADD equ *
|
||||
dfb 3
|
||||
dfb 1
|
||||
dw CNTL_LIST3
|
||||
dfb SetDWLoad
|
||||
*
|
||||
*** Download ***
|
||||
DOWNLOAD equ *
|
||||
dfb 3
|
||||
dfb 1
|
||||
dw CNTL_LIST4
|
||||
dfb DWLoad
|
||||
*
|
||||
*** Execute ***
|
||||
EXE equ *
|
||||
dfb 3
|
||||
dfb 1
|
||||
dw CNTL_LIST2
|
||||
dfb Run
|
||||
*** Eject ***
|
||||
E_JECT equ *
|
||||
dfb 3
|
||||
dfb 1
|
||||
dw CNTL_LIST1
|
||||
dfb Eject
|
||||
*
|
||||
******** CONTROL LISTS ********
|
||||
*
|
||||
*
|
||||
*** Eject ***
|
||||
CNTL_LIST1 equ *
|
||||
dw $0000
|
||||
*
|
||||
*** Execute ***
|
||||
CNTL_LIST2 equ *
|
||||
Clow_byte dfb $06
|
||||
Chigh_byte dfb $00
|
||||
AccValue dfb $00 ; Input Value
|
||||
X_reg dfb $0A ; Input Value (N1)
|
||||
Y_reg dfb $01 ; Input Value (N2)
|
||||
ProStatus dfb $00
|
||||
LowPC_reg dfb $05
|
||||
HighPC_reg dfb $05
|
||||
*
|
||||
*** Set Address ***
|
||||
CNTL_LIST3 equ *
|
||||
CountL_byte dfb $02
|
||||
CountH_byte dfb $00
|
||||
LByte_Addr dfb $05
|
||||
HByte_Addr dfb $05
|
||||
*
|
||||
*** Download ***
|
||||
CNTL_LIST4 equ *
|
||||
LenghtL_byte dfb $09 ;<----- Lenght of Unidisk program Lo Byte
|
||||
LenghtH_byte dfb $00 ;<----- Lenght of Unidisk program Hi Byte
|
||||
*
|
||||
*** Start UNIDISK Program ***
|
||||
|
||||
stx $C0
|
||||
sty $C1
|
||||
|
||||
lda $C0
|
||||
adc $C1
|
||||
|
||||
rts
|
1
src/_FileInformation.txt
Normal file
1
src/_FileInformation.txt
Normal file
|
@ -0,0 +1 @@
|
|||
TESTBIN=Type(06),AuxType(6000),VersionCreate(70),MinVersion(BE),Access(E3),FolderInfo1(000000000000000000000000000000000000),FolderInfo2(000000000000000000000000000000000000)
|
Loading…
Reference in New Issue
Block a user