From 84da2fe2026276d020958f74c8ddd5de31980823 Mon Sep 17 00:00:00 2001 From: rigreco Date: Sun, 15 Feb 2015 17:52:50 +0100 Subject: [PATCH 01/12] Fix all absolute addressing --- AppleII/FP operations/Unidrive4.asm | 26 +- AppleII/FP operations/Unidrive4_Output.txt | 546 +++++++++++++++++++++ 2 files changed, 559 insertions(+), 13 deletions(-) create mode 100644 AppleII/FP operations/Unidrive4_Output.txt diff --git a/AppleII/FP operations/Unidrive4.asm b/AppleII/FP operations/Unidrive4.asm index 9b88119..46d6879 100644 --- a/AppleII/FP operations/Unidrive4.asm +++ b/AppleII/FP operations/Unidrive4.asm @@ -87,23 +87,23 @@ Message asc 'NO PC OR NO DEVICE' ** Set the Input Value first in Dynamic data ** ** 4 Byte N1 to FP1 ** EXEC lda N1 ;X1 - sta $8111 ; Absolute addressing + sta $8238 ; Absolute addressing lda N1+1 ;M1 (1) - sta $8112 + sta $8239 lda N1+2 ;M1 (2) - sta + sta $823A lda N1+2 ;M1 (3) - sta + sta $823B ** 4 Byte N2 to FP2 ** lda N2 ;X2 - sta $80EB + sta $823C lda N2+1 ;M2 (1) - sta $80EC + sta $823D lda N2+2 ;M2 (2) - sta + sta $823E lda N2+2 ;M2 (3) - sta + sta $823F *** Download *** jsr Dispatch @@ -143,7 +143,7 @@ READ jsr Dispatch jsr Dispatch dfb StatusCmd dw DParms - bcs Error +* bcs Error * Second time execute only to read the latest Byte of FP1* lda UNIAcc_reg @@ -283,16 +283,16 @@ HighPC_reg dfb $05 CNTL_LIST3 equ * CountL_byte dfb $02 CountH_byte dfb $00 -LByte_Addr dfb $05 ; Like ORG +LByte_Addr dfb $00 ; ORG of Unidisk program HByte_Addr dfb $05 * *** Download *** CNTL_LIST4 equ * -LenghtL_byte dfb $4A ;<----- Lenght of Unidisk program Lo Byte -LenghtH_byte dfb $00 ;<----- Lenght of Unidisk program Hi Byte +LenghtL_byte dfb $38 ;<----- Lenght of Unidisk program Lo - Byte 312 byte +LenghtH_byte dfb $01 ;<----- Lenght of Unidisk program Hi Byte * *** Start UNIDISK Program *** - org $0505 + org $0500 SIGN EQU $C0 ;$EB ; $F3 diff --git a/AppleII/FP operations/Unidrive4_Output.txt b/AppleII/FP operations/Unidrive4_Output.txt new file mode 100644 index 0000000..21ba25f --- /dev/null +++ b/AppleII/FP operations/Unidrive4_Output.txt @@ -0,0 +1,546 @@ +------+-------------------------+-------------+----+---------+------+-----------------------+------------------------------------------------------------------- + Line | # File Line | Line Type | MX | Reloc | Size | Address Object Code | Source Code +------+-------------------------+-------------+----+---------+------+-----------------------+------------------------------------------------------------------- + 1 | 1 Unidrive4.asm 1 | Comment | 11 | | 0 | 00/8000 | * + 2 | 1 Unidrive4.asm 2 | Comment | 11 | | 0 | 00/8000 | * Unidisk 3.5 Driver + 3 | 1 Unidrive4.asm 3 | Comment | 11 | | 0 | 00/8000 | * + 4 | 1 Unidrive4.asm 4 | Comment | 11 | | 0 | 00/8000 | * The target of this project is to use the Unidisk 3.5 drive to perform + 5 | 1 Unidrive4.asm 5 | Comment | 11 | | 0 | 00/8000 | * specific numerical routines (integers and floating point numbers) + 6 | 1 Unidrive4.asm 6 | Comment | 11 | | 0 | 00/8000 | * calculation in order to use it as a Apple II co-processor unit. + 7 | 1 Unidrive4.asm 7 | Comment | 11 | | 0 | 00/8000 | * + 8 | 1 Unidrive4.asm 8 | Comment | 11 | | 0 | 00/8000 | * Copyright (C) 2015 Riccardo Greco . + 9 | 1 Unidrive4.asm 9 | Comment | 11 | | 0 | 00/8000 | * + 10 | 1 Unidrive4.asm 10 | Comment | 11 | | 0 | 00/8000 | * This program is free software: you can redistribute it and/or modify + 11 | 1 Unidrive4.asm 11 | Comment | 11 | | 0 | 00/8000 | * it under the terms of the GNU General Public License as published by + 12 | 1 Unidrive4.asm 12 | Comment | 11 | | 0 | 00/8000 | * the Free Software Foundation, either version 3 of the License, or + 13 | 1 Unidrive4.asm 13 | Comment | 11 | | 0 | 00/8000 | * (at your option) any later version. + 14 | 1 Unidrive4.asm 14 | Comment | 11 | | 0 | 00/8000 | * This program is distributed in the hope that it will be useful, + 15 | 1 Unidrive4.asm 15 | Comment | 11 | | 0 | 00/8000 | * but WITHOUT ANY WARRANTY; without even the implied warranty of + 16 | 1 Unidrive4.asm 16 | Comment | 11 | | 0 | 00/8000 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + 17 | 1 Unidrive4.asm 17 | Comment | 11 | | 0 | 00/8000 | * GNU General Public License for more details. + 18 | 1 Unidrive4.asm 18 | Comment | 11 | | 0 | 00/8000 | * You should have received a copy of the GNU General Public License + 19 | 1 Unidrive4.asm 19 | Comment | 11 | | 0 | 00/8000 | * along with this program. If not, see . + 20 | 1 Unidrive4.asm 20 | Comment | 11 | | 0 | 00/8000 | * + 21 | 1 Unidrive4.asm 21 | Comment | 11 | | 0 | 00/8000 | * + 22 | 1 Unidrive4.asm 22 | Comment | 11 | | 0 | 00/8000 | * @com.wudsn.ide.asm.hardware=APPLE2 + 23 | 1 Unidrive4.asm 23 | Comment | 11 | | 0 | 00/8000 | * + 24 | 1 Unidrive4.asm 24 | Comment | 11 | | 0 | 00/8000 | * Protocol Converter Call + 25 | 1 Unidrive4.asm 25 | Directive | 11 | | 0 | 00/8000 | XC + 26 | 1 Unidrive4.asm 26 | Equivalence | 11 | | 0 | 00/8000 | ZPTempL equ $0006 ;Temporary zero page storage + 27 | 1 Unidrive4.asm 27 | Equivalence | 11 | | 0 | 00/8000 | ZPTempH equ $0007 + 28 | 1 Unidrive4.asm 28 | Comment | 11 | | 0 | 00/8000 | ** Zero page storage ** + 29 | 1 Unidrive4.asm 29 | Equivalence | 11 | | 0 | 00/8000 | N1 equ $FA ;25 4 Byte FP FA--FD (FP1) + 30 | 1 Unidrive4.asm 30 | Equivalence | 11 | | 0 | 00/8000 | N2 equ $EC ;27 4 Byte FP EC--EF (FP2) + 31 | 1 Unidrive4.asm 31 | Comment | 11 | | 0 | 00/8000 | ; RSLT equ $1D ;29 + 32 | 1 Unidrive4.asm 32 | Comment | 11 | | 0 | 00/8000 | *** Monitor routines *** + 33 | 1 Unidrive4.asm 33 | Equivalence | 11 | | 0 | 00/8000 | COut equ $FDED ;Console output ASCII + 34 | 1 Unidrive4.asm 34 | Equivalence | 11 | | 0 | 00/8000 | CROut equ $FD8E ;Carriage return + 35 | 1 Unidrive4.asm 35 | Comment | 11 | | 0 | 00/8000 | ** Command Code ** + 36 | 1 Unidrive4.asm 36 | Equivalence | 11 | | 0 | 00/8000 | StatusCmd equ 0 + 37 | 1 Unidrive4.asm 37 | Comment | 11 | | 0 | 00/8000 | ** Status Code ** + 38 | 1 Unidrive4.asm 38 | Comment | 11 | | 0 | 00/8000 | * StatusDIB equ 3 + 39 | 1 Unidrive4.asm 39 | Equivalence | 11 | | 0 | 00/8000 | StatusUNI equ 5 + 40 | 1 Unidrive4.asm 40 | Comment | 11 | | 0 | 00/8000 | * + 41 | 1 Unidrive4.asm 41 | Equivalence | 11 | | 0 | 00/8000 | ControlCmd equ 4 + 42 | 1 Unidrive4.asm 42 | Comment | 11 | | 0 | 00/8000 | ** Control Codes ** + 43 | 1 Unidrive4.asm 43 | Equivalence | 11 | | 0 | 00/8000 | Eject equ 4 + 44 | 1 Unidrive4.asm 44 | Equivalence | 11 | | 0 | 00/8000 | Run equ 5 + 45 | 1 Unidrive4.asm 45 | Equivalence | 11 | | 0 | 00/8000 | SetDWLoad equ 6 + 46 | 1 Unidrive4.asm 46 | Equivalence | 11 | | 0 | 00/8000 | DWLoad equ 7 + 47 | 1 Unidrive4.asm 47 | Comment | 11 | | 0 | 00/8000 | * + 48 | 1 Unidrive4.asm 48 | Directive | 11 | | 0 | 00/8000 | org $8000 + 49 | 1 Unidrive4.asm 49 | Comment | 11 | | 0 | 00/8000 | ***************************************************** + 50 | 1 Unidrive4.asm 50 | Empty | 11 | | 0 | 00/8000 | + 51 | 1 Unidrive4.asm 51 | Comment | 11 | | 0 | 00/8000 | * + 52 | 1 Unidrive4.asm 52 | Comment | 11 | | 0 | 00/8000 | * Find a Protocol Converter in one of the slots. + 53 | 1 Unidrive4.asm 53 | Code | 11 | | 3 | 00/8000 : 20 9E 80 | START jsr {ozunid_4} + 54 | 1 Unidrive4.asm 54 | Code | 11 | | 2 | 00/8003 : B0 10 | bcs {ozunid_1} + 55 | 1 Unidrive4.asm 55 | Comment | 11 | | 0 | 00/8005 | *** Eject *** + 56 | 1 Unidrive4.asm 56 | Code | 11 | | 3 | 00/8005 : 20 D3 80 | jsr {ozunid_9} + 57 | 1 Unidrive4.asm 57 | Data | 11 | | 1 | 00/8008 : 04 | dfb {4} + 58 | 1 Unidrive4.asm 58 | Data | 11 | | 2 | 00/8009 : F2 80 | dw {ozunid_15} + 59 | 1 Unidrive4.asm 59 | Comment | 11 | | 0 | 00/800B | *** Set Address *** + 60 | 1 Unidrive4.asm 60 | Code | 11 | | 3 | 00/800B : 20 D3 80 | jsr {ozunid_9} + 61 | 1 Unidrive4.asm 61 | Data | 11 | | 1 | 00/800E : 04 | dfb {4} + 62 | 1 Unidrive4.asm 62 | Data | 11 | | 2 | 00/800F : E3 80 | dw {ozunid_12} + 63 | 1 Unidrive4.asm 63 | Comment | 11 | | 0 | 00/8011 | * + 64 | 1 Unidrive4.asm 64 | Code | 11 | | 3 | 00/8011 : 20 37 80 | jsr EXEC ; Jump the Error routine + 65 | 1 Unidrive4.asm 65 | Code | 11 | | 1 | 00/8014 : 60 | rts + 66 | 1 Unidrive4.asm 66 | Comment | 11 | | 0 | 00/8015 | ********************************************* + 67 | 1 Unidrive4.asm 67 | Empty | 11 | | 0 | 00/8015 | ozunid_1 + 68 | 1 Unidrive4.asm 67 | Equivalence | 11 | | 0 | 00/8015 | Error equ ozunid_1 + 69 | 1 Unidrive4.asm 68 | Comment | 11 | | 0 | 00/8015 | * + 70 | 1 Unidrive4.asm 69 | Comment | 11 | | 0 | 00/8015 | * There is either no PC around, or there was no give message + 71 | 1 Unidrive4.asm 70 | Comment | 11 | | 0 | 00/8015 | * + 72 | 1 Unidrive4.asm 71 | Code | 11 | | 2 | 00/8015 : A2 00 | ldx #0 + 73 | 1 Unidrive4.asm 72 | Empty | 11 | | 0 | 00/8017 | ozunid_2 + 74 | 1 Unidrive4.asm 72 | Equivalence | 11 | | 0 | 00/8017 | err1 equ ozunid_2 + 75 | 1 Unidrive4.asm 73 | Code | 11 | | 3 | 00/8017 : BD 23 80 | lda Message,x + 76 | 1 Unidrive4.asm 74 | Code | 11 | | 2 | 00/801A : F0 06 | beq {ozunid_3} + 77 | 1 Unidrive4.asm 75 | Code | 11 | | 3 | 00/801C : 20 ED FD | jsr {$FDED} + 78 | 1 Unidrive4.asm 76 | Code | 11 | | 1 | 00/801F : E8 | inx + 79 | 1 Unidrive4.asm 77 | Code | 11 | | 2 | 00/8020 : D0 F5 | bne {ozunid_2} + 80 | 1 Unidrive4.asm 78 | Comment | 11 | | 0 | 00/8022 | * + 81 | 1 Unidrive4.asm 79 | Empty | 11 | | 0 | 00/8022 | ozunid_3 + 82 | 1 Unidrive4.asm 79 | Equivalence | 11 | | 0 | 00/8022 | errout equ ozunid_3 + 83 | 1 Unidrive4.asm 80 | Code | 11 | | 1 | 00/8022 : 60 | rts + 84 | 1 Unidrive4.asm 81 | Comment | 11 | | 0 | 00/8023 | * + 85 | 1 Unidrive4.asm 82 | Data | 11 | | 18 | 00/8023 : 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 | + 86 | 1 Unidrive4.asm 83 | Data | 11 | | 2 | 00/8035 : 8D 00 | dfb $8D,0 + 87 | 1 Unidrive4.asm 84 | Comment | 11 | | 0 | 00/8037 | ********************************************* + 88 | 1 Unidrive4.asm 85 | Comment | 11 | | 0 | 00/8037 | * + 89 | 1 Unidrive4.asm 86 | Empty | 11 | | 0 | 00/8037 | + 90 | 1 Unidrive4.asm 87 | Comment | 11 | | 0 | 00/8037 | ** Set the Input Value first in Dynamic data ** + 91 | 1 Unidrive4.asm 88 | Comment | 11 | | 0 | 00/8037 | ** 4 Byte N1 to FP1 ** + 92 | 1 Unidrive4.asm 89 | Code | 11 | | 2 | 00/8037 : A5 FA | EXEC lda {$FA} ;X1 + 93 | 1 Unidrive4.asm 90 | Code | 11 | | 3 | 00/8039 : 8D 38 82 | sta $8238 ; Absolute addressing + 94 | 1 Unidrive4.asm 91 | Code | 11 | | 2 | 00/803C : A5 FB | lda {$FA}+1 ;M1 (1) + 95 | 1 Unidrive4.asm 92 | Code | 11 | | 3 | 00/803E : 8D 39 82 | sta $8239 + 96 | 1 Unidrive4.asm 93 | Code | 11 | | 2 | 00/8041 : A5 FC | lda {$FA}+2 ;M1 (2) + 97 | 1 Unidrive4.asm 94 | Code | 11 | | 3 | 00/8043 : 8D 3A 82 | sta $823A + 98 | 1 Unidrive4.asm 95 | Code | 11 | | 2 | 00/8046 : A5 FC | lda {$FA}+2 ;M1 (3) + 99 | 1 Unidrive4.asm 96 | Code | 11 | | 3 | 00/8048 : 8D 3B 82 | sta $823B + 100 | 1 Unidrive4.asm 97 | Empty | 11 | | 0 | 00/804B | + 101 | 1 Unidrive4.asm 98 | Comment | 11 | | 0 | 00/804B | ** 4 Byte N2 to FP2 ** + 102 | 1 Unidrive4.asm 99 | Code | 11 | | 2 | 00/804B : A5 EC | lda {$EC} ;X2 + 103 | 1 Unidrive4.asm 100 | Code | 11 | | 3 | 00/804D : 8D 3C 82 | sta $823C + 104 | 1 Unidrive4.asm 101 | Code | 11 | | 2 | 00/8050 : A5 ED | lda {$EC}+1 ;M2 (1) + 105 | 1 Unidrive4.asm 102 | Code | 11 | | 3 | 00/8052 : 8D 3D 82 | sta $823D + 106 | 1 Unidrive4.asm 103 | Code | 11 | | 2 | 00/8055 : A5 EE | lda {$EC}+2 ;M2 (2) + 107 | 1 Unidrive4.asm 104 | Code | 11 | | 3 | 00/8057 : 8D 3E 82 | sta $823E + 108 | 1 Unidrive4.asm 105 | Code | 11 | | 2 | 00/805A : A5 EE | lda {$EC}+2 ;M2 (3) + 109 | 1 Unidrive4.asm 106 | Code | 11 | | 3 | 00/805C : 8D 3F 82 | sta $823F + 110 | 1 Unidrive4.asm 107 | Empty | 11 | | 0 | 00/805F | + 111 | 1 Unidrive4.asm 108 | Comment | 11 | | 0 | 00/805F | *** Download *** + 112 | 1 Unidrive4.asm 109 | Code | 11 | | 3 | 00/805F : 20 D3 80 | jsr {ozunid_9} + 113 | 1 Unidrive4.asm 110 | Data | 11 | | 1 | 00/8062 : 04 | dfb {4} + 114 | 1 Unidrive4.asm 111 | Data | 11 | | 2 | 00/8063 : E8 80 | dw {ozunid_13} + 115 | 1 Unidrive4.asm 112 | Comment | 11 | | 0 | 00/8065 | ** Set Unidisk Registers ** + 116 | 1 Unidrive4.asm 113 | Code | 11 | | 2 | 00/8065 : A9 01 | lda #01 ;First time + 117 | 1 Unidrive4.asm 114 | Code | 11 | | 3 | 00/8067 : 8D DE 80 | sta UNIAcc_reg + 118 | 1 Unidrive4.asm 115 | Comment | 11 | | 0 | 00/806A | ** Execute ** + 119 | 1 Unidrive4.asm 116 | Code | 11 | | 3 | 00/806A : 20 D3 80 | jsr {ozunid_9} + 120 | 1 Unidrive4.asm 117 | Data | 11 | | 1 | 00/806D : 04 | dfb {4} + 121 | 1 Unidrive4.asm 118 | Data | 11 | | 2 | 00/806E : ED 80 | dw {ozunid_14} + 122 | 1 Unidrive4.asm 119 | Comment | 11 | | 0 | 00/8070 | ** Read ** + 123 | 1 Unidrive4.asm 120 | Code | 11 | | 3 | 00/8070 : 20 D3 80 | READ jsr {ozunid_9} + 124 | 1 Unidrive4.asm 121 | Data | 11 | | 1 | 00/8073 : 00 | dfb {0} + 125 | 1 Unidrive4.asm 122 | Data | 11 | | 2 | 00/8074 : D6 80 | dw {ozunid_10} + 126 | 1 Unidrive4.asm 123 | Code | 11 | | 2 | 00/8076 : B0 9D | bcs {ozunid_1} + 127 | 1 Unidrive4.asm 124 | Comment | 11 | | 0 | 00/8078 | * + 128 | 1 Unidrive4.asm 125 | Comment | 11 | | 0 | 00/8078 | **** Store Output results in //c **** + 129 | 1 Unidrive4.asm 126 | Empty | 11 | | 0 | 00/8078 | + 130 | 1 Unidrive4.asm 127 | Comment | 11 | | 0 | 00/8078 | * First time execute * + 131 | 1 Unidrive4.asm 128 | Code | 11 | | 3 | 00/8078 : AD DE 80 | lda UNIAcc_reg + 132 | 1 Unidrive4.asm 129 | Code | 11 | | 2 | 00/807B : 85 FA | sta {$FA} + 133 | 1 Unidrive4.asm 130 | Code | 11 | | 3 | 00/807D : AD DF 80 | lda UNIX_reg + 134 | 1 Unidrive4.asm 131 | Code | 11 | | 2 | 00/8080 : 85 FB | sta {$FA}+1 ; Store the result + 135 | 1 Unidrive4.asm 132 | Code | 11 | | 3 | 00/8082 : AD E0 80 | lda UNIY_reg + 136 | 1 Unidrive4.asm 133 | Code | 11 | | 2 | 00/8085 : 85 FC | sta {$FA}+2 + 137 | 1 Unidrive4.asm 134 | Empty | 11 | | 0 | 00/8087 | + 138 | 1 Unidrive4.asm 135 | Comment | 11 | | 0 | 00/8087 | ** Second time execute ** + 139 | 1 Unidrive4.asm 136 | Code | 11 | | 2 | 00/8087 : A9 02 | lda #02 ; Second time + 140 | 1 Unidrive4.asm 137 | Code | 11 | | 3 | 00/8089 : 8D DE 80 | sta UNIAcc_reg + 141 | 1 Unidrive4.asm 138 | Comment | 11 | | 0 | 00/808C | ** Execute ** + 142 | 1 Unidrive4.asm 139 | Code | 11 | | 3 | 00/808C : 20 D3 80 | jsr {ozunid_9} + 143 | 1 Unidrive4.asm 140 | Data | 11 | | 1 | 00/808F : 04 | dfb {4} + 144 | 1 Unidrive4.asm 141 | Data | 11 | | 2 | 00/8090 : ED 80 | dw {ozunid_14} + 145 | 1 Unidrive4.asm 142 | Comment | 11 | | 0 | 00/8092 | ** Read ** + 146 | 1 Unidrive4.asm 143 | Code | 11 | | 3 | 00/8092 : 20 D3 80 | jsr {ozunid_9} + 147 | 1 Unidrive4.asm 144 | Data | 11 | | 1 | 00/8095 : 00 | dfb {0} + 148 | 1 Unidrive4.asm 145 | Data | 11 | | 2 | 00/8096 : D6 80 | dw {ozunid_10} + 149 | 1 Unidrive4.asm 146 | Comment | 11 | | 0 | 00/8098 | * bcs Error + 150 | 1 Unidrive4.asm 147 | Empty | 11 | | 0 | 00/8098 | + 151 | 1 Unidrive4.asm 148 | Comment | 11 | | 0 | 00/8098 | * Second time execute only to read the latest Byte of FP1* + 152 | 1 Unidrive4.asm 149 | Code | 11 | | 3 | 00/8098 : AD DE 80 | lda UNIAcc_reg + 153 | 1 Unidrive4.asm 150 | Code | 11 | | 2 | 00/809B : 85 FC | sta {$FA}+2 + 154 | 1 Unidrive4.asm 151 | Comment | 11 | | 0 | 00/809D | * + 155 | 1 Unidrive4.asm 152 | Code | 11 | | 1 | 00/809D : 60 | rts + 156 | 1 Unidrive4.asm 153 | Empty | 11 | | 0 | 00/809E | + 157 | 1 Unidrive4.asm 154 | Comment | 11 | | 0 | 00/809E | ****************************************************** + 158 | 1 Unidrive4.asm 155 | Empty | 11 | | 0 | 00/809E | ozunid_4 + 159 | 1 Unidrive4.asm 155 | Equivalence | 11 | | 0 | 00/809E | FindPC equ ozunid_4 + 160 | 1 Unidrive4.asm 156 | Comment | 11 | | 0 | 00/809E | * + 161 | 1 Unidrive4.asm 157 | Comment | 11 | | 0 | 00/809E | * Search slot 7 to slot 1 looking for signature bytes + 162 | 1 Unidrive4.asm 158 | Comment | 11 | | 0 | 00/809E | * + 163 | 1 Unidrive4.asm 159 | Code | 11 | | 2 | 00/809E : A2 07 | ldx #7 ;Do for seven slots + 164 | 1 Unidrive4.asm 160 | Code | 11 | | 2 | 00/80A0 : A9 C7 | lda #$C7 + 165 | 1 Unidrive4.asm 161 | Code | 11 | | 2 | 00/80A2 : 85 07 | sta {$0007} + 166 | 1 Unidrive4.asm 162 | Code | 11 | | 2 | 00/80A4 : A9 00 | lda #$00 + 167 | 1 Unidrive4.asm 163 | Code | 11 | | 2 | 00/80A6 : 85 06 | sta {$0006} + 168 | 1 Unidrive4.asm 164 | Comment | 11 | | 0 | 00/80A8 | * + 169 | 1 Unidrive4.asm 165 | Empty | 11 | | 0 | 00/80A8 | ozunid_5 + 170 | 1 Unidrive4.asm 165 | Equivalence | 11 | | 0 | 00/80A8 | newslot equ ozunid_5 + 171 | 1 Unidrive4.asm 166 | Code | 11 | | 2 | 00/80A8 : A0 07 | ldy #7 + 172 | 1 Unidrive4.asm 167 | Comment | 11 | | 0 | 00/80AA | * + 173 | 1 Unidrive4.asm 168 | Empty | 11 | | 0 | 00/80AA | ozunid_6 + 174 | 1 Unidrive4.asm 168 | Equivalence | 11 | | 0 | 00/80AA | again equ ozunid_6 + 175 | 1 Unidrive4.asm 169 | Code | 11 | | 2 | 00/80AA : B1 06 | lda ({$0006}),y + 176 | 1 Unidrive4.asm 170 | Code | 11 | | 3 | 00/80AC : D9 CB 80 | cmp sigtab,y ;One for byte signature + 177 | 1 Unidrive4.asm 171 | Code | 11 | | 2 | 00/80AF : F0 07 | beq {ozunid_7} ;Found one signature byte + 178 | 1 Unidrive4.asm 172 | Code | 11 | | 2 | 00/80B1 : C6 07 | dec {$0007} + 179 | 1 Unidrive4.asm 173 | Code | 11 | | 1 | 00/80B3 : CA | dex + 180 | 1 Unidrive4.asm 174 | Code | 11 | | 2 | 00/80B4 : D0 F2 | bne {ozunid_5} + 181 | 1 Unidrive4.asm 175 | Comment | 11 | | 0 | 00/80B6 | * + 182 | 1 Unidrive4.asm 176 | Comment | 11 | | 0 | 00/80B6 | * if we get here, no PC find + 183 | 1 Unidrive4.asm 177 | Code | 11 | | 1 | 00/80B6 : 38 | sec + 184 | 1 Unidrive4.asm 178 | Code | 11 | | 1 | 00/80B7 : 60 | rts + 185 | 1 Unidrive4.asm 179 | Comment | 11 | | 0 | 00/80B8 | * + 186 | 1 Unidrive4.asm 180 | Comment | 11 | | 0 | 00/80B8 | * if we get here, no byte find on PC + 187 | 1 Unidrive4.asm 181 | Empty | 11 | | 0 | 00/80B8 | ozunid_7 + 188 | 1 Unidrive4.asm 181 | Equivalence | 11 | | 0 | 00/80B8 | maybe equ ozunid_7 + 189 | 1 Unidrive4.asm 182 | Code | 11 | | 1 | 00/80B8 : 88 | dey + 190 | 1 Unidrive4.asm 183 | Code | 11 | | 1 | 00/80B9 : 88 | dey ;if N=1 then all sig bytes OK + 191 | 1 Unidrive4.asm 184 | Code | 11 | | 2 | 00/80BA : 10 EE | bpl {ozunid_6} + 192 | 1 Unidrive4.asm 185 | Comment | 11 | | 0 | 00/80BC | * Found PC interface. Set up call address. + 193 | 1 Unidrive4.asm 186 | Comment | 11 | | 0 | 00/80BC | * we already have high byte ($CN), we need low byte + 194 | 1 Unidrive4.asm 187 | Comment | 11 | | 0 | 00/80BC | * + 195 | 1 Unidrive4.asm 188 | Empty | 11 | | 0 | 00/80BC | ozunid_8 + 196 | 1 Unidrive4.asm 188 | Equivalence | 11 | | 0 | 00/80BC | foundPC equ ozunid_8 + 197 | 1 Unidrive4.asm 189 | Code | 11 | | 2 | 00/80BC : A9 FF | lda #$FF + 198 | 1 Unidrive4.asm 190 | Code | 11 | | 2 | 00/80BE : 85 06 | sta {$0006} + 199 | 1 Unidrive4.asm 191 | Code | 11 | | 2 | 00/80C0 : A0 00 | ldy #0 ;For indirect load + 200 | 1 Unidrive4.asm 192 | Code | 11 | | 2 | 00/80C2 : B1 06 | lda ({$0006}),y ;Get the byte + 201 | 1 Unidrive4.asm 193 | Comment | 11 | | 0 | 00/80C4 | * + 202 | 1 Unidrive4.asm 194 | Comment | 11 | | 0 | 00/80C4 | * Now the Acc has the low oreder ProDOS entry point. + 203 | 1 Unidrive4.asm 195 | Comment | 11 | | 0 | 00/80C4 | * The PC entry is three locations past this ... + 204 | 1 Unidrive4.asm 196 | Comment | 11 | | 0 | 00/80C4 | * + 205 | 1 Unidrive4.asm 197 | Code | 11 | | 1 | 00/80C4 : 18 | clc + 206 | 1 Unidrive4.asm 198 | Code | 11 | | 2 | 00/80C5 : 69 03 | adc #3 + 207 | 1 Unidrive4.asm 199 | Code | 11 | | 2 | 00/80C7 : 85 06 | sta {$0006} + 208 | 1 Unidrive4.asm 200 | Comment | 11 | | 0 | 00/80C9 | * + 209 | 1 Unidrive4.asm 201 | Comment | 11 | | 0 | 00/80C9 | * Now ZPTempL has PC entry point. + 210 | 1 Unidrive4.asm 202 | Comment | 11 | | 0 | 00/80C9 | * Return with carry clear. + 211 | 1 Unidrive4.asm 203 | Comment | 11 | | 0 | 00/80C9 | * + 212 | 1 Unidrive4.asm 204 | Code | 11 | | 1 | 00/80C9 : 18 | clc + 213 | 1 Unidrive4.asm 205 | Code | 11 | | 1 | 00/80CA : 60 | rts + 214 | 1 Unidrive4.asm 206 | Comment | 11 | | 0 | 00/80CB | *********************************************************** + 215 | 1 Unidrive4.asm 207 | Comment | 11 | | 0 | 00/80CB | * + 216 | 1 Unidrive4.asm 208 | Comment | 11 | | 0 | 00/80CB | * There are the PC signature bytes in their relative order. + 217 | 1 Unidrive4.asm 209 | Comment | 11 | | 0 | 00/80CB | * The $FF bytes are filler bytes and are not compared. + 218 | 1 Unidrive4.asm 210 | Comment | 11 | | 0 | 00/80CB | * + 219 | 1 Unidrive4.asm 211 | Data | 11 | | 4 | 00/80CB : FF 20 FF 00 | sigtab dfb $FF,$20,$FF,$00 + 220 | 1 Unidrive4.asm 212 | Data | 11 | | 4 | 00/80CF : FF 03 FF 00 | dfb $FF,$03,$FF,$00 + 221 | 1 Unidrive4.asm 213 | Comment | 11 | | 0 | 00/80D3 | * + 222 | 1 Unidrive4.asm 214 | Empty | 11 | | 0 | 00/80D3 | ozunid_9 + 223 | 1 Unidrive4.asm 214 | Equivalence | 11 | | 0 | 00/80D3 | Dispatch equ ozunid_9 + 224 | 1 Unidrive4.asm 215 | Code | 11 | | 3 | 00/80D3 : 6C 06 00 | jmp ({$0006}) ;Simulate an indirect JSR to PC + 225 | 1 Unidrive4.asm 216 | Comment | 11 | | 0 | 00/80D6 | * + 226 | 1 Unidrive4.asm 217 | Comment | 11 | | 0 | 00/80D6 | *** Status Parameter Set for UNI *** + 227 | 1 Unidrive4.asm 218 | Empty | 11 | | 0 | 00/80D6 | ozunid_10 + 228 | 1 Unidrive4.asm 218 | Equivalence | 11 | | 0 | 00/80D6 | DParms equ ozunid_10 + 229 | 1 Unidrive4.asm 219 | Data | 11 | | 1 | 00/80D6 : 03 | DPParmsCt dfb 3 ;Status calls have three parameters + 230 | 1 Unidrive4.asm 220 | Data | 11 | | 1 | 00/80D7 : 01 | DPUnit dfb 1 + 231 | 1 Unidrive4.asm 221 | Data | 11 | | 2 | 00/80D8 : DB 80 | DPBuffer dw {ozunid_11} + 232 | 1 Unidrive4.asm 222 | Data | 11 | | 1 | 00/80DA : 05 | DPStatCode dfb {5} + 233 | 1 Unidrive4.asm 223 | Comment | 11 | | 0 | 00/80DB | * + 234 | 1 Unidrive4.asm 224 | Comment | 11 | | 0 | 00/80DB | * + 235 | 1 Unidrive4.asm 225 | Comment | 11 | | 0 | 00/80DB | * + 236 | 1 Unidrive4.asm 226 | Comment | 11 | | 0 | 00/80DB | *** Status List UNI *** + 237 | 1 Unidrive4.asm 227 | Empty | 11 | | 0 | 00/80DB | ozunid_11 + 238 | 1 Unidrive4.asm 227 | Equivalence | 11 | | 0 | 00/80DB | UNI equ ozunid_11 + 239 | 1 Unidrive4.asm 228 | Data | 11 | | 1 | 00/80DB : 00 | dfb 0 + 240 | 1 Unidrive4.asm 229 | Data | 11 | | 1 | 00/80DC : 00 | UNIError dfb 0 + 241 | 1 Unidrive4.asm 230 | Data | 11 | | 1 | 00/80DD : 00 | UNIRetries dfb 0 + 242 | 1 Unidrive4.asm 231 | Data | 11 | | 1 | 00/80DE : 00 | UNIAcc_reg dfb 0 + 243 | 1 Unidrive4.asm 232 | Data | 11 | | 1 | 00/80DF : 00 | UNIX_reg dfb 0 + 244 | 1 Unidrive4.asm 233 | Data | 11 | | 1 | 00/80E0 : 00 | UNIY_reg dfb 0 + 245 | 1 Unidrive4.asm 234 | Data | 11 | | 1 | 00/80E1 : 00 | UNIP_val dfb 0 + 246 | 1 Unidrive4.asm 235 | Data | 11 | | 1 | 00/80E2 : 00 | HHH dfb 0 + 247 | 1 Unidrive4.asm 236 | Comment | 11 | | 0 | 00/80E3 | * + 248 | 1 Unidrive4.asm 237 | Comment | 11 | | 0 | 00/80E3 | *** Set Address *** + 249 | 1 Unidrive4.asm 238 | Empty | 11 | | 0 | 00/80E3 | ozunid_12 + 250 | 1 Unidrive4.asm 238 | Equivalence | 11 | | 0 | 00/80E3 | SET_ADD equ ozunid_12 + 251 | 1 Unidrive4.asm 239 | Data | 11 | | 1 | 00/80E3 : 03 | dfb 3 + 252 | 1 Unidrive4.asm 240 | Data | 11 | | 1 | 00/80E4 : 01 | dfb 1 + 253 | 1 Unidrive4.asm 241 | Data | 11 | | 2 | 00/80E5 : 01 81 | dw {ozunid_18} + 254 | 1 Unidrive4.asm 242 | Data | 11 | | 1 | 00/80E7 : 06 | dfb {6} + 255 | 1 Unidrive4.asm 243 | Comment | 11 | | 0 | 00/80E8 | * + 256 | 1 Unidrive4.asm 244 | Comment | 11 | | 0 | 00/80E8 | *** Download *** + 257 | 1 Unidrive4.asm 245 | Empty | 11 | | 0 | 00/80E8 | ozunid_13 + 258 | 1 Unidrive4.asm 245 | Equivalence | 11 | | 0 | 00/80E8 | DOWNLOAD equ ozunid_13 + 259 | 1 Unidrive4.asm 246 | Data | 11 | | 1 | 00/80E8 : 03 | dfb 3 + 260 | 1 Unidrive4.asm 247 | Data | 11 | | 1 | 00/80E9 : 01 | dfb 1 + 261 | 1 Unidrive4.asm 248 | Data | 11 | | 2 | 00/80EA : 05 81 | dw {ozunid_19} + 262 | 1 Unidrive4.asm 249 | Data | 11 | | 1 | 00/80EC : 07 | dfb {7} + 263 | 1 Unidrive4.asm 250 | Comment | 11 | | 0 | 00/80ED | * + 264 | 1 Unidrive4.asm 251 | Comment | 11 | | 0 | 00/80ED | *** Execute *** + 265 | 1 Unidrive4.asm 252 | Empty | 11 | | 0 | 00/80ED | ozunid_14 + 266 | 1 Unidrive4.asm 252 | Equivalence | 11 | | 0 | 00/80ED | EXE equ ozunid_14 + 267 | 1 Unidrive4.asm 253 | Data | 11 | | 1 | 00/80ED : 03 | dfb 3 + 268 | 1 Unidrive4.asm 254 | Data | 11 | | 1 | 00/80EE : 01 | dfb 1 + 269 | 1 Unidrive4.asm 255 | Data | 11 | | 2 | 00/80EF : F9 80 | dw {ozunid_17} + 270 | 1 Unidrive4.asm 256 | Data | 11 | | 1 | 00/80F1 : 05 | dfb {5} + 271 | 1 Unidrive4.asm 257 | Comment | 11 | | 0 | 00/80F2 | *** Eject *** + 272 | 1 Unidrive4.asm 258 | Empty | 11 | | 0 | 00/80F2 | ozunid_15 + 273 | 1 Unidrive4.asm 258 | Equivalence | 11 | | 0 | 00/80F2 | E_JECT equ ozunid_15 + 274 | 1 Unidrive4.asm 259 | Data | 11 | | 1 | 00/80F2 : 03 | dfb 3 + 275 | 1 Unidrive4.asm 260 | Data | 11 | | 1 | 00/80F3 : 01 | dfb 1 + 276 | 1 Unidrive4.asm 261 | Data | 11 | | 2 | 00/80F4 : F7 80 | dw {ozunid_16} + 277 | 1 Unidrive4.asm 262 | Data | 11 | | 1 | 00/80F6 : 04 | dfb {4} + 278 | 1 Unidrive4.asm 263 | Comment | 11 | | 0 | 00/80F7 | * + 279 | 1 Unidrive4.asm 264 | Comment | 11 | | 0 | 00/80F7 | ******** CONTROL LISTS ******** + 280 | 1 Unidrive4.asm 265 | Comment | 11 | | 0 | 00/80F7 | * + 281 | 1 Unidrive4.asm 266 | Comment | 11 | | 0 | 00/80F7 | * + 282 | 1 Unidrive4.asm 267 | Comment | 11 | | 0 | 00/80F7 | *** Eject *** + 283 | 1 Unidrive4.asm 268 | Empty | 11 | | 0 | 00/80F7 | ozunid_16 + 284 | 1 Unidrive4.asm 268 | Equivalence | 11 | | 0 | 00/80F7 | CNTL_LIST1 equ ozunid_16 + 285 | 1 Unidrive4.asm 269 | Data | 11 | | 2 | 00/80F7 : 00 00 | dw $0000 + 286 | 1 Unidrive4.asm 270 | Comment | 11 | | 0 | 00/80F9 | * + 287 | 1 Unidrive4.asm 271 | Comment | 11 | | 0 | 00/80F9 | *** Execute *** + 288 | 1 Unidrive4.asm 272 | Empty | 11 | | 0 | 00/80F9 | ozunid_17 + 289 | 1 Unidrive4.asm 272 | Equivalence | 11 | | 0 | 00/80F9 | CNTL_LIST2 equ ozunid_17 + 290 | 1 Unidrive4.asm 273 | Data | 11 | | 1 | 00/80F9 : 06 | Clow_byte dfb $06 + 291 | 1 Unidrive4.asm 274 | Data | 11 | | 1 | 00/80FA : 00 | Chigh_byte dfb $00 + 292 | 1 Unidrive4.asm 275 | Data | 11 | | 1 | 00/80FB : 00 | AccValue dfb $00 ; Input Value + 293 | 1 Unidrive4.asm 276 | Data | 11 | | 1 | 00/80FC : 00 | X_reg dfb $00 ; Input Value (N1) + 294 | 1 Unidrive4.asm 277 | Data | 11 | | 1 | 00/80FD : 00 | Y_reg dfb $00 ; Input Value (N2) + 295 | 1 Unidrive4.asm 278 | Data | 11 | | 1 | 00/80FE : 00 | ProStatus dfb $00 ; Input Value + 296 | 1 Unidrive4.asm 279 | Data | 11 | | 1 | 00/80FF : 05 | LowPC_reg dfb $05 ; Like ORG + 297 | 1 Unidrive4.asm 280 | Data | 11 | | 1 | 00/8100 : 05 | HighPC_reg dfb $05 + 298 | 1 Unidrive4.asm 281 | Comment | 11 | | 0 | 00/8101 | * + 299 | 1 Unidrive4.asm 282 | Comment | 11 | | 0 | 00/8101 | *** Set Address *** + 300 | 1 Unidrive4.asm 283 | Empty | 11 | | 0 | 00/8101 | ozunid_18 + 301 | 1 Unidrive4.asm 283 | Equivalence | 11 | | 0 | 00/8101 | CNTL_LIST3 equ ozunid_18 + 302 | 1 Unidrive4.asm 284 | Data | 11 | | 1 | 00/8101 : 02 | CountL_byte dfb $02 + 303 | 1 Unidrive4.asm 285 | Data | 11 | | 1 | 00/8102 : 00 | CountH_byte dfb $00 + 304 | 1 Unidrive4.asm 286 | Data | 11 | | 1 | 00/8103 : 00 | LByte_Addr dfb $00 ; ORG of Unidisk program + 305 | 1 Unidrive4.asm 287 | Data | 11 | | 1 | 00/8104 : 05 | HByte_Addr dfb $05 + 306 | 1 Unidrive4.asm 288 | Comment | 11 | | 0 | 00/8105 | * + 307 | 1 Unidrive4.asm 289 | Comment | 11 | | 0 | 00/8105 | *** Download *** + 308 | 1 Unidrive4.asm 290 | Empty | 11 | | 0 | 00/8105 | ozunid_19 + 309 | 1 Unidrive4.asm 290 | Equivalence | 11 | | 0 | 00/8105 | CNTL_LIST4 equ ozunid_19 + 310 | 1 Unidrive4.asm 291 | Data | 11 | | 1 | 00/8105 : 38 | LenghtL_byte dfb $38 ;<----- Lenght of Unidisk program Lo - Byte 312 byte + 311 | 1 Unidrive4.asm 292 | Data | 11 | | 1 | 00/8106 : 01 | LenghtH_byte dfb $01 ;<----- Lenght of Unidisk program Hi Byte + 312 | 1 Unidrive4.asm 293 | Comment | 11 | | 0 | 00/8107 | * + 313 | 1 Unidrive4.asm 294 | Comment | 11 | | 0 | 00/8107 | *** Start UNIDISK Program *** + 314 | 1 Unidrive4.asm 295 | Directive | 11 | | 0 | 00/8107 | org $0500 + 315 | 1 Unidrive4.asm 296 | Empty | 11 | | 0 | 00/0500 | + 316 | 1 Unidrive4.asm 297 | Equivalence | 11 | | 0 | 00/0500 | SIGN EQU $C0 ;$EB ; $F3 + 317 | 1 Unidrive4.asm 298 | Empty | 11 | | 0 | 00/0500 | + 318 | 1 Unidrive4.asm 299 | Comment | 11 | | 0 | 00/0500 | ** FP2 4 Bytes ** + 319 | 1 Unidrive4.asm 300 | Equivalence | 11 | | 0 | 00/0500 | X2 EQU $C1 ;$EC ; $F4 + 320 | 1 Unidrive4.asm 301 | Equivalence | 11 | | 0 | 00/0500 | M2 EQU $C2 ;$ED ; $F5 - $F7 + 321 | 1 Unidrive4.asm 302 | Empty | 11 | | 0 | 00/0500 | + 322 | 1 Unidrive4.asm 303 | Comment | 11 | | 0 | 00/0500 | ** FP1 4 Bytes + E extension ** + 323 | 1 Unidrive4.asm 304 | Equivalence | 11 | | 0 | 00/0500 | X1 EQU $C5 ;$FA ; $F8 + 324 | 1 Unidrive4.asm 305 | Equivalence | 11 | | 0 | 00/0500 | M1 EQU $C6 ;$FB ; $F9 - $FB + 325 | 1 Unidrive4.asm 306 | Equivalence | 11 | | 0 | 00/0500 | E EQU $C9 ;$FE ; $FC + 326 | 1 Unidrive4.asm 307 | Empty | 11 | | 0 | 00/0500 | + 327 | 1 Unidrive4.asm 308 | Equivalence | 11 | | 0 | 00/0500 | OVLOC EQU $C10 ;$3F5 ;Overflow routine is not implemented at now) + 328 | 1 Unidrive4.asm 309 | Comment | 11 | | 0 | 00/0500 | * + 329 | 1 Unidrive4.asm 310 | Comment | 11 | | 0 | 00/0500 | ** Main program ** + 330 | 1 Unidrive4.asm 311 | Comment | 11 | | 0 | 00/0500 | * + 331 | 1 Unidrive4.asm 312 | Comment | 11 | | 0 | 00/0500 | * CHK if is the second execution * + 332 | 1 Unidrive4.asm 313 | Empty | 11 | | 0 | 00/0500 | + 333 | 1 Unidrive4.asm 314 | Code | 11 | | 2 | 00/0500 : C9 02 | cmp #02 + 334 | 1 Unidrive4.asm 315 | Code | 11 | | 2 | 00/0502 : F0 32 | beq SECOND + 335 | 1 Unidrive4.asm 316 | Empty | 11 | | 0 | 00/0504 | + 336 | 1 Unidrive4.asm 317 | Comment | 11 | | 0 | 00/0504 | ** Input data to Zero Page ** + 337 | 1 Unidrive4.asm 318 | Empty | 11 | | 0 | 00/0504 | + 338 | 1 Unidrive4.asm 319 | Comment | 11 | | 0 | 00/0504 | ** FP1 ** + 339 | 1 Unidrive4.asm 320 | Code | 11 | | 3 | 00/0504 : AD 31 06 | lda FP1 + 340 | 1 Unidrive4.asm 321 | Code | 11 | | 2 | 00/0507 : 85 C5 | sta {$C5} + 341 | 1 Unidrive4.asm 322 | Empty | 11 | | 0 | 00/0509 | + 342 | 1 Unidrive4.asm 323 | Code | 11 | | 3 | 00/0509 : AD 32 06 | lda FP1+1 + 343 | 1 Unidrive4.asm 324 | Code | 11 | | 2 | 00/050C : 85 C6 | sta {$C6} + 344 | 1 Unidrive4.asm 325 | Code | 11 | | 3 | 00/050E : AD 33 06 | lda FP1+2 + 345 | 1 Unidrive4.asm 326 | Code | 11 | | 2 | 00/0511 : 85 C7 | sta {$C6}+1 + 346 | 1 Unidrive4.asm 327 | Code | 11 | | 3 | 00/0513 : AD 34 06 | lda FP1+3 + 347 | 1 Unidrive4.asm 328 | Code | 11 | | 2 | 00/0516 : 85 C8 | sta {$C6}+2 + 348 | 1 Unidrive4.asm 329 | Empty | 11 | | 0 | 00/0518 | + 349 | 1 Unidrive4.asm 330 | Comment | 11 | | 0 | 00/0518 | ** FP2 ** + 350 | 1 Unidrive4.asm 331 | Code | 11 | | 3 | 00/0518 : AD 35 06 | lda FP2 + 351 | 1 Unidrive4.asm 332 | Code | 11 | | 2 | 00/051B : 85 C1 | sta {$C1} + 352 | 1 Unidrive4.asm 333 | Empty | 11 | | 0 | 00/051D | + 353 | 1 Unidrive4.asm 334 | Code | 11 | | 3 | 00/051D : AD 36 06 | lda FP2+1 + 354 | 1 Unidrive4.asm 335 | Code | 11 | | 2 | 00/0520 : 85 C2 | sta {$C2} + 355 | 1 Unidrive4.asm 336 | Code | 11 | | 3 | 00/0522 : AD 37 06 | lda FP2+2 + 356 | 1 Unidrive4.asm 337 | Code | 11 | | 2 | 00/0525 : 85 C3 | sta {$C2}+1 + 357 | 1 Unidrive4.asm 338 | Code | 11 | | 3 | 00/0527 : AD 38 06 | lda FP2+3 + 358 | 1 Unidrive4.asm 339 | Code | 11 | | 2 | 00/052A : 85 C4 | sta {$C2}+2 + 359 | 1 Unidrive4.asm 340 | Empty | 11 | | 0 | 00/052C | + 360 | 1 Unidrive4.asm 341 | Comment | 11 | | 0 | 00/052C | *** Target Function *** + 361 | 1 Unidrive4.asm 342 | Comment | 11 | | 0 | 00/052C | * Y=N1+N2 + 362 | 1 Unidrive4.asm 343 | Empty | 11 | | 0 | 00/052C | + 363 | 1 Unidrive4.asm 344 | Comment | 11 | | 0 | 00/052C | ** Simple ADD ** + 364 | 1 Unidrive4.asm 345 | Code | 11 | | 3 | 00/052C : 20 82 05 | jsr FADD + 365 | 1 Unidrive4.asm 346 | Empty | 11 | | 0 | 00/052F | + 366 | 1 Unidrive4.asm 347 | Comment | 11 | | 0 | 00/052F | *** Output Data result FP1 to Unidisk registers First Time first 3 Byte*** + 367 | 1 Unidrive4.asm 348 | Code | 11 | | 2 | 00/052F : A5 C5 | lda {$C5} + 368 | 1 Unidrive4.asm 349 | Code | 11 | | 2 | 00/0531 : A6 C6 | ldx {$C6} + 369 | 1 Unidrive4.asm 350 | Code | 11 | | 2 | 00/0533 : A4 C7 | ldy {$C6}+1 + 370 | 1 Unidrive4.asm 351 | Empty | 11 | | 0 | 00/0535 | + 371 | 1 Unidrive4.asm 352 | Code | 11 | | 1 | 00/0535 : 60 | rts + 372 | 1 Unidrive4.asm 353 | Comment | 11 | | 0 | 00/0536 | *** Output Data result FP1 to Unidisk registers Second Time latest 1 Byte*** + 373 | 1 Unidrive4.asm 354 | Code | 11 | | 2 | 00/0536 : A5 C8 | SECOND lda {$C6}+2 + 374 | 1 Unidrive4.asm 355 | Empty | 11 | | 0 | 00/0538 | + 375 | 1 Unidrive4.asm 356 | Code | 11 | | 1 | 00/0538 : 60 | rts + 376 | 1 Unidrive4.asm 357 | Empty | 11 | | 0 | 00/0539 | + 377 | 1 Unidrive4.asm 358 | Comment | 11 | | 0 | 00/0539 | ** FP Routine ** + 378 | 1 Unidrive4.asm 359 | Comment | 11 | | 0 | 00/0539 | * + 379 | 1 Unidrive4.asm 360 | Comment | 11 | | 0 | 00/0539 | *********************** + 380 | 1 Unidrive4.asm 361 | Comment | 11 | | 0 | 00/0539 | * * + 381 | 1 Unidrive4.asm 362 | Comment | 11 | | 0 | 00/0539 | * APPLE-II FLOATING * + 382 | 1 Unidrive4.asm 363 | Comment | 11 | | 0 | 00/0539 | * POINT ROUTINES * + 383 | 1 Unidrive4.asm 364 | Comment | 11 | | 0 | 00/0539 | * * + 384 | 1 Unidrive4.asm 365 | Comment | 11 | | 0 | 00/0539 | * COPYRIGHT 1977 BY * + 385 | 1 Unidrive4.asm 366 | Comment | 11 | | 0 | 00/0539 | * APPLE COMPUTER INC. * + 386 | 1 Unidrive4.asm 367 | Comment | 11 | | 0 | 00/0539 | * * + 387 | 1 Unidrive4.asm 368 | Comment | 11 | | 0 | 00/0539 | * ALL RIGHTS RESERVED * + 388 | 1 Unidrive4.asm 369 | Comment | 11 | | 0 | 00/0539 | * * + 389 | 1 Unidrive4.asm 370 | Comment | 11 | | 0 | 00/0539 | * S. WOZNIAK * + 390 | 1 Unidrive4.asm 371 | Comment | 11 | | 0 | 00/0539 | * * + 391 | 1 Unidrive4.asm 372 | Comment | 11 | | 0 | 00/0539 | *********************** + 392 | 1 Unidrive4.asm 373 | Comment | 11 | | 0 | 00/0539 | * TITLE "FLOATING POINT ROUTINES for Unidisk memory" + 393 | 1 Unidrive4.asm 374 | Comment | 11 | | 0 | 00/0539 | * + 394 | 1 Unidrive4.asm 375 | Empty | 11 | | 0 | 00/0539 | + 395 | 1 Unidrive4.asm 376 | Comment | 11 | | 0 | 00/0539 | * ORG $300 + 396 | 1 Unidrive4.asm 377 | Empty | 11 | | 0 | 00/0539 | + 397 | 1 Unidrive4.asm 378 | Code | 11 | | 1 | 00/0539 : 18 | ADD CLC ;CLEAR CARRY + 398 | 1 Unidrive4.asm 379 | Code | 11 | | 2 | 00/053A : A2 02 | LDX #$2 ;INDEX FOR 3-BYTE ADD. + 399 | 1 Unidrive4.asm 380 | Code | 11 | | 2 | 00/053C : B5 C6 | ADD1 LDA {$C6},X + 400 | 1 Unidrive4.asm 381 | Code | 11 | | 2 | 00/053E : 75 C2 | ADC {$C2},X ;ADD A BYTE OF MANT2 TO MANT1 + 401 | 1 Unidrive4.asm 382 | Code | 11 | | 2 | 00/0540 : 95 C6 | STA {$C6},X + 402 | 1 Unidrive4.asm 383 | Code | 11 | | 1 | 00/0542 : CA | DEX ;INDEX TO NEXT MORE SIGNIF. BYTE. + 403 | 1 Unidrive4.asm 384 | Code | 11 | | 2 | 00/0543 : 10 F7 | BPL ADD1 ;LOOP UNTIL DONE. + 404 | 1 Unidrive4.asm 385 | Code | 11 | | 1 | 00/0545 : 60 | RTS ;RETURN + 405 | 1 Unidrive4.asm 386 | Code | 11 | | 2 | 00/0546 : 06 C0 | MD1 ASL {$C0} ;CLEAR LSB OF SIGN. + 406 | 1 Unidrive4.asm 387 | Code | 11 | | 3 | 00/0548 : 20 4B 05 | JSR ABSWAP ;ABS VAL OF M1, THEN SWAP WITH M2 + 407 | 1 Unidrive4.asm 388 | Code | 11 | | 2 | 00/054B : 24 C6 | ABSWAP BIT {$C6} ;MANT1 NEGATIVE? + 408 | 1 Unidrive4.asm 389 | Code | 11 | | 2 | 00/054D : 10 05 | BPL ABSWAP1 ;NO, SWAP WITH MANT2 AND RETURN. + 409 | 1 Unidrive4.asm 390 | Code | 11 | | 3 | 00/054F : 20 B8 05 | JSR FCOMPL ;YES, COMPLEMENT IT. + 410 | 1 Unidrive4.asm 391 | Code | 11 | | 2 | 00/0552 : E6 C0 | INC {$C0} ;INCR SIGN, COMPLEMENTING LSB. + 411 | 1 Unidrive4.asm 392 | Code | 11 | | 1 | 00/0554 : 38 | ABSWAP1 SEC ;SET CARRY FOR RETURN TO MUL/DIV. + 412 | 1 Unidrive4.asm 393 | Code | 11 | | 2 | 00/0555 : A2 04 | SWAP LDX #$4 ;INDEX FOR 4 BYTE SWAP. + 413 | 1 Unidrive4.asm 394 | Code | 11 | | 2 | 00/0557 : 94 C8 | SWAP1 STY {$C9}-1,X + 414 | 1 Unidrive4.asm 395 | Code | 11 | | 2 | 00/0559 : B5 C4 | LDA {$C5}-1,X ;SWAP A BYTE OF EXP/MANT1 WITH + 415 | 1 Unidrive4.asm 396 | Code | 11 | | 2 | 00/055B : B4 C0 | LDY {$C1}-1,X ;EXP/MANT2 AND LEAVE A COPY OF + 416 | 1 Unidrive4.asm 397 | Code | 11 | | 2 | 00/055D : 94 C4 | STY {$C5}-1,X ;MANT1 IN E (3 BYTES). E+3 USED + 417 | 1 Unidrive4.asm 398 | Code | 11 | | 2 | 00/055F : 95 C0 | STA {$C1}-1,X + 418 | 1 Unidrive4.asm 399 | Code | 11 | | 1 | 00/0561 : CA | DEX ;ADVANCE INDEX TO NEXT BYTE + 419 | 1 Unidrive4.asm 400 | Code | 11 | | 2 | 00/0562 : D0 F3 | BNE SWAP1 ;LOOP UNTIL DONE. + 420 | 1 Unidrive4.asm 401 | Code | 11 | | 1 | 00/0564 : 60 | RTS ;RETURN + 421 | 1 Unidrive4.asm 402 | Code | 11 | | 2 | 00/0565 : A9 8E | FLOAT LDA #$8E ;INIT EXP1 TO 14, <--------------- int to fp + 422 | 1 Unidrive4.asm 403 | Code | 11 | | 2 | 00/0567 : 85 C5 | STA {$C5} ;THEN NORMALIZE TO FLOAT. + 423 | 1 Unidrive4.asm 404 | Code | 11 | | 2 | 00/0569 : A5 C6 | NORM1 LDA {$C6} ;HIGH-ORDER MANT1 BYTE. + 424 | 1 Unidrive4.asm 405 | Code | 11 | | 2 | 00/056B : C9 C0 | CMP #$C0 ;UPPER TWO BITS UNEQUAL? + 425 | 1 Unidrive4.asm 406 | Code | 11 | | 2 | 00/056D : 30 0C | BMI RTS1 ;YES, RETURN WITH MANT1 NORMALIZED + 426 | 1 Unidrive4.asm 407 | Code | 11 | | 2 | 00/056F : C6 C5 | DEC {$C5} ;DECREMENT EXP1. + 427 | 1 Unidrive4.asm 408 | Code | 11 | | 2 | 00/0571 : 06 C8 | ASL {$C6}+2 + 428 | 1 Unidrive4.asm 409 | Code | 11 | | 2 | 00/0573 : 26 C7 | ROL {$C6}+1 ;SHIFT MANT1 (3 BYTES) LEFT. + 429 | 1 Unidrive4.asm 410 | Code | 11 | | 2 | 00/0575 : 26 C6 | ROL {$C6} + 430 | 1 Unidrive4.asm 411 | Code | 11 | | 2 | 00/0577 : A5 C5 | NORM LDA {$C5} ;EXP1 ZERO? + 431 | 1 Unidrive4.asm 412 | Code | 11 | | 2 | 00/0579 : D0 EE | BNE NORM1 ;NO, CONTINUE NORMALIZING. + 432 | 1 Unidrive4.asm 413 | Code | 11 | | 1 | 00/057B : 60 | RTS1 RTS ;RETURN. + 433 | 1 Unidrive4.asm 414 | Code | 11 | | 3 | 00/057C : 20 B8 05 | FSUB JSR FCOMPL ;CMPL MANT1,CLEARS CARRY UNLESS 0 <---- sub + 434 | 1 Unidrive4.asm 415 | Code | 11 | | 3 | 00/057F : 20 8F 05 | SWPALGN JSR ALGNSWP ;RIGHT SHIFT MANT1 OR SWAP WITH + 435 | 1 Unidrive4.asm 416 | Code | 11 | | 2 | 00/0582 : A5 C1 | FADD LDA {$C1} ;<------------------------------------- add + 436 | 1 Unidrive4.asm 417 | Code | 11 | | 2 | 00/0584 : C5 C5 | CMP {$C5} ;COMPARE EXP1 WITH EXP2. + 437 | 1 Unidrive4.asm 418 | Code | 11 | | 2 | 00/0586 : D0 F7 | BNE SWPALGN ;IF #,SWAP ADDENDS OR ALIGN MANTS. + 438 | 1 Unidrive4.asm 419 | Code | 11 | | 3 | 00/0588 : 20 39 05 | JSR ADD ;ADD ALIGNED MANTISSAS. + 439 | 1 Unidrive4.asm 420 | Code | 11 | | 2 | 00/058B : 50 EA | ADDEND BVC NORM ;NO OVERFLOW, NORMALIZE RESULT. + 440 | 1 Unidrive4.asm 421 | Code | 11 | | 2 | 00/058D : 70 05 | BVS RTLOG ;OV: SHIFT M1 RIGHT, CARRY INTO SIGN + 441 | 1 Unidrive4.asm 422 | Code | 11 | | 2 | 00/058F : 90 C4 | ALGNSWP BCC SWAP ;SWAP IF CARRY CLEAR, + 442 | 1 Unidrive4.asm 423 | Comment | 11 | | 0 | 00/0591 | * ELSE SHIFT RIGHT ARITH. + 443 | 1 Unidrive4.asm 424 | Code | 11 | | 2 | 00/0591 : A5 C6 | RTAR LDA {$C6} ;SIGN OF MANT1 INTO CARRY FOR + 444 | 1 Unidrive4.asm 425 | Code | 11 | | 1 | 00/0593 : 0A | ASL ;RIGHT ARITH SHIFT. + 445 | 1 Unidrive4.asm 426 | Code | 11 | | 2 | 00/0594 : E6 C5 | RTLOG INC {$C5} ;INCR X1 TO ADJUST FOR RIGHT SHIFT + 446 | 1 Unidrive4.asm 427 | Code | 11 | | 2 | 00/0596 : F0 75 | BEQ OVFL ;EXP1 OUT OF RANGE. + 447 | 1 Unidrive4.asm 428 | Code | 11 | | 2 | 00/0598 : A2 FA | RTLOG1 LDX #$FA ;INDEX FOR 6:BYTE RIGHT SHIFT. + 448 | 1 Unidrive4.asm 429 | Code | 11 | | 2 | 00/059A : 76 CC | ROR1 ROR {$C9}+3,X + 449 | 1 Unidrive4.asm 430 | Code | 11 | | 1 | 00/059C : E8 | INX ;NEXT BYTE OF SHIFT. + 450 | 1 Unidrive4.asm 431 | Code | 11 | | 2 | 00/059D : D0 FB | BNE ROR1 ;LOOP UNTIL DONE. + 451 | 1 Unidrive4.asm 432 | Code | 11 | | 1 | 00/059F : 60 | RTS ;RETURN. + 452 | 1 Unidrive4.asm 433 | Code | 11 | | 3 | 00/05A0 : 20 46 05 | FMUL JSR MD1 ;ABS VAL OF MANT1, MANT2 <-------------- mul + 453 | 1 Unidrive4.asm 434 | Code | 11 | | 2 | 00/05A3 : 65 C5 | ADC {$C5} ;ADD EXP1 TO EXP2 FOR PRODUCT EXP + 454 | 1 Unidrive4.asm 435 | Code | 11 | | 3 | 00/05A5 : 20 F6 05 | JSR MD2 ;CHECK PROD. EXP AND PREP. FOR MUL + 455 | 1 Unidrive4.asm 436 | Code | 11 | | 1 | 00/05A8 : 18 | CLC ;CLEAR CARRY FOR FIRST BIT. + 456 | 1 Unidrive4.asm 437 | Code | 11 | | 3 | 00/05A9 : 20 98 05 | MUL1 JSR RTLOG1 ;M1 AND E RIGHT (PROD AND MPLIER) + 457 | 1 Unidrive4.asm 438 | Code | 11 | | 2 | 00/05AC : 90 03 | BCC MUL2 ;IF CARRY CLEAR, SKIP PARTIAL PROD + 458 | 1 Unidrive4.asm 439 | Code | 11 | | 3 | 00/05AE : 20 39 05 | JSR ADD ;ADD MULTIPLICAND TO PRODUCT. + 459 | 1 Unidrive4.asm 440 | Code | 11 | | 1 | 00/05B1 : 88 | MUL2 DEY ;NEXT MUL ITERATION. + 460 | 1 Unidrive4.asm 441 | Code | 11 | | 2 | 00/05B2 : 10 F5 | BPL MUL1 ;LOOP UNTIL DONE. + 461 | 1 Unidrive4.asm 442 | Code | 11 | | 2 | 00/05B4 : 46 C0 | MDEND LSR {$C0} ;TEST SIGN LSB. + 462 | 1 Unidrive4.asm 443 | Code | 11 | | 2 | 00/05B6 : 90 BF | NORMX BCC NORM ;IF EVEN,NORMALIZE PROD,ELSE COMP + 463 | 1 Unidrive4.asm 444 | Code | 11 | | 1 | 00/05B8 : 38 | FCOMPL SEC ;SET CARRY FOR SUBTRACT. <--------------- not + 464 | 1 Unidrive4.asm 445 | Code | 11 | | 2 | 00/05B9 : A2 03 | LDX #$3 ;INDEX FOR 3 BYTE SUBTRACT. + 465 | 1 Unidrive4.asm 446 | Code | 11 | | 2 | 00/05BB : A9 00 | COMPL1 LDA #$0 ;CLEAR A. + 466 | 1 Unidrive4.asm 447 | Code | 11 | | 2 | 00/05BD : F5 C5 | SBC {$C5},X ;SUBTRACT BYTE OF EXP1. + 467 | 1 Unidrive4.asm 448 | Code | 11 | | 2 | 00/05BF : 95 C5 | STA {$C5},X ;RESTORE IT. + 468 | 1 Unidrive4.asm 449 | Code | 11 | | 1 | 00/05C1 : CA | DEX ;NEXT MORE SIGNIFICANT BYTE. + 469 | 1 Unidrive4.asm 450 | Code | 11 | | 2 | 00/05C2 : D0 F7 | BNE COMPL1 ;LOOP UNTIL DONE. + 470 | 1 Unidrive4.asm 451 | Code | 11 | | 2 | 00/05C4 : F0 C5 | BEQ ADDEND ;NORMALIZE (OR SHIFT RT IF OVFL). + 471 | 1 Unidrive4.asm 452 | Code | 11 | | 3 | 00/05C6 : 20 46 05 | FDIV JSR MD1 ;TAKE ABS VAL OF MANT1, MANT2. <--------- div + 472 | 1 Unidrive4.asm 453 | Code | 11 | | 2 | 00/05C9 : E5 C5 | SBC {$C5} ;SUBTRACT EXP1 FROM EXP2. + 473 | 1 Unidrive4.asm 454 | Code | 11 | | 3 | 00/05CB : 20 F6 05 | JSR MD2 ;SAVE AS QUOTIENT EXP. + 474 | 1 Unidrive4.asm 455 | Code | 11 | | 1 | 00/05CE : 38 | DIV1 SEC ;SET CARRY FOR SUBTRACT. + 475 | 1 Unidrive4.asm 456 | Code | 11 | | 2 | 00/05CF : A2 02 | LDX #$2 ;INDEX FOR 3-BYTE SUBTRACTION. + 476 | 1 Unidrive4.asm 457 | Code | 11 | | 2 | 00/05D1 : B5 C2 | DIV2 LDA {$C2},X + 477 | 1 Unidrive4.asm 458 | Code | 11 | | 2 | 00/05D3 : F5 C9 | SBC {$C9},X ;SUBTRACT A BYTE OF E FROM MANT2. + 478 | 1 Unidrive4.asm 459 | Code | 11 | | 1 | 00/05D5 : 48 | PHA ;SAVE ON STACK. + 479 | 1 Unidrive4.asm 460 | Code | 11 | | 1 | 00/05D6 : CA | DEX ;NEXT MORE SIGNIFICANT BYTE. + 480 | 1 Unidrive4.asm 461 | Code | 11 | | 2 | 00/05D7 : 10 F8 | BPL DIV2 ;LOOP UNTIL DONE. + 481 | 1 Unidrive4.asm 462 | Code | 11 | | 2 | 00/05D9 : A2 FD | LDX #$FD ;INDEX FOR 3-BYTE CONDITIONAL MOVE + 482 | 1 Unidrive4.asm 463 | Code | 11 | | 1 | 00/05DB : 68 | DIV3 PLA ;PULL BYTE OF DIFFERENCE OFF STACK + 483 | 1 Unidrive4.asm 464 | Code | 11 | | 2 | 00/05DC : 90 02 | BCC DIV4 ;IF M2 Date: Sun, 15 Feb 2015 22:41:16 +0100 Subject: [PATCH 02/12] Fix errors. --- AppleII/FP operations/Unidrive4.asm | 1036 +++++++++++++-------------- 1 file changed, 518 insertions(+), 518 deletions(-) diff --git a/AppleII/FP operations/Unidrive4.asm b/AppleII/FP operations/Unidrive4.asm index 46d6879..da55731 100644 --- a/AppleII/FP operations/Unidrive4.asm +++ b/AppleII/FP operations/Unidrive4.asm @@ -1,519 +1,519 @@ -* -* Unidisk 3.5 Driver -* -* 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 . -* -* 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 . -* -* -* @com.wudsn.ide.asm.hardware=APPLE2 -* -* Protocol Converter Call - XC -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 ;29 -*** Monitor routines *** -COut equ $FDED ;Console output ASCII -CROut equ $FD8E ;Carriage return -** 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 -***************************************************** - -* -* Find a Protocol Converter in one of the slots. -START jsr FindPC - bcs Error -*** Eject *** - jsr Dispatch - dfb ControlCmd - dw E_JECT -*** Set Address *** - jsr Dispatch - dfb ControlCmd - dw SET_ADD -* - jsr EXEC ; Jump the Error routine - rts -********************************************* -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 $8238 ; Absolute addressing - lda N1+1 ;M1 (1) - sta $8239 - lda N1+2 ;M1 (2) - sta $823A - lda N1+2 ;M1 (3) - sta $823B - - ** 4 Byte N2 to FP2 ** - lda N2 ;X2 - sta $823C - lda N2+1 ;M2 (1) - sta $823D - lda N2+2 ;M2 (2) - sta $823E - lda N2+2 ;M2 (3) - sta $823F - -*** Download *** - jsr Dispatch - dfb ControlCmd - dw DOWNLOAD -** Set Unidisk Registers ** - lda #01 ;First time - sta UNIAcc_reg -** 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 N1 - lda UNIX_reg - sta N1+1 ; Store the result - lda UNIY_reg - sta N1+2 - -** Second time execute ** - lda #02 ; Second time - sta UNIAcc_reg -** 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 N1+2 -* - 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 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 $00 ; Input Value (N1) -Y_reg dfb $00 ; Input Value (N2) -ProStatus dfb $00 ; Input Value -LowPC_reg dfb $05 ; Like ORG -HighPC_reg dfb $05 -* -*** Set Address *** -CNTL_LIST3 equ * -CountL_byte dfb $02 -CountH_byte dfb $00 -LByte_Addr dfb $00 ; ORG of Unidisk program -HByte_Addr dfb $05 -* -*** Download *** -CNTL_LIST4 equ * -LenghtL_byte dfb $38 ;<----- Lenght of Unidisk program Lo - Byte 312 byte -LenghtH_byte dfb $01 ;<----- Lenght of Unidisk program Hi Byte -* -*** Start UNIDISK Program *** - org $0500 - -SIGN EQU $C0 ;$EB ; $F3 - - ** FP2 4 Bytes ** -X2 EQU $C1 ;$EC ; $F4 -M2 EQU $C2 ;$ED ; $F5 - $F7 - - ** FP1 4 Bytes + E extension ** -X1 EQU $C5 ;$FA ; $F8 -M1 EQU $C6 ;$FB ; $F9 - $FB -E EQU $C9 ;$FE ; $FC - -OVLOC EQU $C10 ;$3F5 ;Overflow routine is not implemented at now) -* -** Main program ** -* -* CHK if is the second execution * - - cmp #02 - beq SECOND - -** Input data to Zero Page ** - - ** FP1 ** - lda FP1 - sta X1 - - lda FP1+1 - sta M1 - lda FP1+2 - sta M1+1 - lda FP1+3 - sta M1+2 - - ** FP2 ** - lda FP2 - sta X2 - - lda FP2+1 - sta M2 - lda FP2+2 - sta M2+1 - lda FP2+3 - sta M2+2 - -*** Target Function *** -* Y=N1+N2 - -** Simple ADD ** - jsr FADD - -*** Output Data result FP1 to Unidisk registers First Time first 3 Byte*** - lda X1 - ldx M1 - ldy M1+1 - - rts -*** Output Data result FP1 to Unidisk registers Second Time latest 1 Byte*** -SECOND lda M1+2 - - rts - -** FP Routine ** -* - *********************** - * * - * APPLE-II FLOATING * - * POINT ROUTINES * - * * - * COPYRIGHT 1977 BY * - * APPLE COMPUTER INC. * - * * - * ALL RIGHTS RESERVED * - * * - * S. WOZNIAK * - * * - *********************** -* TITLE "FLOATING POINT ROUTINES for Unidisk memory" -* - -* ORG $300 - -ADD CLC ;CLEAR CARRY - LDX #$2 ;INDEX FOR 3-BYTE ADD. -ADD1 LDA M1,X - ADC M2,X ;ADD A BYTE OF MANT2 TO MANT1 - STA M1,X - DEX ;INDEX TO NEXT MORE SIGNIF. BYTE. - BPL ADD1 ;LOOP UNTIL DONE. - RTS ;RETURN -MD1 ASL SIGN ;CLEAR LSB OF SIGN. - JSR ABSWAP ;ABS VAL OF M1, THEN SWAP WITH M2 -ABSWAP BIT M1 ;MANT1 NEGATIVE? - BPL ABSWAP1 ;NO, SWAP WITH MANT2 AND RETURN. - JSR FCOMPL ;YES, COMPLEMENT IT. - INC SIGN ;INCR SIGN, COMPLEMENTING LSB. -ABSWAP1 SEC ;SET CARRY FOR RETURN TO MUL/DIV. -SWAP LDX #$4 ;INDEX FOR 4 BYTE SWAP. -SWAP1 STY E-1,X - LDA X1-1,X ;SWAP A BYTE OF EXP/MANT1 WITH - LDY X2-1,X ;EXP/MANT2 AND LEAVE A COPY OF - STY X1-1,X ;MANT1 IN E (3 BYTES). E+3 USED - STA X2-1,X - DEX ;ADVANCE INDEX TO NEXT BYTE - BNE SWAP1 ;LOOP UNTIL DONE. - RTS ;RETURN -FLOAT LDA #$8E ;INIT EXP1 TO 14, <--------------- int to fp - STA X1 ;THEN NORMALIZE TO FLOAT. -NORM1 LDA M1 ;HIGH-ORDER MANT1 BYTE. - CMP #$C0 ;UPPER TWO BITS UNEQUAL? - BMI RTS1 ;YES, RETURN WITH MANT1 NORMALIZED - DEC X1 ;DECREMENT EXP1. - ASL M1+2 - ROL M1+1 ;SHIFT MANT1 (3 BYTES) LEFT. - ROL M1 -NORM LDA X1 ;EXP1 ZERO? - BNE NORM1 ;NO, CONTINUE NORMALIZING. -RTS1 RTS ;RETURN. -FSUB JSR FCOMPL ;CMPL MANT1,CLEARS CARRY UNLESS 0 <---- sub -SWPALGN JSR ALGNSWP ;RIGHT SHIFT MANT1 OR SWAP WITH -FADD LDA X2 ;<------------------------------------- add - CMP X1 ;COMPARE EXP1 WITH EXP2. - BNE SWPALGN ;IF #,SWAP ADDENDS OR ALIGN MANTS. - JSR ADD ;ADD ALIGNED MANTISSAS. -ADDEND BVC NORM ;NO OVERFLOW, NORMALIZE RESULT. - BVS RTLOG ;OV: SHIFT M1 RIGHT, CARRY INTO SIGN -ALGNSWP BCC SWAP ;SWAP IF CARRY CLEAR, - * ELSE SHIFT RIGHT ARITH. -RTAR LDA M1 ;SIGN OF MANT1 INTO CARRY FOR - ASL ;RIGHT ARITH SHIFT. -RTLOG INC X1 ;INCR X1 TO ADJUST FOR RIGHT SHIFT - BEQ OVFL ;EXP1 OUT OF RANGE. -RTLOG1 LDX #$FA ;INDEX FOR 6:BYTE RIGHT SHIFT. -ROR1 ROR E+3,X - INX ;NEXT BYTE OF SHIFT. - BNE ROR1 ;LOOP UNTIL DONE. - RTS ;RETURN. -FMUL JSR MD1 ;ABS VAL OF MANT1, MANT2 <-------------- mul - ADC X1 ;ADD EXP1 TO EXP2 FOR PRODUCT EXP - JSR MD2 ;CHECK PROD. EXP AND PREP. FOR MUL - CLC ;CLEAR CARRY FOR FIRST BIT. -MUL1 JSR RTLOG1 ;M1 AND E RIGHT (PROD AND MPLIER) - BCC MUL2 ;IF CARRY CLEAR, SKIP PARTIAL PROD - JSR ADD ;ADD MULTIPLICAND TO PRODUCT. -MUL2 DEY ;NEXT MUL ITERATION. - BPL MUL1 ;LOOP UNTIL DONE. -MDEND LSR SIGN ;TEST SIGN LSB. -NORMX BCC NORM ;IF EVEN,NORMALIZE PROD,ELSE COMP -FCOMPL SEC ;SET CARRY FOR SUBTRACT. <--------------- not - LDX #$3 ;INDEX FOR 3 BYTE SUBTRACT. -COMPL1 LDA #$0 ;CLEAR A. - SBC X1,X ;SUBTRACT BYTE OF EXP1. - STA X1,X ;RESTORE IT. - DEX ;NEXT MORE SIGNIFICANT BYTE. - BNE COMPL1 ;LOOP UNTIL DONE. - BEQ ADDEND ;NORMALIZE (OR SHIFT RT IF OVFL). -FDIV JSR MD1 ;TAKE ABS VAL OF MANT1, MANT2. <--------- div - SBC X1 ;SUBTRACT EXP1 FROM EXP2. - JSR MD2 ;SAVE AS QUOTIENT EXP. -DIV1 SEC ;SET CARRY FOR SUBTRACT. - LDX #$2 ;INDEX FOR 3-BYTE SUBTRACTION. -DIV2 LDA M2,X - SBC E,X ;SUBTRACT A BYTE OF E FROM MANT2. - PHA ;SAVE ON STACK. - DEX ;NEXT MORE SIGNIFICANT BYTE. - BPL DIV2 ;LOOP UNTIL DONE. - LDX #$FD ;INDEX FOR 3-BYTE CONDITIONAL MOVE -DIV3 PLA ;PULL BYTE OF DIFFERENCE OFF STACK - BCC DIV4 ;IF M2 +* +* 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 . +* +* 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 . +* +* +* @com.wudsn.ide.asm.hardware=APPLE2 +* +* Protocol Converter Call + XC +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 ;29 +*** Monitor routines *** +COut equ $FDED ;Console output ASCII +CROut equ $FD8E ;Carriage return +** 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 +***************************************************** + +* +* Find a Protocol Converter in one of the slots. +START jsr FindPC + bcs Error +*** Eject *** + jsr Dispatch + dfb ControlCmd + dw E_JECT +*** Set Address *** + jsr Dispatch + dfb ControlCmd + dw SET_ADD +* + jsr EXEC ; Jump the Error routine + rts +********************************************* +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 $8238 ; Absolute addressing + lda N1+1 ;M1 (1) + sta $8239 + lda N1+2 ;M1 (2) + sta $823A + lda N1+3 ;M1 (3) + sta $823B + + ** 4 Byte N2 to FP2 ** + lda N2 ;X2 + sta $823C + lda N2+1 ;M2 (1) + sta $823D + lda N2+2 ;M2 (2) + sta $823E + lda N2+3 ;M2 (3) + sta $823F + +*** Download *** + jsr Dispatch + dfb ControlCmd + dw DOWNLOAD +** Set Unidisk Registers ** + lda #01 ;First time + sta UNIAcc_reg +** 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 N1 + lda UNIX_reg + sta N1+1 ; Store the result + lda UNIY_reg + sta N1+2 + +** Second time execute ** + lda #02 ; Second time + sta UNIAcc_reg +** 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 N1+3 +* + 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 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 $00 ; Input Value (N1) +Y_reg dfb $00 ; Input Value (N2) +ProStatus dfb $00 ; Input Value +LowPC_reg dfb $05 ; Like ORG +HighPC_reg dfb $05 +* +*** Set Address *** +CNTL_LIST3 equ * +CountL_byte dfb $02 +CountH_byte dfb $00 +LByte_Addr dfb $00 ; ORG of Unidisk program +HByte_Addr dfb $05 +* +*** Download *** +CNTL_LIST4 equ * +LenghtL_byte dfb $38 ;<----- Lenght of Unidisk program Lo - Byte 312 byte +LenghtH_byte dfb $01 ;<----- Lenght of Unidisk program Hi Byte +* +*** Start UNIDISK Program *** + org $0500 + +SIGN EQU $C0 ;$EB ; $F3 + + ** FP2 4 Bytes ** +X2 EQU $C1 ;$EC ; $F4 +M2 EQU $C2 ;$ED ; $F5 - $F7 + + ** FP1 4 Bytes + E extension ** +X1 EQU $C5 ;$FA ; $F8 +M1 EQU $C6 ;$FB ; $F9 - $FB +E EQU $C9 ;$FE ; $FC + +OVLOC EQU $C10 ;$3F5 ;Overflow routine is not implemented at now) +* +** Main program ** +* +* CHK if is the second execution * + + cmp #02 + beq SECOND + +** Input data to Zero Page ** + + ** FP1 ** + lda FP1 + sta X1 + + lda FP1+1 + sta M1 + lda FP1+2 + sta M1+1 + lda FP1+3 + sta M1+2 + + ** FP2 ** + lda FP2 + sta X2 + + lda FP2+1 + sta M2 + lda FP2+2 + sta M2+1 + lda FP2+3 + sta M2+2 + +*** Target Function *** +* Y=N1+N2 + +** Simple ADD ** + jsr FADD + +*** Output Data result FP1 to Unidisk registers First Time first 3 Byte*** + lda X1 + ldx M1 + ldy M1+1 + + rts +*** Output Data result FP1 to Unidisk registers Second Time latest 1 Byte*** +SECOND lda M1+2 + + rts + +** FP Routine ** +* + *********************** + * * + * APPLE-II FLOATING * + * POINT ROUTINES * + * * + * COPYRIGHT 1977 BY * + * APPLE COMPUTER INC. * + * * + * ALL RIGHTS RESERVED * + * * + * S. WOZNIAK * + * * + *********************** +* TITLE "FLOATING POINT ROUTINES for Unidisk memory" +* + +* ORG $300 + +ADD CLC ;CLEAR CARRY + LDX #$2 ;INDEX FOR 3-BYTE ADD. +ADD1 LDA M1,X + ADC M2,X ;ADD A BYTE OF MANT2 TO MANT1 + STA M1,X + DEX ;INDEX TO NEXT MORE SIGNIF. BYTE. + BPL ADD1 ;LOOP UNTIL DONE. + RTS ;RETURN +MD1 ASL SIGN ;CLEAR LSB OF SIGN. + JSR ABSWAP ;ABS VAL OF M1, THEN SWAP WITH M2 +ABSWAP BIT M1 ;MANT1 NEGATIVE? + BPL ABSWAP1 ;NO, SWAP WITH MANT2 AND RETURN. + JSR FCOMPL ;YES, COMPLEMENT IT. + INC SIGN ;INCR SIGN, COMPLEMENTING LSB. +ABSWAP1 SEC ;SET CARRY FOR RETURN TO MUL/DIV. +SWAP LDX #$4 ;INDEX FOR 4 BYTE SWAP. +SWAP1 STY E-1,X + LDA X1-1,X ;SWAP A BYTE OF EXP/MANT1 WITH + LDY X2-1,X ;EXP/MANT2 AND LEAVE A COPY OF + STY X1-1,X ;MANT1 IN E (3 BYTES). E+3 USED + STA X2-1,X + DEX ;ADVANCE INDEX TO NEXT BYTE + BNE SWAP1 ;LOOP UNTIL DONE. + RTS ;RETURN +FLOAT LDA #$8E ;INIT EXP1 TO 14, <--------------- int to fp + STA X1 ;THEN NORMALIZE TO FLOAT. +NORM1 LDA M1 ;HIGH-ORDER MANT1 BYTE. + CMP #$C0 ;UPPER TWO BITS UNEQUAL? + BMI RTS1 ;YES, RETURN WITH MANT1 NORMALIZED + DEC X1 ;DECREMENT EXP1. + ASL M1+2 + ROL M1+1 ;SHIFT MANT1 (3 BYTES) LEFT. + ROL M1 +NORM LDA X1 ;EXP1 ZERO? + BNE NORM1 ;NO, CONTINUE NORMALIZING. +RTS1 RTS ;RETURN. +FSUB JSR FCOMPL ;CMPL MANT1,CLEARS CARRY UNLESS 0 <---- sub +SWPALGN JSR ALGNSWP ;RIGHT SHIFT MANT1 OR SWAP WITH +FADD LDA X2 ;<------------------------------------- add + CMP X1 ;COMPARE EXP1 WITH EXP2. + BNE SWPALGN ;IF #,SWAP ADDENDS OR ALIGN MANTS. + JSR ADD ;ADD ALIGNED MANTISSAS. +ADDEND BVC NORM ;NO OVERFLOW, NORMALIZE RESULT. + BVS RTLOG ;OV: SHIFT M1 RIGHT, CARRY INTO SIGN +ALGNSWP BCC SWAP ;SWAP IF CARRY CLEAR, + * ELSE SHIFT RIGHT ARITH. +RTAR LDA M1 ;SIGN OF MANT1 INTO CARRY FOR + ASL ;RIGHT ARITH SHIFT. +RTLOG INC X1 ;INCR X1 TO ADJUST FOR RIGHT SHIFT + BEQ OVFL ;EXP1 OUT OF RANGE. +RTLOG1 LDX #$FA ;INDEX FOR 6:BYTE RIGHT SHIFT. +ROR1 ROR E+3,X + INX ;NEXT BYTE OF SHIFT. + BNE ROR1 ;LOOP UNTIL DONE. + RTS ;RETURN. +FMUL JSR MD1 ;ABS VAL OF MANT1, MANT2 <-------------- mul + ADC X1 ;ADD EXP1 TO EXP2 FOR PRODUCT EXP + JSR MD2 ;CHECK PROD. EXP AND PREP. FOR MUL + CLC ;CLEAR CARRY FOR FIRST BIT. +MUL1 JSR RTLOG1 ;M1 AND E RIGHT (PROD AND MPLIER) + BCC MUL2 ;IF CARRY CLEAR, SKIP PARTIAL PROD + JSR ADD ;ADD MULTIPLICAND TO PRODUCT. +MUL2 DEY ;NEXT MUL ITERATION. + BPL MUL1 ;LOOP UNTIL DONE. +MDEND LSR SIGN ;TEST SIGN LSB. +NORMX BCC NORM ;IF EVEN,NORMALIZE PROD,ELSE COMP +FCOMPL SEC ;SET CARRY FOR SUBTRACT. <--------------- not + LDX #$3 ;INDEX FOR 3 BYTE SUBTRACT. +COMPL1 LDA #$0 ;CLEAR A. + SBC X1,X ;SUBTRACT BYTE OF EXP1. + STA X1,X ;RESTORE IT. + DEX ;NEXT MORE SIGNIFICANT BYTE. + BNE COMPL1 ;LOOP UNTIL DONE. + BEQ ADDEND ;NORMALIZE (OR SHIFT RT IF OVFL). +FDIV JSR MD1 ;TAKE ABS VAL OF MANT1, MANT2. <--------- div + SBC X1 ;SUBTRACT EXP1 FROM EXP2. + JSR MD2 ;SAVE AS QUOTIENT EXP. +DIV1 SEC ;SET CARRY FOR SUBTRACT. + LDX #$2 ;INDEX FOR 3-BYTE SUBTRACTION. +DIV2 LDA M2,X + SBC E,X ;SUBTRACT A BYTE OF E FROM MANT2. + PHA ;SAVE ON STACK. + DEX ;NEXT MORE SIGNIFICANT BYTE. + BPL DIV2 ;LOOP UNTIL DONE. + LDX #$FD ;INDEX FOR 3-BYTE CONDITIONAL MOVE +DIV3 PLA ;PULL BYTE OF DIFFERENCE OFF STACK + BCC DIV4 ;IF M2 Date: Mon, 16 Feb 2015 09:10:53 +0100 Subject: [PATCH 03/12] More fix and comments --- AppleII/FP operations/Unidrive4.asm | 37 +- AppleII/FP operations/Unidrive4_Output.txt | 1095 ++++++++++---------- 2 files changed, 569 insertions(+), 563 deletions(-) diff --git a/AppleII/FP operations/Unidrive4.asm b/AppleII/FP operations/Unidrive4.asm index da55731..fe368c0 100644 --- a/AppleII/FP operations/Unidrive4.asm +++ b/AppleII/FP operations/Unidrive4.asm @@ -272,18 +272,18 @@ CNTL_LIST1 equ * CNTL_LIST2 equ * Clow_byte dfb $06 Chigh_byte dfb $00 -AccValue dfb $00 ; Input Value -X_reg dfb $00 ; Input Value (N1) -Y_reg dfb $00 ; Input Value (N2) -ProStatus dfb $00 ; Input Value -LowPC_reg dfb $05 ; Like ORG +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 HighPC_reg dfb $05 * *** Set Address *** CNTL_LIST3 equ * CountL_byte dfb $02 CountH_byte dfb $00 -LByte_Addr dfb $00 ; ORG of Unidisk program +LByte_Addr dfb $00 ; ORG of Unidisk program, set begin program address $0500 HByte_Addr dfb $05 * *** Download *** @@ -291,8 +291,9 @@ CNTL_LIST4 equ * LenghtL_byte dfb $38 ;<----- Lenght of Unidisk program Lo - Byte 312 byte LenghtH_byte dfb $01 ;<----- Lenght of Unidisk program Hi Byte * -*** Start UNIDISK Program *** - org $0500 +**************** Start UNIDISK Program **************** +* + org $0500 ; Start Unidisk program address SIGN EQU $C0 ;$EB ; $F3 @@ -312,7 +313,7 @@ OVLOC EQU $C10 ;$3F5 ;Overflow routine is not implemented at now) * CHK if is the second execution * cmp #02 - beq SECOND + beq SECOND ;Only to read the rest part of result ** Input data to Zero Page ** @@ -338,24 +339,26 @@ OVLOC EQU $C10 ;$3F5 ;Overflow routine is not implemented at now) lda FP2+3 sta M2+2 -*** Target Function *** -* Y=N1+N2 - +************************** Target Function *********************** +* Y=N1+N2 * +****************************************************************** +* ** Simple ADD ** - jsr FADD + jsr FADD ; Call FP routine -*** Output Data result FP1 to Unidisk registers First Time first 3 Byte*** +*** Output Data result FP1 to Unidisk registers First Time first 3 Byte out *** lda X1 ldx M1 ldy M1+1 rts -*** Output Data result FP1 to Unidisk registers Second Time latest 1 Byte*** +*** Output Data result FP1 to Unidisk registers Second Time latest 1 Byte out *** SECOND lda M1+2 rts - -** FP Routine ** +*************************************************** +* +***************** FP Routine ***************** * *********************** * * diff --git a/AppleII/FP operations/Unidrive4_Output.txt b/AppleII/FP operations/Unidrive4_Output.txt index 21ba25f..3dcd36d 100644 --- a/AppleII/FP operations/Unidrive4_Output.txt +++ b/AppleII/FP operations/Unidrive4_Output.txt @@ -1,546 +1,549 @@ -------+-------------------------+-------------+----+---------+------+-----------------------+------------------------------------------------------------------- - Line | # File Line | Line Type | MX | Reloc | Size | Address Object Code | Source Code -------+-------------------------+-------------+----+---------+------+-----------------------+------------------------------------------------------------------- - 1 | 1 Unidrive4.asm 1 | Comment | 11 | | 0 | 00/8000 | * - 2 | 1 Unidrive4.asm 2 | Comment | 11 | | 0 | 00/8000 | * Unidisk 3.5 Driver - 3 | 1 Unidrive4.asm 3 | Comment | 11 | | 0 | 00/8000 | * - 4 | 1 Unidrive4.asm 4 | Comment | 11 | | 0 | 00/8000 | * The target of this project is to use the Unidisk 3.5 drive to perform - 5 | 1 Unidrive4.asm 5 | Comment | 11 | | 0 | 00/8000 | * specific numerical routines (integers and floating point numbers) - 6 | 1 Unidrive4.asm 6 | Comment | 11 | | 0 | 00/8000 | * calculation in order to use it as a Apple II co-processor unit. - 7 | 1 Unidrive4.asm 7 | Comment | 11 | | 0 | 00/8000 | * - 8 | 1 Unidrive4.asm 8 | Comment | 11 | | 0 | 00/8000 | * Copyright (C) 2015 Riccardo Greco . - 9 | 1 Unidrive4.asm 9 | Comment | 11 | | 0 | 00/8000 | * - 10 | 1 Unidrive4.asm 10 | Comment | 11 | | 0 | 00/8000 | * This program is free software: you can redistribute it and/or modify - 11 | 1 Unidrive4.asm 11 | Comment | 11 | | 0 | 00/8000 | * it under the terms of the GNU General Public License as published by - 12 | 1 Unidrive4.asm 12 | Comment | 11 | | 0 | 00/8000 | * the Free Software Foundation, either version 3 of the License, or - 13 | 1 Unidrive4.asm 13 | Comment | 11 | | 0 | 00/8000 | * (at your option) any later version. - 14 | 1 Unidrive4.asm 14 | Comment | 11 | | 0 | 00/8000 | * This program is distributed in the hope that it will be useful, - 15 | 1 Unidrive4.asm 15 | Comment | 11 | | 0 | 00/8000 | * but WITHOUT ANY WARRANTY; without even the implied warranty of - 16 | 1 Unidrive4.asm 16 | Comment | 11 | | 0 | 00/8000 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - 17 | 1 Unidrive4.asm 17 | Comment | 11 | | 0 | 00/8000 | * GNU General Public License for more details. - 18 | 1 Unidrive4.asm 18 | Comment | 11 | | 0 | 00/8000 | * You should have received a copy of the GNU General Public License - 19 | 1 Unidrive4.asm 19 | Comment | 11 | | 0 | 00/8000 | * along with this program. If not, see . - 20 | 1 Unidrive4.asm 20 | Comment | 11 | | 0 | 00/8000 | * - 21 | 1 Unidrive4.asm 21 | Comment | 11 | | 0 | 00/8000 | * - 22 | 1 Unidrive4.asm 22 | Comment | 11 | | 0 | 00/8000 | * @com.wudsn.ide.asm.hardware=APPLE2 - 23 | 1 Unidrive4.asm 23 | Comment | 11 | | 0 | 00/8000 | * - 24 | 1 Unidrive4.asm 24 | Comment | 11 | | 0 | 00/8000 | * Protocol Converter Call - 25 | 1 Unidrive4.asm 25 | Directive | 11 | | 0 | 00/8000 | XC - 26 | 1 Unidrive4.asm 26 | Equivalence | 11 | | 0 | 00/8000 | ZPTempL equ $0006 ;Temporary zero page storage - 27 | 1 Unidrive4.asm 27 | Equivalence | 11 | | 0 | 00/8000 | ZPTempH equ $0007 - 28 | 1 Unidrive4.asm 28 | Comment | 11 | | 0 | 00/8000 | ** Zero page storage ** - 29 | 1 Unidrive4.asm 29 | Equivalence | 11 | | 0 | 00/8000 | N1 equ $FA ;25 4 Byte FP FA--FD (FP1) - 30 | 1 Unidrive4.asm 30 | Equivalence | 11 | | 0 | 00/8000 | N2 equ $EC ;27 4 Byte FP EC--EF (FP2) - 31 | 1 Unidrive4.asm 31 | Comment | 11 | | 0 | 00/8000 | ; RSLT equ $1D ;29 - 32 | 1 Unidrive4.asm 32 | Comment | 11 | | 0 | 00/8000 | *** Monitor routines *** - 33 | 1 Unidrive4.asm 33 | Equivalence | 11 | | 0 | 00/8000 | COut equ $FDED ;Console output ASCII - 34 | 1 Unidrive4.asm 34 | Equivalence | 11 | | 0 | 00/8000 | CROut equ $FD8E ;Carriage return - 35 | 1 Unidrive4.asm 35 | Comment | 11 | | 0 | 00/8000 | ** Command Code ** - 36 | 1 Unidrive4.asm 36 | Equivalence | 11 | | 0 | 00/8000 | StatusCmd equ 0 - 37 | 1 Unidrive4.asm 37 | Comment | 11 | | 0 | 00/8000 | ** Status Code ** - 38 | 1 Unidrive4.asm 38 | Comment | 11 | | 0 | 00/8000 | * StatusDIB equ 3 - 39 | 1 Unidrive4.asm 39 | Equivalence | 11 | | 0 | 00/8000 | StatusUNI equ 5 - 40 | 1 Unidrive4.asm 40 | Comment | 11 | | 0 | 00/8000 | * - 41 | 1 Unidrive4.asm 41 | Equivalence | 11 | | 0 | 00/8000 | ControlCmd equ 4 - 42 | 1 Unidrive4.asm 42 | Comment | 11 | | 0 | 00/8000 | ** Control Codes ** - 43 | 1 Unidrive4.asm 43 | Equivalence | 11 | | 0 | 00/8000 | Eject equ 4 - 44 | 1 Unidrive4.asm 44 | Equivalence | 11 | | 0 | 00/8000 | Run equ 5 - 45 | 1 Unidrive4.asm 45 | Equivalence | 11 | | 0 | 00/8000 | SetDWLoad equ 6 - 46 | 1 Unidrive4.asm 46 | Equivalence | 11 | | 0 | 00/8000 | DWLoad equ 7 - 47 | 1 Unidrive4.asm 47 | Comment | 11 | | 0 | 00/8000 | * - 48 | 1 Unidrive4.asm 48 | Directive | 11 | | 0 | 00/8000 | org $8000 - 49 | 1 Unidrive4.asm 49 | Comment | 11 | | 0 | 00/8000 | ***************************************************** - 50 | 1 Unidrive4.asm 50 | Empty | 11 | | 0 | 00/8000 | - 51 | 1 Unidrive4.asm 51 | Comment | 11 | | 0 | 00/8000 | * - 52 | 1 Unidrive4.asm 52 | Comment | 11 | | 0 | 00/8000 | * Find a Protocol Converter in one of the slots. - 53 | 1 Unidrive4.asm 53 | Code | 11 | | 3 | 00/8000 : 20 9E 80 | START jsr {ozunid_4} - 54 | 1 Unidrive4.asm 54 | Code | 11 | | 2 | 00/8003 : B0 10 | bcs {ozunid_1} - 55 | 1 Unidrive4.asm 55 | Comment | 11 | | 0 | 00/8005 | *** Eject *** - 56 | 1 Unidrive4.asm 56 | Code | 11 | | 3 | 00/8005 : 20 D3 80 | jsr {ozunid_9} - 57 | 1 Unidrive4.asm 57 | Data | 11 | | 1 | 00/8008 : 04 | dfb {4} - 58 | 1 Unidrive4.asm 58 | Data | 11 | | 2 | 00/8009 : F2 80 | dw {ozunid_15} - 59 | 1 Unidrive4.asm 59 | Comment | 11 | | 0 | 00/800B | *** Set Address *** - 60 | 1 Unidrive4.asm 60 | Code | 11 | | 3 | 00/800B : 20 D3 80 | jsr {ozunid_9} - 61 | 1 Unidrive4.asm 61 | Data | 11 | | 1 | 00/800E : 04 | dfb {4} - 62 | 1 Unidrive4.asm 62 | Data | 11 | | 2 | 00/800F : E3 80 | dw {ozunid_12} - 63 | 1 Unidrive4.asm 63 | Comment | 11 | | 0 | 00/8011 | * - 64 | 1 Unidrive4.asm 64 | Code | 11 | | 3 | 00/8011 : 20 37 80 | jsr EXEC ; Jump the Error routine - 65 | 1 Unidrive4.asm 65 | Code | 11 | | 1 | 00/8014 : 60 | rts - 66 | 1 Unidrive4.asm 66 | Comment | 11 | | 0 | 00/8015 | ********************************************* - 67 | 1 Unidrive4.asm 67 | Empty | 11 | | 0 | 00/8015 | ozunid_1 - 68 | 1 Unidrive4.asm 67 | Equivalence | 11 | | 0 | 00/8015 | Error equ ozunid_1 - 69 | 1 Unidrive4.asm 68 | Comment | 11 | | 0 | 00/8015 | * - 70 | 1 Unidrive4.asm 69 | Comment | 11 | | 0 | 00/8015 | * There is either no PC around, or there was no give message - 71 | 1 Unidrive4.asm 70 | Comment | 11 | | 0 | 00/8015 | * - 72 | 1 Unidrive4.asm 71 | Code | 11 | | 2 | 00/8015 : A2 00 | ldx #0 - 73 | 1 Unidrive4.asm 72 | Empty | 11 | | 0 | 00/8017 | ozunid_2 - 74 | 1 Unidrive4.asm 72 | Equivalence | 11 | | 0 | 00/8017 | err1 equ ozunid_2 - 75 | 1 Unidrive4.asm 73 | Code | 11 | | 3 | 00/8017 : BD 23 80 | lda Message,x - 76 | 1 Unidrive4.asm 74 | Code | 11 | | 2 | 00/801A : F0 06 | beq {ozunid_3} - 77 | 1 Unidrive4.asm 75 | Code | 11 | | 3 | 00/801C : 20 ED FD | jsr {$FDED} - 78 | 1 Unidrive4.asm 76 | Code | 11 | | 1 | 00/801F : E8 | inx - 79 | 1 Unidrive4.asm 77 | Code | 11 | | 2 | 00/8020 : D0 F5 | bne {ozunid_2} - 80 | 1 Unidrive4.asm 78 | Comment | 11 | | 0 | 00/8022 | * - 81 | 1 Unidrive4.asm 79 | Empty | 11 | | 0 | 00/8022 | ozunid_3 - 82 | 1 Unidrive4.asm 79 | Equivalence | 11 | | 0 | 00/8022 | errout equ ozunid_3 - 83 | 1 Unidrive4.asm 80 | Code | 11 | | 1 | 00/8022 : 60 | rts - 84 | 1 Unidrive4.asm 81 | Comment | 11 | | 0 | 00/8023 | * - 85 | 1 Unidrive4.asm 82 | Data | 11 | | 18 | 00/8023 : 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 | - 86 | 1 Unidrive4.asm 83 | Data | 11 | | 2 | 00/8035 : 8D 00 | dfb $8D,0 - 87 | 1 Unidrive4.asm 84 | Comment | 11 | | 0 | 00/8037 | ********************************************* - 88 | 1 Unidrive4.asm 85 | Comment | 11 | | 0 | 00/8037 | * - 89 | 1 Unidrive4.asm 86 | Empty | 11 | | 0 | 00/8037 | - 90 | 1 Unidrive4.asm 87 | Comment | 11 | | 0 | 00/8037 | ** Set the Input Value first in Dynamic data ** - 91 | 1 Unidrive4.asm 88 | Comment | 11 | | 0 | 00/8037 | ** 4 Byte N1 to FP1 ** - 92 | 1 Unidrive4.asm 89 | Code | 11 | | 2 | 00/8037 : A5 FA | EXEC lda {$FA} ;X1 - 93 | 1 Unidrive4.asm 90 | Code | 11 | | 3 | 00/8039 : 8D 38 82 | sta $8238 ; Absolute addressing - 94 | 1 Unidrive4.asm 91 | Code | 11 | | 2 | 00/803C : A5 FB | lda {$FA}+1 ;M1 (1) - 95 | 1 Unidrive4.asm 92 | Code | 11 | | 3 | 00/803E : 8D 39 82 | sta $8239 - 96 | 1 Unidrive4.asm 93 | Code | 11 | | 2 | 00/8041 : A5 FC | lda {$FA}+2 ;M1 (2) - 97 | 1 Unidrive4.asm 94 | Code | 11 | | 3 | 00/8043 : 8D 3A 82 | sta $823A - 98 | 1 Unidrive4.asm 95 | Code | 11 | | 2 | 00/8046 : A5 FC | lda {$FA}+2 ;M1 (3) - 99 | 1 Unidrive4.asm 96 | Code | 11 | | 3 | 00/8048 : 8D 3B 82 | sta $823B - 100 | 1 Unidrive4.asm 97 | Empty | 11 | | 0 | 00/804B | - 101 | 1 Unidrive4.asm 98 | Comment | 11 | | 0 | 00/804B | ** 4 Byte N2 to FP2 ** - 102 | 1 Unidrive4.asm 99 | Code | 11 | | 2 | 00/804B : A5 EC | lda {$EC} ;X2 - 103 | 1 Unidrive4.asm 100 | Code | 11 | | 3 | 00/804D : 8D 3C 82 | sta $823C - 104 | 1 Unidrive4.asm 101 | Code | 11 | | 2 | 00/8050 : A5 ED | lda {$EC}+1 ;M2 (1) - 105 | 1 Unidrive4.asm 102 | Code | 11 | | 3 | 00/8052 : 8D 3D 82 | sta $823D - 106 | 1 Unidrive4.asm 103 | Code | 11 | | 2 | 00/8055 : A5 EE | lda {$EC}+2 ;M2 (2) - 107 | 1 Unidrive4.asm 104 | Code | 11 | | 3 | 00/8057 : 8D 3E 82 | sta $823E - 108 | 1 Unidrive4.asm 105 | Code | 11 | | 2 | 00/805A : A5 EE | lda {$EC}+2 ;M2 (3) - 109 | 1 Unidrive4.asm 106 | Code | 11 | | 3 | 00/805C : 8D 3F 82 | sta $823F - 110 | 1 Unidrive4.asm 107 | Empty | 11 | | 0 | 00/805F | - 111 | 1 Unidrive4.asm 108 | Comment | 11 | | 0 | 00/805F | *** Download *** - 112 | 1 Unidrive4.asm 109 | Code | 11 | | 3 | 00/805F : 20 D3 80 | jsr {ozunid_9} - 113 | 1 Unidrive4.asm 110 | Data | 11 | | 1 | 00/8062 : 04 | dfb {4} - 114 | 1 Unidrive4.asm 111 | Data | 11 | | 2 | 00/8063 : E8 80 | dw {ozunid_13} - 115 | 1 Unidrive4.asm 112 | Comment | 11 | | 0 | 00/8065 | ** Set Unidisk Registers ** - 116 | 1 Unidrive4.asm 113 | Code | 11 | | 2 | 00/8065 : A9 01 | lda #01 ;First time - 117 | 1 Unidrive4.asm 114 | Code | 11 | | 3 | 00/8067 : 8D DE 80 | sta UNIAcc_reg - 118 | 1 Unidrive4.asm 115 | Comment | 11 | | 0 | 00/806A | ** Execute ** - 119 | 1 Unidrive4.asm 116 | Code | 11 | | 3 | 00/806A : 20 D3 80 | jsr {ozunid_9} - 120 | 1 Unidrive4.asm 117 | Data | 11 | | 1 | 00/806D : 04 | dfb {4} - 121 | 1 Unidrive4.asm 118 | Data | 11 | | 2 | 00/806E : ED 80 | dw {ozunid_14} - 122 | 1 Unidrive4.asm 119 | Comment | 11 | | 0 | 00/8070 | ** Read ** - 123 | 1 Unidrive4.asm 120 | Code | 11 | | 3 | 00/8070 : 20 D3 80 | READ jsr {ozunid_9} - 124 | 1 Unidrive4.asm 121 | Data | 11 | | 1 | 00/8073 : 00 | dfb {0} - 125 | 1 Unidrive4.asm 122 | Data | 11 | | 2 | 00/8074 : D6 80 | dw {ozunid_10} - 126 | 1 Unidrive4.asm 123 | Code | 11 | | 2 | 00/8076 : B0 9D | bcs {ozunid_1} - 127 | 1 Unidrive4.asm 124 | Comment | 11 | | 0 | 00/8078 | * - 128 | 1 Unidrive4.asm 125 | Comment | 11 | | 0 | 00/8078 | **** Store Output results in //c **** - 129 | 1 Unidrive4.asm 126 | Empty | 11 | | 0 | 00/8078 | - 130 | 1 Unidrive4.asm 127 | Comment | 11 | | 0 | 00/8078 | * First time execute * - 131 | 1 Unidrive4.asm 128 | Code | 11 | | 3 | 00/8078 : AD DE 80 | lda UNIAcc_reg - 132 | 1 Unidrive4.asm 129 | Code | 11 | | 2 | 00/807B : 85 FA | sta {$FA} - 133 | 1 Unidrive4.asm 130 | Code | 11 | | 3 | 00/807D : AD DF 80 | lda UNIX_reg - 134 | 1 Unidrive4.asm 131 | Code | 11 | | 2 | 00/8080 : 85 FB | sta {$FA}+1 ; Store the result - 135 | 1 Unidrive4.asm 132 | Code | 11 | | 3 | 00/8082 : AD E0 80 | lda UNIY_reg - 136 | 1 Unidrive4.asm 133 | Code | 11 | | 2 | 00/8085 : 85 FC | sta {$FA}+2 - 137 | 1 Unidrive4.asm 134 | Empty | 11 | | 0 | 00/8087 | - 138 | 1 Unidrive4.asm 135 | Comment | 11 | | 0 | 00/8087 | ** Second time execute ** - 139 | 1 Unidrive4.asm 136 | Code | 11 | | 2 | 00/8087 : A9 02 | lda #02 ; Second time - 140 | 1 Unidrive4.asm 137 | Code | 11 | | 3 | 00/8089 : 8D DE 80 | sta UNIAcc_reg - 141 | 1 Unidrive4.asm 138 | Comment | 11 | | 0 | 00/808C | ** Execute ** - 142 | 1 Unidrive4.asm 139 | Code | 11 | | 3 | 00/808C : 20 D3 80 | jsr {ozunid_9} - 143 | 1 Unidrive4.asm 140 | Data | 11 | | 1 | 00/808F : 04 | dfb {4} - 144 | 1 Unidrive4.asm 141 | Data | 11 | | 2 | 00/8090 : ED 80 | dw {ozunid_14} - 145 | 1 Unidrive4.asm 142 | Comment | 11 | | 0 | 00/8092 | ** Read ** - 146 | 1 Unidrive4.asm 143 | Code | 11 | | 3 | 00/8092 : 20 D3 80 | jsr {ozunid_9} - 147 | 1 Unidrive4.asm 144 | Data | 11 | | 1 | 00/8095 : 00 | dfb {0} - 148 | 1 Unidrive4.asm 145 | Data | 11 | | 2 | 00/8096 : D6 80 | dw {ozunid_10} - 149 | 1 Unidrive4.asm 146 | Comment | 11 | | 0 | 00/8098 | * bcs Error - 150 | 1 Unidrive4.asm 147 | Empty | 11 | | 0 | 00/8098 | - 151 | 1 Unidrive4.asm 148 | Comment | 11 | | 0 | 00/8098 | * Second time execute only to read the latest Byte of FP1* - 152 | 1 Unidrive4.asm 149 | Code | 11 | | 3 | 00/8098 : AD DE 80 | lda UNIAcc_reg - 153 | 1 Unidrive4.asm 150 | Code | 11 | | 2 | 00/809B : 85 FC | sta {$FA}+2 - 154 | 1 Unidrive4.asm 151 | Comment | 11 | | 0 | 00/809D | * - 155 | 1 Unidrive4.asm 152 | Code | 11 | | 1 | 00/809D : 60 | rts - 156 | 1 Unidrive4.asm 153 | Empty | 11 | | 0 | 00/809E | - 157 | 1 Unidrive4.asm 154 | Comment | 11 | | 0 | 00/809E | ****************************************************** - 158 | 1 Unidrive4.asm 155 | Empty | 11 | | 0 | 00/809E | ozunid_4 - 159 | 1 Unidrive4.asm 155 | Equivalence | 11 | | 0 | 00/809E | FindPC equ ozunid_4 - 160 | 1 Unidrive4.asm 156 | Comment | 11 | | 0 | 00/809E | * - 161 | 1 Unidrive4.asm 157 | Comment | 11 | | 0 | 00/809E | * Search slot 7 to slot 1 looking for signature bytes - 162 | 1 Unidrive4.asm 158 | Comment | 11 | | 0 | 00/809E | * - 163 | 1 Unidrive4.asm 159 | Code | 11 | | 2 | 00/809E : A2 07 | ldx #7 ;Do for seven slots - 164 | 1 Unidrive4.asm 160 | Code | 11 | | 2 | 00/80A0 : A9 C7 | lda #$C7 - 165 | 1 Unidrive4.asm 161 | Code | 11 | | 2 | 00/80A2 : 85 07 | sta {$0007} - 166 | 1 Unidrive4.asm 162 | Code | 11 | | 2 | 00/80A4 : A9 00 | lda #$00 - 167 | 1 Unidrive4.asm 163 | Code | 11 | | 2 | 00/80A6 : 85 06 | sta {$0006} - 168 | 1 Unidrive4.asm 164 | Comment | 11 | | 0 | 00/80A8 | * - 169 | 1 Unidrive4.asm 165 | Empty | 11 | | 0 | 00/80A8 | ozunid_5 - 170 | 1 Unidrive4.asm 165 | Equivalence | 11 | | 0 | 00/80A8 | newslot equ ozunid_5 - 171 | 1 Unidrive4.asm 166 | Code | 11 | | 2 | 00/80A8 : A0 07 | ldy #7 - 172 | 1 Unidrive4.asm 167 | Comment | 11 | | 0 | 00/80AA | * - 173 | 1 Unidrive4.asm 168 | Empty | 11 | | 0 | 00/80AA | ozunid_6 - 174 | 1 Unidrive4.asm 168 | Equivalence | 11 | | 0 | 00/80AA | again equ ozunid_6 - 175 | 1 Unidrive4.asm 169 | Code | 11 | | 2 | 00/80AA : B1 06 | lda ({$0006}),y - 176 | 1 Unidrive4.asm 170 | Code | 11 | | 3 | 00/80AC : D9 CB 80 | cmp sigtab,y ;One for byte signature - 177 | 1 Unidrive4.asm 171 | Code | 11 | | 2 | 00/80AF : F0 07 | beq {ozunid_7} ;Found one signature byte - 178 | 1 Unidrive4.asm 172 | Code | 11 | | 2 | 00/80B1 : C6 07 | dec {$0007} - 179 | 1 Unidrive4.asm 173 | Code | 11 | | 1 | 00/80B3 : CA | dex - 180 | 1 Unidrive4.asm 174 | Code | 11 | | 2 | 00/80B4 : D0 F2 | bne {ozunid_5} - 181 | 1 Unidrive4.asm 175 | Comment | 11 | | 0 | 00/80B6 | * - 182 | 1 Unidrive4.asm 176 | Comment | 11 | | 0 | 00/80B6 | * if we get here, no PC find - 183 | 1 Unidrive4.asm 177 | Code | 11 | | 1 | 00/80B6 : 38 | sec - 184 | 1 Unidrive4.asm 178 | Code | 11 | | 1 | 00/80B7 : 60 | rts - 185 | 1 Unidrive4.asm 179 | Comment | 11 | | 0 | 00/80B8 | * - 186 | 1 Unidrive4.asm 180 | Comment | 11 | | 0 | 00/80B8 | * if we get here, no byte find on PC - 187 | 1 Unidrive4.asm 181 | Empty | 11 | | 0 | 00/80B8 | ozunid_7 - 188 | 1 Unidrive4.asm 181 | Equivalence | 11 | | 0 | 00/80B8 | maybe equ ozunid_7 - 189 | 1 Unidrive4.asm 182 | Code | 11 | | 1 | 00/80B8 : 88 | dey - 190 | 1 Unidrive4.asm 183 | Code | 11 | | 1 | 00/80B9 : 88 | dey ;if N=1 then all sig bytes OK - 191 | 1 Unidrive4.asm 184 | Code | 11 | | 2 | 00/80BA : 10 EE | bpl {ozunid_6} - 192 | 1 Unidrive4.asm 185 | Comment | 11 | | 0 | 00/80BC | * Found PC interface. Set up call address. - 193 | 1 Unidrive4.asm 186 | Comment | 11 | | 0 | 00/80BC | * we already have high byte ($CN), we need low byte - 194 | 1 Unidrive4.asm 187 | Comment | 11 | | 0 | 00/80BC | * - 195 | 1 Unidrive4.asm 188 | Empty | 11 | | 0 | 00/80BC | ozunid_8 - 196 | 1 Unidrive4.asm 188 | Equivalence | 11 | | 0 | 00/80BC | foundPC equ ozunid_8 - 197 | 1 Unidrive4.asm 189 | Code | 11 | | 2 | 00/80BC : A9 FF | lda #$FF - 198 | 1 Unidrive4.asm 190 | Code | 11 | | 2 | 00/80BE : 85 06 | sta {$0006} - 199 | 1 Unidrive4.asm 191 | Code | 11 | | 2 | 00/80C0 : A0 00 | ldy #0 ;For indirect load - 200 | 1 Unidrive4.asm 192 | Code | 11 | | 2 | 00/80C2 : B1 06 | lda ({$0006}),y ;Get the byte - 201 | 1 Unidrive4.asm 193 | Comment | 11 | | 0 | 00/80C4 | * - 202 | 1 Unidrive4.asm 194 | Comment | 11 | | 0 | 00/80C4 | * Now the Acc has the low oreder ProDOS entry point. - 203 | 1 Unidrive4.asm 195 | Comment | 11 | | 0 | 00/80C4 | * The PC entry is three locations past this ... - 204 | 1 Unidrive4.asm 196 | Comment | 11 | | 0 | 00/80C4 | * - 205 | 1 Unidrive4.asm 197 | Code | 11 | | 1 | 00/80C4 : 18 | clc - 206 | 1 Unidrive4.asm 198 | Code | 11 | | 2 | 00/80C5 : 69 03 | adc #3 - 207 | 1 Unidrive4.asm 199 | Code | 11 | | 2 | 00/80C7 : 85 06 | sta {$0006} - 208 | 1 Unidrive4.asm 200 | Comment | 11 | | 0 | 00/80C9 | * - 209 | 1 Unidrive4.asm 201 | Comment | 11 | | 0 | 00/80C9 | * Now ZPTempL has PC entry point. - 210 | 1 Unidrive4.asm 202 | Comment | 11 | | 0 | 00/80C9 | * Return with carry clear. - 211 | 1 Unidrive4.asm 203 | Comment | 11 | | 0 | 00/80C9 | * - 212 | 1 Unidrive4.asm 204 | Code | 11 | | 1 | 00/80C9 : 18 | clc - 213 | 1 Unidrive4.asm 205 | Code | 11 | | 1 | 00/80CA : 60 | rts - 214 | 1 Unidrive4.asm 206 | Comment | 11 | | 0 | 00/80CB | *********************************************************** - 215 | 1 Unidrive4.asm 207 | Comment | 11 | | 0 | 00/80CB | * - 216 | 1 Unidrive4.asm 208 | Comment | 11 | | 0 | 00/80CB | * There are the PC signature bytes in their relative order. - 217 | 1 Unidrive4.asm 209 | Comment | 11 | | 0 | 00/80CB | * The $FF bytes are filler bytes and are not compared. - 218 | 1 Unidrive4.asm 210 | Comment | 11 | | 0 | 00/80CB | * - 219 | 1 Unidrive4.asm 211 | Data | 11 | | 4 | 00/80CB : FF 20 FF 00 | sigtab dfb $FF,$20,$FF,$00 - 220 | 1 Unidrive4.asm 212 | Data | 11 | | 4 | 00/80CF : FF 03 FF 00 | dfb $FF,$03,$FF,$00 - 221 | 1 Unidrive4.asm 213 | Comment | 11 | | 0 | 00/80D3 | * - 222 | 1 Unidrive4.asm 214 | Empty | 11 | | 0 | 00/80D3 | ozunid_9 - 223 | 1 Unidrive4.asm 214 | Equivalence | 11 | | 0 | 00/80D3 | Dispatch equ ozunid_9 - 224 | 1 Unidrive4.asm 215 | Code | 11 | | 3 | 00/80D3 : 6C 06 00 | jmp ({$0006}) ;Simulate an indirect JSR to PC - 225 | 1 Unidrive4.asm 216 | Comment | 11 | | 0 | 00/80D6 | * - 226 | 1 Unidrive4.asm 217 | Comment | 11 | | 0 | 00/80D6 | *** Status Parameter Set for UNI *** - 227 | 1 Unidrive4.asm 218 | Empty | 11 | | 0 | 00/80D6 | ozunid_10 - 228 | 1 Unidrive4.asm 218 | Equivalence | 11 | | 0 | 00/80D6 | DParms equ ozunid_10 - 229 | 1 Unidrive4.asm 219 | Data | 11 | | 1 | 00/80D6 : 03 | DPParmsCt dfb 3 ;Status calls have three parameters - 230 | 1 Unidrive4.asm 220 | Data | 11 | | 1 | 00/80D7 : 01 | DPUnit dfb 1 - 231 | 1 Unidrive4.asm 221 | Data | 11 | | 2 | 00/80D8 : DB 80 | DPBuffer dw {ozunid_11} - 232 | 1 Unidrive4.asm 222 | Data | 11 | | 1 | 00/80DA : 05 | DPStatCode dfb {5} - 233 | 1 Unidrive4.asm 223 | Comment | 11 | | 0 | 00/80DB | * - 234 | 1 Unidrive4.asm 224 | Comment | 11 | | 0 | 00/80DB | * - 235 | 1 Unidrive4.asm 225 | Comment | 11 | | 0 | 00/80DB | * - 236 | 1 Unidrive4.asm 226 | Comment | 11 | | 0 | 00/80DB | *** Status List UNI *** - 237 | 1 Unidrive4.asm 227 | Empty | 11 | | 0 | 00/80DB | ozunid_11 - 238 | 1 Unidrive4.asm 227 | Equivalence | 11 | | 0 | 00/80DB | UNI equ ozunid_11 - 239 | 1 Unidrive4.asm 228 | Data | 11 | | 1 | 00/80DB : 00 | dfb 0 - 240 | 1 Unidrive4.asm 229 | Data | 11 | | 1 | 00/80DC : 00 | UNIError dfb 0 - 241 | 1 Unidrive4.asm 230 | Data | 11 | | 1 | 00/80DD : 00 | UNIRetries dfb 0 - 242 | 1 Unidrive4.asm 231 | Data | 11 | | 1 | 00/80DE : 00 | UNIAcc_reg dfb 0 - 243 | 1 Unidrive4.asm 232 | Data | 11 | | 1 | 00/80DF : 00 | UNIX_reg dfb 0 - 244 | 1 Unidrive4.asm 233 | Data | 11 | | 1 | 00/80E0 : 00 | UNIY_reg dfb 0 - 245 | 1 Unidrive4.asm 234 | Data | 11 | | 1 | 00/80E1 : 00 | UNIP_val dfb 0 - 246 | 1 Unidrive4.asm 235 | Data | 11 | | 1 | 00/80E2 : 00 | HHH dfb 0 - 247 | 1 Unidrive4.asm 236 | Comment | 11 | | 0 | 00/80E3 | * - 248 | 1 Unidrive4.asm 237 | Comment | 11 | | 0 | 00/80E3 | *** Set Address *** - 249 | 1 Unidrive4.asm 238 | Empty | 11 | | 0 | 00/80E3 | ozunid_12 - 250 | 1 Unidrive4.asm 238 | Equivalence | 11 | | 0 | 00/80E3 | SET_ADD equ ozunid_12 - 251 | 1 Unidrive4.asm 239 | Data | 11 | | 1 | 00/80E3 : 03 | dfb 3 - 252 | 1 Unidrive4.asm 240 | Data | 11 | | 1 | 00/80E4 : 01 | dfb 1 - 253 | 1 Unidrive4.asm 241 | Data | 11 | | 2 | 00/80E5 : 01 81 | dw {ozunid_18} - 254 | 1 Unidrive4.asm 242 | Data | 11 | | 1 | 00/80E7 : 06 | dfb {6} - 255 | 1 Unidrive4.asm 243 | Comment | 11 | | 0 | 00/80E8 | * - 256 | 1 Unidrive4.asm 244 | Comment | 11 | | 0 | 00/80E8 | *** Download *** - 257 | 1 Unidrive4.asm 245 | Empty | 11 | | 0 | 00/80E8 | ozunid_13 - 258 | 1 Unidrive4.asm 245 | Equivalence | 11 | | 0 | 00/80E8 | DOWNLOAD equ ozunid_13 - 259 | 1 Unidrive4.asm 246 | Data | 11 | | 1 | 00/80E8 : 03 | dfb 3 - 260 | 1 Unidrive4.asm 247 | Data | 11 | | 1 | 00/80E9 : 01 | dfb 1 - 261 | 1 Unidrive4.asm 248 | Data | 11 | | 2 | 00/80EA : 05 81 | dw {ozunid_19} - 262 | 1 Unidrive4.asm 249 | Data | 11 | | 1 | 00/80EC : 07 | dfb {7} - 263 | 1 Unidrive4.asm 250 | Comment | 11 | | 0 | 00/80ED | * - 264 | 1 Unidrive4.asm 251 | Comment | 11 | | 0 | 00/80ED | *** Execute *** - 265 | 1 Unidrive4.asm 252 | Empty | 11 | | 0 | 00/80ED | ozunid_14 - 266 | 1 Unidrive4.asm 252 | Equivalence | 11 | | 0 | 00/80ED | EXE equ ozunid_14 - 267 | 1 Unidrive4.asm 253 | Data | 11 | | 1 | 00/80ED : 03 | dfb 3 - 268 | 1 Unidrive4.asm 254 | Data | 11 | | 1 | 00/80EE : 01 | dfb 1 - 269 | 1 Unidrive4.asm 255 | Data | 11 | | 2 | 00/80EF : F9 80 | dw {ozunid_17} - 270 | 1 Unidrive4.asm 256 | Data | 11 | | 1 | 00/80F1 : 05 | dfb {5} - 271 | 1 Unidrive4.asm 257 | Comment | 11 | | 0 | 00/80F2 | *** Eject *** - 272 | 1 Unidrive4.asm 258 | Empty | 11 | | 0 | 00/80F2 | ozunid_15 - 273 | 1 Unidrive4.asm 258 | Equivalence | 11 | | 0 | 00/80F2 | E_JECT equ ozunid_15 - 274 | 1 Unidrive4.asm 259 | Data | 11 | | 1 | 00/80F2 : 03 | dfb 3 - 275 | 1 Unidrive4.asm 260 | Data | 11 | | 1 | 00/80F3 : 01 | dfb 1 - 276 | 1 Unidrive4.asm 261 | Data | 11 | | 2 | 00/80F4 : F7 80 | dw {ozunid_16} - 277 | 1 Unidrive4.asm 262 | Data | 11 | | 1 | 00/80F6 : 04 | dfb {4} - 278 | 1 Unidrive4.asm 263 | Comment | 11 | | 0 | 00/80F7 | * - 279 | 1 Unidrive4.asm 264 | Comment | 11 | | 0 | 00/80F7 | ******** CONTROL LISTS ******** - 280 | 1 Unidrive4.asm 265 | Comment | 11 | | 0 | 00/80F7 | * - 281 | 1 Unidrive4.asm 266 | Comment | 11 | | 0 | 00/80F7 | * - 282 | 1 Unidrive4.asm 267 | Comment | 11 | | 0 | 00/80F7 | *** Eject *** - 283 | 1 Unidrive4.asm 268 | Empty | 11 | | 0 | 00/80F7 | ozunid_16 - 284 | 1 Unidrive4.asm 268 | Equivalence | 11 | | 0 | 00/80F7 | CNTL_LIST1 equ ozunid_16 - 285 | 1 Unidrive4.asm 269 | Data | 11 | | 2 | 00/80F7 : 00 00 | dw $0000 - 286 | 1 Unidrive4.asm 270 | Comment | 11 | | 0 | 00/80F9 | * - 287 | 1 Unidrive4.asm 271 | Comment | 11 | | 0 | 00/80F9 | *** Execute *** - 288 | 1 Unidrive4.asm 272 | Empty | 11 | | 0 | 00/80F9 | ozunid_17 - 289 | 1 Unidrive4.asm 272 | Equivalence | 11 | | 0 | 00/80F9 | CNTL_LIST2 equ ozunid_17 - 290 | 1 Unidrive4.asm 273 | Data | 11 | | 1 | 00/80F9 : 06 | Clow_byte dfb $06 - 291 | 1 Unidrive4.asm 274 | Data | 11 | | 1 | 00/80FA : 00 | Chigh_byte dfb $00 - 292 | 1 Unidrive4.asm 275 | Data | 11 | | 1 | 00/80FB : 00 | AccValue dfb $00 ; Input Value - 293 | 1 Unidrive4.asm 276 | Data | 11 | | 1 | 00/80FC : 00 | X_reg dfb $00 ; Input Value (N1) - 294 | 1 Unidrive4.asm 277 | Data | 11 | | 1 | 00/80FD : 00 | Y_reg dfb $00 ; Input Value (N2) - 295 | 1 Unidrive4.asm 278 | Data | 11 | | 1 | 00/80FE : 00 | ProStatus dfb $00 ; Input Value - 296 | 1 Unidrive4.asm 279 | Data | 11 | | 1 | 00/80FF : 05 | LowPC_reg dfb $05 ; Like ORG - 297 | 1 Unidrive4.asm 280 | Data | 11 | | 1 | 00/8100 : 05 | HighPC_reg dfb $05 - 298 | 1 Unidrive4.asm 281 | Comment | 11 | | 0 | 00/8101 | * - 299 | 1 Unidrive4.asm 282 | Comment | 11 | | 0 | 00/8101 | *** Set Address *** - 300 | 1 Unidrive4.asm 283 | Empty | 11 | | 0 | 00/8101 | ozunid_18 - 301 | 1 Unidrive4.asm 283 | Equivalence | 11 | | 0 | 00/8101 | CNTL_LIST3 equ ozunid_18 - 302 | 1 Unidrive4.asm 284 | Data | 11 | | 1 | 00/8101 : 02 | CountL_byte dfb $02 - 303 | 1 Unidrive4.asm 285 | Data | 11 | | 1 | 00/8102 : 00 | CountH_byte dfb $00 - 304 | 1 Unidrive4.asm 286 | Data | 11 | | 1 | 00/8103 : 00 | LByte_Addr dfb $00 ; ORG of Unidisk program - 305 | 1 Unidrive4.asm 287 | Data | 11 | | 1 | 00/8104 : 05 | HByte_Addr dfb $05 - 306 | 1 Unidrive4.asm 288 | Comment | 11 | | 0 | 00/8105 | * - 307 | 1 Unidrive4.asm 289 | Comment | 11 | | 0 | 00/8105 | *** Download *** - 308 | 1 Unidrive4.asm 290 | Empty | 11 | | 0 | 00/8105 | ozunid_19 - 309 | 1 Unidrive4.asm 290 | Equivalence | 11 | | 0 | 00/8105 | CNTL_LIST4 equ ozunid_19 - 310 | 1 Unidrive4.asm 291 | Data | 11 | | 1 | 00/8105 : 38 | LenghtL_byte dfb $38 ;<----- Lenght of Unidisk program Lo - Byte 312 byte - 311 | 1 Unidrive4.asm 292 | Data | 11 | | 1 | 00/8106 : 01 | LenghtH_byte dfb $01 ;<----- Lenght of Unidisk program Hi Byte - 312 | 1 Unidrive4.asm 293 | Comment | 11 | | 0 | 00/8107 | * - 313 | 1 Unidrive4.asm 294 | Comment | 11 | | 0 | 00/8107 | *** Start UNIDISK Program *** - 314 | 1 Unidrive4.asm 295 | Directive | 11 | | 0 | 00/8107 | org $0500 - 315 | 1 Unidrive4.asm 296 | Empty | 11 | | 0 | 00/0500 | - 316 | 1 Unidrive4.asm 297 | Equivalence | 11 | | 0 | 00/0500 | SIGN EQU $C0 ;$EB ; $F3 - 317 | 1 Unidrive4.asm 298 | Empty | 11 | | 0 | 00/0500 | - 318 | 1 Unidrive4.asm 299 | Comment | 11 | | 0 | 00/0500 | ** FP2 4 Bytes ** - 319 | 1 Unidrive4.asm 300 | Equivalence | 11 | | 0 | 00/0500 | X2 EQU $C1 ;$EC ; $F4 - 320 | 1 Unidrive4.asm 301 | Equivalence | 11 | | 0 | 00/0500 | M2 EQU $C2 ;$ED ; $F5 - $F7 - 321 | 1 Unidrive4.asm 302 | Empty | 11 | | 0 | 00/0500 | - 322 | 1 Unidrive4.asm 303 | Comment | 11 | | 0 | 00/0500 | ** FP1 4 Bytes + E extension ** - 323 | 1 Unidrive4.asm 304 | Equivalence | 11 | | 0 | 00/0500 | X1 EQU $C5 ;$FA ; $F8 - 324 | 1 Unidrive4.asm 305 | Equivalence | 11 | | 0 | 00/0500 | M1 EQU $C6 ;$FB ; $F9 - $FB - 325 | 1 Unidrive4.asm 306 | Equivalence | 11 | | 0 | 00/0500 | E EQU $C9 ;$FE ; $FC - 326 | 1 Unidrive4.asm 307 | Empty | 11 | | 0 | 00/0500 | - 327 | 1 Unidrive4.asm 308 | Equivalence | 11 | | 0 | 00/0500 | OVLOC EQU $C10 ;$3F5 ;Overflow routine is not implemented at now) - 328 | 1 Unidrive4.asm 309 | Comment | 11 | | 0 | 00/0500 | * - 329 | 1 Unidrive4.asm 310 | Comment | 11 | | 0 | 00/0500 | ** Main program ** - 330 | 1 Unidrive4.asm 311 | Comment | 11 | | 0 | 00/0500 | * - 331 | 1 Unidrive4.asm 312 | Comment | 11 | | 0 | 00/0500 | * CHK if is the second execution * - 332 | 1 Unidrive4.asm 313 | Empty | 11 | | 0 | 00/0500 | - 333 | 1 Unidrive4.asm 314 | Code | 11 | | 2 | 00/0500 : C9 02 | cmp #02 - 334 | 1 Unidrive4.asm 315 | Code | 11 | | 2 | 00/0502 : F0 32 | beq SECOND - 335 | 1 Unidrive4.asm 316 | Empty | 11 | | 0 | 00/0504 | - 336 | 1 Unidrive4.asm 317 | Comment | 11 | | 0 | 00/0504 | ** Input data to Zero Page ** - 337 | 1 Unidrive4.asm 318 | Empty | 11 | | 0 | 00/0504 | - 338 | 1 Unidrive4.asm 319 | Comment | 11 | | 0 | 00/0504 | ** FP1 ** - 339 | 1 Unidrive4.asm 320 | Code | 11 | | 3 | 00/0504 : AD 31 06 | lda FP1 - 340 | 1 Unidrive4.asm 321 | Code | 11 | | 2 | 00/0507 : 85 C5 | sta {$C5} - 341 | 1 Unidrive4.asm 322 | Empty | 11 | | 0 | 00/0509 | - 342 | 1 Unidrive4.asm 323 | Code | 11 | | 3 | 00/0509 : AD 32 06 | lda FP1+1 - 343 | 1 Unidrive4.asm 324 | Code | 11 | | 2 | 00/050C : 85 C6 | sta {$C6} - 344 | 1 Unidrive4.asm 325 | Code | 11 | | 3 | 00/050E : AD 33 06 | lda FP1+2 - 345 | 1 Unidrive4.asm 326 | Code | 11 | | 2 | 00/0511 : 85 C7 | sta {$C6}+1 - 346 | 1 Unidrive4.asm 327 | Code | 11 | | 3 | 00/0513 : AD 34 06 | lda FP1+3 - 347 | 1 Unidrive4.asm 328 | Code | 11 | | 2 | 00/0516 : 85 C8 | sta {$C6}+2 - 348 | 1 Unidrive4.asm 329 | Empty | 11 | | 0 | 00/0518 | - 349 | 1 Unidrive4.asm 330 | Comment | 11 | | 0 | 00/0518 | ** FP2 ** - 350 | 1 Unidrive4.asm 331 | Code | 11 | | 3 | 00/0518 : AD 35 06 | lda FP2 - 351 | 1 Unidrive4.asm 332 | Code | 11 | | 2 | 00/051B : 85 C1 | sta {$C1} - 352 | 1 Unidrive4.asm 333 | Empty | 11 | | 0 | 00/051D | - 353 | 1 Unidrive4.asm 334 | Code | 11 | | 3 | 00/051D : AD 36 06 | lda FP2+1 - 354 | 1 Unidrive4.asm 335 | Code | 11 | | 2 | 00/0520 : 85 C2 | sta {$C2} - 355 | 1 Unidrive4.asm 336 | Code | 11 | | 3 | 00/0522 : AD 37 06 | lda FP2+2 - 356 | 1 Unidrive4.asm 337 | Code | 11 | | 2 | 00/0525 : 85 C3 | sta {$C2}+1 - 357 | 1 Unidrive4.asm 338 | Code | 11 | | 3 | 00/0527 : AD 38 06 | lda FP2+3 - 358 | 1 Unidrive4.asm 339 | Code | 11 | | 2 | 00/052A : 85 C4 | sta {$C2}+2 - 359 | 1 Unidrive4.asm 340 | Empty | 11 | | 0 | 00/052C | - 360 | 1 Unidrive4.asm 341 | Comment | 11 | | 0 | 00/052C | *** Target Function *** - 361 | 1 Unidrive4.asm 342 | Comment | 11 | | 0 | 00/052C | * Y=N1+N2 - 362 | 1 Unidrive4.asm 343 | Empty | 11 | | 0 | 00/052C | - 363 | 1 Unidrive4.asm 344 | Comment | 11 | | 0 | 00/052C | ** Simple ADD ** - 364 | 1 Unidrive4.asm 345 | Code | 11 | | 3 | 00/052C : 20 82 05 | jsr FADD - 365 | 1 Unidrive4.asm 346 | Empty | 11 | | 0 | 00/052F | - 366 | 1 Unidrive4.asm 347 | Comment | 11 | | 0 | 00/052F | *** Output Data result FP1 to Unidisk registers First Time first 3 Byte*** - 367 | 1 Unidrive4.asm 348 | Code | 11 | | 2 | 00/052F : A5 C5 | lda {$C5} - 368 | 1 Unidrive4.asm 349 | Code | 11 | | 2 | 00/0531 : A6 C6 | ldx {$C6} - 369 | 1 Unidrive4.asm 350 | Code | 11 | | 2 | 00/0533 : A4 C7 | ldy {$C6}+1 - 370 | 1 Unidrive4.asm 351 | Empty | 11 | | 0 | 00/0535 | - 371 | 1 Unidrive4.asm 352 | Code | 11 | | 1 | 00/0535 : 60 | rts - 372 | 1 Unidrive4.asm 353 | Comment | 11 | | 0 | 00/0536 | *** Output Data result FP1 to Unidisk registers Second Time latest 1 Byte*** - 373 | 1 Unidrive4.asm 354 | Code | 11 | | 2 | 00/0536 : A5 C8 | SECOND lda {$C6}+2 - 374 | 1 Unidrive4.asm 355 | Empty | 11 | | 0 | 00/0538 | - 375 | 1 Unidrive4.asm 356 | Code | 11 | | 1 | 00/0538 : 60 | rts - 376 | 1 Unidrive4.asm 357 | Empty | 11 | | 0 | 00/0539 | - 377 | 1 Unidrive4.asm 358 | Comment | 11 | | 0 | 00/0539 | ** FP Routine ** - 378 | 1 Unidrive4.asm 359 | Comment | 11 | | 0 | 00/0539 | * - 379 | 1 Unidrive4.asm 360 | Comment | 11 | | 0 | 00/0539 | *********************** - 380 | 1 Unidrive4.asm 361 | Comment | 11 | | 0 | 00/0539 | * * - 381 | 1 Unidrive4.asm 362 | Comment | 11 | | 0 | 00/0539 | * APPLE-II FLOATING * - 382 | 1 Unidrive4.asm 363 | Comment | 11 | | 0 | 00/0539 | * POINT ROUTINES * - 383 | 1 Unidrive4.asm 364 | Comment | 11 | | 0 | 00/0539 | * * - 384 | 1 Unidrive4.asm 365 | Comment | 11 | | 0 | 00/0539 | * COPYRIGHT 1977 BY * - 385 | 1 Unidrive4.asm 366 | Comment | 11 | | 0 | 00/0539 | * APPLE COMPUTER INC. * - 386 | 1 Unidrive4.asm 367 | Comment | 11 | | 0 | 00/0539 | * * - 387 | 1 Unidrive4.asm 368 | Comment | 11 | | 0 | 00/0539 | * ALL RIGHTS RESERVED * - 388 | 1 Unidrive4.asm 369 | Comment | 11 | | 0 | 00/0539 | * * - 389 | 1 Unidrive4.asm 370 | Comment | 11 | | 0 | 00/0539 | * S. WOZNIAK * - 390 | 1 Unidrive4.asm 371 | Comment | 11 | | 0 | 00/0539 | * * - 391 | 1 Unidrive4.asm 372 | Comment | 11 | | 0 | 00/0539 | *********************** - 392 | 1 Unidrive4.asm 373 | Comment | 11 | | 0 | 00/0539 | * TITLE "FLOATING POINT ROUTINES for Unidisk memory" - 393 | 1 Unidrive4.asm 374 | Comment | 11 | | 0 | 00/0539 | * - 394 | 1 Unidrive4.asm 375 | Empty | 11 | | 0 | 00/0539 | - 395 | 1 Unidrive4.asm 376 | Comment | 11 | | 0 | 00/0539 | * ORG $300 - 396 | 1 Unidrive4.asm 377 | Empty | 11 | | 0 | 00/0539 | - 397 | 1 Unidrive4.asm 378 | Code | 11 | | 1 | 00/0539 : 18 | ADD CLC ;CLEAR CARRY - 398 | 1 Unidrive4.asm 379 | Code | 11 | | 2 | 00/053A : A2 02 | LDX #$2 ;INDEX FOR 3-BYTE ADD. - 399 | 1 Unidrive4.asm 380 | Code | 11 | | 2 | 00/053C : B5 C6 | ADD1 LDA {$C6},X - 400 | 1 Unidrive4.asm 381 | Code | 11 | | 2 | 00/053E : 75 C2 | ADC {$C2},X ;ADD A BYTE OF MANT2 TO MANT1 - 401 | 1 Unidrive4.asm 382 | Code | 11 | | 2 | 00/0540 : 95 C6 | STA {$C6},X - 402 | 1 Unidrive4.asm 383 | Code | 11 | | 1 | 00/0542 : CA | DEX ;INDEX TO NEXT MORE SIGNIF. BYTE. - 403 | 1 Unidrive4.asm 384 | Code | 11 | | 2 | 00/0543 : 10 F7 | BPL ADD1 ;LOOP UNTIL DONE. - 404 | 1 Unidrive4.asm 385 | Code | 11 | | 1 | 00/0545 : 60 | RTS ;RETURN - 405 | 1 Unidrive4.asm 386 | Code | 11 | | 2 | 00/0546 : 06 C0 | MD1 ASL {$C0} ;CLEAR LSB OF SIGN. - 406 | 1 Unidrive4.asm 387 | Code | 11 | | 3 | 00/0548 : 20 4B 05 | JSR ABSWAP ;ABS VAL OF M1, THEN SWAP WITH M2 - 407 | 1 Unidrive4.asm 388 | Code | 11 | | 2 | 00/054B : 24 C6 | ABSWAP BIT {$C6} ;MANT1 NEGATIVE? - 408 | 1 Unidrive4.asm 389 | Code | 11 | | 2 | 00/054D : 10 05 | BPL ABSWAP1 ;NO, SWAP WITH MANT2 AND RETURN. - 409 | 1 Unidrive4.asm 390 | Code | 11 | | 3 | 00/054F : 20 B8 05 | JSR FCOMPL ;YES, COMPLEMENT IT. - 410 | 1 Unidrive4.asm 391 | Code | 11 | | 2 | 00/0552 : E6 C0 | INC {$C0} ;INCR SIGN, COMPLEMENTING LSB. - 411 | 1 Unidrive4.asm 392 | Code | 11 | | 1 | 00/0554 : 38 | ABSWAP1 SEC ;SET CARRY FOR RETURN TO MUL/DIV. - 412 | 1 Unidrive4.asm 393 | Code | 11 | | 2 | 00/0555 : A2 04 | SWAP LDX #$4 ;INDEX FOR 4 BYTE SWAP. - 413 | 1 Unidrive4.asm 394 | Code | 11 | | 2 | 00/0557 : 94 C8 | SWAP1 STY {$C9}-1,X - 414 | 1 Unidrive4.asm 395 | Code | 11 | | 2 | 00/0559 : B5 C4 | LDA {$C5}-1,X ;SWAP A BYTE OF EXP/MANT1 WITH - 415 | 1 Unidrive4.asm 396 | Code | 11 | | 2 | 00/055B : B4 C0 | LDY {$C1}-1,X ;EXP/MANT2 AND LEAVE A COPY OF - 416 | 1 Unidrive4.asm 397 | Code | 11 | | 2 | 00/055D : 94 C4 | STY {$C5}-1,X ;MANT1 IN E (3 BYTES). E+3 USED - 417 | 1 Unidrive4.asm 398 | Code | 11 | | 2 | 00/055F : 95 C0 | STA {$C1}-1,X - 418 | 1 Unidrive4.asm 399 | Code | 11 | | 1 | 00/0561 : CA | DEX ;ADVANCE INDEX TO NEXT BYTE - 419 | 1 Unidrive4.asm 400 | Code | 11 | | 2 | 00/0562 : D0 F3 | BNE SWAP1 ;LOOP UNTIL DONE. - 420 | 1 Unidrive4.asm 401 | Code | 11 | | 1 | 00/0564 : 60 | RTS ;RETURN - 421 | 1 Unidrive4.asm 402 | Code | 11 | | 2 | 00/0565 : A9 8E | FLOAT LDA #$8E ;INIT EXP1 TO 14, <--------------- int to fp - 422 | 1 Unidrive4.asm 403 | Code | 11 | | 2 | 00/0567 : 85 C5 | STA {$C5} ;THEN NORMALIZE TO FLOAT. - 423 | 1 Unidrive4.asm 404 | Code | 11 | | 2 | 00/0569 : A5 C6 | NORM1 LDA {$C6} ;HIGH-ORDER MANT1 BYTE. - 424 | 1 Unidrive4.asm 405 | Code | 11 | | 2 | 00/056B : C9 C0 | CMP #$C0 ;UPPER TWO BITS UNEQUAL? - 425 | 1 Unidrive4.asm 406 | Code | 11 | | 2 | 00/056D : 30 0C | BMI RTS1 ;YES, RETURN WITH MANT1 NORMALIZED - 426 | 1 Unidrive4.asm 407 | Code | 11 | | 2 | 00/056F : C6 C5 | DEC {$C5} ;DECREMENT EXP1. - 427 | 1 Unidrive4.asm 408 | Code | 11 | | 2 | 00/0571 : 06 C8 | ASL {$C6}+2 - 428 | 1 Unidrive4.asm 409 | Code | 11 | | 2 | 00/0573 : 26 C7 | ROL {$C6}+1 ;SHIFT MANT1 (3 BYTES) LEFT. - 429 | 1 Unidrive4.asm 410 | Code | 11 | | 2 | 00/0575 : 26 C6 | ROL {$C6} - 430 | 1 Unidrive4.asm 411 | Code | 11 | | 2 | 00/0577 : A5 C5 | NORM LDA {$C5} ;EXP1 ZERO? - 431 | 1 Unidrive4.asm 412 | Code | 11 | | 2 | 00/0579 : D0 EE | BNE NORM1 ;NO, CONTINUE NORMALIZING. - 432 | 1 Unidrive4.asm 413 | Code | 11 | | 1 | 00/057B : 60 | RTS1 RTS ;RETURN. - 433 | 1 Unidrive4.asm 414 | Code | 11 | | 3 | 00/057C : 20 B8 05 | FSUB JSR FCOMPL ;CMPL MANT1,CLEARS CARRY UNLESS 0 <---- sub - 434 | 1 Unidrive4.asm 415 | Code | 11 | | 3 | 00/057F : 20 8F 05 | SWPALGN JSR ALGNSWP ;RIGHT SHIFT MANT1 OR SWAP WITH - 435 | 1 Unidrive4.asm 416 | Code | 11 | | 2 | 00/0582 : A5 C1 | FADD LDA {$C1} ;<------------------------------------- add - 436 | 1 Unidrive4.asm 417 | Code | 11 | | 2 | 00/0584 : C5 C5 | CMP {$C5} ;COMPARE EXP1 WITH EXP2. - 437 | 1 Unidrive4.asm 418 | Code | 11 | | 2 | 00/0586 : D0 F7 | BNE SWPALGN ;IF #,SWAP ADDENDS OR ALIGN MANTS. - 438 | 1 Unidrive4.asm 419 | Code | 11 | | 3 | 00/0588 : 20 39 05 | JSR ADD ;ADD ALIGNED MANTISSAS. - 439 | 1 Unidrive4.asm 420 | Code | 11 | | 2 | 00/058B : 50 EA | ADDEND BVC NORM ;NO OVERFLOW, NORMALIZE RESULT. - 440 | 1 Unidrive4.asm 421 | Code | 11 | | 2 | 00/058D : 70 05 | BVS RTLOG ;OV: SHIFT M1 RIGHT, CARRY INTO SIGN - 441 | 1 Unidrive4.asm 422 | Code | 11 | | 2 | 00/058F : 90 C4 | ALGNSWP BCC SWAP ;SWAP IF CARRY CLEAR, - 442 | 1 Unidrive4.asm 423 | Comment | 11 | | 0 | 00/0591 | * ELSE SHIFT RIGHT ARITH. - 443 | 1 Unidrive4.asm 424 | Code | 11 | | 2 | 00/0591 : A5 C6 | RTAR LDA {$C6} ;SIGN OF MANT1 INTO CARRY FOR - 444 | 1 Unidrive4.asm 425 | Code | 11 | | 1 | 00/0593 : 0A | ASL ;RIGHT ARITH SHIFT. - 445 | 1 Unidrive4.asm 426 | Code | 11 | | 2 | 00/0594 : E6 C5 | RTLOG INC {$C5} ;INCR X1 TO ADJUST FOR RIGHT SHIFT - 446 | 1 Unidrive4.asm 427 | Code | 11 | | 2 | 00/0596 : F0 75 | BEQ OVFL ;EXP1 OUT OF RANGE. - 447 | 1 Unidrive4.asm 428 | Code | 11 | | 2 | 00/0598 : A2 FA | RTLOG1 LDX #$FA ;INDEX FOR 6:BYTE RIGHT SHIFT. - 448 | 1 Unidrive4.asm 429 | Code | 11 | | 2 | 00/059A : 76 CC | ROR1 ROR {$C9}+3,X - 449 | 1 Unidrive4.asm 430 | Code | 11 | | 1 | 00/059C : E8 | INX ;NEXT BYTE OF SHIFT. - 450 | 1 Unidrive4.asm 431 | Code | 11 | | 2 | 00/059D : D0 FB | BNE ROR1 ;LOOP UNTIL DONE. - 451 | 1 Unidrive4.asm 432 | Code | 11 | | 1 | 00/059F : 60 | RTS ;RETURN. - 452 | 1 Unidrive4.asm 433 | Code | 11 | | 3 | 00/05A0 : 20 46 05 | FMUL JSR MD1 ;ABS VAL OF MANT1, MANT2 <-------------- mul - 453 | 1 Unidrive4.asm 434 | Code | 11 | | 2 | 00/05A3 : 65 C5 | ADC {$C5} ;ADD EXP1 TO EXP2 FOR PRODUCT EXP - 454 | 1 Unidrive4.asm 435 | Code | 11 | | 3 | 00/05A5 : 20 F6 05 | JSR MD2 ;CHECK PROD. EXP AND PREP. FOR MUL - 455 | 1 Unidrive4.asm 436 | Code | 11 | | 1 | 00/05A8 : 18 | CLC ;CLEAR CARRY FOR FIRST BIT. - 456 | 1 Unidrive4.asm 437 | Code | 11 | | 3 | 00/05A9 : 20 98 05 | MUL1 JSR RTLOG1 ;M1 AND E RIGHT (PROD AND MPLIER) - 457 | 1 Unidrive4.asm 438 | Code | 11 | | 2 | 00/05AC : 90 03 | BCC MUL2 ;IF CARRY CLEAR, SKIP PARTIAL PROD - 458 | 1 Unidrive4.asm 439 | Code | 11 | | 3 | 00/05AE : 20 39 05 | JSR ADD ;ADD MULTIPLICAND TO PRODUCT. - 459 | 1 Unidrive4.asm 440 | Code | 11 | | 1 | 00/05B1 : 88 | MUL2 DEY ;NEXT MUL ITERATION. - 460 | 1 Unidrive4.asm 441 | Code | 11 | | 2 | 00/05B2 : 10 F5 | BPL MUL1 ;LOOP UNTIL DONE. - 461 | 1 Unidrive4.asm 442 | Code | 11 | | 2 | 00/05B4 : 46 C0 | MDEND LSR {$C0} ;TEST SIGN LSB. - 462 | 1 Unidrive4.asm 443 | Code | 11 | | 2 | 00/05B6 : 90 BF | NORMX BCC NORM ;IF EVEN,NORMALIZE PROD,ELSE COMP - 463 | 1 Unidrive4.asm 444 | Code | 11 | | 1 | 00/05B8 : 38 | FCOMPL SEC ;SET CARRY FOR SUBTRACT. <--------------- not - 464 | 1 Unidrive4.asm 445 | Code | 11 | | 2 | 00/05B9 : A2 03 | LDX #$3 ;INDEX FOR 3 BYTE SUBTRACT. - 465 | 1 Unidrive4.asm 446 | Code | 11 | | 2 | 00/05BB : A9 00 | COMPL1 LDA #$0 ;CLEAR A. - 466 | 1 Unidrive4.asm 447 | Code | 11 | | 2 | 00/05BD : F5 C5 | SBC {$C5},X ;SUBTRACT BYTE OF EXP1. - 467 | 1 Unidrive4.asm 448 | Code | 11 | | 2 | 00/05BF : 95 C5 | STA {$C5},X ;RESTORE IT. - 468 | 1 Unidrive4.asm 449 | Code | 11 | | 1 | 00/05C1 : CA | DEX ;NEXT MORE SIGNIFICANT BYTE. - 469 | 1 Unidrive4.asm 450 | Code | 11 | | 2 | 00/05C2 : D0 F7 | BNE COMPL1 ;LOOP UNTIL DONE. - 470 | 1 Unidrive4.asm 451 | Code | 11 | | 2 | 00/05C4 : F0 C5 | BEQ ADDEND ;NORMALIZE (OR SHIFT RT IF OVFL). - 471 | 1 Unidrive4.asm 452 | Code | 11 | | 3 | 00/05C6 : 20 46 05 | FDIV JSR MD1 ;TAKE ABS VAL OF MANT1, MANT2. <--------- div - 472 | 1 Unidrive4.asm 453 | Code | 11 | | 2 | 00/05C9 : E5 C5 | SBC {$C5} ;SUBTRACT EXP1 FROM EXP2. - 473 | 1 Unidrive4.asm 454 | Code | 11 | | 3 | 00/05CB : 20 F6 05 | JSR MD2 ;SAVE AS QUOTIENT EXP. - 474 | 1 Unidrive4.asm 455 | Code | 11 | | 1 | 00/05CE : 38 | DIV1 SEC ;SET CARRY FOR SUBTRACT. - 475 | 1 Unidrive4.asm 456 | Code | 11 | | 2 | 00/05CF : A2 02 | LDX #$2 ;INDEX FOR 3-BYTE SUBTRACTION. - 476 | 1 Unidrive4.asm 457 | Code | 11 | | 2 | 00/05D1 : B5 C2 | DIV2 LDA {$C2},X - 477 | 1 Unidrive4.asm 458 | Code | 11 | | 2 | 00/05D3 : F5 C9 | SBC {$C9},X ;SUBTRACT A BYTE OF E FROM MANT2. - 478 | 1 Unidrive4.asm 459 | Code | 11 | | 1 | 00/05D5 : 48 | PHA ;SAVE ON STACK. - 479 | 1 Unidrive4.asm 460 | Code | 11 | | 1 | 00/05D6 : CA | DEX ;NEXT MORE SIGNIFICANT BYTE. - 480 | 1 Unidrive4.asm 461 | Code | 11 | | 2 | 00/05D7 : 10 F8 | BPL DIV2 ;LOOP UNTIL DONE. - 481 | 1 Unidrive4.asm 462 | Code | 11 | | 2 | 00/05D9 : A2 FD | LDX #$FD ;INDEX FOR 3-BYTE CONDITIONAL MOVE - 482 | 1 Unidrive4.asm 463 | Code | 11 | | 1 | 00/05DB : 68 | DIV3 PLA ;PULL BYTE OF DIFFERENCE OFF STACK - 483 | 1 Unidrive4.asm 464 | Code | 11 | | 2 | 00/05DC : 90 02 | BCC DIV4 ;IF M2 + 3 | 1 Unidrive4.asm 3 | Comment | 11 | | 0 | 00/8000 | * + 4 | 1 Unidrive4.asm 4 | Comment | 11 | | 0 | 00/8000 | * The target of this project is to use the Unidisk 3.5 drive to perform + 5 | 1 Unidrive4.asm 5 | Comment | 11 | | 0 | 00/8000 | * specific numerical routines (integers and floating point numbers) + 6 | 1 Unidrive4.asm 6 | Comment | 11 | | 0 | 00/8000 | * calculation in order to use it as a Apple II co-processor unit. + 7 | 1 Unidrive4.asm 7 | Comment | 11 | | 0 | 00/8000 | * + 8 | 1 Unidrive4.asm 8 | Comment | 11 | | 0 | 00/8000 | * Copyright (C) 2015 Riccardo Greco . + 9 | 1 Unidrive4.asm 9 | Comment | 11 | | 0 | 00/8000 | * + 10 | 1 Unidrive4.asm 10 | Comment | 11 | | 0 | 00/8000 | * This program is free software: you can redistribute it and/or modify + 11 | 1 Unidrive4.asm 11 | Comment | 11 | | 0 | 00/8000 | * it under the terms of the GNU General Public License as published by + 12 | 1 Unidrive4.asm 12 | Comment | 11 | | 0 | 00/8000 | * the Free Software Foundation, either version 3 of the License, or + 13 | 1 Unidrive4.asm 13 | Comment | 11 | | 0 | 00/8000 | * (at your option) any later version. + 14 | 1 Unidrive4.asm 14 | Comment | 11 | | 0 | 00/8000 | * This program is distributed in the hope that it will be useful, + 15 | 1 Unidrive4.asm 15 | Comment | 11 | | 0 | 00/8000 | * but WITHOUT ANY WARRANTY; without even the implied warranty of + 16 | 1 Unidrive4.asm 16 | Comment | 11 | | 0 | 00/8000 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + 17 | 1 Unidrive4.asm 17 | Comment | 11 | | 0 | 00/8000 | * GNU General Public License for more details. + 18 | 1 Unidrive4.asm 18 | Comment | 11 | | 0 | 00/8000 | * You should have received a copy of the GNU General Public License + 19 | 1 Unidrive4.asm 19 | Comment | 11 | | 0 | 00/8000 | * along with this program. If not, see . + 20 | 1 Unidrive4.asm 20 | Comment | 11 | | 0 | 00/8000 | * + 21 | 1 Unidrive4.asm 21 | Comment | 11 | | 0 | 00/8000 | * + 22 | 1 Unidrive4.asm 22 | Comment | 11 | | 0 | 00/8000 | * @com.wudsn.ide.asm.hardware=APPLE2 + 23 | 1 Unidrive4.asm 23 | Comment | 11 | | 0 | 00/8000 | * + 24 | 1 Unidrive4.asm 24 | Comment | 11 | | 0 | 00/8000 | * Protocol Converter Call + 25 | 1 Unidrive4.asm 25 | Directive | 11 | | 0 | 00/8000 | XC + 26 | 1 Unidrive4.asm 26 | Equivalence | 11 | | 0 | 00/8000 | ZPTempL equ $0006 ;Temporary zero page storage + 27 | 1 Unidrive4.asm 27 | Equivalence | 11 | | 0 | 00/8000 | ZPTempH equ $0007 + 28 | 1 Unidrive4.asm 28 | Comment | 11 | | 0 | 00/8000 | ** Zero page storage ** + 29 | 1 Unidrive4.asm 29 | Equivalence | 11 | | 0 | 00/8000 | N1 equ $FA ;25 4 Byte FP FA--FD (FP1) + 30 | 1 Unidrive4.asm 30 | Equivalence | 11 | | 0 | 00/8000 | N2 equ $EC ;27 4 Byte FP EC--EF (FP2) + 31 | 1 Unidrive4.asm 31 | Comment | 11 | | 0 | 00/8000 | ; RSLT equ $1D ;29 + 32 | 1 Unidrive4.asm 32 | Comment | 11 | | 0 | 00/8000 | *** Monitor routines *** + 33 | 1 Unidrive4.asm 33 | Equivalence | 11 | | 0 | 00/8000 | COut equ $FDED ;Console output ASCII + 34 | 1 Unidrive4.asm 34 | Equivalence | 11 | | 0 | 00/8000 | CROut equ $FD8E ;Carriage return + 35 | 1 Unidrive4.asm 35 | Comment | 11 | | 0 | 00/8000 | ** Command Code ** + 36 | 1 Unidrive4.asm 36 | Equivalence | 11 | | 0 | 00/8000 | StatusCmd equ 0 + 37 | 1 Unidrive4.asm 37 | Comment | 11 | | 0 | 00/8000 | ** Status Code ** + 38 | 1 Unidrive4.asm 38 | Comment | 11 | | 0 | 00/8000 | * StatusDIB equ 3 + 39 | 1 Unidrive4.asm 39 | Equivalence | 11 | | 0 | 00/8000 | StatusUNI equ 5 + 40 | 1 Unidrive4.asm 40 | Comment | 11 | | 0 | 00/8000 | * + 41 | 1 Unidrive4.asm 41 | Equivalence | 11 | | 0 | 00/8000 | ControlCmd equ 4 + 42 | 1 Unidrive4.asm 42 | Comment | 11 | | 0 | 00/8000 | ** Control Codes ** + 43 | 1 Unidrive4.asm 43 | Equivalence | 11 | | 0 | 00/8000 | Eject equ 4 + 44 | 1 Unidrive4.asm 44 | Equivalence | 11 | | 0 | 00/8000 | Run equ 5 + 45 | 1 Unidrive4.asm 45 | Equivalence | 11 | | 0 | 00/8000 | SetDWLoad equ 6 + 46 | 1 Unidrive4.asm 46 | Equivalence | 11 | | 0 | 00/8000 | DWLoad equ 7 + 47 | 1 Unidrive4.asm 47 | Comment | 11 | | 0 | 00/8000 | * + 48 | 1 Unidrive4.asm 48 | Directive | 11 | | 0 | 00/8000 | org $8000 + 49 | 1 Unidrive4.asm 49 | Comment | 11 | | 0 | 00/8000 | ***************************************************** + 50 | 1 Unidrive4.asm 50 | Empty | 11 | | 0 | 00/8000 | + 51 | 1 Unidrive4.asm 51 | Comment | 11 | | 0 | 00/8000 | * + 52 | 1 Unidrive4.asm 52 | Comment | 11 | | 0 | 00/8000 | * Find a Protocol Converter in one of the slots. + 53 | 1 Unidrive4.asm 53 | Code | 11 | | 3 | 00/8000 : 20 9E 80 | START jsr {ozunid_4} + 54 | 1 Unidrive4.asm 54 | Code | 11 | | 2 | 00/8003 : B0 10 | bcs {ozunid_1} + 55 | 1 Unidrive4.asm 55 | Comment | 11 | | 0 | 00/8005 | *** Eject *** + 56 | 1 Unidrive4.asm 56 | Code | 11 | | 3 | 00/8005 : 20 D3 80 | jsr {ozunid_9} + 57 | 1 Unidrive4.asm 57 | Data | 11 | | 1 | 00/8008 : 04 | dfb {4} + 58 | 1 Unidrive4.asm 58 | Data | 11 | | 2 | 00/8009 : F2 80 | dw {ozunid_15} + 59 | 1 Unidrive4.asm 59 | Comment | 11 | | 0 | 00/800B | *** Set Address *** + 60 | 1 Unidrive4.asm 60 | Code | 11 | | 3 | 00/800B : 20 D3 80 | jsr {ozunid_9} + 61 | 1 Unidrive4.asm 61 | Data | 11 | | 1 | 00/800E : 04 | dfb {4} + 62 | 1 Unidrive4.asm 62 | Data | 11 | | 2 | 00/800F : E3 80 | dw {ozunid_12} + 63 | 1 Unidrive4.asm 63 | Comment | 11 | | 0 | 00/8011 | * + 64 | 1 Unidrive4.asm 64 | Code | 11 | | 3 | 00/8011 : 20 37 80 | jsr EXEC ; Jump the Error routine + 65 | 1 Unidrive4.asm 65 | Code | 11 | | 1 | 00/8014 : 60 | rts + 66 | 1 Unidrive4.asm 66 | Comment | 11 | | 0 | 00/8015 | ********************************************* + 67 | 1 Unidrive4.asm 67 | Empty | 11 | | 0 | 00/8015 | ozunid_1 + 68 | 1 Unidrive4.asm 67 | Equivalence | 11 | | 0 | 00/8015 | Error equ ozunid_1 + 69 | 1 Unidrive4.asm 68 | Comment | 11 | | 0 | 00/8015 | * + 70 | 1 Unidrive4.asm 69 | Comment | 11 | | 0 | 00/8015 | * There is either no PC around, or there was no give message + 71 | 1 Unidrive4.asm 70 | Comment | 11 | | 0 | 00/8015 | * + 72 | 1 Unidrive4.asm 71 | Code | 11 | | 2 | 00/8015 : A2 00 | ldx #0 + 73 | 1 Unidrive4.asm 72 | Empty | 11 | | 0 | 00/8017 | ozunid_2 + 74 | 1 Unidrive4.asm 72 | Equivalence | 11 | | 0 | 00/8017 | err1 equ ozunid_2 + 75 | 1 Unidrive4.asm 73 | Code | 11 | | 3 | 00/8017 : BD 23 80 | lda Message,x + 76 | 1 Unidrive4.asm 74 | Code | 11 | | 2 | 00/801A : F0 06 | beq {ozunid_3} + 77 | 1 Unidrive4.asm 75 | Code | 11 | | 3 | 00/801C : 20 ED FD | jsr {$FDED} + 78 | 1 Unidrive4.asm 76 | Code | 11 | | 1 | 00/801F : E8 | inx + 79 | 1 Unidrive4.asm 77 | Code | 11 | | 2 | 00/8020 : D0 F5 | bne {ozunid_2} + 80 | 1 Unidrive4.asm 78 | Comment | 11 | | 0 | 00/8022 | * + 81 | 1 Unidrive4.asm 79 | Empty | 11 | | 0 | 00/8022 | ozunid_3 + 82 | 1 Unidrive4.asm 79 | Equivalence | 11 | | 0 | 00/8022 | errout equ ozunid_3 + 83 | 1 Unidrive4.asm 80 | Code | 11 | | 1 | 00/8022 : 60 | rts + 84 | 1 Unidrive4.asm 81 | Comment | 11 | | 0 | 00/8023 | * + 85 | 1 Unidrive4.asm 82 | Data | 11 | | 18 | 00/8023 : 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 | + 86 | 1 Unidrive4.asm 83 | Data | 11 | | 2 | 00/8035 : 8D 00 | dfb $8D,0 + 87 | 1 Unidrive4.asm 84 | Comment | 11 | | 0 | 00/8037 | ********************************************* + 88 | 1 Unidrive4.asm 85 | Comment | 11 | | 0 | 00/8037 | * + 89 | 1 Unidrive4.asm 86 | Empty | 11 | | 0 | 00/8037 | + 90 | 1 Unidrive4.asm 87 | Comment | 11 | | 0 | 00/8037 | ** Set the Input Value first in Dynamic data ** + 91 | 1 Unidrive4.asm 88 | Comment | 11 | | 0 | 00/8037 | ** 4 Byte N1 to FP1 ** + 92 | 1 Unidrive4.asm 89 | Code | 11 | | 2 | 00/8037 : A5 FA | EXEC lda {$FA} ;X1 + 93 | 1 Unidrive4.asm 90 | Code | 11 | | 3 | 00/8039 : 8D 38 82 | sta $8238 ; Absolute addressing + 94 | 1 Unidrive4.asm 91 | Code | 11 | | 2 | 00/803C : A5 FB | lda {$FA}+1 ;M1 (1) + 95 | 1 Unidrive4.asm 92 | Code | 11 | | 3 | 00/803E : 8D 39 82 | sta $8239 + 96 | 1 Unidrive4.asm 93 | Code | 11 | | 2 | 00/8041 : A5 FC | lda {$FA}+2 ;M1 (2) + 97 | 1 Unidrive4.asm 94 | Code | 11 | | 3 | 00/8043 : 8D 3A 82 | sta $823A + 98 | 1 Unidrive4.asm 95 | Code | 11 | | 2 | 00/8046 : A5 FD | lda {$FA}+3 ;M1 (3) + 99 | 1 Unidrive4.asm 96 | Code | 11 | | 3 | 00/8048 : 8D 3B 82 | sta $823B + 100 | 1 Unidrive4.asm 97 | Empty | 11 | | 0 | 00/804B | + 101 | 1 Unidrive4.asm 98 | Comment | 11 | | 0 | 00/804B | ** 4 Byte N2 to FP2 ** + 102 | 1 Unidrive4.asm 99 | Code | 11 | | 2 | 00/804B : A5 EC | lda {$EC} ;X2 + 103 | 1 Unidrive4.asm 100 | Code | 11 | | 3 | 00/804D : 8D 3C 82 | sta $823C + 104 | 1 Unidrive4.asm 101 | Code | 11 | | 2 | 00/8050 : A5 ED | lda {$EC}+1 ;M2 (1) + 105 | 1 Unidrive4.asm 102 | Code | 11 | | 3 | 00/8052 : 8D 3D 82 | sta $823D + 106 | 1 Unidrive4.asm 103 | Code | 11 | | 2 | 00/8055 : A5 EE | lda {$EC}+2 ;M2 (2) + 107 | 1 Unidrive4.asm 104 | Code | 11 | | 3 | 00/8057 : 8D 3E 82 | sta $823E + 108 | 1 Unidrive4.asm 105 | Code | 11 | | 2 | 00/805A : A5 EF | lda {$EC}+3 ;M2 (3) + 109 | 1 Unidrive4.asm 106 | Code | 11 | | 3 | 00/805C : 8D 3F 82 | sta $823F + 110 | 1 Unidrive4.asm 107 | Empty | 11 | | 0 | 00/805F | + 111 | 1 Unidrive4.asm 108 | Comment | 11 | | 0 | 00/805F | *** Download *** + 112 | 1 Unidrive4.asm 109 | Code | 11 | | 3 | 00/805F : 20 D3 80 | jsr {ozunid_9} + 113 | 1 Unidrive4.asm 110 | Data | 11 | | 1 | 00/8062 : 04 | dfb {4} + 114 | 1 Unidrive4.asm 111 | Data | 11 | | 2 | 00/8063 : E8 80 | dw {ozunid_13} + 115 | 1 Unidrive4.asm 112 | Comment | 11 | | 0 | 00/8065 | ** Set Unidisk Registers ** + 116 | 1 Unidrive4.asm 113 | Code | 11 | | 2 | 00/8065 : A9 01 | lda #01 ;First time + 117 | 1 Unidrive4.asm 114 | Code | 11 | | 3 | 00/8067 : 8D DE 80 | sta UNIAcc_reg + 118 | 1 Unidrive4.asm 115 | Comment | 11 | | 0 | 00/806A | ** Execute ** + 119 | 1 Unidrive4.asm 116 | Code | 11 | | 3 | 00/806A : 20 D3 80 | jsr {ozunid_9} + 120 | 1 Unidrive4.asm 117 | Data | 11 | | 1 | 00/806D : 04 | dfb {4} + 121 | 1 Unidrive4.asm 118 | Data | 11 | | 2 | 00/806E : ED 80 | dw {ozunid_14} + 122 | 1 Unidrive4.asm 119 | Comment | 11 | | 0 | 00/8070 | ** Read ** + 123 | 1 Unidrive4.asm 120 | Code | 11 | | 3 | 00/8070 : 20 D3 80 | READ jsr {ozunid_9} + 124 | 1 Unidrive4.asm 121 | Data | 11 | | 1 | 00/8073 : 00 | dfb {0} + 125 | 1 Unidrive4.asm 122 | Data | 11 | | 2 | 00/8074 : D6 80 | dw {ozunid_10} + 126 | 1 Unidrive4.asm 123 | Code | 11 | | 2 | 00/8076 : B0 9D | bcs {ozunid_1} + 127 | 1 Unidrive4.asm 124 | Comment | 11 | | 0 | 00/8078 | * + 128 | 1 Unidrive4.asm 125 | Comment | 11 | | 0 | 00/8078 | **** Store Output results in //c **** + 129 | 1 Unidrive4.asm 126 | Empty | 11 | | 0 | 00/8078 | + 130 | 1 Unidrive4.asm 127 | Comment | 11 | | 0 | 00/8078 | * First time execute * + 131 | 1 Unidrive4.asm 128 | Code | 11 | | 3 | 00/8078 : AD DE 80 | lda UNIAcc_reg + 132 | 1 Unidrive4.asm 129 | Code | 11 | | 2 | 00/807B : 85 FA | sta {$FA} + 133 | 1 Unidrive4.asm 130 | Code | 11 | | 3 | 00/807D : AD DF 80 | lda UNIX_reg + 134 | 1 Unidrive4.asm 131 | Code | 11 | | 2 | 00/8080 : 85 FB | sta {$FA}+1 ; Store the result + 135 | 1 Unidrive4.asm 132 | Code | 11 | | 3 | 00/8082 : AD E0 80 | lda UNIY_reg + 136 | 1 Unidrive4.asm 133 | Code | 11 | | 2 | 00/8085 : 85 FC | sta {$FA}+2 + 137 | 1 Unidrive4.asm 134 | Empty | 11 | | 0 | 00/8087 | + 138 | 1 Unidrive4.asm 135 | Comment | 11 | | 0 | 00/8087 | ** Second time execute ** + 139 | 1 Unidrive4.asm 136 | Code | 11 | | 2 | 00/8087 : A9 02 | lda #02 ; Second time + 140 | 1 Unidrive4.asm 137 | Code | 11 | | 3 | 00/8089 : 8D DE 80 | sta UNIAcc_reg + 141 | 1 Unidrive4.asm 138 | Comment | 11 | | 0 | 00/808C | ** Execute ** + 142 | 1 Unidrive4.asm 139 | Code | 11 | | 3 | 00/808C : 20 D3 80 | jsr {ozunid_9} + 143 | 1 Unidrive4.asm 140 | Data | 11 | | 1 | 00/808F : 04 | dfb {4} + 144 | 1 Unidrive4.asm 141 | Data | 11 | | 2 | 00/8090 : ED 80 | dw {ozunid_14} + 145 | 1 Unidrive4.asm 142 | Comment | 11 | | 0 | 00/8092 | ** Read ** + 146 | 1 Unidrive4.asm 143 | Code | 11 | | 3 | 00/8092 : 20 D3 80 | jsr {ozunid_9} + 147 | 1 Unidrive4.asm 144 | Data | 11 | | 1 | 00/8095 : 00 | dfb {0} + 148 | 1 Unidrive4.asm 145 | Data | 11 | | 2 | 00/8096 : D6 80 | dw {ozunid_10} + 149 | 1 Unidrive4.asm 146 | Comment | 11 | | 0 | 00/8098 | * bcs Error + 150 | 1 Unidrive4.asm 147 | Empty | 11 | | 0 | 00/8098 | + 151 | 1 Unidrive4.asm 148 | Comment | 11 | | 0 | 00/8098 | * Second time execute only to read the latest Byte of FP1* + 152 | 1 Unidrive4.asm 149 | Code | 11 | | 3 | 00/8098 : AD DE 80 | lda UNIAcc_reg + 153 | 1 Unidrive4.asm 150 | Code | 11 | | 2 | 00/809B : 85 FD | sta {$FA}+3 + 154 | 1 Unidrive4.asm 151 | Comment | 11 | | 0 | 00/809D | * + 155 | 1 Unidrive4.asm 152 | Code | 11 | | 1 | 00/809D : 60 | rts + 156 | 1 Unidrive4.asm 153 | Empty | 11 | | 0 | 00/809E | + 157 | 1 Unidrive4.asm 154 | Comment | 11 | | 0 | 00/809E | ****************************************************** + 158 | 1 Unidrive4.asm 155 | Empty | 11 | | 0 | 00/809E | ozunid_4 + 159 | 1 Unidrive4.asm 155 | Equivalence | 11 | | 0 | 00/809E | FindPC equ ozunid_4 + 160 | 1 Unidrive4.asm 156 | Comment | 11 | | 0 | 00/809E | * + 161 | 1 Unidrive4.asm 157 | Comment | 11 | | 0 | 00/809E | * Search slot 7 to slot 1 looking for signature bytes + 162 | 1 Unidrive4.asm 158 | Comment | 11 | | 0 | 00/809E | * + 163 | 1 Unidrive4.asm 159 | Code | 11 | | 2 | 00/809E : A2 07 | ldx #7 ;Do for seven slots + 164 | 1 Unidrive4.asm 160 | Code | 11 | | 2 | 00/80A0 : A9 C7 | lda #$C7 + 165 | 1 Unidrive4.asm 161 | Code | 11 | | 2 | 00/80A2 : 85 07 | sta {$0007} + 166 | 1 Unidrive4.asm 162 | Code | 11 | | 2 | 00/80A4 : A9 00 | lda #$00 + 167 | 1 Unidrive4.asm 163 | Code | 11 | | 2 | 00/80A6 : 85 06 | sta {$0006} + 168 | 1 Unidrive4.asm 164 | Comment | 11 | | 0 | 00/80A8 | * + 169 | 1 Unidrive4.asm 165 | Empty | 11 | | 0 | 00/80A8 | ozunid_5 + 170 | 1 Unidrive4.asm 165 | Equivalence | 11 | | 0 | 00/80A8 | newslot equ ozunid_5 + 171 | 1 Unidrive4.asm 166 | Code | 11 | | 2 | 00/80A8 : A0 07 | ldy #7 + 172 | 1 Unidrive4.asm 167 | Comment | 11 | | 0 | 00/80AA | * + 173 | 1 Unidrive4.asm 168 | Empty | 11 | | 0 | 00/80AA | ozunid_6 + 174 | 1 Unidrive4.asm 168 | Equivalence | 11 | | 0 | 00/80AA | again equ ozunid_6 + 175 | 1 Unidrive4.asm 169 | Code | 11 | | 2 | 00/80AA : B1 06 | lda ({$0006}),y + 176 | 1 Unidrive4.asm 170 | Code | 11 | | 3 | 00/80AC : D9 CB 80 | cmp sigtab,y ;One for byte signature + 177 | 1 Unidrive4.asm 171 | Code | 11 | | 2 | 00/80AF : F0 07 | beq {ozunid_7} ;Found one signature byte + 178 | 1 Unidrive4.asm 172 | Code | 11 | | 2 | 00/80B1 : C6 07 | dec {$0007} + 179 | 1 Unidrive4.asm 173 | Code | 11 | | 1 | 00/80B3 : CA | dex + 180 | 1 Unidrive4.asm 174 | Code | 11 | | 2 | 00/80B4 : D0 F2 | bne {ozunid_5} + 181 | 1 Unidrive4.asm 175 | Comment | 11 | | 0 | 00/80B6 | * + 182 | 1 Unidrive4.asm 176 | Comment | 11 | | 0 | 00/80B6 | * if we get here, no PC find + 183 | 1 Unidrive4.asm 177 | Code | 11 | | 1 | 00/80B6 : 38 | sec + 184 | 1 Unidrive4.asm 178 | Code | 11 | | 1 | 00/80B7 : 60 | rts + 185 | 1 Unidrive4.asm 179 | Comment | 11 | | 0 | 00/80B8 | * + 186 | 1 Unidrive4.asm 180 | Comment | 11 | | 0 | 00/80B8 | * if we get here, no byte find on PC + 187 | 1 Unidrive4.asm 181 | Empty | 11 | | 0 | 00/80B8 | ozunid_7 + 188 | 1 Unidrive4.asm 181 | Equivalence | 11 | | 0 | 00/80B8 | maybe equ ozunid_7 + 189 | 1 Unidrive4.asm 182 | Code | 11 | | 1 | 00/80B8 : 88 | dey + 190 | 1 Unidrive4.asm 183 | Code | 11 | | 1 | 00/80B9 : 88 | dey ;if N=1 then all sig bytes OK + 191 | 1 Unidrive4.asm 184 | Code | 11 | | 2 | 00/80BA : 10 EE | bpl {ozunid_6} + 192 | 1 Unidrive4.asm 185 | Comment | 11 | | 0 | 00/80BC | * Found PC interface. Set up call address. + 193 | 1 Unidrive4.asm 186 | Comment | 11 | | 0 | 00/80BC | * we already have high byte ($CN), we need low byte + 194 | 1 Unidrive4.asm 187 | Comment | 11 | | 0 | 00/80BC | * + 195 | 1 Unidrive4.asm 188 | Empty | 11 | | 0 | 00/80BC | ozunid_8 + 196 | 1 Unidrive4.asm 188 | Equivalence | 11 | | 0 | 00/80BC | foundPC equ ozunid_8 + 197 | 1 Unidrive4.asm 189 | Code | 11 | | 2 | 00/80BC : A9 FF | lda #$FF + 198 | 1 Unidrive4.asm 190 | Code | 11 | | 2 | 00/80BE : 85 06 | sta {$0006} + 199 | 1 Unidrive4.asm 191 | Code | 11 | | 2 | 00/80C0 : A0 00 | ldy #0 ;For indirect load + 200 | 1 Unidrive4.asm 192 | Code | 11 | | 2 | 00/80C2 : B1 06 | lda ({$0006}),y ;Get the byte + 201 | 1 Unidrive4.asm 193 | Comment | 11 | | 0 | 00/80C4 | * + 202 | 1 Unidrive4.asm 194 | Comment | 11 | | 0 | 00/80C4 | * Now the Acc has the low oreder ProDOS entry point. + 203 | 1 Unidrive4.asm 195 | Comment | 11 | | 0 | 00/80C4 | * The PC entry is three locations past this ... + 204 | 1 Unidrive4.asm 196 | Comment | 11 | | 0 | 00/80C4 | * + 205 | 1 Unidrive4.asm 197 | Code | 11 | | 1 | 00/80C4 : 18 | clc + 206 | 1 Unidrive4.asm 198 | Code | 11 | | 2 | 00/80C5 : 69 03 | adc #3 + 207 | 1 Unidrive4.asm 199 | Code | 11 | | 2 | 00/80C7 : 85 06 | sta {$0006} + 208 | 1 Unidrive4.asm 200 | Comment | 11 | | 0 | 00/80C9 | * + 209 | 1 Unidrive4.asm 201 | Comment | 11 | | 0 | 00/80C9 | * Now ZPTempL has PC entry point. + 210 | 1 Unidrive4.asm 202 | Comment | 11 | | 0 | 00/80C9 | * Return with carry clear. + 211 | 1 Unidrive4.asm 203 | Comment | 11 | | 0 | 00/80C9 | * + 212 | 1 Unidrive4.asm 204 | Code | 11 | | 1 | 00/80C9 : 18 | clc + 213 | 1 Unidrive4.asm 205 | Code | 11 | | 1 | 00/80CA : 60 | rts + 214 | 1 Unidrive4.asm 206 | Comment | 11 | | 0 | 00/80CB | *********************************************************** + 215 | 1 Unidrive4.asm 207 | Comment | 11 | | 0 | 00/80CB | * + 216 | 1 Unidrive4.asm 208 | Comment | 11 | | 0 | 00/80CB | * There are the PC signature bytes in their relative order. + 217 | 1 Unidrive4.asm 209 | Comment | 11 | | 0 | 00/80CB | * The $FF bytes are filler bytes and are not compared. + 218 | 1 Unidrive4.asm 210 | Comment | 11 | | 0 | 00/80CB | * + 219 | 1 Unidrive4.asm 211 | Data | 11 | | 4 | 00/80CB : FF 20 FF 00 | sigtab dfb $FF,$20,$FF,$00 + 220 | 1 Unidrive4.asm 212 | Data | 11 | | 4 | 00/80CF : FF 03 FF 00 | dfb $FF,$03,$FF,$00 + 221 | 1 Unidrive4.asm 213 | Comment | 11 | | 0 | 00/80D3 | * + 222 | 1 Unidrive4.asm 214 | Empty | 11 | | 0 | 00/80D3 | ozunid_9 + 223 | 1 Unidrive4.asm 214 | Equivalence | 11 | | 0 | 00/80D3 | Dispatch equ ozunid_9 + 224 | 1 Unidrive4.asm 215 | Code | 11 | | 3 | 00/80D3 : 6C 06 00 | jmp ({$0006}) ;Simulate an indirect JSR to PC + 225 | 1 Unidrive4.asm 216 | Comment | 11 | | 0 | 00/80D6 | * + 226 | 1 Unidrive4.asm 217 | Comment | 11 | | 0 | 00/80D6 | *** Status Parameter Set for UNI *** + 227 | 1 Unidrive4.asm 218 | Empty | 11 | | 0 | 00/80D6 | ozunid_10 + 228 | 1 Unidrive4.asm 218 | Equivalence | 11 | | 0 | 00/80D6 | DParms equ ozunid_10 + 229 | 1 Unidrive4.asm 219 | Data | 11 | | 1 | 00/80D6 : 03 | DPParmsCt dfb 3 ;Status calls have three parameters + 230 | 1 Unidrive4.asm 220 | Data | 11 | | 1 | 00/80D7 : 01 | DPUnit dfb 1 + 231 | 1 Unidrive4.asm 221 | Data | 11 | | 2 | 00/80D8 : DB 80 | DPBuffer dw {ozunid_11} + 232 | 1 Unidrive4.asm 222 | Data | 11 | | 1 | 00/80DA : 05 | DPStatCode dfb {5} + 233 | 1 Unidrive4.asm 223 | Comment | 11 | | 0 | 00/80DB | * + 234 | 1 Unidrive4.asm 224 | Comment | 11 | | 0 | 00/80DB | * + 235 | 1 Unidrive4.asm 225 | Comment | 11 | | 0 | 00/80DB | * + 236 | 1 Unidrive4.asm 226 | Comment | 11 | | 0 | 00/80DB | *** Status List UNI *** + 237 | 1 Unidrive4.asm 227 | Empty | 11 | | 0 | 00/80DB | ozunid_11 + 238 | 1 Unidrive4.asm 227 | Equivalence | 11 | | 0 | 00/80DB | UNI equ ozunid_11 + 239 | 1 Unidrive4.asm 228 | Data | 11 | | 1 | 00/80DB : 00 | dfb 0 + 240 | 1 Unidrive4.asm 229 | Data | 11 | | 1 | 00/80DC : 00 | UNIError dfb 0 + 241 | 1 Unidrive4.asm 230 | Data | 11 | | 1 | 00/80DD : 00 | UNIRetries dfb 0 + 242 | 1 Unidrive4.asm 231 | Data | 11 | | 1 | 00/80DE : 00 | UNIAcc_reg dfb 0 + 243 | 1 Unidrive4.asm 232 | Data | 11 | | 1 | 00/80DF : 00 | UNIX_reg dfb 0 + 244 | 1 Unidrive4.asm 233 | Data | 11 | | 1 | 00/80E0 : 00 | UNIY_reg dfb 0 + 245 | 1 Unidrive4.asm 234 | Data | 11 | | 1 | 00/80E1 : 00 | UNIP_val dfb 0 + 246 | 1 Unidrive4.asm 235 | Data | 11 | | 1 | 00/80E2 : 00 | HHH dfb 0 + 247 | 1 Unidrive4.asm 236 | Comment | 11 | | 0 | 00/80E3 | * + 248 | 1 Unidrive4.asm 237 | Comment | 11 | | 0 | 00/80E3 | *** Set Address *** + 249 | 1 Unidrive4.asm 238 | Empty | 11 | | 0 | 00/80E3 | ozunid_12 + 250 | 1 Unidrive4.asm 238 | Equivalence | 11 | | 0 | 00/80E3 | SET_ADD equ ozunid_12 + 251 | 1 Unidrive4.asm 239 | Data | 11 | | 1 | 00/80E3 : 03 | dfb 3 + 252 | 1 Unidrive4.asm 240 | Data | 11 | | 1 | 00/80E4 : 01 | dfb 1 + 253 | 1 Unidrive4.asm 241 | Data | 11 | | 2 | 00/80E5 : 01 81 | dw {ozunid_18} + 254 | 1 Unidrive4.asm 242 | Data | 11 | | 1 | 00/80E7 : 06 | dfb {6} + 255 | 1 Unidrive4.asm 243 | Comment | 11 | | 0 | 00/80E8 | * + 256 | 1 Unidrive4.asm 244 | Comment | 11 | | 0 | 00/80E8 | *** Download *** + 257 | 1 Unidrive4.asm 245 | Empty | 11 | | 0 | 00/80E8 | ozunid_13 + 258 | 1 Unidrive4.asm 245 | Equivalence | 11 | | 0 | 00/80E8 | DOWNLOAD equ ozunid_13 + 259 | 1 Unidrive4.asm 246 | Data | 11 | | 1 | 00/80E8 : 03 | dfb 3 + 260 | 1 Unidrive4.asm 247 | Data | 11 | | 1 | 00/80E9 : 01 | dfb 1 + 261 | 1 Unidrive4.asm 248 | Data | 11 | | 2 | 00/80EA : 05 81 | dw {ozunid_19} + 262 | 1 Unidrive4.asm 249 | Data | 11 | | 1 | 00/80EC : 07 | dfb {7} + 263 | 1 Unidrive4.asm 250 | Comment | 11 | | 0 | 00/80ED | * + 264 | 1 Unidrive4.asm 251 | Comment | 11 | | 0 | 00/80ED | *** Execute *** + 265 | 1 Unidrive4.asm 252 | Empty | 11 | | 0 | 00/80ED | ozunid_14 + 266 | 1 Unidrive4.asm 252 | Equivalence | 11 | | 0 | 00/80ED | EXE equ ozunid_14 + 267 | 1 Unidrive4.asm 253 | Data | 11 | | 1 | 00/80ED : 03 | dfb 3 + 268 | 1 Unidrive4.asm 254 | Data | 11 | | 1 | 00/80EE : 01 | dfb 1 + 269 | 1 Unidrive4.asm 255 | Data | 11 | | 2 | 00/80EF : F9 80 | dw {ozunid_17} + 270 | 1 Unidrive4.asm 256 | Data | 11 | | 1 | 00/80F1 : 05 | dfb {5} + 271 | 1 Unidrive4.asm 257 | Comment | 11 | | 0 | 00/80F2 | *** Eject *** + 272 | 1 Unidrive4.asm 258 | Empty | 11 | | 0 | 00/80F2 | ozunid_15 + 273 | 1 Unidrive4.asm 258 | Equivalence | 11 | | 0 | 00/80F2 | E_JECT equ ozunid_15 + 274 | 1 Unidrive4.asm 259 | Data | 11 | | 1 | 00/80F2 : 03 | dfb 3 + 275 | 1 Unidrive4.asm 260 | Data | 11 | | 1 | 00/80F3 : 01 | dfb 1 + 276 | 1 Unidrive4.asm 261 | Data | 11 | | 2 | 00/80F4 : F7 80 | dw {ozunid_16} + 277 | 1 Unidrive4.asm 262 | Data | 11 | | 1 | 00/80F6 : 04 | dfb {4} + 278 | 1 Unidrive4.asm 263 | Comment | 11 | | 0 | 00/80F7 | * + 279 | 1 Unidrive4.asm 264 | Comment | 11 | | 0 | 00/80F7 | ******** CONTROL LISTS ******** + 280 | 1 Unidrive4.asm 265 | Comment | 11 | | 0 | 00/80F7 | * + 281 | 1 Unidrive4.asm 266 | Comment | 11 | | 0 | 00/80F7 | * + 282 | 1 Unidrive4.asm 267 | Comment | 11 | | 0 | 00/80F7 | *** Eject *** + 283 | 1 Unidrive4.asm 268 | Empty | 11 | | 0 | 00/80F7 | ozunid_16 + 284 | 1 Unidrive4.asm 268 | Equivalence | 11 | | 0 | 00/80F7 | CNTL_LIST1 equ ozunid_16 + 285 | 1 Unidrive4.asm 269 | Data | 11 | | 2 | 00/80F7 : 00 00 | dw $0000 + 286 | 1 Unidrive4.asm 270 | Comment | 11 | | 0 | 00/80F9 | * + 287 | 1 Unidrive4.asm 271 | Comment | 11 | | 0 | 00/80F9 | *** Execute *** + 288 | 1 Unidrive4.asm 272 | Empty | 11 | | 0 | 00/80F9 | ozunid_17 + 289 | 1 Unidrive4.asm 272 | Equivalence | 11 | | 0 | 00/80F9 | CNTL_LIST2 equ ozunid_17 + 290 | 1 Unidrive4.asm 273 | Data | 11 | | 1 | 00/80F9 : 06 | Clow_byte dfb $06 + 291 | 1 Unidrive4.asm 274 | Data | 11 | | 1 | 00/80FA : 00 | Chigh_byte dfb $00 + 292 | 1 Unidrive4.asm 275 | Data | 11 | | 1 | 00/80FB : 00 | AccValue dfb $00 ; Init Value Unidisk Accumulator Register + 293 | 1 Unidrive4.asm 276 | Data | 11 | | 1 | 00/80FC : 00 | X_reg dfb $00 ; Init Value Unidisk X Register + 294 | 1 Unidrive4.asm 277 | Data | 11 | | 1 | 00/80FD : 00 | Y_reg dfb $00 ; Init Value Unidisk Y Register + 295 | 1 Unidrive4.asm 278 | Data | 11 | | 1 | 00/80FE : 00 | ProStatus dfb $00 ; Init Value Unidisk Status Register + 296 | 1 Unidrive4.asm 279 | Data | 11 | | 1 | 00/80FF : 00 | LowPC_reg dfb $00 ; Init Value Unidisk Program Counter $0500 + 297 | 1 Unidrive4.asm 280 | Data | 11 | | 1 | 00/8100 : 05 | HighPC_reg dfb $05 + 298 | 1 Unidrive4.asm 281 | Comment | 11 | | 0 | 00/8101 | * + 299 | 1 Unidrive4.asm 282 | Comment | 11 | | 0 | 00/8101 | *** Set Address *** + 300 | 1 Unidrive4.asm 283 | Empty | 11 | | 0 | 00/8101 | ozunid_18 + 301 | 1 Unidrive4.asm 283 | Equivalence | 11 | | 0 | 00/8101 | CNTL_LIST3 equ ozunid_18 + 302 | 1 Unidrive4.asm 284 | Data | 11 | | 1 | 00/8101 : 02 | CountL_byte dfb $02 + 303 | 1 Unidrive4.asm 285 | Data | 11 | | 1 | 00/8102 : 00 | CountH_byte dfb $00 + 304 | 1 Unidrive4.asm 286 | Data | 11 | | 1 | 00/8103 : 00 | LByte_Addr dfb $00 ; ORG of Unidisk program, set begin program address $0500 + 305 | 1 Unidrive4.asm 287 | Data | 11 | | 1 | 00/8104 : 05 | HByte_Addr dfb $05 + 306 | 1 Unidrive4.asm 288 | Comment | 11 | | 0 | 00/8105 | * + 307 | 1 Unidrive4.asm 289 | Comment | 11 | | 0 | 00/8105 | *** Download *** + 308 | 1 Unidrive4.asm 290 | Empty | 11 | | 0 | 00/8105 | ozunid_19 + 309 | 1 Unidrive4.asm 290 | Equivalence | 11 | | 0 | 00/8105 | CNTL_LIST4 equ ozunid_19 + 310 | 1 Unidrive4.asm 291 | Data | 11 | | 1 | 00/8105 : 38 | LenghtL_byte dfb $38 ;<----- Lenght of Unidisk program Lo - Byte 312 byte + 311 | 1 Unidrive4.asm 292 | Data | 11 | | 1 | 00/8106 : 01 | LenghtH_byte dfb $01 ;<----- Lenght of Unidisk program Hi Byte + 312 | 1 Unidrive4.asm 293 | Comment | 11 | | 0 | 00/8107 | * + 313 | 1 Unidrive4.asm 294 | Comment | 11 | | 0 | 00/8107 | **************** Start UNIDISK Program **************** + 314 | 1 Unidrive4.asm 295 | Comment | 11 | | 0 | 00/8107 | * + 315 | 1 Unidrive4.asm 296 | Directive | 11 | | 0 | 00/8107 | org $0500 ; Start Unidisk program address + 316 | 1 Unidrive4.asm 297 | Empty | 11 | | 0 | 00/0500 | + 317 | 1 Unidrive4.asm 298 | Equivalence | 11 | | 0 | 00/0500 | SIGN EQU $C0 ;$EB ; $F3 + 318 | 1 Unidrive4.asm 299 | Empty | 11 | | 0 | 00/0500 | + 319 | 1 Unidrive4.asm 300 | Comment | 11 | | 0 | 00/0500 | ** FP2 4 Bytes ** + 320 | 1 Unidrive4.asm 301 | Equivalence | 11 | | 0 | 00/0500 | X2 EQU $C1 ;$EC ; $F4 + 321 | 1 Unidrive4.asm 302 | Equivalence | 11 | | 0 | 00/0500 | M2 EQU $C2 ;$ED ; $F5 - $F7 + 322 | 1 Unidrive4.asm 303 | Empty | 11 | | 0 | 00/0500 | + 323 | 1 Unidrive4.asm 304 | Comment | 11 | | 0 | 00/0500 | ** FP1 4 Bytes + E extension ** + 324 | 1 Unidrive4.asm 305 | Equivalence | 11 | | 0 | 00/0500 | X1 EQU $C5 ;$FA ; $F8 + 325 | 1 Unidrive4.asm 306 | Equivalence | 11 | | 0 | 00/0500 | M1 EQU $C6 ;$FB ; $F9 - $FB + 326 | 1 Unidrive4.asm 307 | Equivalence | 11 | | 0 | 00/0500 | E EQU $C9 ;$FE ; $FC + 327 | 1 Unidrive4.asm 308 | Empty | 11 | | 0 | 00/0500 | + 328 | 1 Unidrive4.asm 309 | Equivalence | 11 | | 0 | 00/0500 | OVLOC EQU $C10 ;$3F5 ;Overflow routine is not implemented at now) + 329 | 1 Unidrive4.asm 310 | Comment | 11 | | 0 | 00/0500 | * + 330 | 1 Unidrive4.asm 311 | Comment | 11 | | 0 | 00/0500 | ** Main program ** + 331 | 1 Unidrive4.asm 312 | Comment | 11 | | 0 | 00/0500 | * + 332 | 1 Unidrive4.asm 313 | Comment | 11 | | 0 | 00/0500 | * CHK if is the second execution * + 333 | 1 Unidrive4.asm 314 | Empty | 11 | | 0 | 00/0500 | + 334 | 1 Unidrive4.asm 315 | Code | 11 | | 2 | 00/0500 : C9 02 | cmp #02 + 335 | 1 Unidrive4.asm 316 | Code | 11 | | 2 | 00/0502 : F0 32 | beq SECOND ;Only to read the rest part of result + 336 | 1 Unidrive4.asm 317 | Empty | 11 | | 0 | 00/0504 | + 337 | 1 Unidrive4.asm 318 | Comment | 11 | | 0 | 00/0504 | ** Input data to Zero Page ** + 338 | 1 Unidrive4.asm 319 | Empty | 11 | | 0 | 00/0504 | + 339 | 1 Unidrive4.asm 320 | Comment | 11 | | 0 | 00/0504 | ** FP1 ** + 340 | 1 Unidrive4.asm 321 | Code | 11 | | 3 | 00/0504 : AD 31 06 | lda FP1 + 341 | 1 Unidrive4.asm 322 | Code | 11 | | 2 | 00/0507 : 85 C5 | sta {$C5} + 342 | 1 Unidrive4.asm 323 | Empty | 11 | | 0 | 00/0509 | + 343 | 1 Unidrive4.asm 324 | Code | 11 | | 3 | 00/0509 : AD 32 06 | lda FP1+1 + 344 | 1 Unidrive4.asm 325 | Code | 11 | | 2 | 00/050C : 85 C6 | sta {$C6} + 345 | 1 Unidrive4.asm 326 | Code | 11 | | 3 | 00/050E : AD 33 06 | lda FP1+2 + 346 | 1 Unidrive4.asm 327 | Code | 11 | | 2 | 00/0511 : 85 C7 | sta {$C6}+1 + 347 | 1 Unidrive4.asm 328 | Code | 11 | | 3 | 00/0513 : AD 34 06 | lda FP1+3 + 348 | 1 Unidrive4.asm 329 | Code | 11 | | 2 | 00/0516 : 85 C8 | sta {$C6}+2 + 349 | 1 Unidrive4.asm 330 | Empty | 11 | | 0 | 00/0518 | + 350 | 1 Unidrive4.asm 331 | Comment | 11 | | 0 | 00/0518 | ** FP2 ** + 351 | 1 Unidrive4.asm 332 | Code | 11 | | 3 | 00/0518 : AD 35 06 | lda FP2 + 352 | 1 Unidrive4.asm 333 | Code | 11 | | 2 | 00/051B : 85 C1 | sta {$C1} + 353 | 1 Unidrive4.asm 334 | Empty | 11 | | 0 | 00/051D | + 354 | 1 Unidrive4.asm 335 | Code | 11 | | 3 | 00/051D : AD 36 06 | lda FP2+1 + 355 | 1 Unidrive4.asm 336 | Code | 11 | | 2 | 00/0520 : 85 C2 | sta {$C2} + 356 | 1 Unidrive4.asm 337 | Code | 11 | | 3 | 00/0522 : AD 37 06 | lda FP2+2 + 357 | 1 Unidrive4.asm 338 | Code | 11 | | 2 | 00/0525 : 85 C3 | sta {$C2}+1 + 358 | 1 Unidrive4.asm 339 | Code | 11 | | 3 | 00/0527 : AD 38 06 | lda FP2+3 + 359 | 1 Unidrive4.asm 340 | Code | 11 | | 2 | 00/052A : 85 C4 | sta {$C2}+2 + 360 | 1 Unidrive4.asm 341 | Empty | 11 | | 0 | 00/052C | + 361 | 1 Unidrive4.asm 342 | Comment | 11 | | 0 | 00/052C | ************************** Target Function *********************** + 362 | 1 Unidrive4.asm 343 | Comment | 11 | | 0 | 00/052C | * Y=N1+N2 * + 363 | 1 Unidrive4.asm 344 | Comment | 11 | | 0 | 00/052C | ****************************************************************** + 364 | 1 Unidrive4.asm 345 | Comment | 11 | | 0 | 00/052C | * + 365 | 1 Unidrive4.asm 346 | Comment | 11 | | 0 | 00/052C | ** Simple ADD ** + 366 | 1 Unidrive4.asm 347 | Code | 11 | | 3 | 00/052C : 20 82 05 | jsr FADD ; Call FP routine + 367 | 1 Unidrive4.asm 348 | Empty | 11 | | 0 | 00/052F | + 368 | 1 Unidrive4.asm 349 | Comment | 11 | | 0 | 00/052F | *** Output Data result FP1 to Unidisk registers First Time first 3 Byte out *** + 369 | 1 Unidrive4.asm 350 | Code | 11 | | 2 | 00/052F : A5 C5 | lda {$C5} + 370 | 1 Unidrive4.asm 351 | Code | 11 | | 2 | 00/0531 : A6 C6 | ldx {$C6} + 371 | 1 Unidrive4.asm 352 | Code | 11 | | 2 | 00/0533 : A4 C7 | ldy {$C6}+1 + 372 | 1 Unidrive4.asm 353 | Empty | 11 | | 0 | 00/0535 | + 373 | 1 Unidrive4.asm 354 | Code | 11 | | 1 | 00/0535 : 60 | rts + 374 | 1 Unidrive4.asm 355 | Comment | 11 | | 0 | 00/0536 | *** Output Data result FP1 to Unidisk registers Second Time latest 1 Byte out *** + 375 | 1 Unidrive4.asm 356 | Code | 11 | | 2 | 00/0536 : A5 C8 | SECOND lda {$C6}+2 + 376 | 1 Unidrive4.asm 357 | Empty | 11 | | 0 | 00/0538 | + 377 | 1 Unidrive4.asm 358 | Code | 11 | | 1 | 00/0538 : 60 | rts + 378 | 1 Unidrive4.asm 359 | Comment | 11 | | 0 | 00/0539 | *************************************************** + 379 | 1 Unidrive4.asm 360 | Comment | 11 | | 0 | 00/0539 | * + 380 | 1 Unidrive4.asm 361 | Comment | 11 | | 0 | 00/0539 | ***************** FP Routine ***************** + 381 | 1 Unidrive4.asm 362 | Comment | 11 | | 0 | 00/0539 | * + 382 | 1 Unidrive4.asm 363 | Comment | 11 | | 0 | 00/0539 | *********************** + 383 | 1 Unidrive4.asm 364 | Comment | 11 | | 0 | 00/0539 | * * + 384 | 1 Unidrive4.asm 365 | Comment | 11 | | 0 | 00/0539 | * APPLE-II FLOATING * + 385 | 1 Unidrive4.asm 366 | Comment | 11 | | 0 | 00/0539 | * POINT ROUTINES * + 386 | 1 Unidrive4.asm 367 | Comment | 11 | | 0 | 00/0539 | * * + 387 | 1 Unidrive4.asm 368 | Comment | 11 | | 0 | 00/0539 | * COPYRIGHT 1977 BY * + 388 | 1 Unidrive4.asm 369 | Comment | 11 | | 0 | 00/0539 | * APPLE COMPUTER INC. * + 389 | 1 Unidrive4.asm 370 | Comment | 11 | | 0 | 00/0539 | * * + 390 | 1 Unidrive4.asm 371 | Comment | 11 | | 0 | 00/0539 | * ALL RIGHTS RESERVED * + 391 | 1 Unidrive4.asm 372 | Comment | 11 | | 0 | 00/0539 | * * + 392 | 1 Unidrive4.asm 373 | Comment | 11 | | 0 | 00/0539 | * S. WOZNIAK * + 393 | 1 Unidrive4.asm 374 | Comment | 11 | | 0 | 00/0539 | * * + 394 | 1 Unidrive4.asm 375 | Comment | 11 | | 0 | 00/0539 | *********************** + 395 | 1 Unidrive4.asm 376 | Comment | 11 | | 0 | 00/0539 | * TITLE "FLOATING POINT ROUTINES for Unidisk memory" + 396 | 1 Unidrive4.asm 377 | Comment | 11 | | 0 | 00/0539 | * + 397 | 1 Unidrive4.asm 378 | Empty | 11 | | 0 | 00/0539 | + 398 | 1 Unidrive4.asm 379 | Comment | 11 | | 0 | 00/0539 | * ORG $300 + 399 | 1 Unidrive4.asm 380 | Empty | 11 | | 0 | 00/0539 | + 400 | 1 Unidrive4.asm 381 | Code | 11 | | 1 | 00/0539 : 18 | ADD CLC ;CLEAR CARRY + 401 | 1 Unidrive4.asm 382 | Code | 11 | | 2 | 00/053A : A2 02 | LDX #$2 ;INDEX FOR 3-BYTE ADD. + 402 | 1 Unidrive4.asm 383 | Code | 11 | | 2 | 00/053C : B5 C6 | ADD1 LDA {$C6},X + 403 | 1 Unidrive4.asm 384 | Code | 11 | | 2 | 00/053E : 75 C2 | ADC {$C2},X ;ADD A BYTE OF MANT2 TO MANT1 + 404 | 1 Unidrive4.asm 385 | Code | 11 | | 2 | 00/0540 : 95 C6 | STA {$C6},X + 405 | 1 Unidrive4.asm 386 | Code | 11 | | 1 | 00/0542 : CA | DEX ;INDEX TO NEXT MORE SIGNIF. BYTE. + 406 | 1 Unidrive4.asm 387 | Code | 11 | | 2 | 00/0543 : 10 F7 | BPL ADD1 ;LOOP UNTIL DONE. + 407 | 1 Unidrive4.asm 388 | Code | 11 | | 1 | 00/0545 : 60 | RTS ;RETURN + 408 | 1 Unidrive4.asm 389 | Code | 11 | | 2 | 00/0546 : 06 C0 | MD1 ASL {$C0} ;CLEAR LSB OF SIGN. + 409 | 1 Unidrive4.asm 390 | Code | 11 | | 3 | 00/0548 : 20 4B 05 | JSR ABSWAP ;ABS VAL OF M1, THEN SWAP WITH M2 + 410 | 1 Unidrive4.asm 391 | Code | 11 | | 2 | 00/054B : 24 C6 | ABSWAP BIT {$C6} ;MANT1 NEGATIVE? + 411 | 1 Unidrive4.asm 392 | Code | 11 | | 2 | 00/054D : 10 05 | BPL ABSWAP1 ;NO, SWAP WITH MANT2 AND RETURN. + 412 | 1 Unidrive4.asm 393 | Code | 11 | | 3 | 00/054F : 20 B8 05 | JSR FCOMPL ;YES, COMPLEMENT IT. + 413 | 1 Unidrive4.asm 394 | Code | 11 | | 2 | 00/0552 : E6 C0 | INC {$C0} ;INCR SIGN, COMPLEMENTING LSB. + 414 | 1 Unidrive4.asm 395 | Code | 11 | | 1 | 00/0554 : 38 | ABSWAP1 SEC ;SET CARRY FOR RETURN TO MUL/DIV. + 415 | 1 Unidrive4.asm 396 | Code | 11 | | 2 | 00/0555 : A2 04 | SWAP LDX #$4 ;INDEX FOR 4 BYTE SWAP. + 416 | 1 Unidrive4.asm 397 | Code | 11 | | 2 | 00/0557 : 94 C8 | SWAP1 STY {$C9}-1,X + 417 | 1 Unidrive4.asm 398 | Code | 11 | | 2 | 00/0559 : B5 C4 | LDA {$C5}-1,X ;SWAP A BYTE OF EXP/MANT1 WITH + 418 | 1 Unidrive4.asm 399 | Code | 11 | | 2 | 00/055B : B4 C0 | LDY {$C1}-1,X ;EXP/MANT2 AND LEAVE A COPY OF + 419 | 1 Unidrive4.asm 400 | Code | 11 | | 2 | 00/055D : 94 C4 | STY {$C5}-1,X ;MANT1 IN E (3 BYTES). E+3 USED + 420 | 1 Unidrive4.asm 401 | Code | 11 | | 2 | 00/055F : 95 C0 | STA {$C1}-1,X + 421 | 1 Unidrive4.asm 402 | Code | 11 | | 1 | 00/0561 : CA | DEX ;ADVANCE INDEX TO NEXT BYTE + 422 | 1 Unidrive4.asm 403 | Code | 11 | | 2 | 00/0562 : D0 F3 | BNE SWAP1 ;LOOP UNTIL DONE. + 423 | 1 Unidrive4.asm 404 | Code | 11 | | 1 | 00/0564 : 60 | RTS ;RETURN + 424 | 1 Unidrive4.asm 405 | Code | 11 | | 2 | 00/0565 : A9 8E | FLOAT LDA #$8E ;INIT EXP1 TO 14, <--------------- int to fp + 425 | 1 Unidrive4.asm 406 | Code | 11 | | 2 | 00/0567 : 85 C5 | STA {$C5} ;THEN NORMALIZE TO FLOAT. + 426 | 1 Unidrive4.asm 407 | Code | 11 | | 2 | 00/0569 : A5 C6 | NORM1 LDA {$C6} ;HIGH-ORDER MANT1 BYTE. + 427 | 1 Unidrive4.asm 408 | Code | 11 | | 2 | 00/056B : C9 C0 | CMP #$C0 ;UPPER TWO BITS UNEQUAL? + 428 | 1 Unidrive4.asm 409 | Code | 11 | | 2 | 00/056D : 30 0C | BMI RTS1 ;YES, RETURN WITH MANT1 NORMALIZED + 429 | 1 Unidrive4.asm 410 | Code | 11 | | 2 | 00/056F : C6 C5 | DEC {$C5} ;DECREMENT EXP1. + 430 | 1 Unidrive4.asm 411 | Code | 11 | | 2 | 00/0571 : 06 C8 | ASL {$C6}+2 + 431 | 1 Unidrive4.asm 412 | Code | 11 | | 2 | 00/0573 : 26 C7 | ROL {$C6}+1 ;SHIFT MANT1 (3 BYTES) LEFT. + 432 | 1 Unidrive4.asm 413 | Code | 11 | | 2 | 00/0575 : 26 C6 | ROL {$C6} + 433 | 1 Unidrive4.asm 414 | Code | 11 | | 2 | 00/0577 : A5 C5 | NORM LDA {$C5} ;EXP1 ZERO? + 434 | 1 Unidrive4.asm 415 | Code | 11 | | 2 | 00/0579 : D0 EE | BNE NORM1 ;NO, CONTINUE NORMALIZING. + 435 | 1 Unidrive4.asm 416 | Code | 11 | | 1 | 00/057B : 60 | RTS1 RTS ;RETURN. + 436 | 1 Unidrive4.asm 417 | Code | 11 | | 3 | 00/057C : 20 B8 05 | FSUB JSR FCOMPL ;CMPL MANT1,CLEARS CARRY UNLESS 0 <---- sub + 437 | 1 Unidrive4.asm 418 | Code | 11 | | 3 | 00/057F : 20 8F 05 | SWPALGN JSR ALGNSWP ;RIGHT SHIFT MANT1 OR SWAP WITH + 438 | 1 Unidrive4.asm 419 | Code | 11 | | 2 | 00/0582 : A5 C1 | FADD LDA {$C1} ;<------------------------------------- add + 439 | 1 Unidrive4.asm 420 | Code | 11 | | 2 | 00/0584 : C5 C5 | CMP {$C5} ;COMPARE EXP1 WITH EXP2. + 440 | 1 Unidrive4.asm 421 | Code | 11 | | 2 | 00/0586 : D0 F7 | BNE SWPALGN ;IF #,SWAP ADDENDS OR ALIGN MANTS. + 441 | 1 Unidrive4.asm 422 | Code | 11 | | 3 | 00/0588 : 20 39 05 | JSR ADD ;ADD ALIGNED MANTISSAS. + 442 | 1 Unidrive4.asm 423 | Code | 11 | | 2 | 00/058B : 50 EA | ADDEND BVC NORM ;NO OVERFLOW, NORMALIZE RESULT. + 443 | 1 Unidrive4.asm 424 | Code | 11 | | 2 | 00/058D : 70 05 | BVS RTLOG ;OV: SHIFT M1 RIGHT, CARRY INTO SIGN + 444 | 1 Unidrive4.asm 425 | Code | 11 | | 2 | 00/058F : 90 C4 | ALGNSWP BCC SWAP ;SWAP IF CARRY CLEAR, + 445 | 1 Unidrive4.asm 426 | Comment | 11 | | 0 | 00/0591 | * ELSE SHIFT RIGHT ARITH. + 446 | 1 Unidrive4.asm 427 | Code | 11 | | 2 | 00/0591 : A5 C6 | RTAR LDA {$C6} ;SIGN OF MANT1 INTO CARRY FOR + 447 | 1 Unidrive4.asm 428 | Code | 11 | | 1 | 00/0593 : 0A | ASL ;RIGHT ARITH SHIFT. + 448 | 1 Unidrive4.asm 429 | Code | 11 | | 2 | 00/0594 : E6 C5 | RTLOG INC {$C5} ;INCR X1 TO ADJUST FOR RIGHT SHIFT + 449 | 1 Unidrive4.asm 430 | Code | 11 | | 2 | 00/0596 : F0 75 | BEQ OVFL ;EXP1 OUT OF RANGE. + 450 | 1 Unidrive4.asm 431 | Code | 11 | | 2 | 00/0598 : A2 FA | RTLOG1 LDX #$FA ;INDEX FOR 6:BYTE RIGHT SHIFT. + 451 | 1 Unidrive4.asm 432 | Code | 11 | | 2 | 00/059A : 76 CC | ROR1 ROR {$C9}+3,X + 452 | 1 Unidrive4.asm 433 | Code | 11 | | 1 | 00/059C : E8 | INX ;NEXT BYTE OF SHIFT. + 453 | 1 Unidrive4.asm 434 | Code | 11 | | 2 | 00/059D : D0 FB | BNE ROR1 ;LOOP UNTIL DONE. + 454 | 1 Unidrive4.asm 435 | Code | 11 | | 1 | 00/059F : 60 | RTS ;RETURN. + 455 | 1 Unidrive4.asm 436 | Code | 11 | | 3 | 00/05A0 : 20 46 05 | FMUL JSR MD1 ;ABS VAL OF MANT1, MANT2 <-------------- mul + 456 | 1 Unidrive4.asm 437 | Code | 11 | | 2 | 00/05A3 : 65 C5 | ADC {$C5} ;ADD EXP1 TO EXP2 FOR PRODUCT EXP + 457 | 1 Unidrive4.asm 438 | Code | 11 | | 3 | 00/05A5 : 20 F6 05 | JSR MD2 ;CHECK PROD. EXP AND PREP. FOR MUL + 458 | 1 Unidrive4.asm 439 | Code | 11 | | 1 | 00/05A8 : 18 | CLC ;CLEAR CARRY FOR FIRST BIT. + 459 | 1 Unidrive4.asm 440 | Code | 11 | | 3 | 00/05A9 : 20 98 05 | MUL1 JSR RTLOG1 ;M1 AND E RIGHT (PROD AND MPLIER) + 460 | 1 Unidrive4.asm 441 | Code | 11 | | 2 | 00/05AC : 90 03 | BCC MUL2 ;IF CARRY CLEAR, SKIP PARTIAL PROD + 461 | 1 Unidrive4.asm 442 | Code | 11 | | 3 | 00/05AE : 20 39 05 | JSR ADD ;ADD MULTIPLICAND TO PRODUCT. + 462 | 1 Unidrive4.asm 443 | Code | 11 | | 1 | 00/05B1 : 88 | MUL2 DEY ;NEXT MUL ITERATION. + 463 | 1 Unidrive4.asm 444 | Code | 11 | | 2 | 00/05B2 : 10 F5 | BPL MUL1 ;LOOP UNTIL DONE. + 464 | 1 Unidrive4.asm 445 | Code | 11 | | 2 | 00/05B4 : 46 C0 | MDEND LSR {$C0} ;TEST SIGN LSB. + 465 | 1 Unidrive4.asm 446 | Code | 11 | | 2 | 00/05B6 : 90 BF | NORMX BCC NORM ;IF EVEN,NORMALIZE PROD,ELSE COMP + 466 | 1 Unidrive4.asm 447 | Code | 11 | | 1 | 00/05B8 : 38 | FCOMPL SEC ;SET CARRY FOR SUBTRACT. <--------------- not + 467 | 1 Unidrive4.asm 448 | Code | 11 | | 2 | 00/05B9 : A2 03 | LDX #$3 ;INDEX FOR 3 BYTE SUBTRACT. + 468 | 1 Unidrive4.asm 449 | Code | 11 | | 2 | 00/05BB : A9 00 | COMPL1 LDA #$0 ;CLEAR A. + 469 | 1 Unidrive4.asm 450 | Code | 11 | | 2 | 00/05BD : F5 C5 | SBC {$C5},X ;SUBTRACT BYTE OF EXP1. + 470 | 1 Unidrive4.asm 451 | Code | 11 | | 2 | 00/05BF : 95 C5 | STA {$C5},X ;RESTORE IT. + 471 | 1 Unidrive4.asm 452 | Code | 11 | | 1 | 00/05C1 : CA | DEX ;NEXT MORE SIGNIFICANT BYTE. + 472 | 1 Unidrive4.asm 453 | Code | 11 | | 2 | 00/05C2 : D0 F7 | BNE COMPL1 ;LOOP UNTIL DONE. + 473 | 1 Unidrive4.asm 454 | Code | 11 | | 2 | 00/05C4 : F0 C5 | BEQ ADDEND ;NORMALIZE (OR SHIFT RT IF OVFL). + 474 | 1 Unidrive4.asm 455 | Code | 11 | | 3 | 00/05C6 : 20 46 05 | FDIV JSR MD1 ;TAKE ABS VAL OF MANT1, MANT2. <--------- div + 475 | 1 Unidrive4.asm 456 | Code | 11 | | 2 | 00/05C9 : E5 C5 | SBC {$C5} ;SUBTRACT EXP1 FROM EXP2. + 476 | 1 Unidrive4.asm 457 | Code | 11 | | 3 | 00/05CB : 20 F6 05 | JSR MD2 ;SAVE AS QUOTIENT EXP. + 477 | 1 Unidrive4.asm 458 | Code | 11 | | 1 | 00/05CE : 38 | DIV1 SEC ;SET CARRY FOR SUBTRACT. + 478 | 1 Unidrive4.asm 459 | Code | 11 | | 2 | 00/05CF : A2 02 | LDX #$2 ;INDEX FOR 3-BYTE SUBTRACTION. + 479 | 1 Unidrive4.asm 460 | Code | 11 | | 2 | 00/05D1 : B5 C2 | DIV2 LDA {$C2},X + 480 | 1 Unidrive4.asm 461 | Code | 11 | | 2 | 00/05D3 : F5 C9 | SBC {$C9},X ;SUBTRACT A BYTE OF E FROM MANT2. + 481 | 1 Unidrive4.asm 462 | Code | 11 | | 1 | 00/05D5 : 48 | PHA ;SAVE ON STACK. + 482 | 1 Unidrive4.asm 463 | Code | 11 | | 1 | 00/05D6 : CA | DEX ;NEXT MORE SIGNIFICANT BYTE. + 483 | 1 Unidrive4.asm 464 | Code | 11 | | 2 | 00/05D7 : 10 F8 | BPL DIV2 ;LOOP UNTIL DONE. + 484 | 1 Unidrive4.asm 465 | Code | 11 | | 2 | 00/05D9 : A2 FD | LDX #$FD ;INDEX FOR 3-BYTE CONDITIONAL MOVE + 485 | 1 Unidrive4.asm 466 | Code | 11 | | 1 | 00/05DB : 68 | DIV3 PLA ;PULL BYTE OF DIFFERENCE OFF STACK + 486 | 1 Unidrive4.asm 467 | Code | 11 | | 2 | 00/05DC : 90 02 | BCC DIV4 ;IF M2 Date: Wed, 18 Feb 2015 19:18:45 +0100 Subject: [PATCH 04/12] Fix second time execution condition jump, by direct re-set the Program Counter value. --- AppleII/FP operations/Unidrive4.asm | 42 +++++++++++++---------------- 1 file changed, 19 insertions(+), 23 deletions(-) diff --git a/AppleII/FP operations/Unidrive4.asm b/AppleII/FP operations/Unidrive4.asm index fe368c0..37a37fb 100644 --- a/AppleII/FP operations/Unidrive4.asm +++ b/AppleII/FP operations/Unidrive4.asm @@ -87,31 +87,33 @@ Message asc 'NO PC OR NO DEVICE' ** Set the Input Value first in Dynamic data ** ** 4 Byte N1 to FP1 ** EXEC lda N1 ;X1 - sta $8238 ; Absolute addressing + sta $822F ; Absolute addressing lda N1+1 ;M1 (1) - sta $8239 + sta $8230 lda N1+2 ;M1 (2) - sta $823A + sta $8231 lda N1+3 ;M1 (3) - sta $823B + sta $8232 ** 4 Byte N2 to FP2 ** lda N2 ;X2 - sta $823C + sta $8233 lda N2+1 ;M2 (1) - sta $823D + sta $8234 lda N2+2 ;M2 (2) - sta $823E + sta $8235 lda N2+3 ;M2 (3) - sta $823F + sta $8236 *** Download *** jsr Dispatch dfb ControlCmd dw DOWNLOAD ** Set Unidisk Registers ** - lda #01 ;First time - sta UNIAcc_reg +* lda #01 ;First time +* sta UNIAcc_reg +* The program begin to PC preset to $0500 * +* ** Execute ** jsr Dispatch dfb ControlCmd @@ -133,8 +135,8 @@ READ jsr Dispatch sta N1+2 ** Second time execute ** - lda #02 ; Second time - sta UNIAcc_reg + lda #$3C ; Target the secont time entry point + sta LowPC_reg ; Second time set new value of PC ** Execute ** jsr Dispatch dfb ControlCmd @@ -276,8 +278,8 @@ 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 -HighPC_reg dfb $05 +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 * @@ -288,7 +290,7 @@ HByte_Addr dfb $05 * *** Download *** CNTL_LIST4 equ * -LenghtL_byte dfb $38 ;<----- Lenght of Unidisk program Lo - Byte 312 byte +LenghtL_byte dfb $34 ;<----- Lenght of Unidisk program Lo - Byte 312 byte LenghtH_byte dfb $01 ;<----- Lenght of Unidisk program Hi Byte * **************** Start UNIDISK Program **************** @@ -307,14 +309,10 @@ M1 EQU $C6 ;$FB ; $F9 - $FB E EQU $C9 ;$FE ; $FC OVLOC EQU $C10 ;$3F5 ;Overflow routine is not implemented at now) + * ** Main program ** * -* CHK if is the second execution * - - cmp #02 - beq SECOND ;Only to read the rest part of result - ** Input data to Zero Page ** ** FP1 ** @@ -353,7 +351,7 @@ OVLOC EQU $C10 ;$3F5 ;Overflow routine is not implemented at now) rts *** Output Data result FP1 to Unidisk registers Second Time latest 1 Byte out *** -SECOND lda M1+2 +SECOND lda M1+2 ; Entry point by Program Counter set rts *************************************************** @@ -375,8 +373,6 @@ SECOND lda M1+2 *********************** * TITLE "FLOATING POINT ROUTINES for Unidisk memory" * - -* ORG $300 ADD CLC ;CLEAR CARRY LDX #$2 ;INDEX FOR 3-BYTE ADD. From e6923c9789d6d701a34043c6bcbff5b55d8b4c89 Mon Sep 17 00:00:00 2001 From: rigreco Date: Wed, 18 Feb 2015 22:22:10 +0100 Subject: [PATCH 05/12] New files --- AppleII/FP operations/.gitignore | 2 + AppleII/FP operations/UniFP.asm | 324 +++---- AppleII/FP operations/UniFP_Output.txt | 334 +++---- AppleII/FP operations/Unidrive4 | Bin 0 -> 567 bytes AppleII/FP operations/Unidrive4_Output.txt | 876 +++++++++--------- AppleII/FP operations/Unidrive4t | Bin 0 -> 574 bytes AppleII/FP operations/Unidrive4t.asm | 522 +++++++++++ AppleII/FP operations/Unidrive4t_Output.txt | 549 +++++++++++ AppleII/FP operations/_FileInformation.txt | 2 + AppleII/Integer adc 1 Byte/Unicalc | Bin 0 -> 353 bytes AppleII/Integer adc 1 Byte/Unicalc.asm | 392 ++++++++ AppleII/Integer adc 1 Byte/Unicalc.do | Bin 0 -> 143360 bytes AppleII/Integer adc 1 Byte/Unicalc_Output.txt | 415 +++++++++ AppleII/Integer adc 1 Byte/Unidrive | Bin 0 -> 243 bytes AppleII/Integer adc 1 Byte/Unidrive.asm | 311 +++++++ .../Integer adc 1 Byte/Unidrive_Output.txt | 343 +++++++ AppleII/Integer adc 2 Byte/Unidrive2 | Bin 0 -> 237 bytes AppleII/Integer adc 2 Byte/Unidrive2.asm | 280 ++++++ .../Integer adc 2 Byte/Unidrive2_Output.txt | 286 ++++++ AppleII/Memory dump/Uniprox | Bin 0 -> 438 bytes AppleII/Memory dump/Uniprox.asm | 379 ++++++++ AppleII/Memory dump/Uniprox_Output.txt | 400 ++++++++ AppleII/Memory dump/Uniproz | Bin 0 -> 249 bytes AppleII/Memory dump/Uniproz.asm | 264 ++++++ AppleII/Memory dump/Uniproz_Output.txt | 270 ++++++ AppleII/N integer adc 2 Byte/TestN | 2 + AppleII/N integer adc 2 Byte/TestN.asm | 71 ++ AppleII/N integer adc 2 Byte/TestN_Output.txt | 75 ++ AppleII/N integer adc 2 Byte/Unidrive3 | Bin 0 -> 275 bytes AppleII/N integer adc 2 Byte/Unidrive3.asm | 321 +++++++ .../N integer adc 2 Byte/Unidrive3_Output.txt | 327 +++++++ 31 files changed, 5976 insertions(+), 769 deletions(-) create mode 100644 AppleII/FP operations/.gitignore create mode 100644 AppleII/FP operations/Unidrive4 create mode 100644 AppleII/FP operations/Unidrive4t create mode 100644 AppleII/FP operations/Unidrive4t.asm create mode 100644 AppleII/FP operations/Unidrive4t_Output.txt create mode 100644 AppleII/FP operations/_FileInformation.txt create mode 100644 AppleII/Integer adc 1 Byte/Unicalc create mode 100644 AppleII/Integer adc 1 Byte/Unicalc.asm create mode 100644 AppleII/Integer adc 1 Byte/Unicalc.do create mode 100644 AppleII/Integer adc 1 Byte/Unicalc_Output.txt create mode 100644 AppleII/Integer adc 1 Byte/Unidrive create mode 100644 AppleII/Integer adc 1 Byte/Unidrive.asm create mode 100644 AppleII/Integer adc 1 Byte/Unidrive_Output.txt create mode 100644 AppleII/Integer adc 2 Byte/Unidrive2 create mode 100644 AppleII/Integer adc 2 Byte/Unidrive2.asm create mode 100644 AppleII/Integer adc 2 Byte/Unidrive2_Output.txt create mode 100644 AppleII/Memory dump/Uniprox create mode 100644 AppleII/Memory dump/Uniprox.asm create mode 100644 AppleII/Memory dump/Uniprox_Output.txt create mode 100644 AppleII/Memory dump/Uniproz create mode 100644 AppleII/Memory dump/Uniproz.asm create mode 100644 AppleII/Memory dump/Uniproz_Output.txt create mode 100644 AppleII/N integer adc 2 Byte/TestN create mode 100644 AppleII/N integer adc 2 Byte/TestN.asm create mode 100644 AppleII/N integer adc 2 Byte/TestN_Output.txt create mode 100644 AppleII/N integer adc 2 Byte/Unidrive3 create mode 100644 AppleII/N integer adc 2 Byte/Unidrive3.asm create mode 100644 AppleII/N integer adc 2 Byte/Unidrive3_Output.txt diff --git a/AppleII/FP operations/.gitignore b/AppleII/FP operations/.gitignore new file mode 100644 index 0000000..7b87f7c --- /dev/null +++ b/AppleII/FP operations/.gitignore @@ -0,0 +1,2 @@ +/UniFP +/UniFP_Output.txt diff --git a/AppleII/FP operations/UniFP.asm b/AppleII/FP operations/UniFP.asm index 29cf1a0..3eea7f6 100644 --- a/AppleII/FP operations/UniFP.asm +++ b/AppleII/FP operations/UniFP.asm @@ -1,163 +1,163 @@ -* @com.wudsn.ide.asm.hardware=APPLE2 - *********************** - * * - * APPLE-II FLOATING * - * POINT ROUTINES * - * * - * COPYRIGHT 1977 BY * - * APPLE COMPUTER INC. * - * * - * ALL RIGHTS RESERVED * - * * - * S. WOZNIAK * - * * - *********************** -* TITLE "FLOATING POINT ROUTINES for //c memory" -* -SIGN EQU $EB ; $F3 - - ** FP2 4 Bytes ** -X2 EQU $EC ; $F4 -M2 EQU $ED ; $F5 - $7 - - ** FP1 4 Bytes + E extension ** -X1 EQU $FA ; $F8 -M1 EQU $FB ; $F9 - $FB -E EQU $FE ; $FC - -OVLOC EQU $3F5 - - ORG $300 - -ADD CLC ;CLEAR CARRY - LDX #$2 ;INDEX FOR 3-BYTE ADD. -ADD1 LDA M1,X - ADC M2,X ;ADD A BYTE OF MANT2 TO MANT1 - STA M1,X - DEX ;INDEX TO NEXT MORE SIGNIF. BYTE. - BPL ADD1 ;LOOP UNTIL DONE. - RTS ;RETURN -MD1 ASL SIGN ;CLEAR LSB OF SIGN. - JSR ABSWAP ;ABS VAL OF M1, THEN SWAP WITH M2 -ABSWAP BIT M1 ;MANT1 NEGATIVE? - BPL ABSWAP1 ;NO, SWAP WITH MANT2 AND RETURN. - JSR FCOMPL ;YES, COMPLEMENT IT. - INC SIGN ;INCR SIGN, COMPLEMENTING LSB. -ABSWAP1 SEC ;SET CARRY FOR RETURN TO MUL/DIV. -SWAP LDX #$4 ;INDEX FOR 4 BYTE SWAP. -SWAP1 STY E-1,X - LDA X1-1,X ;SWAP A BYTE OF EXP/MANT1 WITH - LDY X2-1,X ;EXP/MANT2 AND LEAVE A COPY OF - STY X1-1,X ;MANT1 IN E (3 BYTES). E+3 USED - STA X2-1,X - DEX ;ADVANCE INDEX TO NEXT BYTE - BNE SWAP1 ;LOOP UNTIL DONE. - RTS ;RETURN -FLOAT LDA #$8E ;INIT EXP1 TO 14, <--------------- int to fp - STA X1 ;THEN NORMALIZE TO FLOAT. -NORM1 LDA M1 ;HIGH-ORDER MANT1 BYTE. - CMP #$C0 ;UPPER TWO BITS UNEQUAL? - BMI RTS1 ;YES, RETURN WITH MANT1 NORMALIZED - DEC X1 ;DECREMENT EXP1. - ASL M1+2 - ROL M1+1 ;SHIFT MANT1 (3 BYTES) LEFT. - ROL M1 -NORM LDA X1 ;EXP1 ZERO? - BNE NORM1 ;NO, CONTINUE NORMALIZING. -RTS1 RTS ;RETURN. -FSUB JSR FCOMPL ;CMPL MANT1,CLEARS CARRY UNLESS 0 <---- sub -SWPALGN JSR ALGNSWP ;RIGHT SHIFT MANT1 OR SWAP WITH -FADD LDA X2 ;<------------------------------------- add - CMP X1 ;COMPARE EXP1 WITH EXP2. - BNE SWPALGN ;IF #,SWAP ADDENDS OR ALIGN MANTS. - JSR ADD ;ADD ALIGNED MANTISSAS. -ADDEND BVC NORM ;NO OVERFLOW, NORMALIZE RESULT. - BVS RTLOG ;OV: SHIFT M1 RIGHT, CARRY INTO SIGN -ALGNSWP BCC SWAP ;SWAP IF CARRY CLEAR, - * ELSE SHIFT RIGHT ARITH. -RTAR LDA M1 ;SIGN OF MANT1 INTO CARRY FOR - ASL ;RIGHT ARITH SHIFT. -RTLOG INC X1 ;INCR X1 TO ADJUST FOR RIGHT SHIFT - BEQ OVFL ;EXP1 OUT OF RANGE. -RTLOG1 LDX #$FA ;INDEX FOR 6:BYTE RIGHT SHIFT. -ROR1 ROR E+3,X - INX ;NEXT BYTE OF SHIFT. - BNE ROR1 ;LOOP UNTIL DONE. - RTS ;RETURN. -FMUL JSR MD1 ;ABS VAL OF MANT1, MANT2 <-------------- mul - ADC X1 ;ADD EXP1 TO EXP2 FOR PRODUCT EXP - JSR MD2 ;CHECK PROD. EXP AND PREP. FOR MUL - CLC ;CLEAR CARRY FOR FIRST BIT. -MUL1 JSR RTLOG1 ;M1 AND E RIGHT (PROD AND MPLIER) - BCC MUL2 ;IF CARRY CLEAR, SKIP PARTIAL PROD - JSR ADD ;ADD MULTIPLICAND TO PRODUCT. -MUL2 DEY ;NEXT MUL ITERATION. - BPL MUL1 ;LOOP UNTIL DONE. -MDEND LSR SIGN ;TEST SIGN LSB. -NORMX BCC NORM ;IF EVEN,NORMALIZE PROD,ELSE COMP -FCOMPL SEC ;SET CARRY FOR SUBTRACT. <--------------- not - LDX #$3 ;INDEX FOR 3 BYTE SUBTRACT. -COMPL1 LDA #$0 ;CLEAR A. - SBC X1,X ;SUBTRACT BYTE OF EXP1. - STA X1,X ;RESTORE IT. - DEX ;NEXT MORE SIGNIFICANT BYTE. - BNE COMPL1 ;LOOP UNTIL DONE. - BEQ ADDEND ;NORMALIZE (OR SHIFT RT IF OVFL). -FDIV JSR MD1 ;TAKE ABS VAL OF MANT1, MANT2. <--------- div - SBC X1 ;SUBTRACT EXP1 FROM EXP2. - JSR MD2 ;SAVE AS QUOTIENT EXP. -DIV1 SEC ;SET CARRY FOR SUBTRACT. - LDX #$2 ;INDEX FOR 3-BYTE SUBTRACTION. -DIV2 LDA M2,X - SBC E,X ;SUBTRACT A BYTE OF E FROM MANT2. - PHA ;SAVE ON STACK. - DEX ;NEXT MORE SIGNIFICANT BYTE. - BPL DIV2 ;LOOP UNTIL DONE. - LDX #$FD ;INDEX FOR 3-BYTE CONDITIONAL MOVE -DIV3 PLA ;PULL BYTE OF DIFFERENCE OFF STACK - BCC DIV4 ;IF M2Ph<9Pr%h}0NuvgplO0}}r2>%dgi%FsCUS?KF6r}yM z5;E+N7{)K5*q1Ww<0ZKM^C>LWgqmr}Xu}>n``8MH1mA>@B<{i#F2SN6Qw6hk+be#^ z*}4OIvMd{6Kaw%^V@l=XrK-L9-G+H=kMqSuS+>IC^vOh2OCO}Gm5YV&D0;scZ2Ft3 xaxRn1=ZkMwDU;h5h}pkq&SD;GG|$(!!d|RrMg$RR`eCA}Nc;%Jd~$YI@DHTe1YQ6D literal 0 HcmV?d00001 diff --git a/AppleII/FP operations/Unidrive4_Output.txt b/AppleII/FP operations/Unidrive4_Output.txt index 3dcd36d..016ff96 100644 --- a/AppleII/FP operations/Unidrive4_Output.txt +++ b/AppleII/FP operations/Unidrive4_Output.txt @@ -53,16 +53,16 @@ 50 | 1 Unidrive4.asm 50 | Empty | 11 | | 0 | 00/8000 | 51 | 1 Unidrive4.asm 51 | Comment | 11 | | 0 | 00/8000 | * 52 | 1 Unidrive4.asm 52 | Comment | 11 | | 0 | 00/8000 | * Find a Protocol Converter in one of the slots. - 53 | 1 Unidrive4.asm 53 | Code | 11 | | 3 | 00/8000 : 20 9E 80 | START jsr {ozunid_4} + 53 | 1 Unidrive4.asm 53 | Code | 11 | | 3 | 00/8000 : 20 99 80 | START jsr {ozunid_4} 54 | 1 Unidrive4.asm 54 | Code | 11 | | 2 | 00/8003 : B0 10 | bcs {ozunid_1} 55 | 1 Unidrive4.asm 55 | Comment | 11 | | 0 | 00/8005 | *** Eject *** - 56 | 1 Unidrive4.asm 56 | Code | 11 | | 3 | 00/8005 : 20 D3 80 | jsr {ozunid_9} + 56 | 1 Unidrive4.asm 56 | Code | 11 | | 3 | 00/8005 : 20 CE 80 | jsr {ozunid_9} 57 | 1 Unidrive4.asm 57 | Data | 11 | | 1 | 00/8008 : 04 | dfb {4} - 58 | 1 Unidrive4.asm 58 | Data | 11 | | 2 | 00/8009 : F2 80 | dw {ozunid_15} + 58 | 1 Unidrive4.asm 58 | Data | 11 | | 2 | 00/8009 : ED 80 | dw {ozunid_15} 59 | 1 Unidrive4.asm 59 | Comment | 11 | | 0 | 00/800B | *** Set Address *** - 60 | 1 Unidrive4.asm 60 | Code | 11 | | 3 | 00/800B : 20 D3 80 | jsr {ozunid_9} + 60 | 1 Unidrive4.asm 60 | Code | 11 | | 3 | 00/800B : 20 CE 80 | jsr {ozunid_9} 61 | 1 Unidrive4.asm 61 | Data | 11 | | 1 | 00/800E : 04 | dfb {4} - 62 | 1 Unidrive4.asm 62 | Data | 11 | | 2 | 00/800F : E3 80 | dw {ozunid_12} + 62 | 1 Unidrive4.asm 62 | Data | 11 | | 2 | 00/800F : DE 80 | dw {ozunid_12} 63 | 1 Unidrive4.asm 63 | Comment | 11 | | 0 | 00/8011 | * 64 | 1 Unidrive4.asm 64 | Code | 11 | | 3 | 00/8011 : 20 37 80 | jsr EXEC ; Jump the Error routine 65 | 1 Unidrive4.asm 65 | Code | 11 | | 1 | 00/8014 : 60 | rts @@ -97,453 +97,449 @@ 90 | 1 Unidrive4.asm 87 | Comment | 11 | | 0 | 00/8037 | ** Set the Input Value first in Dynamic data ** 91 | 1 Unidrive4.asm 88 | Comment | 11 | | 0 | 00/8037 | ** 4 Byte N1 to FP1 ** 92 | 1 Unidrive4.asm 89 | Code | 11 | | 2 | 00/8037 : A5 FA | EXEC lda {$FA} ;X1 - 93 | 1 Unidrive4.asm 90 | Code | 11 | | 3 | 00/8039 : 8D 38 82 | sta $8238 ; Absolute addressing + 93 | 1 Unidrive4.asm 90 | Code | 11 | | 3 | 00/8039 : 8D 2F 82 | sta $822F ; Absolute addressing 94 | 1 Unidrive4.asm 91 | Code | 11 | | 2 | 00/803C : A5 FB | lda {$FA}+1 ;M1 (1) - 95 | 1 Unidrive4.asm 92 | Code | 11 | | 3 | 00/803E : 8D 39 82 | sta $8239 + 95 | 1 Unidrive4.asm 92 | Code | 11 | | 3 | 00/803E : 8D 30 82 | sta $8230 96 | 1 Unidrive4.asm 93 | Code | 11 | | 2 | 00/8041 : A5 FC | lda {$FA}+2 ;M1 (2) - 97 | 1 Unidrive4.asm 94 | Code | 11 | | 3 | 00/8043 : 8D 3A 82 | sta $823A + 97 | 1 Unidrive4.asm 94 | Code | 11 | | 3 | 00/8043 : 8D 31 82 | sta $8231 98 | 1 Unidrive4.asm 95 | Code | 11 | | 2 | 00/8046 : A5 FD | lda {$FA}+3 ;M1 (3) - 99 | 1 Unidrive4.asm 96 | Code | 11 | | 3 | 00/8048 : 8D 3B 82 | sta $823B + 99 | 1 Unidrive4.asm 96 | Code | 11 | | 3 | 00/8048 : 8D 32 82 | sta $8232 100 | 1 Unidrive4.asm 97 | Empty | 11 | | 0 | 00/804B | 101 | 1 Unidrive4.asm 98 | Comment | 11 | | 0 | 00/804B | ** 4 Byte N2 to FP2 ** 102 | 1 Unidrive4.asm 99 | Code | 11 | | 2 | 00/804B : A5 EC | lda {$EC} ;X2 - 103 | 1 Unidrive4.asm 100 | Code | 11 | | 3 | 00/804D : 8D 3C 82 | sta $823C + 103 | 1 Unidrive4.asm 100 | Code | 11 | | 3 | 00/804D : 8D 33 82 | sta $8233 104 | 1 Unidrive4.asm 101 | Code | 11 | | 2 | 00/8050 : A5 ED | lda {$EC}+1 ;M2 (1) - 105 | 1 Unidrive4.asm 102 | Code | 11 | | 3 | 00/8052 : 8D 3D 82 | sta $823D + 105 | 1 Unidrive4.asm 102 | Code | 11 | | 3 | 00/8052 : 8D 34 82 | sta $8234 106 | 1 Unidrive4.asm 103 | Code | 11 | | 2 | 00/8055 : A5 EE | lda {$EC}+2 ;M2 (2) - 107 | 1 Unidrive4.asm 104 | Code | 11 | | 3 | 00/8057 : 8D 3E 82 | sta $823E + 107 | 1 Unidrive4.asm 104 | Code | 11 | | 3 | 00/8057 : 8D 35 82 | sta $8235 108 | 1 Unidrive4.asm 105 | Code | 11 | | 2 | 00/805A : A5 EF | lda {$EC}+3 ;M2 (3) - 109 | 1 Unidrive4.asm 106 | Code | 11 | | 3 | 00/805C : 8D 3F 82 | sta $823F + 109 | 1 Unidrive4.asm 106 | Code | 11 | | 3 | 00/805C : 8D 36 82 | sta $8236 110 | 1 Unidrive4.asm 107 | Empty | 11 | | 0 | 00/805F | 111 | 1 Unidrive4.asm 108 | Comment | 11 | | 0 | 00/805F | *** Download *** - 112 | 1 Unidrive4.asm 109 | Code | 11 | | 3 | 00/805F : 20 D3 80 | jsr {ozunid_9} + 112 | 1 Unidrive4.asm 109 | Code | 11 | | 3 | 00/805F : 20 CE 80 | jsr {ozunid_9} 113 | 1 Unidrive4.asm 110 | Data | 11 | | 1 | 00/8062 : 04 | dfb {4} - 114 | 1 Unidrive4.asm 111 | Data | 11 | | 2 | 00/8063 : E8 80 | dw {ozunid_13} + 114 | 1 Unidrive4.asm 111 | Data | 11 | | 2 | 00/8063 : E3 80 | dw {ozunid_13} 115 | 1 Unidrive4.asm 112 | Comment | 11 | | 0 | 00/8065 | ** Set Unidisk Registers ** - 116 | 1 Unidrive4.asm 113 | Code | 11 | | 2 | 00/8065 : A9 01 | lda #01 ;First time - 117 | 1 Unidrive4.asm 114 | Code | 11 | | 3 | 00/8067 : 8D DE 80 | sta UNIAcc_reg - 118 | 1 Unidrive4.asm 115 | Comment | 11 | | 0 | 00/806A | ** Execute ** - 119 | 1 Unidrive4.asm 116 | Code | 11 | | 3 | 00/806A : 20 D3 80 | jsr {ozunid_9} - 120 | 1 Unidrive4.asm 117 | Data | 11 | | 1 | 00/806D : 04 | dfb {4} - 121 | 1 Unidrive4.asm 118 | Data | 11 | | 2 | 00/806E : ED 80 | dw {ozunid_14} - 122 | 1 Unidrive4.asm 119 | Comment | 11 | | 0 | 00/8070 | ** Read ** - 123 | 1 Unidrive4.asm 120 | Code | 11 | | 3 | 00/8070 : 20 D3 80 | READ jsr {ozunid_9} - 124 | 1 Unidrive4.asm 121 | Data | 11 | | 1 | 00/8073 : 00 | dfb {0} - 125 | 1 Unidrive4.asm 122 | Data | 11 | | 2 | 00/8074 : D6 80 | dw {ozunid_10} - 126 | 1 Unidrive4.asm 123 | Code | 11 | | 2 | 00/8076 : B0 9D | bcs {ozunid_1} - 127 | 1 Unidrive4.asm 124 | Comment | 11 | | 0 | 00/8078 | * - 128 | 1 Unidrive4.asm 125 | Comment | 11 | | 0 | 00/8078 | **** Store Output results in //c **** - 129 | 1 Unidrive4.asm 126 | Empty | 11 | | 0 | 00/8078 | - 130 | 1 Unidrive4.asm 127 | Comment | 11 | | 0 | 00/8078 | * First time execute * - 131 | 1 Unidrive4.asm 128 | Code | 11 | | 3 | 00/8078 : AD DE 80 | lda UNIAcc_reg - 132 | 1 Unidrive4.asm 129 | Code | 11 | | 2 | 00/807B : 85 FA | sta {$FA} - 133 | 1 Unidrive4.asm 130 | Code | 11 | | 3 | 00/807D : AD DF 80 | lda UNIX_reg - 134 | 1 Unidrive4.asm 131 | Code | 11 | | 2 | 00/8080 : 85 FB | sta {$FA}+1 ; Store the result - 135 | 1 Unidrive4.asm 132 | Code | 11 | | 3 | 00/8082 : AD E0 80 | lda UNIY_reg - 136 | 1 Unidrive4.asm 133 | Code | 11 | | 2 | 00/8085 : 85 FC | sta {$FA}+2 - 137 | 1 Unidrive4.asm 134 | Empty | 11 | | 0 | 00/8087 | - 138 | 1 Unidrive4.asm 135 | Comment | 11 | | 0 | 00/8087 | ** Second time execute ** - 139 | 1 Unidrive4.asm 136 | Code | 11 | | 2 | 00/8087 : A9 02 | lda #02 ; Second time - 140 | 1 Unidrive4.asm 137 | Code | 11 | | 3 | 00/8089 : 8D DE 80 | sta UNIAcc_reg - 141 | 1 Unidrive4.asm 138 | Comment | 11 | | 0 | 00/808C | ** Execute ** - 142 | 1 Unidrive4.asm 139 | Code | 11 | | 3 | 00/808C : 20 D3 80 | jsr {ozunid_9} - 143 | 1 Unidrive4.asm 140 | Data | 11 | | 1 | 00/808F : 04 | dfb {4} - 144 | 1 Unidrive4.asm 141 | Data | 11 | | 2 | 00/8090 : ED 80 | dw {ozunid_14} - 145 | 1 Unidrive4.asm 142 | Comment | 11 | | 0 | 00/8092 | ** Read ** - 146 | 1 Unidrive4.asm 143 | Code | 11 | | 3 | 00/8092 : 20 D3 80 | jsr {ozunid_9} - 147 | 1 Unidrive4.asm 144 | Data | 11 | | 1 | 00/8095 : 00 | dfb {0} - 148 | 1 Unidrive4.asm 145 | Data | 11 | | 2 | 00/8096 : D6 80 | dw {ozunid_10} - 149 | 1 Unidrive4.asm 146 | Comment | 11 | | 0 | 00/8098 | * bcs Error - 150 | 1 Unidrive4.asm 147 | Empty | 11 | | 0 | 00/8098 | - 151 | 1 Unidrive4.asm 148 | Comment | 11 | | 0 | 00/8098 | * Second time execute only to read the latest Byte of FP1* - 152 | 1 Unidrive4.asm 149 | Code | 11 | | 3 | 00/8098 : AD DE 80 | lda UNIAcc_reg - 153 | 1 Unidrive4.asm 150 | Code | 11 | | 2 | 00/809B : 85 FD | sta {$FA}+3 - 154 | 1 Unidrive4.asm 151 | Comment | 11 | | 0 | 00/809D | * - 155 | 1 Unidrive4.asm 152 | Code | 11 | | 1 | 00/809D : 60 | rts - 156 | 1 Unidrive4.asm 153 | Empty | 11 | | 0 | 00/809E | - 157 | 1 Unidrive4.asm 154 | Comment | 11 | | 0 | 00/809E | ****************************************************** - 158 | 1 Unidrive4.asm 155 | Empty | 11 | | 0 | 00/809E | ozunid_4 - 159 | 1 Unidrive4.asm 155 | Equivalence | 11 | | 0 | 00/809E | FindPC equ ozunid_4 - 160 | 1 Unidrive4.asm 156 | Comment | 11 | | 0 | 00/809E | * - 161 | 1 Unidrive4.asm 157 | Comment | 11 | | 0 | 00/809E | * Search slot 7 to slot 1 looking for signature bytes - 162 | 1 Unidrive4.asm 158 | Comment | 11 | | 0 | 00/809E | * - 163 | 1 Unidrive4.asm 159 | Code | 11 | | 2 | 00/809E : A2 07 | ldx #7 ;Do for seven slots - 164 | 1 Unidrive4.asm 160 | Code | 11 | | 2 | 00/80A0 : A9 C7 | lda #$C7 - 165 | 1 Unidrive4.asm 161 | Code | 11 | | 2 | 00/80A2 : 85 07 | sta {$0007} - 166 | 1 Unidrive4.asm 162 | Code | 11 | | 2 | 00/80A4 : A9 00 | lda #$00 - 167 | 1 Unidrive4.asm 163 | Code | 11 | | 2 | 00/80A6 : 85 06 | sta {$0006} - 168 | 1 Unidrive4.asm 164 | Comment | 11 | | 0 | 00/80A8 | * - 169 | 1 Unidrive4.asm 165 | Empty | 11 | | 0 | 00/80A8 | ozunid_5 - 170 | 1 Unidrive4.asm 165 | Equivalence | 11 | | 0 | 00/80A8 | newslot equ ozunid_5 - 171 | 1 Unidrive4.asm 166 | Code | 11 | | 2 | 00/80A8 : A0 07 | ldy #7 - 172 | 1 Unidrive4.asm 167 | Comment | 11 | | 0 | 00/80AA | * - 173 | 1 Unidrive4.asm 168 | Empty | 11 | | 0 | 00/80AA | ozunid_6 - 174 | 1 Unidrive4.asm 168 | Equivalence | 11 | | 0 | 00/80AA | again equ ozunid_6 - 175 | 1 Unidrive4.asm 169 | Code | 11 | | 2 | 00/80AA : B1 06 | lda ({$0006}),y - 176 | 1 Unidrive4.asm 170 | Code | 11 | | 3 | 00/80AC : D9 CB 80 | cmp sigtab,y ;One for byte signature - 177 | 1 Unidrive4.asm 171 | Code | 11 | | 2 | 00/80AF : F0 07 | beq {ozunid_7} ;Found one signature byte - 178 | 1 Unidrive4.asm 172 | Code | 11 | | 2 | 00/80B1 : C6 07 | dec {$0007} - 179 | 1 Unidrive4.asm 173 | Code | 11 | | 1 | 00/80B3 : CA | dex - 180 | 1 Unidrive4.asm 174 | Code | 11 | | 2 | 00/80B4 : D0 F2 | bne {ozunid_5} - 181 | 1 Unidrive4.asm 175 | Comment | 11 | | 0 | 00/80B6 | * - 182 | 1 Unidrive4.asm 176 | Comment | 11 | | 0 | 00/80B6 | * if we get here, no PC find - 183 | 1 Unidrive4.asm 177 | Code | 11 | | 1 | 00/80B6 : 38 | sec - 184 | 1 Unidrive4.asm 178 | Code | 11 | | 1 | 00/80B7 : 60 | rts - 185 | 1 Unidrive4.asm 179 | Comment | 11 | | 0 | 00/80B8 | * - 186 | 1 Unidrive4.asm 180 | Comment | 11 | | 0 | 00/80B8 | * if we get here, no byte find on PC - 187 | 1 Unidrive4.asm 181 | Empty | 11 | | 0 | 00/80B8 | ozunid_7 - 188 | 1 Unidrive4.asm 181 | Equivalence | 11 | | 0 | 00/80B8 | maybe equ ozunid_7 - 189 | 1 Unidrive4.asm 182 | Code | 11 | | 1 | 00/80B8 : 88 | dey - 190 | 1 Unidrive4.asm 183 | Code | 11 | | 1 | 00/80B9 : 88 | dey ;if N=1 then all sig bytes OK - 191 | 1 Unidrive4.asm 184 | Code | 11 | | 2 | 00/80BA : 10 EE | bpl {ozunid_6} - 192 | 1 Unidrive4.asm 185 | Comment | 11 | | 0 | 00/80BC | * Found PC interface. Set up call address. - 193 | 1 Unidrive4.asm 186 | Comment | 11 | | 0 | 00/80BC | * we already have high byte ($CN), we need low byte - 194 | 1 Unidrive4.asm 187 | Comment | 11 | | 0 | 00/80BC | * - 195 | 1 Unidrive4.asm 188 | Empty | 11 | | 0 | 00/80BC | ozunid_8 - 196 | 1 Unidrive4.asm 188 | Equivalence | 11 | | 0 | 00/80BC | foundPC equ ozunid_8 - 197 | 1 Unidrive4.asm 189 | Code | 11 | | 2 | 00/80BC : A9 FF | lda #$FF - 198 | 1 Unidrive4.asm 190 | Code | 11 | | 2 | 00/80BE : 85 06 | sta {$0006} - 199 | 1 Unidrive4.asm 191 | Code | 11 | | 2 | 00/80C0 : A0 00 | ldy #0 ;For indirect load - 200 | 1 Unidrive4.asm 192 | Code | 11 | | 2 | 00/80C2 : B1 06 | lda ({$0006}),y ;Get the byte - 201 | 1 Unidrive4.asm 193 | Comment | 11 | | 0 | 00/80C4 | * - 202 | 1 Unidrive4.asm 194 | Comment | 11 | | 0 | 00/80C4 | * Now the Acc has the low oreder ProDOS entry point. - 203 | 1 Unidrive4.asm 195 | Comment | 11 | | 0 | 00/80C4 | * The PC entry is three locations past this ... - 204 | 1 Unidrive4.asm 196 | Comment | 11 | | 0 | 00/80C4 | * - 205 | 1 Unidrive4.asm 197 | Code | 11 | | 1 | 00/80C4 : 18 | clc - 206 | 1 Unidrive4.asm 198 | Code | 11 | | 2 | 00/80C5 : 69 03 | adc #3 - 207 | 1 Unidrive4.asm 199 | Code | 11 | | 2 | 00/80C7 : 85 06 | sta {$0006} - 208 | 1 Unidrive4.asm 200 | Comment | 11 | | 0 | 00/80C9 | * - 209 | 1 Unidrive4.asm 201 | Comment | 11 | | 0 | 00/80C9 | * Now ZPTempL has PC entry point. - 210 | 1 Unidrive4.asm 202 | Comment | 11 | | 0 | 00/80C9 | * Return with carry clear. - 211 | 1 Unidrive4.asm 203 | Comment | 11 | | 0 | 00/80C9 | * - 212 | 1 Unidrive4.asm 204 | Code | 11 | | 1 | 00/80C9 : 18 | clc - 213 | 1 Unidrive4.asm 205 | Code | 11 | | 1 | 00/80CA : 60 | rts - 214 | 1 Unidrive4.asm 206 | Comment | 11 | | 0 | 00/80CB | *********************************************************** - 215 | 1 Unidrive4.asm 207 | Comment | 11 | | 0 | 00/80CB | * - 216 | 1 Unidrive4.asm 208 | Comment | 11 | | 0 | 00/80CB | * There are the PC signature bytes in their relative order. - 217 | 1 Unidrive4.asm 209 | Comment | 11 | | 0 | 00/80CB | * The $FF bytes are filler bytes and are not compared. - 218 | 1 Unidrive4.asm 210 | Comment | 11 | | 0 | 00/80CB | * - 219 | 1 Unidrive4.asm 211 | Data | 11 | | 4 | 00/80CB : FF 20 FF 00 | sigtab dfb $FF,$20,$FF,$00 - 220 | 1 Unidrive4.asm 212 | Data | 11 | | 4 | 00/80CF : FF 03 FF 00 | dfb $FF,$03,$FF,$00 - 221 | 1 Unidrive4.asm 213 | Comment | 11 | | 0 | 00/80D3 | * - 222 | 1 Unidrive4.asm 214 | Empty | 11 | | 0 | 00/80D3 | ozunid_9 - 223 | 1 Unidrive4.asm 214 | Equivalence | 11 | | 0 | 00/80D3 | Dispatch equ ozunid_9 - 224 | 1 Unidrive4.asm 215 | Code | 11 | | 3 | 00/80D3 : 6C 06 00 | jmp ({$0006}) ;Simulate an indirect JSR to PC - 225 | 1 Unidrive4.asm 216 | Comment | 11 | | 0 | 00/80D6 | * - 226 | 1 Unidrive4.asm 217 | Comment | 11 | | 0 | 00/80D6 | *** Status Parameter Set for UNI *** - 227 | 1 Unidrive4.asm 218 | Empty | 11 | | 0 | 00/80D6 | ozunid_10 - 228 | 1 Unidrive4.asm 218 | Equivalence | 11 | | 0 | 00/80D6 | DParms equ ozunid_10 - 229 | 1 Unidrive4.asm 219 | Data | 11 | | 1 | 00/80D6 : 03 | DPParmsCt dfb 3 ;Status calls have three parameters - 230 | 1 Unidrive4.asm 220 | Data | 11 | | 1 | 00/80D7 : 01 | DPUnit dfb 1 - 231 | 1 Unidrive4.asm 221 | Data | 11 | | 2 | 00/80D8 : DB 80 | DPBuffer dw {ozunid_11} - 232 | 1 Unidrive4.asm 222 | Data | 11 | | 1 | 00/80DA : 05 | DPStatCode dfb {5} - 233 | 1 Unidrive4.asm 223 | Comment | 11 | | 0 | 00/80DB | * - 234 | 1 Unidrive4.asm 224 | Comment | 11 | | 0 | 00/80DB | * - 235 | 1 Unidrive4.asm 225 | Comment | 11 | | 0 | 00/80DB | * - 236 | 1 Unidrive4.asm 226 | Comment | 11 | | 0 | 00/80DB | *** Status List UNI *** - 237 | 1 Unidrive4.asm 227 | Empty | 11 | | 0 | 00/80DB | ozunid_11 - 238 | 1 Unidrive4.asm 227 | Equivalence | 11 | | 0 | 00/80DB | UNI equ ozunid_11 - 239 | 1 Unidrive4.asm 228 | Data | 11 | | 1 | 00/80DB : 00 | dfb 0 - 240 | 1 Unidrive4.asm 229 | Data | 11 | | 1 | 00/80DC : 00 | UNIError dfb 0 - 241 | 1 Unidrive4.asm 230 | Data | 11 | | 1 | 00/80DD : 00 | UNIRetries dfb 0 - 242 | 1 Unidrive4.asm 231 | Data | 11 | | 1 | 00/80DE : 00 | UNIAcc_reg dfb 0 - 243 | 1 Unidrive4.asm 232 | Data | 11 | | 1 | 00/80DF : 00 | UNIX_reg dfb 0 - 244 | 1 Unidrive4.asm 233 | Data | 11 | | 1 | 00/80E0 : 00 | UNIY_reg dfb 0 - 245 | 1 Unidrive4.asm 234 | Data | 11 | | 1 | 00/80E1 : 00 | UNIP_val dfb 0 - 246 | 1 Unidrive4.asm 235 | Data | 11 | | 1 | 00/80E2 : 00 | HHH dfb 0 - 247 | 1 Unidrive4.asm 236 | Comment | 11 | | 0 | 00/80E3 | * - 248 | 1 Unidrive4.asm 237 | Comment | 11 | | 0 | 00/80E3 | *** Set Address *** - 249 | 1 Unidrive4.asm 238 | Empty | 11 | | 0 | 00/80E3 | ozunid_12 - 250 | 1 Unidrive4.asm 238 | Equivalence | 11 | | 0 | 00/80E3 | SET_ADD equ ozunid_12 - 251 | 1 Unidrive4.asm 239 | Data | 11 | | 1 | 00/80E3 : 03 | dfb 3 - 252 | 1 Unidrive4.asm 240 | Data | 11 | | 1 | 00/80E4 : 01 | dfb 1 - 253 | 1 Unidrive4.asm 241 | Data | 11 | | 2 | 00/80E5 : 01 81 | dw {ozunid_18} - 254 | 1 Unidrive4.asm 242 | Data | 11 | | 1 | 00/80E7 : 06 | dfb {6} - 255 | 1 Unidrive4.asm 243 | Comment | 11 | | 0 | 00/80E8 | * - 256 | 1 Unidrive4.asm 244 | Comment | 11 | | 0 | 00/80E8 | *** Download *** - 257 | 1 Unidrive4.asm 245 | Empty | 11 | | 0 | 00/80E8 | ozunid_13 - 258 | 1 Unidrive4.asm 245 | Equivalence | 11 | | 0 | 00/80E8 | DOWNLOAD equ ozunid_13 - 259 | 1 Unidrive4.asm 246 | Data | 11 | | 1 | 00/80E8 : 03 | dfb 3 - 260 | 1 Unidrive4.asm 247 | Data | 11 | | 1 | 00/80E9 : 01 | dfb 1 - 261 | 1 Unidrive4.asm 248 | Data | 11 | | 2 | 00/80EA : 05 81 | dw {ozunid_19} - 262 | 1 Unidrive4.asm 249 | Data | 11 | | 1 | 00/80EC : 07 | dfb {7} - 263 | 1 Unidrive4.asm 250 | Comment | 11 | | 0 | 00/80ED | * - 264 | 1 Unidrive4.asm 251 | Comment | 11 | | 0 | 00/80ED | *** Execute *** - 265 | 1 Unidrive4.asm 252 | Empty | 11 | | 0 | 00/80ED | ozunid_14 - 266 | 1 Unidrive4.asm 252 | Equivalence | 11 | | 0 | 00/80ED | EXE equ ozunid_14 - 267 | 1 Unidrive4.asm 253 | Data | 11 | | 1 | 00/80ED : 03 | dfb 3 - 268 | 1 Unidrive4.asm 254 | Data | 11 | | 1 | 00/80EE : 01 | dfb 1 - 269 | 1 Unidrive4.asm 255 | Data | 11 | | 2 | 00/80EF : F9 80 | dw {ozunid_17} - 270 | 1 Unidrive4.asm 256 | Data | 11 | | 1 | 00/80F1 : 05 | dfb {5} - 271 | 1 Unidrive4.asm 257 | Comment | 11 | | 0 | 00/80F2 | *** Eject *** - 272 | 1 Unidrive4.asm 258 | Empty | 11 | | 0 | 00/80F2 | ozunid_15 - 273 | 1 Unidrive4.asm 258 | Equivalence | 11 | | 0 | 00/80F2 | E_JECT equ ozunid_15 - 274 | 1 Unidrive4.asm 259 | Data | 11 | | 1 | 00/80F2 : 03 | dfb 3 - 275 | 1 Unidrive4.asm 260 | Data | 11 | | 1 | 00/80F3 : 01 | dfb 1 - 276 | 1 Unidrive4.asm 261 | Data | 11 | | 2 | 00/80F4 : F7 80 | dw {ozunid_16} - 277 | 1 Unidrive4.asm 262 | Data | 11 | | 1 | 00/80F6 : 04 | dfb {4} - 278 | 1 Unidrive4.asm 263 | Comment | 11 | | 0 | 00/80F7 | * - 279 | 1 Unidrive4.asm 264 | Comment | 11 | | 0 | 00/80F7 | ******** CONTROL LISTS ******** - 280 | 1 Unidrive4.asm 265 | Comment | 11 | | 0 | 00/80F7 | * - 281 | 1 Unidrive4.asm 266 | Comment | 11 | | 0 | 00/80F7 | * - 282 | 1 Unidrive4.asm 267 | Comment | 11 | | 0 | 00/80F7 | *** Eject *** - 283 | 1 Unidrive4.asm 268 | Empty | 11 | | 0 | 00/80F7 | ozunid_16 - 284 | 1 Unidrive4.asm 268 | Equivalence | 11 | | 0 | 00/80F7 | CNTL_LIST1 equ ozunid_16 - 285 | 1 Unidrive4.asm 269 | Data | 11 | | 2 | 00/80F7 : 00 00 | dw $0000 - 286 | 1 Unidrive4.asm 270 | Comment | 11 | | 0 | 00/80F9 | * - 287 | 1 Unidrive4.asm 271 | Comment | 11 | | 0 | 00/80F9 | *** Execute *** - 288 | 1 Unidrive4.asm 272 | Empty | 11 | | 0 | 00/80F9 | ozunid_17 - 289 | 1 Unidrive4.asm 272 | Equivalence | 11 | | 0 | 00/80F9 | CNTL_LIST2 equ ozunid_17 - 290 | 1 Unidrive4.asm 273 | Data | 11 | | 1 | 00/80F9 : 06 | Clow_byte dfb $06 - 291 | 1 Unidrive4.asm 274 | Data | 11 | | 1 | 00/80FA : 00 | Chigh_byte dfb $00 - 292 | 1 Unidrive4.asm 275 | Data | 11 | | 1 | 00/80FB : 00 | AccValue dfb $00 ; Init Value Unidisk Accumulator Register - 293 | 1 Unidrive4.asm 276 | Data | 11 | | 1 | 00/80FC : 00 | X_reg dfb $00 ; Init Value Unidisk X Register - 294 | 1 Unidrive4.asm 277 | Data | 11 | | 1 | 00/80FD : 00 | Y_reg dfb $00 ; Init Value Unidisk Y Register - 295 | 1 Unidrive4.asm 278 | Data | 11 | | 1 | 00/80FE : 00 | ProStatus dfb $00 ; Init Value Unidisk Status Register - 296 | 1 Unidrive4.asm 279 | Data | 11 | | 1 | 00/80FF : 00 | LowPC_reg dfb $00 ; Init Value Unidisk Program Counter $0500 - 297 | 1 Unidrive4.asm 280 | Data | 11 | | 1 | 00/8100 : 05 | HighPC_reg dfb $05 - 298 | 1 Unidrive4.asm 281 | Comment | 11 | | 0 | 00/8101 | * - 299 | 1 Unidrive4.asm 282 | Comment | 11 | | 0 | 00/8101 | *** Set Address *** - 300 | 1 Unidrive4.asm 283 | Empty | 11 | | 0 | 00/8101 | ozunid_18 - 301 | 1 Unidrive4.asm 283 | Equivalence | 11 | | 0 | 00/8101 | CNTL_LIST3 equ ozunid_18 - 302 | 1 Unidrive4.asm 284 | Data | 11 | | 1 | 00/8101 : 02 | CountL_byte dfb $02 - 303 | 1 Unidrive4.asm 285 | Data | 11 | | 1 | 00/8102 : 00 | CountH_byte dfb $00 - 304 | 1 Unidrive4.asm 286 | Data | 11 | | 1 | 00/8103 : 00 | LByte_Addr dfb $00 ; ORG of Unidisk program, set begin program address $0500 - 305 | 1 Unidrive4.asm 287 | Data | 11 | | 1 | 00/8104 : 05 | HByte_Addr dfb $05 - 306 | 1 Unidrive4.asm 288 | Comment | 11 | | 0 | 00/8105 | * - 307 | 1 Unidrive4.asm 289 | Comment | 11 | | 0 | 00/8105 | *** Download *** - 308 | 1 Unidrive4.asm 290 | Empty | 11 | | 0 | 00/8105 | ozunid_19 - 309 | 1 Unidrive4.asm 290 | Equivalence | 11 | | 0 | 00/8105 | CNTL_LIST4 equ ozunid_19 - 310 | 1 Unidrive4.asm 291 | Data | 11 | | 1 | 00/8105 : 38 | LenghtL_byte dfb $38 ;<----- Lenght of Unidisk program Lo - Byte 312 byte - 311 | 1 Unidrive4.asm 292 | Data | 11 | | 1 | 00/8106 : 01 | LenghtH_byte dfb $01 ;<----- Lenght of Unidisk program Hi Byte - 312 | 1 Unidrive4.asm 293 | Comment | 11 | | 0 | 00/8107 | * - 313 | 1 Unidrive4.asm 294 | Comment | 11 | | 0 | 00/8107 | **************** Start UNIDISK Program **************** - 314 | 1 Unidrive4.asm 295 | Comment | 11 | | 0 | 00/8107 | * - 315 | 1 Unidrive4.asm 296 | Directive | 11 | | 0 | 00/8107 | org $0500 ; Start Unidisk program address - 316 | 1 Unidrive4.asm 297 | Empty | 11 | | 0 | 00/0500 | - 317 | 1 Unidrive4.asm 298 | Equivalence | 11 | | 0 | 00/0500 | SIGN EQU $C0 ;$EB ; $F3 + 116 | 1 Unidrive4.asm 113 | Comment | 11 | | 0 | 00/8065 | * lda #01 ;First time + 117 | 1 Unidrive4.asm 114 | Comment | 11 | | 0 | 00/8065 | * sta UNIAcc_reg + 118 | 1 Unidrive4.asm 115 | Comment | 11 | | 0 | 00/8065 | * The program begin to PC preset to $0500 * + 119 | 1 Unidrive4.asm 116 | Comment | 11 | | 0 | 00/8065 | * + 120 | 1 Unidrive4.asm 117 | Comment | 11 | | 0 | 00/8065 | ** Execute ** + 121 | 1 Unidrive4.asm 118 | Code | 11 | | 3 | 00/8065 : 20 CE 80 | jsr {ozunid_9} + 122 | 1 Unidrive4.asm 119 | Data | 11 | | 1 | 00/8068 : 04 | dfb {4} + 123 | 1 Unidrive4.asm 120 | Data | 11 | | 2 | 00/8069 : E8 80 | dw {ozunid_14} + 124 | 1 Unidrive4.asm 121 | Comment | 11 | | 0 | 00/806B | ** Read ** + 125 | 1 Unidrive4.asm 122 | Code | 11 | | 3 | 00/806B : 20 CE 80 | READ jsr {ozunid_9} + 126 | 1 Unidrive4.asm 123 | Data | 11 | | 1 | 00/806E : 00 | dfb {0} + 127 | 1 Unidrive4.asm 124 | Data | 11 | | 2 | 00/806F : D1 80 | dw {ozunid_10} + 128 | 1 Unidrive4.asm 125 | Code | 11 | | 2 | 00/8071 : B0 A2 | bcs {ozunid_1} + 129 | 1 Unidrive4.asm 126 | Comment | 11 | | 0 | 00/8073 | * + 130 | 1 Unidrive4.asm 127 | Comment | 11 | | 0 | 00/8073 | **** Store Output results in //c **** + 131 | 1 Unidrive4.asm 128 | Empty | 11 | | 0 | 00/8073 | + 132 | 1 Unidrive4.asm 129 | Comment | 11 | | 0 | 00/8073 | * First time execute * + 133 | 1 Unidrive4.asm 130 | Code | 11 | | 3 | 00/8073 : AD D9 80 | lda UNIAcc_reg + 134 | 1 Unidrive4.asm 131 | Code | 11 | | 2 | 00/8076 : 85 FA | sta {$FA} + 135 | 1 Unidrive4.asm 132 | Code | 11 | | 3 | 00/8078 : AD DA 80 | lda UNIX_reg + 136 | 1 Unidrive4.asm 133 | Code | 11 | | 2 | 00/807B : 85 FB | sta {$FA}+1 ; Store the result + 137 | 1 Unidrive4.asm 134 | Code | 11 | | 3 | 00/807D : AD DB 80 | lda UNIY_reg + 138 | 1 Unidrive4.asm 135 | Code | 11 | | 2 | 00/8080 : 85 FC | sta {$FA}+2 + 139 | 1 Unidrive4.asm 136 | Empty | 11 | | 0 | 00/8082 | + 140 | 1 Unidrive4.asm 137 | Comment | 11 | | 0 | 00/8082 | ** Second time execute ** + 141 | 1 Unidrive4.asm 138 | Code | 11 | | 2 | 00/8082 : A9 3C | lda #$3C ; Target the secont time entry point + 142 | 1 Unidrive4.asm 139 | Code | 11 | | 3 | 00/8084 : 8D FA 80 | sta LowPC_reg ; Second time set new value of PC + 143 | 1 Unidrive4.asm 140 | Comment | 11 | | 0 | 00/8087 | ** Execute ** + 144 | 1 Unidrive4.asm 141 | Code | 11 | | 3 | 00/8087 : 20 CE 80 | jsr {ozunid_9} + 145 | 1 Unidrive4.asm 142 | Data | 11 | | 1 | 00/808A : 04 | dfb {4} + 146 | 1 Unidrive4.asm 143 | Data | 11 | | 2 | 00/808B : E8 80 | dw {ozunid_14} + 147 | 1 Unidrive4.asm 144 | Comment | 11 | | 0 | 00/808D | ** Read ** + 148 | 1 Unidrive4.asm 145 | Code | 11 | | 3 | 00/808D : 20 CE 80 | jsr {ozunid_9} + 149 | 1 Unidrive4.asm 146 | Data | 11 | | 1 | 00/8090 : 00 | dfb {0} + 150 | 1 Unidrive4.asm 147 | Data | 11 | | 2 | 00/8091 : D1 80 | dw {ozunid_10} + 151 | 1 Unidrive4.asm 148 | Comment | 11 | | 0 | 00/8093 | * bcs Error + 152 | 1 Unidrive4.asm 149 | Empty | 11 | | 0 | 00/8093 | + 153 | 1 Unidrive4.asm 150 | Comment | 11 | | 0 | 00/8093 | * Second time execute only to read the latest Byte of FP1* + 154 | 1 Unidrive4.asm 151 | Code | 11 | | 3 | 00/8093 : AD D9 80 | lda UNIAcc_reg + 155 | 1 Unidrive4.asm 152 | Code | 11 | | 2 | 00/8096 : 85 FD | sta {$FA}+3 + 156 | 1 Unidrive4.asm 153 | Comment | 11 | | 0 | 00/8098 | * + 157 | 1 Unidrive4.asm 154 | Code | 11 | | 1 | 00/8098 : 60 | rts + 158 | 1 Unidrive4.asm 155 | Empty | 11 | | 0 | 00/8099 | + 159 | 1 Unidrive4.asm 156 | Comment | 11 | | 0 | 00/8099 | ****************************************************** + 160 | 1 Unidrive4.asm 157 | Empty | 11 | | 0 | 00/8099 | ozunid_4 + 161 | 1 Unidrive4.asm 157 | Equivalence | 11 | | 0 | 00/8099 | FindPC equ ozunid_4 + 162 | 1 Unidrive4.asm 158 | Comment | 11 | | 0 | 00/8099 | * + 163 | 1 Unidrive4.asm 159 | Comment | 11 | | 0 | 00/8099 | * Search slot 7 to slot 1 looking for signature bytes + 164 | 1 Unidrive4.asm 160 | Comment | 11 | | 0 | 00/8099 | * + 165 | 1 Unidrive4.asm 161 | Code | 11 | | 2 | 00/8099 : A2 07 | ldx #7 ;Do for seven slots + 166 | 1 Unidrive4.asm 162 | Code | 11 | | 2 | 00/809B : A9 C7 | lda #$C7 + 167 | 1 Unidrive4.asm 163 | Code | 11 | | 2 | 00/809D : 85 07 | sta {$0007} + 168 | 1 Unidrive4.asm 164 | Code | 11 | | 2 | 00/809F : A9 00 | lda #$00 + 169 | 1 Unidrive4.asm 165 | Code | 11 | | 2 | 00/80A1 : 85 06 | sta {$0006} + 170 | 1 Unidrive4.asm 166 | Comment | 11 | | 0 | 00/80A3 | * + 171 | 1 Unidrive4.asm 167 | Empty | 11 | | 0 | 00/80A3 | ozunid_5 + 172 | 1 Unidrive4.asm 167 | Equivalence | 11 | | 0 | 00/80A3 | newslot equ ozunid_5 + 173 | 1 Unidrive4.asm 168 | Code | 11 | | 2 | 00/80A3 : A0 07 | ldy #7 + 174 | 1 Unidrive4.asm 169 | Comment | 11 | | 0 | 00/80A5 | * + 175 | 1 Unidrive4.asm 170 | Empty | 11 | | 0 | 00/80A5 | ozunid_6 + 176 | 1 Unidrive4.asm 170 | Equivalence | 11 | | 0 | 00/80A5 | again equ ozunid_6 + 177 | 1 Unidrive4.asm 171 | Code | 11 | | 2 | 00/80A5 : B1 06 | lda ({$0006}),y + 178 | 1 Unidrive4.asm 172 | Code | 11 | | 3 | 00/80A7 : D9 C6 80 | cmp sigtab,y ;One for byte signature + 179 | 1 Unidrive4.asm 173 | Code | 11 | | 2 | 00/80AA : F0 07 | beq {ozunid_7} ;Found one signature byte + 180 | 1 Unidrive4.asm 174 | Code | 11 | | 2 | 00/80AC : C6 07 | dec {$0007} + 181 | 1 Unidrive4.asm 175 | Code | 11 | | 1 | 00/80AE : CA | dex + 182 | 1 Unidrive4.asm 176 | Code | 11 | | 2 | 00/80AF : D0 F2 | bne {ozunid_5} + 183 | 1 Unidrive4.asm 177 | Comment | 11 | | 0 | 00/80B1 | * + 184 | 1 Unidrive4.asm 178 | Comment | 11 | | 0 | 00/80B1 | * if we get here, no PC find + 185 | 1 Unidrive4.asm 179 | Code | 11 | | 1 | 00/80B1 : 38 | sec + 186 | 1 Unidrive4.asm 180 | Code | 11 | | 1 | 00/80B2 : 60 | rts + 187 | 1 Unidrive4.asm 181 | Comment | 11 | | 0 | 00/80B3 | * + 188 | 1 Unidrive4.asm 182 | Comment | 11 | | 0 | 00/80B3 | * if we get here, no byte find on PC + 189 | 1 Unidrive4.asm 183 | Empty | 11 | | 0 | 00/80B3 | ozunid_7 + 190 | 1 Unidrive4.asm 183 | Equivalence | 11 | | 0 | 00/80B3 | maybe equ ozunid_7 + 191 | 1 Unidrive4.asm 184 | Code | 11 | | 1 | 00/80B3 : 88 | dey + 192 | 1 Unidrive4.asm 185 | Code | 11 | | 1 | 00/80B4 : 88 | dey ;if N=1 then all sig bytes OK + 193 | 1 Unidrive4.asm 186 | Code | 11 | | 2 | 00/80B5 : 10 EE | bpl {ozunid_6} + 194 | 1 Unidrive4.asm 187 | Comment | 11 | | 0 | 00/80B7 | * Found PC interface. Set up call address. + 195 | 1 Unidrive4.asm 188 | Comment | 11 | | 0 | 00/80B7 | * we already have high byte ($CN), we need low byte + 196 | 1 Unidrive4.asm 189 | Comment | 11 | | 0 | 00/80B7 | * + 197 | 1 Unidrive4.asm 190 | Empty | 11 | | 0 | 00/80B7 | ozunid_8 + 198 | 1 Unidrive4.asm 190 | Equivalence | 11 | | 0 | 00/80B7 | foundPC equ ozunid_8 + 199 | 1 Unidrive4.asm 191 | Code | 11 | | 2 | 00/80B7 : A9 FF | lda #$FF + 200 | 1 Unidrive4.asm 192 | Code | 11 | | 2 | 00/80B9 : 85 06 | sta {$0006} + 201 | 1 Unidrive4.asm 193 | Code | 11 | | 2 | 00/80BB : A0 00 | ldy #0 ;For indirect load + 202 | 1 Unidrive4.asm 194 | Code | 11 | | 2 | 00/80BD : B1 06 | lda ({$0006}),y ;Get the byte + 203 | 1 Unidrive4.asm 195 | Comment | 11 | | 0 | 00/80BF | * + 204 | 1 Unidrive4.asm 196 | Comment | 11 | | 0 | 00/80BF | * Now the Acc has the low oreder ProDOS entry point. + 205 | 1 Unidrive4.asm 197 | Comment | 11 | | 0 | 00/80BF | * The PC entry is three locations past this ... + 206 | 1 Unidrive4.asm 198 | Comment | 11 | | 0 | 00/80BF | * + 207 | 1 Unidrive4.asm 199 | Code | 11 | | 1 | 00/80BF : 18 | clc + 208 | 1 Unidrive4.asm 200 | Code | 11 | | 2 | 00/80C0 : 69 03 | adc #3 + 209 | 1 Unidrive4.asm 201 | Code | 11 | | 2 | 00/80C2 : 85 06 | sta {$0006} + 210 | 1 Unidrive4.asm 202 | Comment | 11 | | 0 | 00/80C4 | * + 211 | 1 Unidrive4.asm 203 | Comment | 11 | | 0 | 00/80C4 | * Now ZPTempL has PC entry point. + 212 | 1 Unidrive4.asm 204 | Comment | 11 | | 0 | 00/80C4 | * Return with carry clear. + 213 | 1 Unidrive4.asm 205 | Comment | 11 | | 0 | 00/80C4 | * + 214 | 1 Unidrive4.asm 206 | Code | 11 | | 1 | 00/80C4 : 18 | clc + 215 | 1 Unidrive4.asm 207 | Code | 11 | | 1 | 00/80C5 : 60 | rts + 216 | 1 Unidrive4.asm 208 | Comment | 11 | | 0 | 00/80C6 | *********************************************************** + 217 | 1 Unidrive4.asm 209 | Comment | 11 | | 0 | 00/80C6 | * + 218 | 1 Unidrive4.asm 210 | Comment | 11 | | 0 | 00/80C6 | * There are the PC signature bytes in their relative order. + 219 | 1 Unidrive4.asm 211 | Comment | 11 | | 0 | 00/80C6 | * The $FF bytes are filler bytes and are not compared. + 220 | 1 Unidrive4.asm 212 | Comment | 11 | | 0 | 00/80C6 | * + 221 | 1 Unidrive4.asm 213 | Data | 11 | | 4 | 00/80C6 : FF 20 FF 00 | sigtab dfb $FF,$20,$FF,$00 + 222 | 1 Unidrive4.asm 214 | Data | 11 | | 4 | 00/80CA : FF 03 FF 00 | dfb $FF,$03,$FF,$00 + 223 | 1 Unidrive4.asm 215 | Comment | 11 | | 0 | 00/80CE | * + 224 | 1 Unidrive4.asm 216 | Empty | 11 | | 0 | 00/80CE | ozunid_9 + 225 | 1 Unidrive4.asm 216 | Equivalence | 11 | | 0 | 00/80CE | Dispatch equ ozunid_9 + 226 | 1 Unidrive4.asm 217 | Code | 11 | | 3 | 00/80CE : 6C 06 00 | jmp ({$0006}) ;Simulate an indirect JSR to PC + 227 | 1 Unidrive4.asm 218 | Comment | 11 | | 0 | 00/80D1 | * + 228 | 1 Unidrive4.asm 219 | Comment | 11 | | 0 | 00/80D1 | *** Status Parameter Set for UNI *** + 229 | 1 Unidrive4.asm 220 | Empty | 11 | | 0 | 00/80D1 | ozunid_10 + 230 | 1 Unidrive4.asm 220 | Equivalence | 11 | | 0 | 00/80D1 | DParms equ ozunid_10 + 231 | 1 Unidrive4.asm 221 | Data | 11 | | 1 | 00/80D1 : 03 | DPParmsCt dfb 3 ;Status calls have three parameters + 232 | 1 Unidrive4.asm 222 | Data | 11 | | 1 | 00/80D2 : 01 | DPUnit dfb 1 + 233 | 1 Unidrive4.asm 223 | Data | 11 | | 2 | 00/80D3 : D6 80 | DPBuffer dw {ozunid_11} + 234 | 1 Unidrive4.asm 224 | Data | 11 | | 1 | 00/80D5 : 05 | DPStatCode dfb {5} + 235 | 1 Unidrive4.asm 225 | Comment | 11 | | 0 | 00/80D6 | * + 236 | 1 Unidrive4.asm 226 | Comment | 11 | | 0 | 00/80D6 | * + 237 | 1 Unidrive4.asm 227 | Comment | 11 | | 0 | 00/80D6 | * + 238 | 1 Unidrive4.asm 228 | Comment | 11 | | 0 | 00/80D6 | *** Status List UNI *** + 239 | 1 Unidrive4.asm 229 | Empty | 11 | | 0 | 00/80D6 | ozunid_11 + 240 | 1 Unidrive4.asm 229 | Equivalence | 11 | | 0 | 00/80D6 | UNI equ ozunid_11 + 241 | 1 Unidrive4.asm 230 | Data | 11 | | 1 | 00/80D6 : 00 | dfb 0 + 242 | 1 Unidrive4.asm 231 | Data | 11 | | 1 | 00/80D7 : 00 | UNIError dfb 0 + 243 | 1 Unidrive4.asm 232 | Data | 11 | | 1 | 00/80D8 : 00 | UNIRetries dfb 0 + 244 | 1 Unidrive4.asm 233 | Data | 11 | | 1 | 00/80D9 : 00 | UNIAcc_reg dfb 0 + 245 | 1 Unidrive4.asm 234 | Data | 11 | | 1 | 00/80DA : 00 | UNIX_reg dfb 0 + 246 | 1 Unidrive4.asm 235 | Data | 11 | | 1 | 00/80DB : 00 | UNIY_reg dfb 0 + 247 | 1 Unidrive4.asm 236 | Data | 11 | | 1 | 00/80DC : 00 | UNIP_val dfb 0 + 248 | 1 Unidrive4.asm 237 | Data | 11 | | 1 | 00/80DD : 00 | HHH dfb 0 + 249 | 1 Unidrive4.asm 238 | Comment | 11 | | 0 | 00/80DE | * + 250 | 1 Unidrive4.asm 239 | Comment | 11 | | 0 | 00/80DE | *** Set Address *** + 251 | 1 Unidrive4.asm 240 | Empty | 11 | | 0 | 00/80DE | ozunid_12 + 252 | 1 Unidrive4.asm 240 | Equivalence | 11 | | 0 | 00/80DE | SET_ADD equ ozunid_12 + 253 | 1 Unidrive4.asm 241 | Data | 11 | | 1 | 00/80DE : 03 | dfb 3 + 254 | 1 Unidrive4.asm 242 | Data | 11 | | 1 | 00/80DF : 01 | dfb 1 + 255 | 1 Unidrive4.asm 243 | Data | 11 | | 2 | 00/80E0 : FC 80 | dw {ozunid_18} + 256 | 1 Unidrive4.asm 244 | Data | 11 | | 1 | 00/80E2 : 06 | dfb {6} + 257 | 1 Unidrive4.asm 245 | Comment | 11 | | 0 | 00/80E3 | * + 258 | 1 Unidrive4.asm 246 | Comment | 11 | | 0 | 00/80E3 | *** Download *** + 259 | 1 Unidrive4.asm 247 | Empty | 11 | | 0 | 00/80E3 | ozunid_13 + 260 | 1 Unidrive4.asm 247 | Equivalence | 11 | | 0 | 00/80E3 | DOWNLOAD equ ozunid_13 + 261 | 1 Unidrive4.asm 248 | Data | 11 | | 1 | 00/80E3 : 03 | dfb 3 + 262 | 1 Unidrive4.asm 249 | Data | 11 | | 1 | 00/80E4 : 01 | dfb 1 + 263 | 1 Unidrive4.asm 250 | Data | 11 | | 2 | 00/80E5 : 00 81 | dw {ozunid_19} + 264 | 1 Unidrive4.asm 251 | Data | 11 | | 1 | 00/80E7 : 07 | dfb {7} + 265 | 1 Unidrive4.asm 252 | Comment | 11 | | 0 | 00/80E8 | * + 266 | 1 Unidrive4.asm 253 | Comment | 11 | | 0 | 00/80E8 | *** Execute *** + 267 | 1 Unidrive4.asm 254 | Empty | 11 | | 0 | 00/80E8 | ozunid_14 + 268 | 1 Unidrive4.asm 254 | Equivalence | 11 | | 0 | 00/80E8 | EXE equ ozunid_14 + 269 | 1 Unidrive4.asm 255 | Data | 11 | | 1 | 00/80E8 : 03 | dfb 3 + 270 | 1 Unidrive4.asm 256 | Data | 11 | | 1 | 00/80E9 : 01 | dfb 1 + 271 | 1 Unidrive4.asm 257 | Data | 11 | | 2 | 00/80EA : F4 80 | dw {ozunid_17} + 272 | 1 Unidrive4.asm 258 | Data | 11 | | 1 | 00/80EC : 05 | dfb {5} + 273 | 1 Unidrive4.asm 259 | Comment | 11 | | 0 | 00/80ED | *** Eject *** + 274 | 1 Unidrive4.asm 260 | Empty | 11 | | 0 | 00/80ED | ozunid_15 + 275 | 1 Unidrive4.asm 260 | Equivalence | 11 | | 0 | 00/80ED | E_JECT equ ozunid_15 + 276 | 1 Unidrive4.asm 261 | Data | 11 | | 1 | 00/80ED : 03 | dfb 3 + 277 | 1 Unidrive4.asm 262 | Data | 11 | | 1 | 00/80EE : 01 | dfb 1 + 278 | 1 Unidrive4.asm 263 | Data | 11 | | 2 | 00/80EF : F2 80 | dw {ozunid_16} + 279 | 1 Unidrive4.asm 264 | Data | 11 | | 1 | 00/80F1 : 04 | dfb {4} + 280 | 1 Unidrive4.asm 265 | Comment | 11 | | 0 | 00/80F2 | * + 281 | 1 Unidrive4.asm 266 | Comment | 11 | | 0 | 00/80F2 | ******** CONTROL LISTS ******** + 282 | 1 Unidrive4.asm 267 | Comment | 11 | | 0 | 00/80F2 | * + 283 | 1 Unidrive4.asm 268 | Comment | 11 | | 0 | 00/80F2 | * + 284 | 1 Unidrive4.asm 269 | Comment | 11 | | 0 | 00/80F2 | *** Eject *** + 285 | 1 Unidrive4.asm 270 | Empty | 11 | | 0 | 00/80F2 | ozunid_16 + 286 | 1 Unidrive4.asm 270 | Equivalence | 11 | | 0 | 00/80F2 | CNTL_LIST1 equ ozunid_16 + 287 | 1 Unidrive4.asm 271 | Data | 11 | | 2 | 00/80F2 : 00 00 | dw $0000 + 288 | 1 Unidrive4.asm 272 | Comment | 11 | | 0 | 00/80F4 | * + 289 | 1 Unidrive4.asm 273 | Comment | 11 | | 0 | 00/80F4 | *** Execute *** + 290 | 1 Unidrive4.asm 274 | Empty | 11 | | 0 | 00/80F4 | ozunid_17 + 291 | 1 Unidrive4.asm 274 | Equivalence | 11 | | 0 | 00/80F4 | CNTL_LIST2 equ ozunid_17 + 292 | 1 Unidrive4.asm 275 | Data | 11 | | 1 | 00/80F4 : 06 | Clow_byte dfb $06 + 293 | 1 Unidrive4.asm 276 | Data | 11 | | 1 | 00/80F5 : 00 | Chigh_byte dfb $00 + 294 | 1 Unidrive4.asm 277 | Data | 11 | | 1 | 00/80F6 : 00 | AccValue dfb $00 ; Init Value Unidisk Accumulator Register + 295 | 1 Unidrive4.asm 278 | Data | 11 | | 1 | 00/80F7 : 00 | X_reg dfb $00 ; Init Value Unidisk X Register + 296 | 1 Unidrive4.asm 279 | Data | 11 | | 1 | 00/80F8 : 00 | Y_reg dfb $00 ; Init Value Unidisk Y Register + 297 | 1 Unidrive4.asm 280 | Data | 11 | | 1 | 00/80F9 : 00 | ProStatus dfb $00 ; Init Value Unidisk Status Register + 298 | 1 Unidrive4.asm 281 | Data | 11 | | 1 | 00/80FA : 00 | LowPC_reg dfb $00 ; Init Value Unidisk Program Counter $0500 at eny dowload + 299 | 1 Unidrive4.asm 282 | Data | 11 | | 1 | 00/80FB : 05 | HighPC_reg dfb $05 ; $05 first execution, $3C second execution + 300 | 1 Unidrive4.asm 283 | Comment | 11 | | 0 | 00/80FC | * + 301 | 1 Unidrive4.asm 284 | Comment | 11 | | 0 | 00/80FC | *** Set Address *** + 302 | 1 Unidrive4.asm 285 | Empty | 11 | | 0 | 00/80FC | ozunid_18 + 303 | 1 Unidrive4.asm 285 | Equivalence | 11 | | 0 | 00/80FC | CNTL_LIST3 equ ozunid_18 + 304 | 1 Unidrive4.asm 286 | Data | 11 | | 1 | 00/80FC : 02 | CountL_byte dfb $02 + 305 | 1 Unidrive4.asm 287 | Data | 11 | | 1 | 00/80FD : 00 | CountH_byte dfb $00 + 306 | 1 Unidrive4.asm 288 | Data | 11 | | 1 | 00/80FE : 00 | LByte_Addr dfb $00 ; ORG of Unidisk program, set begin program address $0500 + 307 | 1 Unidrive4.asm 289 | Data | 11 | | 1 | 00/80FF : 05 | HByte_Addr dfb $05 + 308 | 1 Unidrive4.asm 290 | Comment | 11 | | 0 | 00/8100 | * + 309 | 1 Unidrive4.asm 291 | Comment | 11 | | 0 | 00/8100 | *** Download *** + 310 | 1 Unidrive4.asm 292 | Empty | 11 | | 0 | 00/8100 | ozunid_19 + 311 | 1 Unidrive4.asm 292 | Equivalence | 11 | | 0 | 00/8100 | CNTL_LIST4 equ ozunid_19 + 312 | 1 Unidrive4.asm 293 | Data | 11 | | 1 | 00/8100 : 34 | LenghtL_byte dfb $34 ;<----- Lenght of Unidisk program Lo - Byte 312 byte + 313 | 1 Unidrive4.asm 294 | Data | 11 | | 1 | 00/8101 : 01 | LenghtH_byte dfb $01 ;<----- Lenght of Unidisk program Hi Byte + 314 | 1 Unidrive4.asm 295 | Comment | 11 | | 0 | 00/8102 | * + 315 | 1 Unidrive4.asm 296 | Comment | 11 | | 0 | 00/8102 | **************** Start UNIDISK Program **************** + 316 | 1 Unidrive4.asm 297 | Comment | 11 | | 0 | 00/8102 | * + 317 | 1 Unidrive4.asm 298 | Directive | 11 | | 0 | 00/8102 | org $0500 ; Start Unidisk program address 318 | 1 Unidrive4.asm 299 | Empty | 11 | | 0 | 00/0500 | - 319 | 1 Unidrive4.asm 300 | Comment | 11 | | 0 | 00/0500 | ** FP2 4 Bytes ** - 320 | 1 Unidrive4.asm 301 | Equivalence | 11 | | 0 | 00/0500 | X2 EQU $C1 ;$EC ; $F4 - 321 | 1 Unidrive4.asm 302 | Equivalence | 11 | | 0 | 00/0500 | M2 EQU $C2 ;$ED ; $F5 - $F7 - 322 | 1 Unidrive4.asm 303 | Empty | 11 | | 0 | 00/0500 | - 323 | 1 Unidrive4.asm 304 | Comment | 11 | | 0 | 00/0500 | ** FP1 4 Bytes + E extension ** - 324 | 1 Unidrive4.asm 305 | Equivalence | 11 | | 0 | 00/0500 | X1 EQU $C5 ;$FA ; $F8 - 325 | 1 Unidrive4.asm 306 | Equivalence | 11 | | 0 | 00/0500 | M1 EQU $C6 ;$FB ; $F9 - $FB - 326 | 1 Unidrive4.asm 307 | Equivalence | 11 | | 0 | 00/0500 | E EQU $C9 ;$FE ; $FC - 327 | 1 Unidrive4.asm 308 | Empty | 11 | | 0 | 00/0500 | - 328 | 1 Unidrive4.asm 309 | Equivalence | 11 | | 0 | 00/0500 | OVLOC EQU $C10 ;$3F5 ;Overflow routine is not implemented at now) - 329 | 1 Unidrive4.asm 310 | Comment | 11 | | 0 | 00/0500 | * - 330 | 1 Unidrive4.asm 311 | Comment | 11 | | 0 | 00/0500 | ** Main program ** - 331 | 1 Unidrive4.asm 312 | Comment | 11 | | 0 | 00/0500 | * - 332 | 1 Unidrive4.asm 313 | Comment | 11 | | 0 | 00/0500 | * CHK if is the second execution * - 333 | 1 Unidrive4.asm 314 | Empty | 11 | | 0 | 00/0500 | - 334 | 1 Unidrive4.asm 315 | Code | 11 | | 2 | 00/0500 : C9 02 | cmp #02 - 335 | 1 Unidrive4.asm 316 | Code | 11 | | 2 | 00/0502 : F0 32 | beq SECOND ;Only to read the rest part of result - 336 | 1 Unidrive4.asm 317 | Empty | 11 | | 0 | 00/0504 | - 337 | 1 Unidrive4.asm 318 | Comment | 11 | | 0 | 00/0504 | ** Input data to Zero Page ** - 338 | 1 Unidrive4.asm 319 | Empty | 11 | | 0 | 00/0504 | - 339 | 1 Unidrive4.asm 320 | Comment | 11 | | 0 | 00/0504 | ** FP1 ** - 340 | 1 Unidrive4.asm 321 | Code | 11 | | 3 | 00/0504 : AD 31 06 | lda FP1 - 341 | 1 Unidrive4.asm 322 | Code | 11 | | 2 | 00/0507 : 85 C5 | sta {$C5} - 342 | 1 Unidrive4.asm 323 | Empty | 11 | | 0 | 00/0509 | - 343 | 1 Unidrive4.asm 324 | Code | 11 | | 3 | 00/0509 : AD 32 06 | lda FP1+1 - 344 | 1 Unidrive4.asm 325 | Code | 11 | | 2 | 00/050C : 85 C6 | sta {$C6} - 345 | 1 Unidrive4.asm 326 | Code | 11 | | 3 | 00/050E : AD 33 06 | lda FP1+2 - 346 | 1 Unidrive4.asm 327 | Code | 11 | | 2 | 00/0511 : 85 C7 | sta {$C6}+1 - 347 | 1 Unidrive4.asm 328 | Code | 11 | | 3 | 00/0513 : AD 34 06 | lda FP1+3 - 348 | 1 Unidrive4.asm 329 | Code | 11 | | 2 | 00/0516 : 85 C8 | sta {$C6}+2 - 349 | 1 Unidrive4.asm 330 | Empty | 11 | | 0 | 00/0518 | - 350 | 1 Unidrive4.asm 331 | Comment | 11 | | 0 | 00/0518 | ** FP2 ** - 351 | 1 Unidrive4.asm 332 | Code | 11 | | 3 | 00/0518 : AD 35 06 | lda FP2 - 352 | 1 Unidrive4.asm 333 | Code | 11 | | 2 | 00/051B : 85 C1 | sta {$C1} - 353 | 1 Unidrive4.asm 334 | Empty | 11 | | 0 | 00/051D | - 354 | 1 Unidrive4.asm 335 | Code | 11 | | 3 | 00/051D : AD 36 06 | lda FP2+1 - 355 | 1 Unidrive4.asm 336 | Code | 11 | | 2 | 00/0520 : 85 C2 | sta {$C2} - 356 | 1 Unidrive4.asm 337 | Code | 11 | | 3 | 00/0522 : AD 37 06 | lda FP2+2 - 357 | 1 Unidrive4.asm 338 | Code | 11 | | 2 | 00/0525 : 85 C3 | sta {$C2}+1 - 358 | 1 Unidrive4.asm 339 | Code | 11 | | 3 | 00/0527 : AD 38 06 | lda FP2+3 - 359 | 1 Unidrive4.asm 340 | Code | 11 | | 2 | 00/052A : 85 C4 | sta {$C2}+2 - 360 | 1 Unidrive4.asm 341 | Empty | 11 | | 0 | 00/052C | - 361 | 1 Unidrive4.asm 342 | Comment | 11 | | 0 | 00/052C | ************************** Target Function *********************** - 362 | 1 Unidrive4.asm 343 | Comment | 11 | | 0 | 00/052C | * Y=N1+N2 * - 363 | 1 Unidrive4.asm 344 | Comment | 11 | | 0 | 00/052C | ****************************************************************** - 364 | 1 Unidrive4.asm 345 | Comment | 11 | | 0 | 00/052C | * - 365 | 1 Unidrive4.asm 346 | Comment | 11 | | 0 | 00/052C | ** Simple ADD ** - 366 | 1 Unidrive4.asm 347 | Code | 11 | | 3 | 00/052C : 20 82 05 | jsr FADD ; Call FP routine - 367 | 1 Unidrive4.asm 348 | Empty | 11 | | 0 | 00/052F | - 368 | 1 Unidrive4.asm 349 | Comment | 11 | | 0 | 00/052F | *** Output Data result FP1 to Unidisk registers First Time first 3 Byte out *** - 369 | 1 Unidrive4.asm 350 | Code | 11 | | 2 | 00/052F : A5 C5 | lda {$C5} - 370 | 1 Unidrive4.asm 351 | Code | 11 | | 2 | 00/0531 : A6 C6 | ldx {$C6} - 371 | 1 Unidrive4.asm 352 | Code | 11 | | 2 | 00/0533 : A4 C7 | ldy {$C6}+1 - 372 | 1 Unidrive4.asm 353 | Empty | 11 | | 0 | 00/0535 | - 373 | 1 Unidrive4.asm 354 | Code | 11 | | 1 | 00/0535 : 60 | rts - 374 | 1 Unidrive4.asm 355 | Comment | 11 | | 0 | 00/0536 | *** Output Data result FP1 to Unidisk registers Second Time latest 1 Byte out *** - 375 | 1 Unidrive4.asm 356 | Code | 11 | | 2 | 00/0536 : A5 C8 | SECOND lda {$C6}+2 - 376 | 1 Unidrive4.asm 357 | Empty | 11 | | 0 | 00/0538 | - 377 | 1 Unidrive4.asm 358 | Code | 11 | | 1 | 00/0538 : 60 | rts - 378 | 1 Unidrive4.asm 359 | Comment | 11 | | 0 | 00/0539 | *************************************************** - 379 | 1 Unidrive4.asm 360 | Comment | 11 | | 0 | 00/0539 | * - 380 | 1 Unidrive4.asm 361 | Comment | 11 | | 0 | 00/0539 | ***************** FP Routine ***************** - 381 | 1 Unidrive4.asm 362 | Comment | 11 | | 0 | 00/0539 | * - 382 | 1 Unidrive4.asm 363 | Comment | 11 | | 0 | 00/0539 | *********************** - 383 | 1 Unidrive4.asm 364 | Comment | 11 | | 0 | 00/0539 | * * - 384 | 1 Unidrive4.asm 365 | Comment | 11 | | 0 | 00/0539 | * APPLE-II FLOATING * - 385 | 1 Unidrive4.asm 366 | Comment | 11 | | 0 | 00/0539 | * POINT ROUTINES * - 386 | 1 Unidrive4.asm 367 | Comment | 11 | | 0 | 00/0539 | * * - 387 | 1 Unidrive4.asm 368 | Comment | 11 | | 0 | 00/0539 | * COPYRIGHT 1977 BY * - 388 | 1 Unidrive4.asm 369 | Comment | 11 | | 0 | 00/0539 | * APPLE COMPUTER INC. * - 389 | 1 Unidrive4.asm 370 | Comment | 11 | | 0 | 00/0539 | * * - 390 | 1 Unidrive4.asm 371 | Comment | 11 | | 0 | 00/0539 | * ALL RIGHTS RESERVED * - 391 | 1 Unidrive4.asm 372 | Comment | 11 | | 0 | 00/0539 | * * - 392 | 1 Unidrive4.asm 373 | Comment | 11 | | 0 | 00/0539 | * S. WOZNIAK * - 393 | 1 Unidrive4.asm 374 | Comment | 11 | | 0 | 00/0539 | * * - 394 | 1 Unidrive4.asm 375 | Comment | 11 | | 0 | 00/0539 | *********************** - 395 | 1 Unidrive4.asm 376 | Comment | 11 | | 0 | 00/0539 | * TITLE "FLOATING POINT ROUTINES for Unidisk memory" - 396 | 1 Unidrive4.asm 377 | Comment | 11 | | 0 | 00/0539 | * - 397 | 1 Unidrive4.asm 378 | Empty | 11 | | 0 | 00/0539 | - 398 | 1 Unidrive4.asm 379 | Comment | 11 | | 0 | 00/0539 | * ORG $300 - 399 | 1 Unidrive4.asm 380 | Empty | 11 | | 0 | 00/0539 | - 400 | 1 Unidrive4.asm 381 | Code | 11 | | 1 | 00/0539 : 18 | ADD CLC ;CLEAR CARRY - 401 | 1 Unidrive4.asm 382 | Code | 11 | | 2 | 00/053A : A2 02 | LDX #$2 ;INDEX FOR 3-BYTE ADD. - 402 | 1 Unidrive4.asm 383 | Code | 11 | | 2 | 00/053C : B5 C6 | ADD1 LDA {$C6},X - 403 | 1 Unidrive4.asm 384 | Code | 11 | | 2 | 00/053E : 75 C2 | ADC {$C2},X ;ADD A BYTE OF MANT2 TO MANT1 - 404 | 1 Unidrive4.asm 385 | Code | 11 | | 2 | 00/0540 : 95 C6 | STA {$C6},X - 405 | 1 Unidrive4.asm 386 | Code | 11 | | 1 | 00/0542 : CA | DEX ;INDEX TO NEXT MORE SIGNIF. BYTE. - 406 | 1 Unidrive4.asm 387 | Code | 11 | | 2 | 00/0543 : 10 F7 | BPL ADD1 ;LOOP UNTIL DONE. - 407 | 1 Unidrive4.asm 388 | Code | 11 | | 1 | 00/0545 : 60 | RTS ;RETURN - 408 | 1 Unidrive4.asm 389 | Code | 11 | | 2 | 00/0546 : 06 C0 | MD1 ASL {$C0} ;CLEAR LSB OF SIGN. - 409 | 1 Unidrive4.asm 390 | Code | 11 | | 3 | 00/0548 : 20 4B 05 | JSR ABSWAP ;ABS VAL OF M1, THEN SWAP WITH M2 - 410 | 1 Unidrive4.asm 391 | Code | 11 | | 2 | 00/054B : 24 C6 | ABSWAP BIT {$C6} ;MANT1 NEGATIVE? - 411 | 1 Unidrive4.asm 392 | Code | 11 | | 2 | 00/054D : 10 05 | BPL ABSWAP1 ;NO, SWAP WITH MANT2 AND RETURN. - 412 | 1 Unidrive4.asm 393 | Code | 11 | | 3 | 00/054F : 20 B8 05 | JSR FCOMPL ;YES, COMPLEMENT IT. - 413 | 1 Unidrive4.asm 394 | Code | 11 | | 2 | 00/0552 : E6 C0 | INC {$C0} ;INCR SIGN, COMPLEMENTING LSB. - 414 | 1 Unidrive4.asm 395 | Code | 11 | | 1 | 00/0554 : 38 | ABSWAP1 SEC ;SET CARRY FOR RETURN TO MUL/DIV. - 415 | 1 Unidrive4.asm 396 | Code | 11 | | 2 | 00/0555 : A2 04 | SWAP LDX #$4 ;INDEX FOR 4 BYTE SWAP. - 416 | 1 Unidrive4.asm 397 | Code | 11 | | 2 | 00/0557 : 94 C8 | SWAP1 STY {$C9}-1,X - 417 | 1 Unidrive4.asm 398 | Code | 11 | | 2 | 00/0559 : B5 C4 | LDA {$C5}-1,X ;SWAP A BYTE OF EXP/MANT1 WITH - 418 | 1 Unidrive4.asm 399 | Code | 11 | | 2 | 00/055B : B4 C0 | LDY {$C1}-1,X ;EXP/MANT2 AND LEAVE A COPY OF - 419 | 1 Unidrive4.asm 400 | Code | 11 | | 2 | 00/055D : 94 C4 | STY {$C5}-1,X ;MANT1 IN E (3 BYTES). E+3 USED - 420 | 1 Unidrive4.asm 401 | Code | 11 | | 2 | 00/055F : 95 C0 | STA {$C1}-1,X - 421 | 1 Unidrive4.asm 402 | Code | 11 | | 1 | 00/0561 : CA | DEX ;ADVANCE INDEX TO NEXT BYTE - 422 | 1 Unidrive4.asm 403 | Code | 11 | | 2 | 00/0562 : D0 F3 | BNE SWAP1 ;LOOP UNTIL DONE. - 423 | 1 Unidrive4.asm 404 | Code | 11 | | 1 | 00/0564 : 60 | RTS ;RETURN - 424 | 1 Unidrive4.asm 405 | Code | 11 | | 2 | 00/0565 : A9 8E | FLOAT LDA #$8E ;INIT EXP1 TO 14, <--------------- int to fp - 425 | 1 Unidrive4.asm 406 | Code | 11 | | 2 | 00/0567 : 85 C5 | STA {$C5} ;THEN NORMALIZE TO FLOAT. - 426 | 1 Unidrive4.asm 407 | Code | 11 | | 2 | 00/0569 : A5 C6 | NORM1 LDA {$C6} ;HIGH-ORDER MANT1 BYTE. - 427 | 1 Unidrive4.asm 408 | Code | 11 | | 2 | 00/056B : C9 C0 | CMP #$C0 ;UPPER TWO BITS UNEQUAL? - 428 | 1 Unidrive4.asm 409 | Code | 11 | | 2 | 00/056D : 30 0C | BMI RTS1 ;YES, RETURN WITH MANT1 NORMALIZED - 429 | 1 Unidrive4.asm 410 | Code | 11 | | 2 | 00/056F : C6 C5 | DEC {$C5} ;DECREMENT EXP1. - 430 | 1 Unidrive4.asm 411 | Code | 11 | | 2 | 00/0571 : 06 C8 | ASL {$C6}+2 - 431 | 1 Unidrive4.asm 412 | Code | 11 | | 2 | 00/0573 : 26 C7 | ROL {$C6}+1 ;SHIFT MANT1 (3 BYTES) LEFT. - 432 | 1 Unidrive4.asm 413 | Code | 11 | | 2 | 00/0575 : 26 C6 | ROL {$C6} - 433 | 1 Unidrive4.asm 414 | Code | 11 | | 2 | 00/0577 : A5 C5 | NORM LDA {$C5} ;EXP1 ZERO? - 434 | 1 Unidrive4.asm 415 | Code | 11 | | 2 | 00/0579 : D0 EE | BNE NORM1 ;NO, CONTINUE NORMALIZING. - 435 | 1 Unidrive4.asm 416 | Code | 11 | | 1 | 00/057B : 60 | RTS1 RTS ;RETURN. - 436 | 1 Unidrive4.asm 417 | Code | 11 | | 3 | 00/057C : 20 B8 05 | FSUB JSR FCOMPL ;CMPL MANT1,CLEARS CARRY UNLESS 0 <---- sub - 437 | 1 Unidrive4.asm 418 | Code | 11 | | 3 | 00/057F : 20 8F 05 | SWPALGN JSR ALGNSWP ;RIGHT SHIFT MANT1 OR SWAP WITH - 438 | 1 Unidrive4.asm 419 | Code | 11 | | 2 | 00/0582 : A5 C1 | FADD LDA {$C1} ;<------------------------------------- add - 439 | 1 Unidrive4.asm 420 | Code | 11 | | 2 | 00/0584 : C5 C5 | CMP {$C5} ;COMPARE EXP1 WITH EXP2. - 440 | 1 Unidrive4.asm 421 | Code | 11 | | 2 | 00/0586 : D0 F7 | BNE SWPALGN ;IF #,SWAP ADDENDS OR ALIGN MANTS. - 441 | 1 Unidrive4.asm 422 | Code | 11 | | 3 | 00/0588 : 20 39 05 | JSR ADD ;ADD ALIGNED MANTISSAS. - 442 | 1 Unidrive4.asm 423 | Code | 11 | | 2 | 00/058B : 50 EA | ADDEND BVC NORM ;NO OVERFLOW, NORMALIZE RESULT. - 443 | 1 Unidrive4.asm 424 | Code | 11 | | 2 | 00/058D : 70 05 | BVS RTLOG ;OV: SHIFT M1 RIGHT, CARRY INTO SIGN - 444 | 1 Unidrive4.asm 425 | Code | 11 | | 2 | 00/058F : 90 C4 | ALGNSWP BCC SWAP ;SWAP IF CARRY CLEAR, - 445 | 1 Unidrive4.asm 426 | Comment | 11 | | 0 | 00/0591 | * ELSE SHIFT RIGHT ARITH. - 446 | 1 Unidrive4.asm 427 | Code | 11 | | 2 | 00/0591 : A5 C6 | RTAR LDA {$C6} ;SIGN OF MANT1 INTO CARRY FOR - 447 | 1 Unidrive4.asm 428 | Code | 11 | | 1 | 00/0593 : 0A | ASL ;RIGHT ARITH SHIFT. - 448 | 1 Unidrive4.asm 429 | Code | 11 | | 2 | 00/0594 : E6 C5 | RTLOG INC {$C5} ;INCR X1 TO ADJUST FOR RIGHT SHIFT - 449 | 1 Unidrive4.asm 430 | Code | 11 | | 2 | 00/0596 : F0 75 | BEQ OVFL ;EXP1 OUT OF RANGE. - 450 | 1 Unidrive4.asm 431 | Code | 11 | | 2 | 00/0598 : A2 FA | RTLOG1 LDX #$FA ;INDEX FOR 6:BYTE RIGHT SHIFT. - 451 | 1 Unidrive4.asm 432 | Code | 11 | | 2 | 00/059A : 76 CC | ROR1 ROR {$C9}+3,X - 452 | 1 Unidrive4.asm 433 | Code | 11 | | 1 | 00/059C : E8 | INX ;NEXT BYTE OF SHIFT. - 453 | 1 Unidrive4.asm 434 | Code | 11 | | 2 | 00/059D : D0 FB | BNE ROR1 ;LOOP UNTIL DONE. - 454 | 1 Unidrive4.asm 435 | Code | 11 | | 1 | 00/059F : 60 | RTS ;RETURN. - 455 | 1 Unidrive4.asm 436 | Code | 11 | | 3 | 00/05A0 : 20 46 05 | FMUL JSR MD1 ;ABS VAL OF MANT1, MANT2 <-------------- mul - 456 | 1 Unidrive4.asm 437 | Code | 11 | | 2 | 00/05A3 : 65 C5 | ADC {$C5} ;ADD EXP1 TO EXP2 FOR PRODUCT EXP - 457 | 1 Unidrive4.asm 438 | Code | 11 | | 3 | 00/05A5 : 20 F6 05 | JSR MD2 ;CHECK PROD. EXP AND PREP. FOR MUL - 458 | 1 Unidrive4.asm 439 | Code | 11 | | 1 | 00/05A8 : 18 | CLC ;CLEAR CARRY FOR FIRST BIT. - 459 | 1 Unidrive4.asm 440 | Code | 11 | | 3 | 00/05A9 : 20 98 05 | MUL1 JSR RTLOG1 ;M1 AND E RIGHT (PROD AND MPLIER) - 460 | 1 Unidrive4.asm 441 | Code | 11 | | 2 | 00/05AC : 90 03 | BCC MUL2 ;IF CARRY CLEAR, SKIP PARTIAL PROD - 461 | 1 Unidrive4.asm 442 | Code | 11 | | 3 | 00/05AE : 20 39 05 | JSR ADD ;ADD MULTIPLICAND TO PRODUCT. - 462 | 1 Unidrive4.asm 443 | Code | 11 | | 1 | 00/05B1 : 88 | MUL2 DEY ;NEXT MUL ITERATION. - 463 | 1 Unidrive4.asm 444 | Code | 11 | | 2 | 00/05B2 : 10 F5 | BPL MUL1 ;LOOP UNTIL DONE. - 464 | 1 Unidrive4.asm 445 | Code | 11 | | 2 | 00/05B4 : 46 C0 | MDEND LSR {$C0} ;TEST SIGN LSB. - 465 | 1 Unidrive4.asm 446 | Code | 11 | | 2 | 00/05B6 : 90 BF | NORMX BCC NORM ;IF EVEN,NORMALIZE PROD,ELSE COMP - 466 | 1 Unidrive4.asm 447 | Code | 11 | | 1 | 00/05B8 : 38 | FCOMPL SEC ;SET CARRY FOR SUBTRACT. <--------------- not - 467 | 1 Unidrive4.asm 448 | Code | 11 | | 2 | 00/05B9 : A2 03 | LDX #$3 ;INDEX FOR 3 BYTE SUBTRACT. - 468 | 1 Unidrive4.asm 449 | Code | 11 | | 2 | 00/05BB : A9 00 | COMPL1 LDA #$0 ;CLEAR A. - 469 | 1 Unidrive4.asm 450 | Code | 11 | | 2 | 00/05BD : F5 C5 | SBC {$C5},X ;SUBTRACT BYTE OF EXP1. - 470 | 1 Unidrive4.asm 451 | Code | 11 | | 2 | 00/05BF : 95 C5 | STA {$C5},X ;RESTORE IT. - 471 | 1 Unidrive4.asm 452 | Code | 11 | | 1 | 00/05C1 : CA | DEX ;NEXT MORE SIGNIFICANT BYTE. - 472 | 1 Unidrive4.asm 453 | Code | 11 | | 2 | 00/05C2 : D0 F7 | BNE COMPL1 ;LOOP UNTIL DONE. - 473 | 1 Unidrive4.asm 454 | Code | 11 | | 2 | 00/05C4 : F0 C5 | BEQ ADDEND ;NORMALIZE (OR SHIFT RT IF OVFL). - 474 | 1 Unidrive4.asm 455 | Code | 11 | | 3 | 00/05C6 : 20 46 05 | FDIV JSR MD1 ;TAKE ABS VAL OF MANT1, MANT2. <--------- div - 475 | 1 Unidrive4.asm 456 | Code | 11 | | 2 | 00/05C9 : E5 C5 | SBC {$C5} ;SUBTRACT EXP1 FROM EXP2. - 476 | 1 Unidrive4.asm 457 | Code | 11 | | 3 | 00/05CB : 20 F6 05 | JSR MD2 ;SAVE AS QUOTIENT EXP. - 477 | 1 Unidrive4.asm 458 | Code | 11 | | 1 | 00/05CE : 38 | DIV1 SEC ;SET CARRY FOR SUBTRACT. - 478 | 1 Unidrive4.asm 459 | Code | 11 | | 2 | 00/05CF : A2 02 | LDX #$2 ;INDEX FOR 3-BYTE SUBTRACTION. - 479 | 1 Unidrive4.asm 460 | Code | 11 | | 2 | 00/05D1 : B5 C2 | DIV2 LDA {$C2},X - 480 | 1 Unidrive4.asm 461 | Code | 11 | | 2 | 00/05D3 : F5 C9 | SBC {$C9},X ;SUBTRACT A BYTE OF E FROM MANT2. - 481 | 1 Unidrive4.asm 462 | Code | 11 | | 1 | 00/05D5 : 48 | PHA ;SAVE ON STACK. - 482 | 1 Unidrive4.asm 463 | Code | 11 | | 1 | 00/05D6 : CA | DEX ;NEXT MORE SIGNIFICANT BYTE. - 483 | 1 Unidrive4.asm 464 | Code | 11 | | 2 | 00/05D7 : 10 F8 | BPL DIV2 ;LOOP UNTIL DONE. - 484 | 1 Unidrive4.asm 465 | Code | 11 | | 2 | 00/05D9 : A2 FD | LDX #$FD ;INDEX FOR 3-BYTE CONDITIONAL MOVE - 485 | 1 Unidrive4.asm 466 | Code | 11 | | 1 | 00/05DB : 68 | DIV3 PLA ;PULL BYTE OF DIFFERENCE OFF STACK - 486 | 1 Unidrive4.asm 467 | Code | 11 | | 2 | 00/05DC : 90 02 | BCC DIV4 ;IF M2B>?V3x5Cj$cKny`lT&f|pX^5NJlkf0&y!Ye1_kRyRq%{-2p~)RO z@n0#%e0O#Q1_q(vt5NfI|qa}Oq-s?^{BzO+qlK3}F;rpHPYMZdhK{Qd>_3i z1tq_vYDY53VzKh1K$%=WM$ExAa~iM48qK54m9QV{nG!*S+J2a5D-yp#F`pb>7W@Sd CLI +* +* 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 . +* +* 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 . +* +* +* @com.wudsn.ide.asm.hardware=APPLE2 +* +* Protocol Converter Call + XC +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 ;29 +*** Monitor routines *** +COut equ $FDED ;Console output ASCII +CROut equ $FD8E ;Carriage return +** 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 +***************************************************** + +* +* Find a Protocol Converter in one of the slots. +START jsr FindPC + bcs Error +*** Eject *** + jsr Dispatch + dfb ControlCmd + dw E_JECT +*** Set Address *** + jsr Dispatch + dfb ControlCmd + dw SET_ADD +* + jsr EXEC ; Jump the Error routine + rts +********************************************* +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 $8236 ; Absolute addressing + lda N1+1 ;M1 (1) + sta $8237 + lda N1+2 ;M1 (2) + sta $8238 + lda N1+3 ;M1 (3) + sta $8239 + + ** 4 Byte N2 to FP2 ** + lda N2 ;X2 + sta $823A + lda N2+1 ;M2 (1) + sta $823B + lda N2+2 ;M2 (2) + sta $823C + lda N2+3 ;M2 (3) + sta $823D + +*** Download *** + jsr Dispatch + dfb ControlCmd + dw DOWNLOAD +** Set Unidisk Registers ** + lda #00 ;First time + sta UNIP_val +** 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 N1 + lda UNIX_reg + sta N1+1 ; Store the result + lda UNIY_reg + sta N1+2 + +** Second time execute ** + lda #02 ; Second time + sta UNIP_val +** 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 N1+3 +* + 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 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 ; 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 +HighPC_reg dfb $05 +* +*** Set Address *** +CNTL_LIST3 equ * +CountL_byte dfb $02 +CountH_byte dfb $00 +LByte_Addr dfb $00 ; ORG of Unidisk program, set begin program address $0500 +HByte_Addr dfb $05 +* +*** Download *** +CNTL_LIST4 equ * +LenghtL_byte dfb $36 ;<----- Lenght of Unidisk program Lo - Byte 312 byte +LenghtH_byte dfb $01 ;<----- Lenght of Unidisk program Hi Byte +* +**************** Start UNIDISK Program **************** +* + org $0500 ; Start Unidisk program address + +SIGN EQU $C0 ;$EB ; $F3 + + ** FP2 4 Bytes ** +X2 EQU $C1 ;$EC ; $F4 +M2 EQU $C2 ;$ED ; $F5 - $F7 + + ** FP1 4 Bytes + E extension ** +X1 EQU $C5 ;$FA ; $F8 +M1 EQU $C6 ;$FB ; $F9 - $FB +E EQU $C9 ;$FE ; $FC + +OVLOC EQU $C10 ;$3F5 ;Overflow routine is not implemented at now) +* +** Main program ** +* +* CHK if is the second execution * + + * cmp #01 + beq SECOND ;Only to read the rest part of result + +** Input data to Zero Page ** + + ** FP1 ** + lda FP1 + sta X1 + + lda FP1+1 + sta M1 + lda FP1+2 + sta M1+1 + lda FP1+3 + sta M1+2 + + ** FP2 ** + lda FP2 + sta X2 + + lda FP2+1 + sta M2 + lda FP2+2 + sta M2+1 + lda FP2+3 + sta M2+2 + +************************** Target Function *********************** +* Y=N1+N2 * +****************************************************************** +* +** Simple ADD ** + jsr FADD ; Call FP routine + +*** Output Data result FP1 to Unidisk registers First Time first 3 Byte out *** + lda X1 + ldx M1 + ldy M1+1 + + rts +*** Output Data result FP1 to Unidisk registers Second Time latest 1 Byte out *** +SECOND lda M1+2 + + rts +*************************************************** +* +***************** FP Routine ***************** +* + *********************** + * * + * APPLE-II FLOATING * + * POINT ROUTINES * + * * + * COPYRIGHT 1977 BY * + * APPLE COMPUTER INC. * + * * + * ALL RIGHTS RESERVED * + * * + * S. WOZNIAK * + * * + *********************** +* TITLE "FLOATING POINT ROUTINES for Unidisk memory" +* + +* ORG $300 + +ADD CLC ;CLEAR CARRY + LDX #$2 ;INDEX FOR 3-BYTE ADD. +ADD1 LDA M1,X + ADC M2,X ;ADD A BYTE OF MANT2 TO MANT1 + STA M1,X + DEX ;INDEX TO NEXT MORE SIGNIF. BYTE. + BPL ADD1 ;LOOP UNTIL DONE. + RTS ;RETURN +MD1 ASL SIGN ;CLEAR LSB OF SIGN. + JSR ABSWAP ;ABS VAL OF M1, THEN SWAP WITH M2 +ABSWAP BIT M1 ;MANT1 NEGATIVE? + BPL ABSWAP1 ;NO, SWAP WITH MANT2 AND RETURN. + JSR FCOMPL ;YES, COMPLEMENT IT. + INC SIGN ;INCR SIGN, COMPLEMENTING LSB. +ABSWAP1 SEC ;SET CARRY FOR RETURN TO MUL/DIV. +SWAP LDX #$4 ;INDEX FOR 4 BYTE SWAP. +SWAP1 STY E-1,X + LDA X1-1,X ;SWAP A BYTE OF EXP/MANT1 WITH + LDY X2-1,X ;EXP/MANT2 AND LEAVE A COPY OF + STY X1-1,X ;MANT1 IN E (3 BYTES). E+3 USED + STA X2-1,X + DEX ;ADVANCE INDEX TO NEXT BYTE + BNE SWAP1 ;LOOP UNTIL DONE. + RTS ;RETURN +FLOAT LDA #$8E ;INIT EXP1 TO 14, <--------------- int to fp + STA X1 ;THEN NORMALIZE TO FLOAT. +NORM1 LDA M1 ;HIGH-ORDER MANT1 BYTE. + CMP #$C0 ;UPPER TWO BITS UNEQUAL? + BMI RTS1 ;YES, RETURN WITH MANT1 NORMALIZED + DEC X1 ;DECREMENT EXP1. + ASL M1+2 + ROL M1+1 ;SHIFT MANT1 (3 BYTES) LEFT. + ROL M1 +NORM LDA X1 ;EXP1 ZERO? + BNE NORM1 ;NO, CONTINUE NORMALIZING. +RTS1 RTS ;RETURN. +FSUB JSR FCOMPL ;CMPL MANT1,CLEARS CARRY UNLESS 0 <---- sub +SWPALGN JSR ALGNSWP ;RIGHT SHIFT MANT1 OR SWAP WITH +FADD LDA X2 ;<------------------------------------- add + CMP X1 ;COMPARE EXP1 WITH EXP2. + BNE SWPALGN ;IF #,SWAP ADDENDS OR ALIGN MANTS. + JSR ADD ;ADD ALIGNED MANTISSAS. +ADDEND BVC NORM ;NO OVERFLOW, NORMALIZE RESULT. + BVS RTLOG ;OV: SHIFT M1 RIGHT, CARRY INTO SIGN +ALGNSWP BCC SWAP ;SWAP IF CARRY CLEAR, + * ELSE SHIFT RIGHT ARITH. +RTAR LDA M1 ;SIGN OF MANT1 INTO CARRY FOR + ASL ;RIGHT ARITH SHIFT. +RTLOG INC X1 ;INCR X1 TO ADJUST FOR RIGHT SHIFT + BEQ OVFL ;EXP1 OUT OF RANGE. +RTLOG1 LDX #$FA ;INDEX FOR 6:BYTE RIGHT SHIFT. +ROR1 ROR E+3,X + INX ;NEXT BYTE OF SHIFT. + BNE ROR1 ;LOOP UNTIL DONE. + RTS ;RETURN. +FMUL JSR MD1 ;ABS VAL OF MANT1, MANT2 <-------------- mul + ADC X1 ;ADD EXP1 TO EXP2 FOR PRODUCT EXP + JSR MD2 ;CHECK PROD. EXP AND PREP. FOR MUL + CLC ;CLEAR CARRY FOR FIRST BIT. +MUL1 JSR RTLOG1 ;M1 AND E RIGHT (PROD AND MPLIER) + BCC MUL2 ;IF CARRY CLEAR, SKIP PARTIAL PROD + JSR ADD ;ADD MULTIPLICAND TO PRODUCT. +MUL2 DEY ;NEXT MUL ITERATION. + BPL MUL1 ;LOOP UNTIL DONE. +MDEND LSR SIGN ;TEST SIGN LSB. +NORMX BCC NORM ;IF EVEN,NORMALIZE PROD,ELSE COMP +FCOMPL SEC ;SET CARRY FOR SUBTRACT. <--------------- not + LDX #$3 ;INDEX FOR 3 BYTE SUBTRACT. +COMPL1 LDA #$0 ;CLEAR A. + SBC X1,X ;SUBTRACT BYTE OF EXP1. + STA X1,X ;RESTORE IT. + DEX ;NEXT MORE SIGNIFICANT BYTE. + BNE COMPL1 ;LOOP UNTIL DONE. + BEQ ADDEND ;NORMALIZE (OR SHIFT RT IF OVFL). +FDIV JSR MD1 ;TAKE ABS VAL OF MANT1, MANT2. <--------- div + SBC X1 ;SUBTRACT EXP1 FROM EXP2. + JSR MD2 ;SAVE AS QUOTIENT EXP. +DIV1 SEC ;SET CARRY FOR SUBTRACT. + LDX #$2 ;INDEX FOR 3-BYTE SUBTRACTION. +DIV2 LDA M2,X + SBC E,X ;SUBTRACT A BYTE OF E FROM MANT2. + PHA ;SAVE ON STACK. + DEX ;NEXT MORE SIGNIFICANT BYTE. + BPL DIV2 ;LOOP UNTIL DONE. + LDX #$FD ;INDEX FOR 3-BYTE CONDITIONAL MOVE +DIV3 PLA ;PULL BYTE OF DIFFERENCE OFF STACK + BCC DIV4 ;IF M2 + 3 | 1 Unidrive4t.asm 3 | Comment | 11 | | 0 | 00/8000 | * + 4 | 1 Unidrive4t.asm 4 | Comment | 11 | | 0 | 00/8000 | * The target of this project is to use the Unidisk 3.5 drive to perform + 5 | 1 Unidrive4t.asm 5 | Comment | 11 | | 0 | 00/8000 | * specific numerical routines (integers and floating point numbers) + 6 | 1 Unidrive4t.asm 6 | Comment | 11 | | 0 | 00/8000 | * calculation in order to use it as a Apple II co-processor unit. + 7 | 1 Unidrive4t.asm 7 | Comment | 11 | | 0 | 00/8000 | * + 8 | 1 Unidrive4t.asm 8 | Comment | 11 | | 0 | 00/8000 | * Copyright (C) 2015 Riccardo Greco . + 9 | 1 Unidrive4t.asm 9 | Comment | 11 | | 0 | 00/8000 | * + 10 | 1 Unidrive4t.asm 10 | Comment | 11 | | 0 | 00/8000 | * This program is free software: you can redistribute it and/or modify + 11 | 1 Unidrive4t.asm 11 | Comment | 11 | | 0 | 00/8000 | * it under the terms of the GNU General Public License as published by + 12 | 1 Unidrive4t.asm 12 | Comment | 11 | | 0 | 00/8000 | * the Free Software Foundation, either version 3 of the License, or + 13 | 1 Unidrive4t.asm 13 | Comment | 11 | | 0 | 00/8000 | * (at your option) any later version. + 14 | 1 Unidrive4t.asm 14 | Comment | 11 | | 0 | 00/8000 | * This program is distributed in the hope that it will be useful, + 15 | 1 Unidrive4t.asm 15 | Comment | 11 | | 0 | 00/8000 | * but WITHOUT ANY WARRANTY; without even the implied warranty of + 16 | 1 Unidrive4t.asm 16 | Comment | 11 | | 0 | 00/8000 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + 17 | 1 Unidrive4t.asm 17 | Comment | 11 | | 0 | 00/8000 | * GNU General Public License for more details. + 18 | 1 Unidrive4t.asm 18 | Comment | 11 | | 0 | 00/8000 | * You should have received a copy of the GNU General Public License + 19 | 1 Unidrive4t.asm 19 | Comment | 11 | | 0 | 00/8000 | * along with this program. If not, see . + 20 | 1 Unidrive4t.asm 20 | Comment | 11 | | 0 | 00/8000 | * + 21 | 1 Unidrive4t.asm 21 | Comment | 11 | | 0 | 00/8000 | * + 22 | 1 Unidrive4t.asm 22 | Comment | 11 | | 0 | 00/8000 | * @com.wudsn.ide.asm.hardware=APPLE2 + 23 | 1 Unidrive4t.asm 23 | Comment | 11 | | 0 | 00/8000 | * + 24 | 1 Unidrive4t.asm 24 | Comment | 11 | | 0 | 00/8000 | * Protocol Converter Call + 25 | 1 Unidrive4t.asm 25 | Directive | 11 | | 0 | 00/8000 | XC + 26 | 1 Unidrive4t.asm 26 | Equivalence | 11 | | 0 | 00/8000 | ZPTempL equ $0006 ;Temporary zero page storage + 27 | 1 Unidrive4t.asm 27 | Equivalence | 11 | | 0 | 00/8000 | ZPTempH equ $0007 + 28 | 1 Unidrive4t.asm 28 | Comment | 11 | | 0 | 00/8000 | ** Zero page storage ** + 29 | 1 Unidrive4t.asm 29 | Equivalence | 11 | | 0 | 00/8000 | N1 equ $FA ;25 4 Byte FP FA--FD (FP1) + 30 | 1 Unidrive4t.asm 30 | Equivalence | 11 | | 0 | 00/8000 | N2 equ $EC ;27 4 Byte FP EC--EF (FP2) + 31 | 1 Unidrive4t.asm 31 | Comment | 11 | | 0 | 00/8000 | ; RSLT equ $1D ;29 + 32 | 1 Unidrive4t.asm 32 | Comment | 11 | | 0 | 00/8000 | *** Monitor routines *** + 33 | 1 Unidrive4t.asm 33 | Equivalence | 11 | | 0 | 00/8000 | COut equ $FDED ;Console output ASCII + 34 | 1 Unidrive4t.asm 34 | Equivalence | 11 | | 0 | 00/8000 | CROut equ $FD8E ;Carriage return + 35 | 1 Unidrive4t.asm 35 | Comment | 11 | | 0 | 00/8000 | ** Command Code ** + 36 | 1 Unidrive4t.asm 36 | Equivalence | 11 | | 0 | 00/8000 | StatusCmd equ 0 + 37 | 1 Unidrive4t.asm 37 | Comment | 11 | | 0 | 00/8000 | ** Status Code ** + 38 | 1 Unidrive4t.asm 38 | Comment | 11 | | 0 | 00/8000 | * StatusDIB equ 3 + 39 | 1 Unidrive4t.asm 39 | Equivalence | 11 | | 0 | 00/8000 | StatusUNI equ 5 + 40 | 1 Unidrive4t.asm 40 | Comment | 11 | | 0 | 00/8000 | * + 41 | 1 Unidrive4t.asm 41 | Equivalence | 11 | | 0 | 00/8000 | ControlCmd equ 4 + 42 | 1 Unidrive4t.asm 42 | Comment | 11 | | 0 | 00/8000 | ** Control Codes ** + 43 | 1 Unidrive4t.asm 43 | Equivalence | 11 | | 0 | 00/8000 | Eject equ 4 + 44 | 1 Unidrive4t.asm 44 | Equivalence | 11 | | 0 | 00/8000 | Run equ 5 + 45 | 1 Unidrive4t.asm 45 | Equivalence | 11 | | 0 | 00/8000 | SetDWLoad equ 6 + 46 | 1 Unidrive4t.asm 46 | Equivalence | 11 | | 0 | 00/8000 | DWLoad equ 7 + 47 | 1 Unidrive4t.asm 47 | Comment | 11 | | 0 | 00/8000 | * + 48 | 1 Unidrive4t.asm 48 | Directive | 11 | | 0 | 00/8000 | org $8000 + 49 | 1 Unidrive4t.asm 49 | Comment | 11 | | 0 | 00/8000 | ***************************************************** + 50 | 1 Unidrive4t.asm 50 | Empty | 11 | | 0 | 00/8000 | + 51 | 1 Unidrive4t.asm 51 | Comment | 11 | | 0 | 00/8000 | * + 52 | 1 Unidrive4t.asm 52 | Comment | 11 | | 0 | 00/8000 | * Find a Protocol Converter in one of the slots. + 53 | 1 Unidrive4t.asm 53 | Code | 11 | | 3 | 00/8000 : 20 9E 80 | START jsr {ozunid_4} + 54 | 1 Unidrive4t.asm 54 | Code | 11 | | 2 | 00/8003 : B0 10 | bcs {ozunid_1} + 55 | 1 Unidrive4t.asm 55 | Comment | 11 | | 0 | 00/8005 | *** Eject *** + 56 | 1 Unidrive4t.asm 56 | Code | 11 | | 3 | 00/8005 : 20 D3 80 | jsr {ozunid_9} + 57 | 1 Unidrive4t.asm 57 | Data | 11 | | 1 | 00/8008 : 04 | dfb {4} + 58 | 1 Unidrive4t.asm 58 | Data | 11 | | 2 | 00/8009 : F2 80 | dw {ozunid_15} + 59 | 1 Unidrive4t.asm 59 | Comment | 11 | | 0 | 00/800B | *** Set Address *** + 60 | 1 Unidrive4t.asm 60 | Code | 11 | | 3 | 00/800B : 20 D3 80 | jsr {ozunid_9} + 61 | 1 Unidrive4t.asm 61 | Data | 11 | | 1 | 00/800E : 04 | dfb {4} + 62 | 1 Unidrive4t.asm 62 | Data | 11 | | 2 | 00/800F : E3 80 | dw {ozunid_12} + 63 | 1 Unidrive4t.asm 63 | Comment | 11 | | 0 | 00/8011 | * + 64 | 1 Unidrive4t.asm 64 | Code | 11 | | 3 | 00/8011 : 20 37 80 | jsr EXEC ; Jump the Error routine + 65 | 1 Unidrive4t.asm 65 | Code | 11 | | 1 | 00/8014 : 60 | rts + 66 | 1 Unidrive4t.asm 66 | Comment | 11 | | 0 | 00/8015 | ********************************************* + 67 | 1 Unidrive4t.asm 67 | Empty | 11 | | 0 | 00/8015 | ozunid_1 + 68 | 1 Unidrive4t.asm 67 | Equivalence | 11 | | 0 | 00/8015 | Error equ ozunid_1 + 69 | 1 Unidrive4t.asm 68 | Comment | 11 | | 0 | 00/8015 | * + 70 | 1 Unidrive4t.asm 69 | Comment | 11 | | 0 | 00/8015 | * There is either no PC around, or there was no give message + 71 | 1 Unidrive4t.asm 70 | Comment | 11 | | 0 | 00/8015 | * + 72 | 1 Unidrive4t.asm 71 | Code | 11 | | 2 | 00/8015 : A2 00 | ldx #0 + 73 | 1 Unidrive4t.asm 72 | Empty | 11 | | 0 | 00/8017 | ozunid_2 + 74 | 1 Unidrive4t.asm 72 | Equivalence | 11 | | 0 | 00/8017 | err1 equ ozunid_2 + 75 | 1 Unidrive4t.asm 73 | Code | 11 | | 3 | 00/8017 : BD 23 80 | lda Message,x + 76 | 1 Unidrive4t.asm 74 | Code | 11 | | 2 | 00/801A : F0 06 | beq {ozunid_3} + 77 | 1 Unidrive4t.asm 75 | Code | 11 | | 3 | 00/801C : 20 ED FD | jsr {$FDED} + 78 | 1 Unidrive4t.asm 76 | Code | 11 | | 1 | 00/801F : E8 | inx + 79 | 1 Unidrive4t.asm 77 | Code | 11 | | 2 | 00/8020 : D0 F5 | bne {ozunid_2} + 80 | 1 Unidrive4t.asm 78 | Comment | 11 | | 0 | 00/8022 | * + 81 | 1 Unidrive4t.asm 79 | Empty | 11 | | 0 | 00/8022 | ozunid_3 + 82 | 1 Unidrive4t.asm 79 | Equivalence | 11 | | 0 | 00/8022 | errout equ ozunid_3 + 83 | 1 Unidrive4t.asm 80 | Code | 11 | | 1 | 00/8022 : 60 | rts + 84 | 1 Unidrive4t.asm 81 | Comment | 11 | | 0 | 00/8023 | * + 85 | 1 Unidrive4t.asm 82 | Data | 11 | | 18 | 00/8023 : 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 | + 86 | 1 Unidrive4t.asm 83 | Data | 11 | | 2 | 00/8035 : 8D 00 | dfb $8D,0 + 87 | 1 Unidrive4t.asm 84 | Comment | 11 | | 0 | 00/8037 | ********************************************* + 88 | 1 Unidrive4t.asm 85 | Comment | 11 | | 0 | 00/8037 | * + 89 | 1 Unidrive4t.asm 86 | Empty | 11 | | 0 | 00/8037 | + 90 | 1 Unidrive4t.asm 87 | Comment | 11 | | 0 | 00/8037 | ** Set the Input Value first in Dynamic data ** + 91 | 1 Unidrive4t.asm 88 | Comment | 11 | | 0 | 00/8037 | ** 4 Byte N1 to FP1 ** + 92 | 1 Unidrive4t.asm 89 | Code | 11 | | 2 | 00/8037 : A5 FA | EXEC lda {$FA} ;X1 + 93 | 1 Unidrive4t.asm 90 | Code | 11 | | 3 | 00/8039 : 8D 36 82 | sta $8236 ; Absolute addressing + 94 | 1 Unidrive4t.asm 91 | Code | 11 | | 2 | 00/803C : A5 FB | lda {$FA}+1 ;M1 (1) + 95 | 1 Unidrive4t.asm 92 | Code | 11 | | 3 | 00/803E : 8D 37 82 | sta $8237 + 96 | 1 Unidrive4t.asm 93 | Code | 11 | | 2 | 00/8041 : A5 FC | lda {$FA}+2 ;M1 (2) + 97 | 1 Unidrive4t.asm 94 | Code | 11 | | 3 | 00/8043 : 8D 38 82 | sta $8238 + 98 | 1 Unidrive4t.asm 95 | Code | 11 | | 2 | 00/8046 : A5 FD | lda {$FA}+3 ;M1 (3) + 99 | 1 Unidrive4t.asm 96 | Code | 11 | | 3 | 00/8048 : 8D 39 82 | sta $8239 + 100 | 1 Unidrive4t.asm 97 | Empty | 11 | | 0 | 00/804B | + 101 | 1 Unidrive4t.asm 98 | Comment | 11 | | 0 | 00/804B | ** 4 Byte N2 to FP2 ** + 102 | 1 Unidrive4t.asm 99 | Code | 11 | | 2 | 00/804B : A5 EC | lda {$EC} ;X2 + 103 | 1 Unidrive4t.asm 100 | Code | 11 | | 3 | 00/804D : 8D 3A 82 | sta $823A + 104 | 1 Unidrive4t.asm 101 | Code | 11 | | 2 | 00/8050 : A5 ED | lda {$EC}+1 ;M2 (1) + 105 | 1 Unidrive4t.asm 102 | Code | 11 | | 3 | 00/8052 : 8D 3B 82 | sta $823B + 106 | 1 Unidrive4t.asm 103 | Code | 11 | | 2 | 00/8055 : A5 EE | lda {$EC}+2 ;M2 (2) + 107 | 1 Unidrive4t.asm 104 | Code | 11 | | 3 | 00/8057 : 8D 3C 82 | sta $823C + 108 | 1 Unidrive4t.asm 105 | Code | 11 | | 2 | 00/805A : A5 EF | lda {$EC}+3 ;M2 (3) + 109 | 1 Unidrive4t.asm 106 | Code | 11 | | 3 | 00/805C : 8D 3D 82 | sta $823D + 110 | 1 Unidrive4t.asm 107 | Empty | 11 | | 0 | 00/805F | + 111 | 1 Unidrive4t.asm 108 | Comment | 11 | | 0 | 00/805F | *** Download *** + 112 | 1 Unidrive4t.asm 109 | Code | 11 | | 3 | 00/805F : 20 D3 80 | jsr {ozunid_9} + 113 | 1 Unidrive4t.asm 110 | Data | 11 | | 1 | 00/8062 : 04 | dfb {4} + 114 | 1 Unidrive4t.asm 111 | Data | 11 | | 2 | 00/8063 : E8 80 | dw {ozunid_13} + 115 | 1 Unidrive4t.asm 112 | Comment | 11 | | 0 | 00/8065 | ** Set Unidisk Registers ** + 116 | 1 Unidrive4t.asm 113 | Code | 11 | | 2 | 00/8065 : A9 00 | lda #00 ;First time + 117 | 1 Unidrive4t.asm 114 | Code | 11 | | 3 | 00/8067 : 8D E1 80 | sta UNIP_val + 118 | 1 Unidrive4t.asm 115 | Comment | 11 | | 0 | 00/806A | ** Execute ** + 119 | 1 Unidrive4t.asm 116 | Code | 11 | | 3 | 00/806A : 20 D3 80 | jsr {ozunid_9} + 120 | 1 Unidrive4t.asm 117 | Data | 11 | | 1 | 00/806D : 04 | dfb {4} + 121 | 1 Unidrive4t.asm 118 | Data | 11 | | 2 | 00/806E : ED 80 | dw {ozunid_14} + 122 | 1 Unidrive4t.asm 119 | Comment | 11 | | 0 | 00/8070 | ** Read ** + 123 | 1 Unidrive4t.asm 120 | Code | 11 | | 3 | 00/8070 : 20 D3 80 | READ jsr {ozunid_9} + 124 | 1 Unidrive4t.asm 121 | Data | 11 | | 1 | 00/8073 : 00 | dfb {0} + 125 | 1 Unidrive4t.asm 122 | Data | 11 | | 2 | 00/8074 : D6 80 | dw {ozunid_10} + 126 | 1 Unidrive4t.asm 123 | Code | 11 | | 2 | 00/8076 : B0 9D | bcs {ozunid_1} + 127 | 1 Unidrive4t.asm 124 | Comment | 11 | | 0 | 00/8078 | * + 128 | 1 Unidrive4t.asm 125 | Comment | 11 | | 0 | 00/8078 | **** Store Output results in //c **** + 129 | 1 Unidrive4t.asm 126 | Empty | 11 | | 0 | 00/8078 | + 130 | 1 Unidrive4t.asm 127 | Comment | 11 | | 0 | 00/8078 | * First time execute * + 131 | 1 Unidrive4t.asm 128 | Code | 11 | | 3 | 00/8078 : AD DE 80 | lda UNIAcc_reg + 132 | 1 Unidrive4t.asm 129 | Code | 11 | | 2 | 00/807B : 85 FA | sta {$FA} + 133 | 1 Unidrive4t.asm 130 | Code | 11 | | 3 | 00/807D : AD DF 80 | lda UNIX_reg + 134 | 1 Unidrive4t.asm 131 | Code | 11 | | 2 | 00/8080 : 85 FB | sta {$FA}+1 ; Store the result + 135 | 1 Unidrive4t.asm 132 | Code | 11 | | 3 | 00/8082 : AD E0 80 | lda UNIY_reg + 136 | 1 Unidrive4t.asm 133 | Code | 11 | | 2 | 00/8085 : 85 FC | sta {$FA}+2 + 137 | 1 Unidrive4t.asm 134 | Empty | 11 | | 0 | 00/8087 | + 138 | 1 Unidrive4t.asm 135 | Comment | 11 | | 0 | 00/8087 | ** Second time execute ** + 139 | 1 Unidrive4t.asm 136 | Code | 11 | | 2 | 00/8087 : A9 02 | lda #02 ; Second time + 140 | 1 Unidrive4t.asm 137 | Code | 11 | | 3 | 00/8089 : 8D E1 80 | sta UNIP_val + 141 | 1 Unidrive4t.asm 138 | Comment | 11 | | 0 | 00/808C | ** Execute ** + 142 | 1 Unidrive4t.asm 139 | Code | 11 | | 3 | 00/808C : 20 D3 80 | jsr {ozunid_9} + 143 | 1 Unidrive4t.asm 140 | Data | 11 | | 1 | 00/808F : 04 | dfb {4} + 144 | 1 Unidrive4t.asm 141 | Data | 11 | | 2 | 00/8090 : ED 80 | dw {ozunid_14} + 145 | 1 Unidrive4t.asm 142 | Comment | 11 | | 0 | 00/8092 | ** Read ** + 146 | 1 Unidrive4t.asm 143 | Code | 11 | | 3 | 00/8092 : 20 D3 80 | jsr {ozunid_9} + 147 | 1 Unidrive4t.asm 144 | Data | 11 | | 1 | 00/8095 : 00 | dfb {0} + 148 | 1 Unidrive4t.asm 145 | Data | 11 | | 2 | 00/8096 : D6 80 | dw {ozunid_10} + 149 | 1 Unidrive4t.asm 146 | Comment | 11 | | 0 | 00/8098 | * bcs Error + 150 | 1 Unidrive4t.asm 147 | Empty | 11 | | 0 | 00/8098 | + 151 | 1 Unidrive4t.asm 148 | Comment | 11 | | 0 | 00/8098 | * Second time execute only to read the latest Byte of FP1* + 152 | 1 Unidrive4t.asm 149 | Code | 11 | | 3 | 00/8098 : AD DE 80 | lda UNIAcc_reg + 153 | 1 Unidrive4t.asm 150 | Code | 11 | | 2 | 00/809B : 85 FD | sta {$FA}+3 + 154 | 1 Unidrive4t.asm 151 | Comment | 11 | | 0 | 00/809D | * + 155 | 1 Unidrive4t.asm 152 | Code | 11 | | 1 | 00/809D : 60 | rts + 156 | 1 Unidrive4t.asm 153 | Empty | 11 | | 0 | 00/809E | + 157 | 1 Unidrive4t.asm 154 | Comment | 11 | | 0 | 00/809E | ****************************************************** + 158 | 1 Unidrive4t.asm 155 | Empty | 11 | | 0 | 00/809E | ozunid_4 + 159 | 1 Unidrive4t.asm 155 | Equivalence | 11 | | 0 | 00/809E | FindPC equ ozunid_4 + 160 | 1 Unidrive4t.asm 156 | Comment | 11 | | 0 | 00/809E | * + 161 | 1 Unidrive4t.asm 157 | Comment | 11 | | 0 | 00/809E | * Search slot 7 to slot 1 looking for signature bytes + 162 | 1 Unidrive4t.asm 158 | Comment | 11 | | 0 | 00/809E | * + 163 | 1 Unidrive4t.asm 159 | Code | 11 | | 2 | 00/809E : A2 07 | ldx #7 ;Do for seven slots + 164 | 1 Unidrive4t.asm 160 | Code | 11 | | 2 | 00/80A0 : A9 C7 | lda #$C7 + 165 | 1 Unidrive4t.asm 161 | Code | 11 | | 2 | 00/80A2 : 85 07 | sta {$0007} + 166 | 1 Unidrive4t.asm 162 | Code | 11 | | 2 | 00/80A4 : A9 00 | lda #$00 + 167 | 1 Unidrive4t.asm 163 | Code | 11 | | 2 | 00/80A6 : 85 06 | sta {$0006} + 168 | 1 Unidrive4t.asm 164 | Comment | 11 | | 0 | 00/80A8 | * + 169 | 1 Unidrive4t.asm 165 | Empty | 11 | | 0 | 00/80A8 | ozunid_5 + 170 | 1 Unidrive4t.asm 165 | Equivalence | 11 | | 0 | 00/80A8 | newslot equ ozunid_5 + 171 | 1 Unidrive4t.asm 166 | Code | 11 | | 2 | 00/80A8 : A0 07 | ldy #7 + 172 | 1 Unidrive4t.asm 167 | Comment | 11 | | 0 | 00/80AA | * + 173 | 1 Unidrive4t.asm 168 | Empty | 11 | | 0 | 00/80AA | ozunid_6 + 174 | 1 Unidrive4t.asm 168 | Equivalence | 11 | | 0 | 00/80AA | again equ ozunid_6 + 175 | 1 Unidrive4t.asm 169 | Code | 11 | | 2 | 00/80AA : B1 06 | lda ({$0006}),y + 176 | 1 Unidrive4t.asm 170 | Code | 11 | | 3 | 00/80AC : D9 CB 80 | cmp sigtab,y ;One for byte signature + 177 | 1 Unidrive4t.asm 171 | Code | 11 | | 2 | 00/80AF : F0 07 | beq {ozunid_7} ;Found one signature byte + 178 | 1 Unidrive4t.asm 172 | Code | 11 | | 2 | 00/80B1 : C6 07 | dec {$0007} + 179 | 1 Unidrive4t.asm 173 | Code | 11 | | 1 | 00/80B3 : CA | dex + 180 | 1 Unidrive4t.asm 174 | Code | 11 | | 2 | 00/80B4 : D0 F2 | bne {ozunid_5} + 181 | 1 Unidrive4t.asm 175 | Comment | 11 | | 0 | 00/80B6 | * + 182 | 1 Unidrive4t.asm 176 | Comment | 11 | | 0 | 00/80B6 | * if we get here, no PC find + 183 | 1 Unidrive4t.asm 177 | Code | 11 | | 1 | 00/80B6 : 38 | sec + 184 | 1 Unidrive4t.asm 178 | Code | 11 | | 1 | 00/80B7 : 60 | rts + 185 | 1 Unidrive4t.asm 179 | Comment | 11 | | 0 | 00/80B8 | * + 186 | 1 Unidrive4t.asm 180 | Comment | 11 | | 0 | 00/80B8 | * if we get here, no byte find on PC + 187 | 1 Unidrive4t.asm 181 | Empty | 11 | | 0 | 00/80B8 | ozunid_7 + 188 | 1 Unidrive4t.asm 181 | Equivalence | 11 | | 0 | 00/80B8 | maybe equ ozunid_7 + 189 | 1 Unidrive4t.asm 182 | Code | 11 | | 1 | 00/80B8 : 88 | dey + 190 | 1 Unidrive4t.asm 183 | Code | 11 | | 1 | 00/80B9 : 88 | dey ;if N=1 then all sig bytes OK + 191 | 1 Unidrive4t.asm 184 | Code | 11 | | 2 | 00/80BA : 10 EE | bpl {ozunid_6} + 192 | 1 Unidrive4t.asm 185 | Comment | 11 | | 0 | 00/80BC | * Found PC interface. Set up call address. + 193 | 1 Unidrive4t.asm 186 | Comment | 11 | | 0 | 00/80BC | * we already have high byte ($CN), we need low byte + 194 | 1 Unidrive4t.asm 187 | Comment | 11 | | 0 | 00/80BC | * + 195 | 1 Unidrive4t.asm 188 | Empty | 11 | | 0 | 00/80BC | ozunid_8 + 196 | 1 Unidrive4t.asm 188 | Equivalence | 11 | | 0 | 00/80BC | foundPC equ ozunid_8 + 197 | 1 Unidrive4t.asm 189 | Code | 11 | | 2 | 00/80BC : A9 FF | lda #$FF + 198 | 1 Unidrive4t.asm 190 | Code | 11 | | 2 | 00/80BE : 85 06 | sta {$0006} + 199 | 1 Unidrive4t.asm 191 | Code | 11 | | 2 | 00/80C0 : A0 00 | ldy #0 ;For indirect load + 200 | 1 Unidrive4t.asm 192 | Code | 11 | | 2 | 00/80C2 : B1 06 | lda ({$0006}),y ;Get the byte + 201 | 1 Unidrive4t.asm 193 | Comment | 11 | | 0 | 00/80C4 | * + 202 | 1 Unidrive4t.asm 194 | Comment | 11 | | 0 | 00/80C4 | * Now the Acc has the low oreder ProDOS entry point. + 203 | 1 Unidrive4t.asm 195 | Comment | 11 | | 0 | 00/80C4 | * The PC entry is three locations past this ... + 204 | 1 Unidrive4t.asm 196 | Comment | 11 | | 0 | 00/80C4 | * + 205 | 1 Unidrive4t.asm 197 | Code | 11 | | 1 | 00/80C4 : 18 | clc + 206 | 1 Unidrive4t.asm 198 | Code | 11 | | 2 | 00/80C5 : 69 03 | adc #3 + 207 | 1 Unidrive4t.asm 199 | Code | 11 | | 2 | 00/80C7 : 85 06 | sta {$0006} + 208 | 1 Unidrive4t.asm 200 | Comment | 11 | | 0 | 00/80C9 | * + 209 | 1 Unidrive4t.asm 201 | Comment | 11 | | 0 | 00/80C9 | * Now ZPTempL has PC entry point. + 210 | 1 Unidrive4t.asm 202 | Comment | 11 | | 0 | 00/80C9 | * Return with carry clear. + 211 | 1 Unidrive4t.asm 203 | Comment | 11 | | 0 | 00/80C9 | * + 212 | 1 Unidrive4t.asm 204 | Code | 11 | | 1 | 00/80C9 : 18 | clc + 213 | 1 Unidrive4t.asm 205 | Code | 11 | | 1 | 00/80CA : 60 | rts + 214 | 1 Unidrive4t.asm 206 | Comment | 11 | | 0 | 00/80CB | *********************************************************** + 215 | 1 Unidrive4t.asm 207 | Comment | 11 | | 0 | 00/80CB | * + 216 | 1 Unidrive4t.asm 208 | Comment | 11 | | 0 | 00/80CB | * There are the PC signature bytes in their relative order. + 217 | 1 Unidrive4t.asm 209 | Comment | 11 | | 0 | 00/80CB | * The $FF bytes are filler bytes and are not compared. + 218 | 1 Unidrive4t.asm 210 | Comment | 11 | | 0 | 00/80CB | * + 219 | 1 Unidrive4t.asm 211 | Data | 11 | | 4 | 00/80CB : FF 20 FF 00 | sigtab dfb $FF,$20,$FF,$00 + 220 | 1 Unidrive4t.asm 212 | Data | 11 | | 4 | 00/80CF : FF 03 FF 00 | dfb $FF,$03,$FF,$00 + 221 | 1 Unidrive4t.asm 213 | Comment | 11 | | 0 | 00/80D3 | * + 222 | 1 Unidrive4t.asm 214 | Empty | 11 | | 0 | 00/80D3 | ozunid_9 + 223 | 1 Unidrive4t.asm 214 | Equivalence | 11 | | 0 | 00/80D3 | Dispatch equ ozunid_9 + 224 | 1 Unidrive4t.asm 215 | Code | 11 | | 3 | 00/80D3 : 6C 06 00 | jmp ({$0006}) ;Simulate an indirect JSR to PC + 225 | 1 Unidrive4t.asm 216 | Comment | 11 | | 0 | 00/80D6 | * + 226 | 1 Unidrive4t.asm 217 | Comment | 11 | | 0 | 00/80D6 | *** Status Parameter Set for UNI *** + 227 | 1 Unidrive4t.asm 218 | Empty | 11 | | 0 | 00/80D6 | ozunid_10 + 228 | 1 Unidrive4t.asm 218 | Equivalence | 11 | | 0 | 00/80D6 | DParms equ ozunid_10 + 229 | 1 Unidrive4t.asm 219 | Data | 11 | | 1 | 00/80D6 : 03 | DPParmsCt dfb 3 ;Status calls have three parameters + 230 | 1 Unidrive4t.asm 220 | Data | 11 | | 1 | 00/80D7 : 01 | DPUnit dfb 1 + 231 | 1 Unidrive4t.asm 221 | Data | 11 | | 2 | 00/80D8 : DB 80 | DPBuffer dw {ozunid_11} + 232 | 1 Unidrive4t.asm 222 | Data | 11 | | 1 | 00/80DA : 05 | DPStatCode dfb {5} + 233 | 1 Unidrive4t.asm 223 | Comment | 11 | | 0 | 00/80DB | * + 234 | 1 Unidrive4t.asm 224 | Comment | 11 | | 0 | 00/80DB | * + 235 | 1 Unidrive4t.asm 225 | Comment | 11 | | 0 | 00/80DB | * + 236 | 1 Unidrive4t.asm 226 | Comment | 11 | | 0 | 00/80DB | *** Status List UNI *** + 237 | 1 Unidrive4t.asm 227 | Empty | 11 | | 0 | 00/80DB | ozunid_11 + 238 | 1 Unidrive4t.asm 227 | Equivalence | 11 | | 0 | 00/80DB | UNI equ ozunid_11 + 239 | 1 Unidrive4t.asm 228 | Data | 11 | | 1 | 00/80DB : 00 | dfb 0 + 240 | 1 Unidrive4t.asm 229 | Data | 11 | | 1 | 00/80DC : 00 | UNIError dfb 0 + 241 | 1 Unidrive4t.asm 230 | Data | 11 | | 1 | 00/80DD : 00 | UNIRetries dfb 0 + 242 | 1 Unidrive4t.asm 231 | Data | 11 | | 1 | 00/80DE : 00 | UNIAcc_reg dfb 0 + 243 | 1 Unidrive4t.asm 232 | Data | 11 | | 1 | 00/80DF : 00 | UNIX_reg dfb 0 + 244 | 1 Unidrive4t.asm 233 | Data | 11 | | 1 | 00/80E0 : 00 | UNIY_reg dfb 0 + 245 | 1 Unidrive4t.asm 234 | Data | 11 | | 1 | 00/80E1 : 00 | UNIP_val dfb 0 + 246 | 1 Unidrive4t.asm 235 | Data | 11 | | 1 | 00/80E2 : 00 | HHH dfb 0 + 247 | 1 Unidrive4t.asm 236 | Comment | 11 | | 0 | 00/80E3 | * + 248 | 1 Unidrive4t.asm 237 | Comment | 11 | | 0 | 00/80E3 | *** Set Address *** + 249 | 1 Unidrive4t.asm 238 | Empty | 11 | | 0 | 00/80E3 | ozunid_12 + 250 | 1 Unidrive4t.asm 238 | Equivalence | 11 | | 0 | 00/80E3 | SET_ADD equ ozunid_12 + 251 | 1 Unidrive4t.asm 239 | Data | 11 | | 1 | 00/80E3 : 03 | dfb 3 + 252 | 1 Unidrive4t.asm 240 | Data | 11 | | 1 | 00/80E4 : 01 | dfb 1 + 253 | 1 Unidrive4t.asm 241 | Data | 11 | | 2 | 00/80E5 : 01 81 | dw {ozunid_18} + 254 | 1 Unidrive4t.asm 242 | Data | 11 | | 1 | 00/80E7 : 06 | dfb {6} + 255 | 1 Unidrive4t.asm 243 | Comment | 11 | | 0 | 00/80E8 | * + 256 | 1 Unidrive4t.asm 244 | Comment | 11 | | 0 | 00/80E8 | *** Download *** + 257 | 1 Unidrive4t.asm 245 | Empty | 11 | | 0 | 00/80E8 | ozunid_13 + 258 | 1 Unidrive4t.asm 245 | Equivalence | 11 | | 0 | 00/80E8 | DOWNLOAD equ ozunid_13 + 259 | 1 Unidrive4t.asm 246 | Data | 11 | | 1 | 00/80E8 : 03 | dfb 3 + 260 | 1 Unidrive4t.asm 247 | Data | 11 | | 1 | 00/80E9 : 01 | dfb 1 + 261 | 1 Unidrive4t.asm 248 | Data | 11 | | 2 | 00/80EA : 05 81 | dw {ozunid_19} + 262 | 1 Unidrive4t.asm 249 | Data | 11 | | 1 | 00/80EC : 07 | dfb {7} + 263 | 1 Unidrive4t.asm 250 | Comment | 11 | | 0 | 00/80ED | * + 264 | 1 Unidrive4t.asm 251 | Comment | 11 | | 0 | 00/80ED | *** Execute *** + 265 | 1 Unidrive4t.asm 252 | Empty | 11 | | 0 | 00/80ED | ozunid_14 + 266 | 1 Unidrive4t.asm 252 | Equivalence | 11 | | 0 | 00/80ED | EXE equ ozunid_14 + 267 | 1 Unidrive4t.asm 253 | Data | 11 | | 1 | 00/80ED : 03 | dfb 3 + 268 | 1 Unidrive4t.asm 254 | Data | 11 | | 1 | 00/80EE : 01 | dfb 1 + 269 | 1 Unidrive4t.asm 255 | Data | 11 | | 2 | 00/80EF : F9 80 | dw {ozunid_17} + 270 | 1 Unidrive4t.asm 256 | Data | 11 | | 1 | 00/80F1 : 05 | dfb {5} + 271 | 1 Unidrive4t.asm 257 | Comment | 11 | | 0 | 00/80F2 | *** Eject *** + 272 | 1 Unidrive4t.asm 258 | Empty | 11 | | 0 | 00/80F2 | ozunid_15 + 273 | 1 Unidrive4t.asm 258 | Equivalence | 11 | | 0 | 00/80F2 | E_JECT equ ozunid_15 + 274 | 1 Unidrive4t.asm 259 | Data | 11 | | 1 | 00/80F2 : 03 | dfb 3 + 275 | 1 Unidrive4t.asm 260 | Data | 11 | | 1 | 00/80F3 : 01 | dfb 1 + 276 | 1 Unidrive4t.asm 261 | Data | 11 | | 2 | 00/80F4 : F7 80 | dw {ozunid_16} + 277 | 1 Unidrive4t.asm 262 | Data | 11 | | 1 | 00/80F6 : 04 | dfb {4} + 278 | 1 Unidrive4t.asm 263 | Comment | 11 | | 0 | 00/80F7 | * + 279 | 1 Unidrive4t.asm 264 | Comment | 11 | | 0 | 00/80F7 | ******** CONTROL LISTS ******** + 280 | 1 Unidrive4t.asm 265 | Comment | 11 | | 0 | 00/80F7 | * + 281 | 1 Unidrive4t.asm 266 | Comment | 11 | | 0 | 00/80F7 | * + 282 | 1 Unidrive4t.asm 267 | Comment | 11 | | 0 | 00/80F7 | *** Eject *** + 283 | 1 Unidrive4t.asm 268 | Empty | 11 | | 0 | 00/80F7 | ozunid_16 + 284 | 1 Unidrive4t.asm 268 | Equivalence | 11 | | 0 | 00/80F7 | CNTL_LIST1 equ ozunid_16 + 285 | 1 Unidrive4t.asm 269 | Data | 11 | | 2 | 00/80F7 : 00 00 | dw $0000 + 286 | 1 Unidrive4t.asm 270 | Comment | 11 | | 0 | 00/80F9 | * + 287 | 1 Unidrive4t.asm 271 | Comment | 11 | | 0 | 00/80F9 | *** Execute *** + 288 | 1 Unidrive4t.asm 272 | Empty | 11 | | 0 | 00/80F9 | ozunid_17 + 289 | 1 Unidrive4t.asm 272 | Equivalence | 11 | | 0 | 00/80F9 | CNTL_LIST2 equ ozunid_17 + 290 | 1 Unidrive4t.asm 273 | Data | 11 | | 1 | 00/80F9 : 06 | Clow_byte dfb $06 + 291 | 1 Unidrive4t.asm 274 | Data | 11 | | 1 | 00/80FA : 00 | Chigh_byte dfb $00 + 292 | 1 Unidrive4t.asm 275 | Data | 11 | | 1 | 00/80FB : 00 | AccValue dfb $00 ; Init Value Unidisk Accumulator Register + 293 | 1 Unidrive4t.asm 276 | Data | 11 | | 1 | 00/80FC : 00 | X_reg dfb $00 ; Init Value Unidisk X Register + 294 | 1 Unidrive4t.asm 277 | Data | 11 | | 1 | 00/80FD : 00 | Y_reg dfb $00 ; Init Value Unidisk Y Register + 295 | 1 Unidrive4t.asm 278 | Data | 11 | | 1 | 00/80FE : 00 | ProStatus dfb $00 ; Init Value Unidisk Status Register + 296 | 1 Unidrive4t.asm 279 | Data | 11 | | 1 | 00/80FF : 00 | LowPC_reg dfb $00 ; Init Value Unidisk Program Counter $0500 + 297 | 1 Unidrive4t.asm 280 | Data | 11 | | 1 | 00/8100 : 05 | HighPC_reg dfb $05 + 298 | 1 Unidrive4t.asm 281 | Comment | 11 | | 0 | 00/8101 | * + 299 | 1 Unidrive4t.asm 282 | Comment | 11 | | 0 | 00/8101 | *** Set Address *** + 300 | 1 Unidrive4t.asm 283 | Empty | 11 | | 0 | 00/8101 | ozunid_18 + 301 | 1 Unidrive4t.asm 283 | Equivalence | 11 | | 0 | 00/8101 | CNTL_LIST3 equ ozunid_18 + 302 | 1 Unidrive4t.asm 284 | Data | 11 | | 1 | 00/8101 : 02 | CountL_byte dfb $02 + 303 | 1 Unidrive4t.asm 285 | Data | 11 | | 1 | 00/8102 : 00 | CountH_byte dfb $00 + 304 | 1 Unidrive4t.asm 286 | Data | 11 | | 1 | 00/8103 : 00 | LByte_Addr dfb $00 ; ORG of Unidisk program, set begin program address $0500 + 305 | 1 Unidrive4t.asm 287 | Data | 11 | | 1 | 00/8104 : 05 | HByte_Addr dfb $05 + 306 | 1 Unidrive4t.asm 288 | Comment | 11 | | 0 | 00/8105 | * + 307 | 1 Unidrive4t.asm 289 | Comment | 11 | | 0 | 00/8105 | *** Download *** + 308 | 1 Unidrive4t.asm 290 | Empty | 11 | | 0 | 00/8105 | ozunid_19 + 309 | 1 Unidrive4t.asm 290 | Equivalence | 11 | | 0 | 00/8105 | CNTL_LIST4 equ ozunid_19 + 310 | 1 Unidrive4t.asm 291 | Data | 11 | | 1 | 00/8105 : 36 | LenghtL_byte dfb $36 ;<----- Lenght of Unidisk program Lo - Byte 312 byte + 311 | 1 Unidrive4t.asm 292 | Data | 11 | | 1 | 00/8106 : 01 | LenghtH_byte dfb $01 ;<----- Lenght of Unidisk program Hi Byte + 312 | 1 Unidrive4t.asm 293 | Comment | 11 | | 0 | 00/8107 | * + 313 | 1 Unidrive4t.asm 294 | Comment | 11 | | 0 | 00/8107 | **************** Start UNIDISK Program **************** + 314 | 1 Unidrive4t.asm 295 | Comment | 11 | | 0 | 00/8107 | * + 315 | 1 Unidrive4t.asm 296 | Directive | 11 | | 0 | 00/8107 | org $0500 ; Start Unidisk program address + 316 | 1 Unidrive4t.asm 297 | Empty | 11 | | 0 | 00/0500 | + 317 | 1 Unidrive4t.asm 298 | Equivalence | 11 | | 0 | 00/0500 | SIGN EQU $C0 ;$EB ; $F3 + 318 | 1 Unidrive4t.asm 299 | Empty | 11 | | 0 | 00/0500 | + 319 | 1 Unidrive4t.asm 300 | Comment | 11 | | 0 | 00/0500 | ** FP2 4 Bytes ** + 320 | 1 Unidrive4t.asm 301 | Equivalence | 11 | | 0 | 00/0500 | X2 EQU $C1 ;$EC ; $F4 + 321 | 1 Unidrive4t.asm 302 | Equivalence | 11 | | 0 | 00/0500 | M2 EQU $C2 ;$ED ; $F5 - $F7 + 322 | 1 Unidrive4t.asm 303 | Empty | 11 | | 0 | 00/0500 | + 323 | 1 Unidrive4t.asm 304 | Comment | 11 | | 0 | 00/0500 | ** FP1 4 Bytes + E extension ** + 324 | 1 Unidrive4t.asm 305 | Equivalence | 11 | | 0 | 00/0500 | X1 EQU $C5 ;$FA ; $F8 + 325 | 1 Unidrive4t.asm 306 | Equivalence | 11 | | 0 | 00/0500 | M1 EQU $C6 ;$FB ; $F9 - $FB + 326 | 1 Unidrive4t.asm 307 | Equivalence | 11 | | 0 | 00/0500 | E EQU $C9 ;$FE ; $FC + 327 | 1 Unidrive4t.asm 308 | Empty | 11 | | 0 | 00/0500 | + 328 | 1 Unidrive4t.asm 309 | Equivalence | 11 | | 0 | 00/0500 | OVLOC EQU $C10 ;$3F5 ;Overflow routine is not implemented at now) + 329 | 1 Unidrive4t.asm 310 | Comment | 11 | | 0 | 00/0500 | * + 330 | 1 Unidrive4t.asm 311 | Comment | 11 | | 0 | 00/0500 | ** Main program ** + 331 | 1 Unidrive4t.asm 312 | Comment | 11 | | 0 | 00/0500 | * + 332 | 1 Unidrive4t.asm 313 | Comment | 11 | | 0 | 00/0500 | * CHK if is the second execution * + 333 | 1 Unidrive4t.asm 314 | Empty | 11 | | 0 | 00/0500 | + 334 | 1 Unidrive4t.asm 315 | Comment | 11 | | 0 | 00/0500 | * cmp #01 + 335 | 1 Unidrive4t.asm 316 | Code | 11 | | 2 | 00/0500 : F0 32 | beq SECOND ;Only to read the rest part of result + 336 | 1 Unidrive4t.asm 317 | Empty | 11 | | 0 | 00/0502 | + 337 | 1 Unidrive4t.asm 318 | Comment | 11 | | 0 | 00/0502 | ** Input data to Zero Page ** + 338 | 1 Unidrive4t.asm 319 | Empty | 11 | | 0 | 00/0502 | + 339 | 1 Unidrive4t.asm 320 | Comment | 11 | | 0 | 00/0502 | ** FP1 ** + 340 | 1 Unidrive4t.asm 321 | Code | 11 | | 3 | 00/0502 : AD 2F 06 | lda FP1 + 341 | 1 Unidrive4t.asm 322 | Code | 11 | | 2 | 00/0505 : 85 C5 | sta {$C5} + 342 | 1 Unidrive4t.asm 323 | Empty | 11 | | 0 | 00/0507 | + 343 | 1 Unidrive4t.asm 324 | Code | 11 | | 3 | 00/0507 : AD 30 06 | lda FP1+1 + 344 | 1 Unidrive4t.asm 325 | Code | 11 | | 2 | 00/050A : 85 C6 | sta {$C6} + 345 | 1 Unidrive4t.asm 326 | Code | 11 | | 3 | 00/050C : AD 31 06 | lda FP1+2 + 346 | 1 Unidrive4t.asm 327 | Code | 11 | | 2 | 00/050F : 85 C7 | sta {$C6}+1 + 347 | 1 Unidrive4t.asm 328 | Code | 11 | | 3 | 00/0511 : AD 32 06 | lda FP1+3 + 348 | 1 Unidrive4t.asm 329 | Code | 11 | | 2 | 00/0514 : 85 C8 | sta {$C6}+2 + 349 | 1 Unidrive4t.asm 330 | Empty | 11 | | 0 | 00/0516 | + 350 | 1 Unidrive4t.asm 331 | Comment | 11 | | 0 | 00/0516 | ** FP2 ** + 351 | 1 Unidrive4t.asm 332 | Code | 11 | | 3 | 00/0516 : AD 33 06 | lda FP2 + 352 | 1 Unidrive4t.asm 333 | Code | 11 | | 2 | 00/0519 : 85 C1 | sta {$C1} + 353 | 1 Unidrive4t.asm 334 | Empty | 11 | | 0 | 00/051B | + 354 | 1 Unidrive4t.asm 335 | Code | 11 | | 3 | 00/051B : AD 34 06 | lda FP2+1 + 355 | 1 Unidrive4t.asm 336 | Code | 11 | | 2 | 00/051E : 85 C2 | sta {$C2} + 356 | 1 Unidrive4t.asm 337 | Code | 11 | | 3 | 00/0520 : AD 35 06 | lda FP2+2 + 357 | 1 Unidrive4t.asm 338 | Code | 11 | | 2 | 00/0523 : 85 C3 | sta {$C2}+1 + 358 | 1 Unidrive4t.asm 339 | Code | 11 | | 3 | 00/0525 : AD 36 06 | lda FP2+3 + 359 | 1 Unidrive4t.asm 340 | Code | 11 | | 2 | 00/0528 : 85 C4 | sta {$C2}+2 + 360 | 1 Unidrive4t.asm 341 | Empty | 11 | | 0 | 00/052A | + 361 | 1 Unidrive4t.asm 342 | Comment | 11 | | 0 | 00/052A | ************************** Target Function *********************** + 362 | 1 Unidrive4t.asm 343 | Comment | 11 | | 0 | 00/052A | * Y=N1+N2 * + 363 | 1 Unidrive4t.asm 344 | Comment | 11 | | 0 | 00/052A | ****************************************************************** + 364 | 1 Unidrive4t.asm 345 | Comment | 11 | | 0 | 00/052A | * + 365 | 1 Unidrive4t.asm 346 | Comment | 11 | | 0 | 00/052A | ** Simple ADD ** + 366 | 1 Unidrive4t.asm 347 | Code | 11 | | 3 | 00/052A : 20 80 05 | jsr FADD ; Call FP routine + 367 | 1 Unidrive4t.asm 348 | Empty | 11 | | 0 | 00/052D | + 368 | 1 Unidrive4t.asm 349 | Comment | 11 | | 0 | 00/052D | *** Output Data result FP1 to Unidisk registers First Time first 3 Byte out *** + 369 | 1 Unidrive4t.asm 350 | Code | 11 | | 2 | 00/052D : A5 C5 | lda {$C5} + 370 | 1 Unidrive4t.asm 351 | Code | 11 | | 2 | 00/052F : A6 C6 | ldx {$C6} + 371 | 1 Unidrive4t.asm 352 | Code | 11 | | 2 | 00/0531 : A4 C7 | ldy {$C6}+1 + 372 | 1 Unidrive4t.asm 353 | Empty | 11 | | 0 | 00/0533 | + 373 | 1 Unidrive4t.asm 354 | Code | 11 | | 1 | 00/0533 : 60 | rts + 374 | 1 Unidrive4t.asm 355 | Comment | 11 | | 0 | 00/0534 | *** Output Data result FP1 to Unidisk registers Second Time latest 1 Byte out *** + 375 | 1 Unidrive4t.asm 356 | Code | 11 | | 2 | 00/0534 : A5 C8 | SECOND lda {$C6}+2 + 376 | 1 Unidrive4t.asm 357 | Empty | 11 | | 0 | 00/0536 | + 377 | 1 Unidrive4t.asm 358 | Code | 11 | | 1 | 00/0536 : 60 | rts + 378 | 1 Unidrive4t.asm 359 | Comment | 11 | | 0 | 00/0537 | *************************************************** + 379 | 1 Unidrive4t.asm 360 | Comment | 11 | | 0 | 00/0537 | * + 380 | 1 Unidrive4t.asm 361 | Comment | 11 | | 0 | 00/0537 | ***************** FP Routine ***************** + 381 | 1 Unidrive4t.asm 362 | Comment | 11 | | 0 | 00/0537 | * + 382 | 1 Unidrive4t.asm 363 | Comment | 11 | | 0 | 00/0537 | *********************** + 383 | 1 Unidrive4t.asm 364 | Comment | 11 | | 0 | 00/0537 | * * + 384 | 1 Unidrive4t.asm 365 | Comment | 11 | | 0 | 00/0537 | * APPLE-II FLOATING * + 385 | 1 Unidrive4t.asm 366 | Comment | 11 | | 0 | 00/0537 | * POINT ROUTINES * + 386 | 1 Unidrive4t.asm 367 | Comment | 11 | | 0 | 00/0537 | * * + 387 | 1 Unidrive4t.asm 368 | Comment | 11 | | 0 | 00/0537 | * COPYRIGHT 1977 BY * + 388 | 1 Unidrive4t.asm 369 | Comment | 11 | | 0 | 00/0537 | * APPLE COMPUTER INC. * + 389 | 1 Unidrive4t.asm 370 | Comment | 11 | | 0 | 00/0537 | * * + 390 | 1 Unidrive4t.asm 371 | Comment | 11 | | 0 | 00/0537 | * ALL RIGHTS RESERVED * + 391 | 1 Unidrive4t.asm 372 | Comment | 11 | | 0 | 00/0537 | * * + 392 | 1 Unidrive4t.asm 373 | Comment | 11 | | 0 | 00/0537 | * S. WOZNIAK * + 393 | 1 Unidrive4t.asm 374 | Comment | 11 | | 0 | 00/0537 | * * + 394 | 1 Unidrive4t.asm 375 | Comment | 11 | | 0 | 00/0537 | *********************** + 395 | 1 Unidrive4t.asm 376 | Comment | 11 | | 0 | 00/0537 | * TITLE "FLOATING POINT ROUTINES for Unidisk memory" + 396 | 1 Unidrive4t.asm 377 | Comment | 11 | | 0 | 00/0537 | * + 397 | 1 Unidrive4t.asm 378 | Empty | 11 | | 0 | 00/0537 | + 398 | 1 Unidrive4t.asm 379 | Comment | 11 | | 0 | 00/0537 | * ORG $300 + 399 | 1 Unidrive4t.asm 380 | Empty | 11 | | 0 | 00/0537 | + 400 | 1 Unidrive4t.asm 381 | Code | 11 | | 1 | 00/0537 : 18 | ADD CLC ;CLEAR CARRY + 401 | 1 Unidrive4t.asm 382 | Code | 11 | | 2 | 00/0538 : A2 02 | LDX #$2 ;INDEX FOR 3-BYTE ADD. + 402 | 1 Unidrive4t.asm 383 | Code | 11 | | 2 | 00/053A : B5 C6 | ADD1 LDA {$C6},X + 403 | 1 Unidrive4t.asm 384 | Code | 11 | | 2 | 00/053C : 75 C2 | ADC {$C2},X ;ADD A BYTE OF MANT2 TO MANT1 + 404 | 1 Unidrive4t.asm 385 | Code | 11 | | 2 | 00/053E : 95 C6 | STA {$C6},X + 405 | 1 Unidrive4t.asm 386 | Code | 11 | | 1 | 00/0540 : CA | DEX ;INDEX TO NEXT MORE SIGNIF. BYTE. + 406 | 1 Unidrive4t.asm 387 | Code | 11 | | 2 | 00/0541 : 10 F7 | BPL ADD1 ;LOOP UNTIL DONE. + 407 | 1 Unidrive4t.asm 388 | Code | 11 | | 1 | 00/0543 : 60 | RTS ;RETURN + 408 | 1 Unidrive4t.asm 389 | Code | 11 | | 2 | 00/0544 : 06 C0 | MD1 ASL {$C0} ;CLEAR LSB OF SIGN. + 409 | 1 Unidrive4t.asm 390 | Code | 11 | | 3 | 00/0546 : 20 49 05 | JSR ABSWAP ;ABS VAL OF M1, THEN SWAP WITH M2 + 410 | 1 Unidrive4t.asm 391 | Code | 11 | | 2 | 00/0549 : 24 C6 | ABSWAP BIT {$C6} ;MANT1 NEGATIVE? + 411 | 1 Unidrive4t.asm 392 | Code | 11 | | 2 | 00/054B : 10 05 | BPL ABSWAP1 ;NO, SWAP WITH MANT2 AND RETURN. + 412 | 1 Unidrive4t.asm 393 | Code | 11 | | 3 | 00/054D : 20 B6 05 | JSR FCOMPL ;YES, COMPLEMENT IT. + 413 | 1 Unidrive4t.asm 394 | Code | 11 | | 2 | 00/0550 : E6 C0 | INC {$C0} ;INCR SIGN, COMPLEMENTING LSB. + 414 | 1 Unidrive4t.asm 395 | Code | 11 | | 1 | 00/0552 : 38 | ABSWAP1 SEC ;SET CARRY FOR RETURN TO MUL/DIV. + 415 | 1 Unidrive4t.asm 396 | Code | 11 | | 2 | 00/0553 : A2 04 | SWAP LDX #$4 ;INDEX FOR 4 BYTE SWAP. + 416 | 1 Unidrive4t.asm 397 | Code | 11 | | 2 | 00/0555 : 94 C8 | SWAP1 STY {$C9}-1,X + 417 | 1 Unidrive4t.asm 398 | Code | 11 | | 2 | 00/0557 : B5 C4 | LDA {$C5}-1,X ;SWAP A BYTE OF EXP/MANT1 WITH + 418 | 1 Unidrive4t.asm 399 | Code | 11 | | 2 | 00/0559 : B4 C0 | LDY {$C1}-1,X ;EXP/MANT2 AND LEAVE A COPY OF + 419 | 1 Unidrive4t.asm 400 | Code | 11 | | 2 | 00/055B : 94 C4 | STY {$C5}-1,X ;MANT1 IN E (3 BYTES). E+3 USED + 420 | 1 Unidrive4t.asm 401 | Code | 11 | | 2 | 00/055D : 95 C0 | STA {$C1}-1,X + 421 | 1 Unidrive4t.asm 402 | Code | 11 | | 1 | 00/055F : CA | DEX ;ADVANCE INDEX TO NEXT BYTE + 422 | 1 Unidrive4t.asm 403 | Code | 11 | | 2 | 00/0560 : D0 F3 | BNE SWAP1 ;LOOP UNTIL DONE. + 423 | 1 Unidrive4t.asm 404 | Code | 11 | | 1 | 00/0562 : 60 | RTS ;RETURN + 424 | 1 Unidrive4t.asm 405 | Code | 11 | | 2 | 00/0563 : A9 8E | FLOAT LDA #$8E ;INIT EXP1 TO 14, <--------------- int to fp + 425 | 1 Unidrive4t.asm 406 | Code | 11 | | 2 | 00/0565 : 85 C5 | STA {$C5} ;THEN NORMALIZE TO FLOAT. + 426 | 1 Unidrive4t.asm 407 | Code | 11 | | 2 | 00/0567 : A5 C6 | NORM1 LDA {$C6} ;HIGH-ORDER MANT1 BYTE. + 427 | 1 Unidrive4t.asm 408 | Code | 11 | | 2 | 00/0569 : C9 C0 | CMP #$C0 ;UPPER TWO BITS UNEQUAL? + 428 | 1 Unidrive4t.asm 409 | Code | 11 | | 2 | 00/056B : 30 0C | BMI RTS1 ;YES, RETURN WITH MANT1 NORMALIZED + 429 | 1 Unidrive4t.asm 410 | Code | 11 | | 2 | 00/056D : C6 C5 | DEC {$C5} ;DECREMENT EXP1. + 430 | 1 Unidrive4t.asm 411 | Code | 11 | | 2 | 00/056F : 06 C8 | ASL {$C6}+2 + 431 | 1 Unidrive4t.asm 412 | Code | 11 | | 2 | 00/0571 : 26 C7 | ROL {$C6}+1 ;SHIFT MANT1 (3 BYTES) LEFT. + 432 | 1 Unidrive4t.asm 413 | Code | 11 | | 2 | 00/0573 : 26 C6 | ROL {$C6} + 433 | 1 Unidrive4t.asm 414 | Code | 11 | | 2 | 00/0575 : A5 C5 | NORM LDA {$C5} ;EXP1 ZERO? + 434 | 1 Unidrive4t.asm 415 | Code | 11 | | 2 | 00/0577 : D0 EE | BNE NORM1 ;NO, CONTINUE NORMALIZING. + 435 | 1 Unidrive4t.asm 416 | Code | 11 | | 1 | 00/0579 : 60 | RTS1 RTS ;RETURN. + 436 | 1 Unidrive4t.asm 417 | Code | 11 | | 3 | 00/057A : 20 B6 05 | FSUB JSR FCOMPL ;CMPL MANT1,CLEARS CARRY UNLESS 0 <---- sub + 437 | 1 Unidrive4t.asm 418 | Code | 11 | | 3 | 00/057D : 20 8D 05 | SWPALGN JSR ALGNSWP ;RIGHT SHIFT MANT1 OR SWAP WITH + 438 | 1 Unidrive4t.asm 419 | Code | 11 | | 2 | 00/0580 : A5 C1 | FADD LDA {$C1} ;<------------------------------------- add + 439 | 1 Unidrive4t.asm 420 | Code | 11 | | 2 | 00/0582 : C5 C5 | CMP {$C5} ;COMPARE EXP1 WITH EXP2. + 440 | 1 Unidrive4t.asm 421 | Code | 11 | | 2 | 00/0584 : D0 F7 | BNE SWPALGN ;IF #,SWAP ADDENDS OR ALIGN MANTS. + 441 | 1 Unidrive4t.asm 422 | Code | 11 | | 3 | 00/0586 : 20 37 05 | JSR ADD ;ADD ALIGNED MANTISSAS. + 442 | 1 Unidrive4t.asm 423 | Code | 11 | | 2 | 00/0589 : 50 EA | ADDEND BVC NORM ;NO OVERFLOW, NORMALIZE RESULT. + 443 | 1 Unidrive4t.asm 424 | Code | 11 | | 2 | 00/058B : 70 05 | BVS RTLOG ;OV: SHIFT M1 RIGHT, CARRY INTO SIGN + 444 | 1 Unidrive4t.asm 425 | Code | 11 | | 2 | 00/058D : 90 C4 | ALGNSWP BCC SWAP ;SWAP IF CARRY CLEAR, + 445 | 1 Unidrive4t.asm 426 | Comment | 11 | | 0 | 00/058F | * ELSE SHIFT RIGHT ARITH. + 446 | 1 Unidrive4t.asm 427 | Code | 11 | | 2 | 00/058F : A5 C6 | RTAR LDA {$C6} ;SIGN OF MANT1 INTO CARRY FOR + 447 | 1 Unidrive4t.asm 428 | Code | 11 | | 1 | 00/0591 : 0A | ASL ;RIGHT ARITH SHIFT. + 448 | 1 Unidrive4t.asm 429 | Code | 11 | | 2 | 00/0592 : E6 C5 | RTLOG INC {$C5} ;INCR X1 TO ADJUST FOR RIGHT SHIFT + 449 | 1 Unidrive4t.asm 430 | Code | 11 | | 2 | 00/0594 : F0 75 | BEQ OVFL ;EXP1 OUT OF RANGE. + 450 | 1 Unidrive4t.asm 431 | Code | 11 | | 2 | 00/0596 : A2 FA | RTLOG1 LDX #$FA ;INDEX FOR 6:BYTE RIGHT SHIFT. + 451 | 1 Unidrive4t.asm 432 | Code | 11 | | 2 | 00/0598 : 76 CC | ROR1 ROR {$C9}+3,X + 452 | 1 Unidrive4t.asm 433 | Code | 11 | | 1 | 00/059A : E8 | INX ;NEXT BYTE OF SHIFT. + 453 | 1 Unidrive4t.asm 434 | Code | 11 | | 2 | 00/059B : D0 FB | BNE ROR1 ;LOOP UNTIL DONE. + 454 | 1 Unidrive4t.asm 435 | Code | 11 | | 1 | 00/059D : 60 | RTS ;RETURN. + 455 | 1 Unidrive4t.asm 436 | Code | 11 | | 3 | 00/059E : 20 44 05 | FMUL JSR MD1 ;ABS VAL OF MANT1, MANT2 <-------------- mul + 456 | 1 Unidrive4t.asm 437 | Code | 11 | | 2 | 00/05A1 : 65 C5 | ADC {$C5} ;ADD EXP1 TO EXP2 FOR PRODUCT EXP + 457 | 1 Unidrive4t.asm 438 | Code | 11 | | 3 | 00/05A3 : 20 F4 05 | JSR MD2 ;CHECK PROD. EXP AND PREP. FOR MUL + 458 | 1 Unidrive4t.asm 439 | Code | 11 | | 1 | 00/05A6 : 18 | CLC ;CLEAR CARRY FOR FIRST BIT. + 459 | 1 Unidrive4t.asm 440 | Code | 11 | | 3 | 00/05A7 : 20 96 05 | MUL1 JSR RTLOG1 ;M1 AND E RIGHT (PROD AND MPLIER) + 460 | 1 Unidrive4t.asm 441 | Code | 11 | | 2 | 00/05AA : 90 03 | BCC MUL2 ;IF CARRY CLEAR, SKIP PARTIAL PROD + 461 | 1 Unidrive4t.asm 442 | Code | 11 | | 3 | 00/05AC : 20 37 05 | JSR ADD ;ADD MULTIPLICAND TO PRODUCT. + 462 | 1 Unidrive4t.asm 443 | Code | 11 | | 1 | 00/05AF : 88 | MUL2 DEY ;NEXT MUL ITERATION. + 463 | 1 Unidrive4t.asm 444 | Code | 11 | | 2 | 00/05B0 : 10 F5 | BPL MUL1 ;LOOP UNTIL DONE. + 464 | 1 Unidrive4t.asm 445 | Code | 11 | | 2 | 00/05B2 : 46 C0 | MDEND LSR {$C0} ;TEST SIGN LSB. + 465 | 1 Unidrive4t.asm 446 | Code | 11 | | 2 | 00/05B4 : 90 BF | NORMX BCC NORM ;IF EVEN,NORMALIZE PROD,ELSE COMP + 466 | 1 Unidrive4t.asm 447 | Code | 11 | | 1 | 00/05B6 : 38 | FCOMPL SEC ;SET CARRY FOR SUBTRACT. <--------------- not + 467 | 1 Unidrive4t.asm 448 | Code | 11 | | 2 | 00/05B7 : A2 03 | LDX #$3 ;INDEX FOR 3 BYTE SUBTRACT. + 468 | 1 Unidrive4t.asm 449 | Code | 11 | | 2 | 00/05B9 : A9 00 | COMPL1 LDA #$0 ;CLEAR A. + 469 | 1 Unidrive4t.asm 450 | Code | 11 | | 2 | 00/05BB : F5 C5 | SBC {$C5},X ;SUBTRACT BYTE OF EXP1. + 470 | 1 Unidrive4t.asm 451 | Code | 11 | | 2 | 00/05BD : 95 C5 | STA {$C5},X ;RESTORE IT. + 471 | 1 Unidrive4t.asm 452 | Code | 11 | | 1 | 00/05BF : CA | DEX ;NEXT MORE SIGNIFICANT BYTE. + 472 | 1 Unidrive4t.asm 453 | Code | 11 | | 2 | 00/05C0 : D0 F7 | BNE COMPL1 ;LOOP UNTIL DONE. + 473 | 1 Unidrive4t.asm 454 | Code | 11 | | 2 | 00/05C2 : F0 C5 | BEQ ADDEND ;NORMALIZE (OR SHIFT RT IF OVFL). + 474 | 1 Unidrive4t.asm 455 | Code | 11 | | 3 | 00/05C4 : 20 44 05 | FDIV JSR MD1 ;TAKE ABS VAL OF MANT1, MANT2. <--------- div + 475 | 1 Unidrive4t.asm 456 | Code | 11 | | 2 | 00/05C7 : E5 C5 | SBC {$C5} ;SUBTRACT EXP1 FROM EXP2. + 476 | 1 Unidrive4t.asm 457 | Code | 11 | | 3 | 00/05C9 : 20 F4 05 | JSR MD2 ;SAVE AS QUOTIENT EXP. + 477 | 1 Unidrive4t.asm 458 | Code | 11 | | 1 | 00/05CC : 38 | DIV1 SEC ;SET CARRY FOR SUBTRACT. + 478 | 1 Unidrive4t.asm 459 | Code | 11 | | 2 | 00/05CD : A2 02 | LDX #$2 ;INDEX FOR 3-BYTE SUBTRACTION. + 479 | 1 Unidrive4t.asm 460 | Code | 11 | | 2 | 00/05CF : B5 C2 | DIV2 LDA {$C2},X + 480 | 1 Unidrive4t.asm 461 | Code | 11 | | 2 | 00/05D1 : F5 C9 | SBC {$C9},X ;SUBTRACT A BYTE OF E FROM MANT2. + 481 | 1 Unidrive4t.asm 462 | Code | 11 | | 1 | 00/05D3 : 48 | PHA ;SAVE ON STACK. + 482 | 1 Unidrive4t.asm 463 | Code | 11 | | 1 | 00/05D4 : CA | DEX ;NEXT MORE SIGNIFICANT BYTE. + 483 | 1 Unidrive4t.asm 464 | Code | 11 | | 2 | 00/05D5 : 10 F8 | BPL DIV2 ;LOOP UNTIL DONE. + 484 | 1 Unidrive4t.asm 465 | Code | 11 | | 2 | 00/05D7 : A2 FD | LDX #$FD ;INDEX FOR 3-BYTE CONDITIONAL MOVE + 485 | 1 Unidrive4t.asm 466 | Code | 11 | | 1 | 00/05D9 : 68 | DIV3 PLA ;PULL BYTE OF DIFFERENCE OFF STACK + 486 | 1 Unidrive4t.asm 467 | Code | 11 | | 2 | 00/05DA : 90 02 | BCC DIV4 ;IF M2FxE3w2o3S{@eGMnaEeq2(o=8`a&`9aWl-q* z3q*?;_BuCwkl<_p>-y}d00a>V3Xvc>0I29h0=jUdtlOjThcJzy`51!OveIz*)gRNCC)jaSiiyb_E&%)L{qG!NA$L;lf(|Mul5{7cnb%{akAR zW-@}9h6qt3Fq0K1ny`p{|1%#6Z~%nXD8Ghj+Uxb#5k!2|$@*>n~F literal 0 HcmV?d00001 diff --git a/AppleII/Integer adc 1 Byte/Unicalc.asm b/AppleII/Integer adc 1 Byte/Unicalc.asm new file mode 100644 index 0000000..13b80e6 --- /dev/null +++ b/AppleII/Integer adc 1 Byte/Unicalc.asm @@ -0,0 +1,392 @@ +* +* Unidisk 3.5 Calc +* +* 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 . +* +* 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 . +* +* +* @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 \ No newline at end of file diff --git a/AppleII/Integer adc 1 Byte/Unicalc.do b/AppleII/Integer adc 1 Byte/Unicalc.do new file mode 100644 index 0000000000000000000000000000000000000000..fbb858c9aaff87e722f2a1355537a022b9fafcad GIT binary patch literal 143360 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 literal 0 HcmV?d00001 diff --git a/AppleII/Integer adc 1 Byte/Unicalc_Output.txt b/AppleII/Integer adc 1 Byte/Unicalc_Output.txt new file mode 100644 index 0000000..8c9295b --- /dev/null +++ b/AppleII/Integer adc 1 Byte/Unicalc_Output.txt @@ -0,0 +1,415 @@ +------+-----------------------+-------------+----+---------+------+-----------------------+------------------------------------------------------------------- + Line | # File Line | Line Type | MX | Reloc | Size | Address Object Code | Source Code +------+-----------------------+-------------+----+---------+------+-----------------------+------------------------------------------------------------------- + 1 | 1 Unicalc.asm 1 | Comment | 11 | | 0 | 00/8000 | * @com.wudsn.ide.asm.hardware=APPLE2 + 2 | 1 Unicalc.asm 2 | Comment | 11 | | 0 | 00/8000 | * Protocol Converter Call + 3 | 1 Unicalc.asm 3 | Directive | 11 | | 0 | 00/8000 | XC + 4 | 1 Unicalc.asm 4 | Equivalence | 11 | | 0 | 00/8000 | ZPTempL equ $0006 ;Temporary zero page storage + 5 | 1 Unicalc.asm 5 | Equivalence | 11 | | 0 | 00/8000 | ZPTempH equ $0007 + 6 | 1 Unicalc.asm 6 | Comment | 11 | | 0 | 00/8000 | *** Pointers *** + 7 | 1 Unicalc.asm 7 | Equivalence | 11 | | 0 | 00/8000 | LowMain equ $000A + 8 | 1 Unicalc.asm 8 | Equivalence | 11 | | 0 | 00/8000 | HiMain equ $000B + 9 | 1 Unicalc.asm 9 | Comment | 11 | | 0 | 00/8000 | *** Monitor routines *** + 10 | 1 Unicalc.asm 10 | Equivalence | 11 | | 0 | 00/8000 | COut equ $FDED ;Console output ASCII + 11 | 1 Unicalc.asm 11 | Equivalence | 11 | | 0 | 00/8000 | COUT1 equ $FDF0 ;Output to screen + 12 | 1 Unicalc.asm 12 | Equivalence | 11 | | 0 | 00/8000 | CROut equ $FD8E ;Carriage return + 13 | 1 Unicalc.asm 13 | Equivalence | 11 | | 0 | 00/8000 | PRbyte equ $FDDA ;Print byte in hex + 14 | 1 Unicalc.asm 14 | Equivalence | 11 | | 0 | 00/8000 | PRBL2 equ $F94A ;Print many spaces + 15 | 1 Unicalc.asm 15 | Equivalence | 11 | | 0 | 00/8000 | KEYIN equ $FD1B ;Waits for keypress + 16 | 1 Unicalc.asm 16 | Comment | 11 | | 0 | 00/8000 | ** Command Code ** + 17 | 1 Unicalc.asm 17 | Equivalence | 11 | | 0 | 00/8000 | StatusCmd equ 0 + 18 | 1 Unicalc.asm 18 | Comment | 11 | | 0 | 00/8000 | ** Status Code ** + 19 | 1 Unicalc.asm 19 | Equivalence | 11 | | 0 | 00/8000 | StatusDIB equ 3 + 20 | 1 Unicalc.asm 20 | Equivalence | 11 | | 0 | 00/8000 | StatusUNI equ 5 + 21 | 1 Unicalc.asm 21 | Comment | 11 | | 0 | 00/8000 | * + 22 | 1 Unicalc.asm 22 | Equivalence | 11 | | 0 | 00/8000 | ControlCmd equ 4 + 23 | 1 Unicalc.asm 23 | Comment | 11 | | 0 | 00/8000 | ** Control Codes ** + 24 | 1 Unicalc.asm 24 | Equivalence | 11 | | 0 | 00/8000 | Eject equ 4 + 25 | 1 Unicalc.asm 25 | Equivalence | 11 | | 0 | 00/8000 | Run equ 5 + 26 | 1 Unicalc.asm 26 | Equivalence | 11 | | 0 | 00/8000 | SetDWLoad equ 6 + 27 | 1 Unicalc.asm 27 | Equivalence | 11 | | 0 | 00/8000 | DWLoad equ 7 + 28 | 1 Unicalc.asm 28 | Comment | 11 | | 0 | 00/8000 | * + 29 | 1 Unicalc.asm 29 | Directive | 11 | | 0 | 00/8000 | org $8000 + 30 | 1 Unicalc.asm 30 | Comment | 11 | | 0 | 00/8000 | ***************************************************** + 31 | 1 Unicalc.asm 31 | Comment | 11 | | 0 | 00/8000 | * Presentation message ************** + 32 | 1 Unicalc.asm 32 | Comment | 11 | | 0 | 00/8000 | * + 33 | 1 Unicalc.asm 33 | Code | 11 | | 2 | 00/8000 : A2 00 | ldx #0 + 34 | 1 Unicalc.asm 34 | Empty | 11 | | 0 | 00/8002 | ozunid_1 + 35 | 1 Unicalc.asm 34 | Equivalence | 11 | | 0 | 00/8002 | LOOP equ ozunid_1 + 36 | 1 Unicalc.asm 35 | Code | 11 | | 3 | 00/8002 : BD 0D 80 | lda DATA,x + 37 | 1 Unicalc.asm 36 | Code | 11 | | 2 | 00/8005 : F0 27 | beq ME2 + 38 | 1 Unicalc.asm 37 | Code | 11 | | 3 | 00/8007 : 20 ED FD | jsr {$FDED} + 39 | 1 Unicalc.asm 38 | Code | 11 | | 1 | 00/800A : E8 | inx + 40 | 1 Unicalc.asm 39 | Code | 11 | | 2 | 00/800B : D0 F5 | bne {ozunid_1} + 41 | 1 Unicalc.asm 40 | Comment | 11 | | 0 | 00/800D | * + 42 | 1 Unicalc.asm 41 | Data | 11 | | 31 | 00/800D : 55 4E 49 44 | DATA asc 'UNIDISK 3.5 UTILITY BY R. GRECO' + | | | | | | 49 53 4B 20 | + | | | | | | 33 2E 35 20 | + | | | | | | 55 54 49 4C | + | | | | | | 49 54 59 20 | + | | | | | | 42 59 20 52 | + | | | | | | 2E 20 47 52 | + | | | | | | 45 43 4F | + 43 | 1 Unicalc.asm 42 | Data | 11 | | 2 | 00/802C : 8D 00 | dfb $8D,0 ; Inverse mode on + 44 | 1 Unicalc.asm 43 | Empty | 11 | | 0 | 00/802E | + 45 | 1 Unicalc.asm 44 | Code | 11 | | 3 | 00/802E : 20 8E FD | ME2 jsr {$FD8E} + 46 | 1 Unicalc.asm 45 | Code | 11 | | 3 | 00/8031 : 20 8E FD | jsr {$FD8E} + 47 | 1 Unicalc.asm 46 | Empty | 11 | | 0 | 00/8034 | + 48 | 1 Unicalc.asm 47 | Code | 11 | | 2 | 00/8034 : A2 00 | ldx #0 + 49 | 1 Unicalc.asm 48 | Empty | 11 | | 0 | 00/8036 | ozunid_2 + 50 | 1 Unicalc.asm 48 | Equivalence | 11 | | 0 | 00/8036 | LOOP2 equ ozunid_2 + 51 | 1 Unicalc.asm 49 | Code | 11 | | 3 | 00/8036 : BD 43 80 | lda DATA2,x + 52 | 1 Unicalc.asm 50 | Code | 11 | | 2 | 00/8039 : F0 18 | beq START + 53 | 1 Unicalc.asm 51 | Code | 11 | | 2 | 00/803B : 09 80 | ora #$80 + 54 | 1 Unicalc.asm 52 | Code | 11 | | 3 | 00/803D : 20 ED FD | jsr {$FDED} + 55 | 1 Unicalc.asm 53 | Code | 11 | | 1 | 00/8040 : E8 | inx + 56 | 1 Unicalc.asm 54 | Code | 11 | | 2 | 00/8041 : D0 F3 | bne {ozunid_2} + 57 | 1 Unicalc.asm 55 | Comment | 11 | | 0 | 00/8043 | * + 58 | 1 Unicalc.asm 56 | Data | 11 | | 14 | 00/8043 : 41 20 20 20 | DATA2 asc 'A X Y P' + | | | | | | 20 58 20 20 | + | | | | | | 59 20 20 20 | + | | | | | | 20 50 | + 59 | 1 Unicalc.asm 57 | Data | 11 | | 2 | 00/8051 : 8D 00 | dfb $8D,0 ; Inverse mode on + 60 | 1 Unicalc.asm 58 | Comment | 11 | | 0 | 00/8053 | ***************************************************** + 61 | 1 Unicalc.asm 59 | Comment | 11 | | 0 | 00/8053 | * + 62 | 1 Unicalc.asm 60 | Comment | 11 | | 0 | 00/8053 | * Find a Protocol Converter in one of the slots. + 63 | 1 Unicalc.asm 61 | Code | 11 | | 3 | 00/8053 : 20 D1 80 | START jsr {ozunid_6} + 64 | 1 Unicalc.asm 62 | Code | 11 | | 2 | 00/8056 : B0 1C | bcs {ozunid_3} + 65 | 1 Unicalc.asm 63 | Comment | 11 | | 0 | 00/8058 | * + 66 | 1 Unicalc.asm 64 | Comment | 11 | | 0 | 00/8058 | * Now make the DIB call to the first guy + 67 | 1 Unicalc.asm 65 | Comment | 11 | | 0 | 00/8058 | * + 68 | 1 Unicalc.asm 66 | Comment | 11 | | 0 | 00/8058 | * jsr Dispatch + 69 | 1 Unicalc.asm 67 | Comment | 11 | | 0 | 00/8058 | * dfb StatusCmd + 70 | 1 Unicalc.asm 68 | Comment | 11 | | 0 | 00/8058 | * dw DParmsDIB + 71 | 1 Unicalc.asm 69 | Comment | 11 | | 0 | 00/8058 | * bcs Error + 72 | 1 Unicalc.asm 70 | Comment | 11 | | 0 | 00/8058 | * + 73 | 1 Unicalc.asm 71 | Comment | 11 | | 0 | 00/8058 | * Got the DIB; now print the name string + 74 | 1 Unicalc.asm 72 | Comment | 11 | | 0 | 00/8058 | * + 75 | 1 Unicalc.asm 73 | Comment | 11 | | 0 | 00/8058 | * ldx #0 + 76 | 1 Unicalc.asm 74 | Comment | 11 | | 0 | 00/8058 | * morechars equ * + 77 | 1 Unicalc.asm 75 | Comment | 11 | | 0 | 00/8058 | * lda DIBName,x + 78 | 1 Unicalc.asm 76 | Comment | 11 | | 0 | 00/8058 | * ora #$80 ;COut wants high Bit set + 79 | 1 Unicalc.asm 77 | Comment | 11 | | 0 | 00/8058 | * jsr COut ; ASCII + 80 | 1 Unicalc.asm 78 | Comment | 11 | | 0 | 00/8058 | * inx + 81 | 1 Unicalc.asm 79 | Comment | 11 | | 0 | 00/8058 | * cpx DIBNameLen + 82 | 1 Unicalc.asm 80 | Comment | 11 | | 0 | 00/8058 | * bne morechars + 83 | 1 Unicalc.asm 81 | Comment | 11 | | 0 | 00/8058 | ************************************* + 84 | 1 Unicalc.asm 82 | Comment | 11 | | 0 | 00/8058 | * ldx #02 ; Set 2 space + 85 | 1 Unicalc.asm 83 | Comment | 11 | | 0 | 00/8058 | * jsr PRBL2 + 86 | 1 Unicalc.asm 84 | Comment | 11 | | 0 | 00/8058 | ** Print Type *********************** + 87 | 1 Unicalc.asm 85 | Comment | 11 | | 0 | 00/8058 | * lda DIBType + 88 | 1 Unicalc.asm 86 | Comment | 11 | | 0 | 00/8058 | * jsr PRbyte ; HEX form + 89 | 1 Unicalc.asm 87 | Comment | 11 | | 0 | 00/8058 | ************************************* + 90 | 1 Unicalc.asm 88 | Comment | 11 | | 0 | 00/8058 | * ldx #02 ; Set 2 space + 91 | 1 Unicalc.asm 89 | Comment | 11 | | 0 | 00/8058 | * jsr PRBL2 + 92 | 1 Unicalc.asm 90 | Comment | 11 | | 0 | 00/8058 | ** Print Firmware version *********** + 93 | 1 Unicalc.asm 91 | Comment | 11 | | 0 | 00/8058 | * ldx #0 + 94 | 1 Unicalc.asm 92 | Comment | 11 | | 0 | 00/8058 | * morechars2 equ * + 95 | 1 Unicalc.asm 93 | Comment | 11 | | 0 | 00/8058 | * lda DIBVersion,x + 96 | 1 Unicalc.asm 94 | Comment | 11 | | 0 | 00/8058 | * jsr PRbyte ; HEX form + 97 | 1 Unicalc.asm 95 | Comment | 11 | | 0 | 00/8058 | * inx + 98 | 1 Unicalc.asm 96 | Comment | 11 | | 0 | 00/8058 | * cpx #$02 ; 2 Byte + 99 | 1 Unicalc.asm 97 | Comment | 11 | | 0 | 00/8058 | * bne morechars2 + 100 | 1 Unicalc.asm 98 | Comment | 11 | | 0 | 00/8058 | * jsr COut + 101 | 1 Unicalc.asm 99 | Comment | 11 | | 0 | 00/8058 | ************************************** + 102 | 1 Unicalc.asm 100 | Code | 11 | | 3 | 00/8058 : 20 8E FD | jsr {$FD8E} + 103 | 1 Unicalc.asm 101 | Comment | 11 | | 0 | 00/805B | ** Wait keypress to continue ** + 104 | 1 Unicalc.asm 102 | Comment | 11 | | 0 | 00/805B | * + 105 | 1 Unicalc.asm 103 | Code | 11 | | 3 | 00/805B : 20 1B FD | jsr {$FD1B} + 106 | 1 Unicalc.asm 104 | Comment | 11 | | 0 | 00/805E | * + 107 | 1 Unicalc.asm 105 | Comment | 11 | | 0 | 00/805E | *** Eject *** + 108 | 1 Unicalc.asm 106 | Code | 11 | | 3 | 00/805E : 20 06 81 | jsr {ozunid_11} + 109 | 1 Unicalc.asm 107 | Data | 11 | | 1 | 00/8061 : 04 | dfb {4} + 110 | 1 Unicalc.asm 108 | Data | 11 | | 2 | 00/8062 : 43 81 | dw {ozunid_19} + 111 | 1 Unicalc.asm 109 | Comment | 11 | | 0 | 00/8064 | *** Set start HiMain Memory Pointers *** + 112 | 1 Unicalc.asm 110 | Comment | 11 | | 0 | 00/8064 | * lda #$20 ; Hi Byte start (//c ram) + 113 | 1 Unicalc.asm 111 | Comment | 11 | | 0 | 00/8064 | * sta HiMain ; HiMain=$20 set + 114 | 1 Unicalc.asm 112 | Comment | 11 | | 0 | 00/8064 | *** Set Address *** + 115 | 1 Unicalc.asm 113 | Code | 11 | | 3 | 00/8064 : 20 06 81 | jsr {ozunid_11} + 116 | 1 Unicalc.asm 114 | Data | 11 | | 1 | 00/8067 : 04 | dfb {4} + 117 | 1 Unicalc.asm 115 | Data | 11 | | 2 | 00/8068 : 34 81 | dw {ozunid_16} + 118 | 1 Unicalc.asm 116 | Comment | 11 | | 0 | 00/806A | *** Download *** + 119 | 1 Unicalc.asm 117 | Code | 11 | | 3 | 00/806A : 20 06 81 | jsr {ozunid_11} + 120 | 1 Unicalc.asm 118 | Data | 11 | | 1 | 00/806D : 04 | dfb {4} + 121 | 1 Unicalc.asm 119 | Data | 11 | | 2 | 00/806E : 39 81 | dw {ozunid_17} + 122 | 1 Unicalc.asm 120 | Comment | 11 | | 0 | 00/8070 | * + 123 | 1 Unicalc.asm 121 | Code | 11 | | 3 | 00/8070 : 20 96 80 | jsr EXEC ; Jump the Error routine + 124 | 1 Unicalc.asm 122 | Code | 11 | | 1 | 00/8073 : 60 | rts + 125 | 1 Unicalc.asm 123 | Comment | 11 | | 0 | 00/8074 | ********************************************* + 126 | 1 Unicalc.asm 124 | Empty | 11 | | 0 | 00/8074 | ozunid_3 + 127 | 1 Unicalc.asm 124 | Equivalence | 11 | | 0 | 00/8074 | Error equ ozunid_3 + 128 | 1 Unicalc.asm 125 | Comment | 11 | | 0 | 00/8074 | * + 129 | 1 Unicalc.asm 126 | Comment | 11 | | 0 | 00/8074 | * There's either no PC around, or there was no give message + 130 | 1 Unicalc.asm 127 | Comment | 11 | | 0 | 00/8074 | * + 131 | 1 Unicalc.asm 128 | Code | 11 | | 2 | 00/8074 : A2 00 | ldx #0 + 132 | 1 Unicalc.asm 129 | Empty | 11 | | 0 | 00/8076 | ozunid_4 + 133 | 1 Unicalc.asm 129 | Equivalence | 11 | | 0 | 00/8076 | err1 equ ozunid_4 + 134 | 1 Unicalc.asm 130 | Code | 11 | | 3 | 00/8076 : BD 82 80 | lda Message,x + 135 | 1 Unicalc.asm 131 | Code | 11 | | 2 | 00/8079 : F0 06 | beq {ozunid_5} + 136 | 1 Unicalc.asm 132 | Code | 11 | | 3 | 00/807B : 20 ED FD | jsr {$FDED} + 137 | 1 Unicalc.asm 133 | Code | 11 | | 1 | 00/807E : E8 | inx + 138 | 1 Unicalc.asm 134 | Code | 11 | | 2 | 00/807F : D0 F5 | bne {ozunid_4} + 139 | 1 Unicalc.asm 135 | Comment | 11 | | 0 | 00/8081 | * + 140 | 1 Unicalc.asm 136 | Empty | 11 | | 0 | 00/8081 | ozunid_5 + 141 | 1 Unicalc.asm 136 | Equivalence | 11 | | 0 | 00/8081 | errout equ ozunid_5 + 142 | 1 Unicalc.asm 137 | Code | 11 | | 1 | 00/8081 : 60 | rts + 143 | 1 Unicalc.asm 138 | Comment | 11 | | 0 | 00/8082 | * + 144 | 1 Unicalc.asm 139 | Data | 11 | | 18 | 00/8082 : 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 | + 145 | 1 Unicalc.asm 140 | Data | 11 | | 2 | 00/8094 : 8D 00 | dfb $8D,0 + 146 | 1 Unicalc.asm 141 | Comment | 11 | | 0 | 00/8096 | ********************************************* + 147 | 1 Unicalc.asm 142 | Empty | 11 | | 0 | 00/8096 | + 148 | 1 Unicalc.asm 143 | Comment | 11 | | 0 | 00/8096 | *** Set and Reset LoMain Memory Counter *** + 149 | 1 Unicalc.asm 144 | Comment | 11 | | 0 | 00/8096 | * RESET ldx #$FF ;Lo Byte start One more before $00 (//c ram) + 150 | 1 Unicalc.asm 145 | Comment | 11 | | 0 | 00/8096 | * clc + 151 | 1 Unicalc.asm 146 | Comment | 11 | | 0 | 00/8096 | * ldy Y_reg ; 1 time $DF --> Y + 152 | 1 Unicalc.asm 147 | Comment | 11 | | 0 | 00/8096 | * iny ; Y+ --> $FF + 153 | 1 Unicalc.asm 148 | Comment | 11 | | 0 | 00/8096 | * sty Y_reg ; Y --> Y_reg Uni=$FF + 154 | 1 Unicalc.asm 149 | Comment | 11 | | 0 | 00/8096 | *** Execute *** + 155 | 1 Unicalc.asm 150 | Comment | 11 | | 0 | 00/8096 | * EXEC inx + 156 | 1 Unicalc.asm 151 | Comment | 11 | | 0 | 00/8096 | * stx LowMain ; 1 time set LowMain=$00 + 157 | 1 Unicalc.asm 152 | Comment | 11 | | 0 | 00/8096 | * stx X_reg + 158 | 1 Unicalc.asm 153 | Code | 11 | | 3 | 00/8096 : 20 06 81 | EXEC jsr {ozunid_11} + 159 | 1 Unicalc.asm 154 | Data | 11 | | 1 | 00/8099 : 04 | dfb {4} + 160 | 1 Unicalc.asm 155 | Data | 11 | | 2 | 00/809A : 3E 81 | dw {ozunid_18} + 161 | 1 Unicalc.asm 156 | Code | 11 | | 3 | 00/809C : 20 06 81 | READ jsr {ozunid_11} + 162 | 1 Unicalc.asm 157 | Data | 11 | | 1 | 00/809F : 00 | dfb {0} + 163 | 1 Unicalc.asm 158 | Data | 11 | | 2 | 00/80A0 : 09 81 | dw {ozunid_12} + 164 | 1 Unicalc.asm 159 | Code | 11 | | 2 | 00/80A2 : B0 D0 | bcs {ozunid_3} + 165 | 1 Unicalc.asm 160 | Comment | 11 | | 0 | 00/80A4 | * + 166 | 1 Unicalc.asm 161 | Comment | 11 | | 0 | 00/80A4 | **** Screen Output **** + 167 | 1 Unicalc.asm 162 | Comment | 11 | | 0 | 00/80A4 | * + 168 | 1 Unicalc.asm 163 | Comment | 11 | | 0 | 00/80A4 | *** Accumulator *** + 169 | 1 Unicalc.asm 164 | Code | 11 | | 3 | 00/80A4 : AD 2F 81 | lda UNIAcc_reg + 170 | 1 Unicalc.asm 165 | Code | 11 | | 3 | 00/80A7 : 20 DA FD | jsr {$FDDA} + 171 | 1 Unicalc.asm 166 | Code | 11 | | 2 | 00/80AA : A2 03 | ldx #03 ; Set 3 space + 172 | 1 Unicalc.asm 167 | Code | 11 | | 3 | 00/80AC : 20 4A F9 | jsr {$F94A} + 173 | 1 Unicalc.asm 168 | Comment | 11 | | 0 | 00/80AF | *** X Register *** + 174 | 1 Unicalc.asm 169 | Code | 11 | | 3 | 00/80AF : AD 30 81 | lda UNIX_reg + 175 | 1 Unicalc.asm 170 | Code | 11 | | 3 | 00/80B2 : 20 DA FD | jsr {$FDDA} + 176 | 1 Unicalc.asm 171 | Code | 11 | | 2 | 00/80B5 : A2 01 | ldx #01 ; Set one space + 177 | 1 Unicalc.asm 172 | Code | 11 | | 3 | 00/80B7 : 20 4A F9 | jsr {$F94A} + 178 | 1 Unicalc.asm 173 | Comment | 11 | | 0 | 00/80BA | *** Y Register *** + 179 | 1 Unicalc.asm 174 | Code | 11 | | 3 | 00/80BA : AD 31 81 | lda UNIY_reg + 180 | 1 Unicalc.asm 175 | Code | 11 | | 3 | 00/80BD : 20 DA FD | jsr {$FDDA} + 181 | 1 Unicalc.asm 176 | Code | 11 | | 2 | 00/80C0 : A2 03 | ldx #03 ; Set one space + 182 | 1 Unicalc.asm 177 | Code | 11 | | 3 | 00/80C2 : 20 4A F9 | jsr {$F94A} + 183 | 1 Unicalc.asm 178 | Comment | 11 | | 0 | 00/80C5 | *** Process Status *** + 184 | 1 Unicalc.asm 179 | Code | 11 | | 3 | 00/80C5 : AD 32 81 | lda UNIP_val + 185 | 1 Unicalc.asm 180 | Code | 11 | | 3 | 00/80C8 : 20 DA FD | jsr {$FDDA} + 186 | 1 Unicalc.asm 181 | Code | 11 | | 2 | 00/80CB : A2 05 | ldx #05 ; Set five space + 187 | 1 Unicalc.asm 182 | Code | 11 | | 3 | 00/80CD : 20 4A F9 | jsr {$F94A} + 188 | 1 Unicalc.asm 183 | Comment | 11 | | 0 | 00/80D0 | ** //c Memory store adress ** + 189 | 1 Unicalc.asm 184 | Comment | 11 | | 0 | 00/80D0 | * lda HiMain + 190 | 1 Unicalc.asm 185 | Comment | 11 | | 0 | 00/80D0 | * jsr PRbyte + 191 | 1 Unicalc.asm 186 | Comment | 11 | | 0 | 00/80D0 | * lda LowMain + 192 | 1 Unicalc.asm 187 | Comment | 11 | | 0 | 00/80D0 | * jsr PRbyte + 193 | 1 Unicalc.asm 188 | Comment | 11 | | 0 | 00/80D0 | * jsr CROut + 194 | 1 Unicalc.asm 189 | Comment | 11 | | 0 | 00/80D0 | **** Store in //c Main Memory **** + 195 | 1 Unicalc.asm 190 | Comment | 11 | | 0 | 00/80D0 | * ldx X_reg + 196 | 1 Unicalc.asm 191 | Comment | 11 | | 0 | 00/80D0 | * lda UNIAcc_reg ;#$FB Test + 197 | 1 Unicalc.asm 192 | Comment | 11 | | 0 | 00/80D0 | * ldy #0 + 198 | 1 Unicalc.asm 193 | Comment | 11 | | 0 | 00/80D0 | * sta (LowMain),y + 199 | 1 Unicalc.asm 194 | Comment | 11 | | 0 | 00/80D0 | * cpx UNIL_End + 200 | 1 Unicalc.asm 195 | Comment | 11 | | 0 | 00/80D0 | * bne EXEC + 201 | 1 Unicalc.asm 196 | Comment | 11 | | 0 | 00/80D0 | * UNIL_End dfb $FF ; Lo Byte stop (Unidisk) - $C0 for zero page + 202 | 1 Unicalc.asm 197 | Comment | 11 | | 0 | 00/80D0 | *** Increment HiMain *** + 203 | 1 Unicalc.asm 198 | Comment | 11 | | 0 | 00/80D0 | * inc HiMain + 204 | 1 Unicalc.asm 199 | Comment | 11 | | 0 | 00/80D0 | * ldy Y_reg + 205 | 1 Unicalc.asm 200 | Comment | 11 | | 0 | 00/80D0 | * cpy UNIH_End + 206 | 1 Unicalc.asm 201 | Comment | 11 | | 0 | 00/80D0 | * bne RESET + 207 | 1 Unicalc.asm 202 | Comment | 11 | | 0 | 00/80D0 | * UNIH_End dfb $FF ; Hi Byte stop (Unidisk) - $00 for zero page + 208 | 1 Unicalc.asm 203 | Comment | 11 | | 0 | 00/80D0 | * + 209 | 1 Unicalc.asm 204 | Code | 11 | | 1 | 00/80D0 : 60 | rts + 210 | 1 Unicalc.asm 205 | Empty | 11 | | 0 | 00/80D1 | + 211 | 1 Unicalc.asm 206 | Comment | 11 | | 0 | 00/80D1 | ****************************************************** + 212 | 1 Unicalc.asm 207 | Empty | 11 | | 0 | 00/80D1 | ozunid_6 + 213 | 1 Unicalc.asm 207 | Equivalence | 11 | | 0 | 00/80D1 | FindPC equ ozunid_6 + 214 | 1 Unicalc.asm 208 | Comment | 11 | | 0 | 00/80D1 | * + 215 | 1 Unicalc.asm 209 | Comment | 11 | | 0 | 00/80D1 | * Search slot 7 to slot 1 looking for signature bytes + 216 | 1 Unicalc.asm 210 | Comment | 11 | | 0 | 00/80D1 | * + 217 | 1 Unicalc.asm 211 | Code | 11 | | 2 | 00/80D1 : A2 07 | ldx #7 ;Do for seven slots + 218 | 1 Unicalc.asm 212 | Code | 11 | | 2 | 00/80D3 : A9 C7 | lda #$C7 + 219 | 1 Unicalc.asm 213 | Code | 11 | | 2 | 00/80D5 : 85 07 | sta {$0007} + 220 | 1 Unicalc.asm 214 | Code | 11 | | 2 | 00/80D7 : A9 00 | lda #$00 + 221 | 1 Unicalc.asm 215 | Code | 11 | | 2 | 00/80D9 : 85 06 | sta {$0006} + 222 | 1 Unicalc.asm 216 | Comment | 11 | | 0 | 00/80DB | * + 223 | 1 Unicalc.asm 217 | Empty | 11 | | 0 | 00/80DB | ozunid_7 + 224 | 1 Unicalc.asm 217 | Equivalence | 11 | | 0 | 00/80DB | newslot equ ozunid_7 + 225 | 1 Unicalc.asm 218 | Code | 11 | | 2 | 00/80DB : A0 07 | ldy #7 + 226 | 1 Unicalc.asm 219 | Comment | 11 | | 0 | 00/80DD | * + 227 | 1 Unicalc.asm 220 | Empty | 11 | | 0 | 00/80DD | ozunid_8 + 228 | 1 Unicalc.asm 220 | Equivalence | 11 | | 0 | 00/80DD | again equ ozunid_8 + 229 | 1 Unicalc.asm 221 | Code | 11 | | 2 | 00/80DD : B1 06 | lda ({$0006}),y + 230 | 1 Unicalc.asm 222 | Code | 11 | | 3 | 00/80DF : D9 FE 80 | cmp sigtab,y ;One for byte signature + 231 | 1 Unicalc.asm 223 | Code | 11 | | 2 | 00/80E2 : F0 07 | beq {ozunid_9} ;Found one signature byte + 232 | 1 Unicalc.asm 224 | Code | 11 | | 2 | 00/80E4 : C6 07 | dec {$0007} + 233 | 1 Unicalc.asm 225 | Code | 11 | | 1 | 00/80E6 : CA | dex + 234 | 1 Unicalc.asm 226 | Code | 11 | | 2 | 00/80E7 : D0 F2 | bne {ozunid_7} + 235 | 1 Unicalc.asm 227 | Comment | 11 | | 0 | 00/80E9 | * + 236 | 1 Unicalc.asm 228 | Comment | 11 | | 0 | 00/80E9 | * if we get here, no PC find + 237 | 1 Unicalc.asm 229 | Code | 11 | | 1 | 00/80E9 : 38 | sec + 238 | 1 Unicalc.asm 230 | Code | 11 | | 1 | 00/80EA : 60 | rts + 239 | 1 Unicalc.asm 231 | Comment | 11 | | 0 | 00/80EB | * + 240 | 1 Unicalc.asm 232 | Comment | 11 | | 0 | 00/80EB | * if we get here, no byte find on PC + 241 | 1 Unicalc.asm 233 | Empty | 11 | | 0 | 00/80EB | ozunid_9 + 242 | 1 Unicalc.asm 233 | Equivalence | 11 | | 0 | 00/80EB | maybe equ ozunid_9 + 243 | 1 Unicalc.asm 234 | Code | 11 | | 1 | 00/80EB : 88 | dey + 244 | 1 Unicalc.asm 235 | Code | 11 | | 1 | 00/80EC : 88 | dey ;if N=1 then all sig bytes OK + 245 | 1 Unicalc.asm 236 | Code | 11 | | 2 | 00/80ED : 10 EE | bpl {ozunid_8} + 246 | 1 Unicalc.asm 237 | Comment | 11 | | 0 | 00/80EF | * Found PC interface. Set up call address. + 247 | 1 Unicalc.asm 238 | Comment | 11 | | 0 | 00/80EF | * we already have high byte ($CN), we need low byte + 248 | 1 Unicalc.asm 239 | Comment | 11 | | 0 | 00/80EF | * + 249 | 1 Unicalc.asm 240 | Empty | 11 | | 0 | 00/80EF | ozunid_10 + 250 | 1 Unicalc.asm 240 | Equivalence | 11 | | 0 | 00/80EF | foundPC equ ozunid_10 + 251 | 1 Unicalc.asm 241 | Code | 11 | | 2 | 00/80EF : A9 FF | lda #$FF + 252 | 1 Unicalc.asm 242 | Code | 11 | | 2 | 00/80F1 : 85 06 | sta {$0006} + 253 | 1 Unicalc.asm 243 | Code | 11 | | 2 | 00/80F3 : A0 00 | ldy #0 ;For indirect load + 254 | 1 Unicalc.asm 244 | Code | 11 | | 2 | 00/80F5 : B1 06 | lda ({$0006}),y ;Get the byte + 255 | 1 Unicalc.asm 245 | Comment | 11 | | 0 | 00/80F7 | * + 256 | 1 Unicalc.asm 246 | Comment | 11 | | 0 | 00/80F7 | * Now the Acc has the low oreder ProDOS entry point. + 257 | 1 Unicalc.asm 247 | Comment | 11 | | 0 | 00/80F7 | * The PC entry is three locations past this ... + 258 | 1 Unicalc.asm 248 | Comment | 11 | | 0 | 00/80F7 | * + 259 | 1 Unicalc.asm 249 | Code | 11 | | 1 | 00/80F7 : 18 | clc + 260 | 1 Unicalc.asm 250 | Code | 11 | | 2 | 00/80F8 : 69 03 | adc #3 + 261 | 1 Unicalc.asm 251 | Code | 11 | | 2 | 00/80FA : 85 06 | sta {$0006} + 262 | 1 Unicalc.asm 252 | Comment | 11 | | 0 | 00/80FC | * + 263 | 1 Unicalc.asm 253 | Comment | 11 | | 0 | 00/80FC | * Now ZPTempL has PC entry point. + 264 | 1 Unicalc.asm 254 | Comment | 11 | | 0 | 00/80FC | * Return with carry clear. + 265 | 1 Unicalc.asm 255 | Comment | 11 | | 0 | 00/80FC | * + 266 | 1 Unicalc.asm 256 | Code | 11 | | 1 | 00/80FC : 18 | clc + 267 | 1 Unicalc.asm 257 | Code | 11 | | 1 | 00/80FD : 60 | rts + 268 | 1 Unicalc.asm 258 | Comment | 11 | | 0 | 00/80FE | *********************************************************** + 269 | 1 Unicalc.asm 259 | Comment | 11 | | 0 | 00/80FE | * + 270 | 1 Unicalc.asm 260 | Comment | 11 | | 0 | 00/80FE | * There are the PC signature bytes in their relative order. + 271 | 1 Unicalc.asm 261 | Comment | 11 | | 0 | 00/80FE | * The $FF bytes are filler bytes and are not compared. + 272 | 1 Unicalc.asm 262 | Comment | 11 | | 0 | 00/80FE | * + 273 | 1 Unicalc.asm 263 | Data | 11 | | 4 | 00/80FE : FF 20 FF 00 | sigtab dfb $FF,$20,$FF,$00 + 274 | 1 Unicalc.asm 264 | Data | 11 | | 4 | 00/8102 : FF 03 FF 00 | dfb $FF,$03,$FF,$00 + 275 | 1 Unicalc.asm 265 | Comment | 11 | | 0 | 00/8106 | * + 276 | 1 Unicalc.asm 266 | Empty | 11 | | 0 | 00/8106 | ozunid_11 + 277 | 1 Unicalc.asm 266 | Equivalence | 11 | | 0 | 00/8106 | Dispatch equ ozunid_11 + 278 | 1 Unicalc.asm 267 | Code | 11 | | 3 | 00/8106 : 6C 06 00 | jmp ({$0006}) ;Simulate an indirect JSR to PC + 279 | 1 Unicalc.asm 268 | Comment | 11 | | 0 | 00/8109 | * + 280 | 1 Unicalc.asm 269 | Comment | 11 | | 0 | 00/8109 | *** Status Parameter Set for UNI *** + 281 | 1 Unicalc.asm 270 | Empty | 11 | | 0 | 00/8109 | ozunid_12 + 282 | 1 Unicalc.asm 270 | Equivalence | 11 | | 0 | 00/8109 | DParms equ ozunid_12 + 283 | 1 Unicalc.asm 271 | Data | 11 | | 1 | 00/8109 : 03 | DPParmsCt dfb 3 ;Status calls have three parameters + 284 | 1 Unicalc.asm 272 | Data | 11 | | 1 | 00/810A : 01 | DPUnit dfb 1 + 285 | 1 Unicalc.asm 273 | Data | 11 | | 2 | 00/810B : 2C 81 | DPBuffer dw {ozunid_15} + 286 | 1 Unicalc.asm 274 | Data | 11 | | 1 | 00/810D : 05 | DPStatCode dfb {5} + 287 | 1 Unicalc.asm 275 | Comment | 11 | | 0 | 00/810E | * + 288 | 1 Unicalc.asm 276 | Comment | 11 | | 0 | 00/810E | * + 289 | 1 Unicalc.asm 277 | Comment | 11 | | 0 | 00/810E | *** Status Parameter Set for DIB *** + 290 | 1 Unicalc.asm 278 | Empty | 11 | | 0 | 00/810E | ozunid_13 + 291 | 1 Unicalc.asm 278 | Equivalence | 11 | | 0 | 00/810E | DParmsDIB equ ozunid_13 + 292 | 1 Unicalc.asm 279 | Data | 11 | | 1 | 00/810E : 03 | DPParmsCt2 dfb 3 ;Status calls have three parameters + 293 | 1 Unicalc.asm 280 | Data | 11 | | 1 | 00/810F : 01 | DPUnit2 dfb 1 + 294 | 1 Unicalc.asm 281 | Data | 11 | | 2 | 00/8110 : 13 81 | DPBuffer2 dw {ozunid_14} + 295 | 1 Unicalc.asm 282 | Data | 11 | | 1 | 00/8112 : 03 | DPStatCode2 dfb {3} + 296 | 1 Unicalc.asm 283 | Comment | 11 | | 0 | 00/8113 | * + 297 | 1 Unicalc.asm 284 | Comment | 11 | | 0 | 00/8113 | * + 298 | 1 Unicalc.asm 285 | Comment | 11 | | 0 | 00/8113 | *** Status List DIB *** + 299 | 1 Unicalc.asm 286 | Empty | 11 | | 0 | 00/8113 | ozunid_14 + 300 | 1 Unicalc.asm 286 | Equivalence | 11 | | 0 | 00/8113 | DIB equ ozunid_14 + 301 | 1 Unicalc.asm 287 | Data | 11 | | 1 | 00/8113 : 00 | DIBStatByte1 dfb 0 + 302 | 1 Unicalc.asm 288 | Data | 11 | | 3 | 00/8114 : 00 00 00 | DIBDevSize dfb 0,0,0 + 303 | 1 Unicalc.asm 289 | Data | 11 | | 1 | 00/8117 : 00 | DIBNameLen dfb 0 + 304 | 1 Unicalc.asm 290 | Data | 11 | | 16 | 00/8118 : 00 00 00 00 | DIBName ds 16,0 + | | | | | | 00 00 00 00 | + | | | | | | 00 00 00 00 | + | | | | | | 00 00 00 00 | + 305 | 1 Unicalc.asm 291 | Data | 11 | | 1 | 00/8128 : 00 | DIBType dfb 0 + 306 | 1 Unicalc.asm 292 | Data | 11 | | 1 | 00/8129 : 00 | DIBSubType dfb 0 + 307 | 1 Unicalc.asm 293 | Data | 11 | | 2 | 00/812A : 00 00 | DIBVersion dw 0 + 308 | 1 Unicalc.asm 294 | Comment | 11 | | 0 | 00/812C | * + 309 | 1 Unicalc.asm 295 | Comment | 11 | | 0 | 00/812C | *** Status List UNI *** + 310 | 1 Unicalc.asm 296 | Empty | 11 | | 0 | 00/812C | ozunid_15 + 311 | 1 Unicalc.asm 296 | Equivalence | 11 | | 0 | 00/812C | UNI equ ozunid_15 + 312 | 1 Unicalc.asm 297 | Data | 11 | | 1 | 00/812C : 00 | dfb 0 + 313 | 1 Unicalc.asm 298 | Data | 11 | | 1 | 00/812D : 00 | UNIError dfb 0 + 314 | 1 Unicalc.asm 299 | Data | 11 | | 1 | 00/812E : 00 | UNIRetries dfb 0 + 315 | 1 Unicalc.asm 300 | Data | 11 | | 1 | 00/812F : 00 | UNIAcc_reg dfb 0 + 316 | 1 Unicalc.asm 301 | Data | 11 | | 1 | 00/8130 : 00 | UNIX_reg dfb 0 + 317 | 1 Unicalc.asm 302 | Data | 11 | | 1 | 00/8131 : 00 | UNIY_reg dfb 0 + 318 | 1 Unicalc.asm 303 | Data | 11 | | 1 | 00/8132 : 00 | UNIP_val dfb 0 + 319 | 1 Unicalc.asm 304 | Data | 11 | | 1 | 00/8133 : 00 | HHH dfb 0 + 320 | 1 Unicalc.asm 305 | Comment | 11 | | 0 | 00/8134 | * + 321 | 1 Unicalc.asm 306 | Comment | 11 | | 0 | 00/8134 | *** Set Address *** + 322 | 1 Unicalc.asm 307 | Empty | 11 | | 0 | 00/8134 | ozunid_16 + 323 | 1 Unicalc.asm 307 | Equivalence | 11 | | 0 | 00/8134 | SET_ADD equ ozunid_16 + 324 | 1 Unicalc.asm 308 | Data | 11 | | 1 | 00/8134 : 03 | dfb 3 + 325 | 1 Unicalc.asm 309 | Data | 11 | | 1 | 00/8135 : 01 | dfb 1 + 326 | 1 Unicalc.asm 310 | Data | 11 | | 2 | 00/8136 : 52 81 | dw {ozunid_22} + 327 | 1 Unicalc.asm 311 | Data | 11 | | 1 | 00/8138 : 06 | dfb {6} + 328 | 1 Unicalc.asm 312 | Comment | 11 | | 0 | 00/8139 | * + 329 | 1 Unicalc.asm 313 | Comment | 11 | | 0 | 00/8139 | *** Download *** + 330 | 1 Unicalc.asm 314 | Empty | 11 | | 0 | 00/8139 | ozunid_17 + 331 | 1 Unicalc.asm 314 | Equivalence | 11 | | 0 | 00/8139 | DOWNLOAD equ ozunid_17 + 332 | 1 Unicalc.asm 315 | Data | 11 | | 1 | 00/8139 : 03 | dfb 3 + 333 | 1 Unicalc.asm 316 | Data | 11 | | 1 | 00/813A : 01 | dfb 1 + 334 | 1 Unicalc.asm 317 | Data | 11 | | 2 | 00/813B : 56 81 | dw {ozunid_23} + 335 | 1 Unicalc.asm 318 | Data | 11 | | 1 | 00/813D : 07 | dfb {7} + 336 | 1 Unicalc.asm 319 | Comment | 11 | | 0 | 00/813E | * + 337 | 1 Unicalc.asm 320 | Comment | 11 | | 0 | 00/813E | *** Execute *** + 338 | 1 Unicalc.asm 321 | Empty | 11 | | 0 | 00/813E | ozunid_18 + 339 | 1 Unicalc.asm 321 | Equivalence | 11 | | 0 | 00/813E | EXE equ ozunid_18 + 340 | 1 Unicalc.asm 322 | Data | 11 | | 1 | 00/813E : 03 | dfb 3 + 341 | 1 Unicalc.asm 323 | Data | 11 | | 1 | 00/813F : 01 | dfb 1 + 342 | 1 Unicalc.asm 324 | Data | 11 | | 2 | 00/8140 : 4A 81 | dw {ozunid_21} + 343 | 1 Unicalc.asm 325 | Data | 11 | | 1 | 00/8142 : 05 | dfb {5} + 344 | 1 Unicalc.asm 326 | Comment | 11 | | 0 | 00/8143 | *** Eject *** + 345 | 1 Unicalc.asm 327 | Empty | 11 | | 0 | 00/8143 | ozunid_19 + 346 | 1 Unicalc.asm 327 | Equivalence | 11 | | 0 | 00/8143 | E_JECT equ ozunid_19 + 347 | 1 Unicalc.asm 328 | Data | 11 | | 1 | 00/8143 : 03 | dfb 3 + 348 | 1 Unicalc.asm 329 | Data | 11 | | 1 | 00/8144 : 01 | dfb 1 + 349 | 1 Unicalc.asm 330 | Data | 11 | | 2 | 00/8145 : 48 81 | dw {ozunid_20} + 350 | 1 Unicalc.asm 331 | Data | 11 | | 1 | 00/8147 : 04 | dfb {4} + 351 | 1 Unicalc.asm 332 | Comment | 11 | | 0 | 00/8148 | * + 352 | 1 Unicalc.asm 333 | Comment | 11 | | 0 | 00/8148 | ******** CONTROL LISTS ******** + 353 | 1 Unicalc.asm 334 | Comment | 11 | | 0 | 00/8148 | * + 354 | 1 Unicalc.asm 335 | Comment | 11 | | 0 | 00/8148 | * + 355 | 1 Unicalc.asm 336 | Comment | 11 | | 0 | 00/8148 | *** Eject *** + 356 | 1 Unicalc.asm 337 | Empty | 11 | | 0 | 00/8148 | ozunid_20 + 357 | 1 Unicalc.asm 337 | Equivalence | 11 | | 0 | 00/8148 | CNTL_LIST1 equ ozunid_20 + 358 | 1 Unicalc.asm 338 | Data | 11 | | 2 | 00/8148 : 00 00 | dw $0000 + 359 | 1 Unicalc.asm 339 | Comment | 11 | | 0 | 00/814A | * + 360 | 1 Unicalc.asm 340 | Comment | 11 | | 0 | 00/814A | *** Execute *** + 361 | 1 Unicalc.asm 341 | Empty | 11 | | 0 | 00/814A | ozunid_21 + 362 | 1 Unicalc.asm 341 | Equivalence | 11 | | 0 | 00/814A | CNTL_LIST2 equ ozunid_21 + 363 | 1 Unicalc.asm 342 | Data | 11 | | 1 | 00/814A : 06 | Clow_byte dfb $06 + 364 | 1 Unicalc.asm 343 | Data | 11 | | 1 | 00/814B : 00 | Chigh_byte dfb $00 + 365 | 1 Unicalc.asm 344 | Data | 11 | | 1 | 00/814C : 00 | AccValue dfb $00 ; Input Value + 366 | 1 Unicalc.asm 345 | Data | 11 | | 1 | 00/814D : 0A | X_reg dfb $0A ; Input Value (N1) + 367 | 1 Unicalc.asm 346 | Data | 11 | | 1 | 00/814E : 01 | Y_reg dfb $01 ; Input Value (N2) + 368 | 1 Unicalc.asm 347 | Data | 11 | | 1 | 00/814F : 00 | ProStatus dfb $00 + 369 | 1 Unicalc.asm 348 | Data | 11 | | 1 | 00/8150 : 05 | LowPC_reg dfb $05 + 370 | 1 Unicalc.asm 349 | Data | 11 | | 1 | 00/8151 : 05 | HighPC_reg dfb $05 + 371 | 1 Unicalc.asm 350 | Comment | 11 | | 0 | 00/8152 | * + 372 | 1 Unicalc.asm 351 | Comment | 11 | | 0 | 00/8152 | *** Set Address *** + 373 | 1 Unicalc.asm 352 | Empty | 11 | | 0 | 00/8152 | ozunid_22 + 374 | 1 Unicalc.asm 352 | Equivalence | 11 | | 0 | 00/8152 | CNTL_LIST3 equ ozunid_22 + 375 | 1 Unicalc.asm 353 | Data | 11 | | 1 | 00/8152 : 02 | CountL_byte dfb $02 + 376 | 1 Unicalc.asm 354 | Data | 11 | | 1 | 00/8153 : 00 | CountH_byte dfb $00 + 377 | 1 Unicalc.asm 355 | Data | 11 | | 1 | 00/8154 : 05 | LByte_Addr dfb $05 + 378 | 1 Unicalc.asm 356 | Data | 11 | | 1 | 00/8155 : 05 | HByte_Addr dfb $05 + 379 | 1 Unicalc.asm 357 | Comment | 11 | | 0 | 00/8156 | * + 380 | 1 Unicalc.asm 358 | Comment | 11 | | 0 | 00/8156 | *** Download *** + 381 | 1 Unicalc.asm 359 | Empty | 11 | | 0 | 00/8156 | ozunid_23 + 382 | 1 Unicalc.asm 359 | Equivalence | 11 | | 0 | 00/8156 | CNTL_LIST4 equ ozunid_23 + 383 | 1 Unicalc.asm 360 | Data | 11 | | 1 | 00/8156 : 09 | LenghtL_byte dfb $09 ;<----- Lenght of Unidisk program Lo Byte + 384 | 1 Unicalc.asm 361 | Data | 11 | | 1 | 00/8157 : 00 | LenghtH_byte dfb $00 ;<----- Lenght of Unidisk program Hi Byte + 385 | 1 Unicalc.asm 362 | Comment | 11 | | 0 | 00/8158 | * + 386 | 1 Unicalc.asm 363 | Comment | 11 | | 0 | 00/8158 | *** Start UNIDISK Program *** + 387 | 1 Unicalc.asm 364 | Empty | 11 | | 0 | 00/8158 | + 388 | 1 Unicalc.asm 365 | Code | 11 | | 2 | 00/8158 : 86 C0 | stx $C0 + 389 | 1 Unicalc.asm 366 | Code | 11 | | 2 | 00/815A : 84 C1 | sty $C1 + 390 | 1 Unicalc.asm 367 | Empty | 11 | | 0 | 00/815C | + 391 | 1 Unicalc.asm 368 | Code | 11 | | 2 | 00/815C : A5 C0 | lda $C0 + 392 | 1 Unicalc.asm 369 | Code | 11 | | 2 | 00/815E : 65 C1 | adc $C1 + 393 | 1 Unicalc.asm 370 | Empty | 11 | | 0 | 00/8160 | + 394 | 1 Unicalc.asm 371 | Code | 11 | | 1 | 00/8160 : 60 | rts +------+-----------------------+-------------+----+---------+------+-----------------------+------------------------------------------------------------------- diff --git a/AppleII/Integer adc 1 Byte/Unidrive b/AppleII/Integer adc 1 Byte/Unidrive new file mode 100644 index 0000000000000000000000000000000000000000..11be6a795d4b47ad37006529b9fdcf31c4ea7b2d GIT binary patch literal 243 zcmY#LZrC8H(DzqiMgz;$1`v4+OrCB~aA-(a#IRSV;RBn(+rKX^d`eCp3IuKgNFQ!Y7M_jt+r$EB^z<88)&>WHPt1NhJJN_|Nd4`9DJr8v`@rz6Mri z#-$C+41@qPnfurM&Nfwi%+GBL2Sax%0XXgRp_KHCH?T550W;&-1~z8Kiw*3|j7J+-nHdi^urM&Nfn`})nHX4Er5GgEO0(w5vbG*r TE5n*A$J%;u*?}bo6F^D;edJXX literal 0 HcmV?d00001 diff --git a/AppleII/Integer adc 2 Byte/Unidrive2.asm b/AppleII/Integer adc 2 Byte/Unidrive2.asm new file mode 100644 index 0000000..c238e42 --- /dev/null +++ b/AppleII/Integer adc 2 Byte/Unidrive2.asm @@ -0,0 +1,280 @@ +* +* Unidisk 3.5 Calc2 +* +* The target of this project is to use the Unidisk 3.5 drive to perform +* specific numerical routines: 2 Byte Add integer numbers calculation; +* in order to use it as a Apple II co-processor unit. +* +* Copyright (C) 2015 Riccardo Greco . +* +* 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 . +* +* +* @com.wudsn.ide.asm.hardware=APPLE2 +* Protocol Converter Call + XC +ZPTempL equ $0006 ;Temporary zero page storage +ZPTempH equ $0007 +** Zero page storage ** +N1 equ $19 ;25 +N2 equ $1B ;27 +RSLT equ $1D ;29 +*** Monitor routines *** +COut equ $FDED ;Console output ASCII +CROut equ $FD8E ;Carriage return +** 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 +***************************************************** + +* +* Find a Protocol Converter in one of the slots. +START jsr FindPC + bcs Error +*** Eject *** + jsr Dispatch + dfb ControlCmd + dw E_JECT +*** Set Address *** + jsr Dispatch + dfb ControlCmd + dw SET_ADD +* + 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 the Input Value first ** +EXEC lda N1 + sta $80E9 ; Absolute addressing + lda N1+1 + sta $80EA + + lda N2 + sta $80EB + lda N2+1 + sta $80EC +*** Download *** + jsr Dispatch + dfb ControlCmd + dw DOWNLOAD +** Execute ** + jsr Dispatch + dfb ControlCmd + dw EXE +READ jsr Dispatch + dfb StatusCmd + dw DParms + bcs Error +* +**** Store Output results in //c **** +* + lda UNIX_reg + sta RSLT ; Store the result + lda UNIY_reg + sta RSLT+1 +* + 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 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 $00 ; Input Value (N1) +Y_reg dfb $00 ; Input Value (N2) +ProStatus dfb $00 ; Input Value +LowPC_reg dfb $05 ; Like ORG +HighPC_reg dfb $05 +* +*** Set Address *** +CNTL_LIST3 equ * +CountL_byte dfb $02 +CountH_byte dfb $00 +LByte_Addr dfb $05 ; Like ORG +HByte_Addr dfb $05 +* +*** Download *** +CNTL_LIST4 equ * +LenghtL_byte dfb $1A ;<----- Lenght of Unidisk program Lo Byte +LenghtH_byte dfb $00 ;<----- Lenght of Unidisk program Hi Byte +* +*** Start UNIDISK Program *** +** Two byte adc ** + org $0505 +RSLTU equ $C0 + + clc + + lda N1U ; Lo Byte + adc N2U + sta RSLTU + + lda N1U+1 ; Hi Byte + adc N2U+1 + sta RSLTU+1 +** Output Data ** + ldx RSLTU + ldy RSLTU+1 + + rts +** Input Dynamic Data append in the end of Unidisk routine ** +N1U dfb $00 + dfb $00 +N2U dfb $00 + dfb $00 \ No newline at end of file diff --git a/AppleII/Integer adc 2 Byte/Unidrive2_Output.txt b/AppleII/Integer adc 2 Byte/Unidrive2_Output.txt new file mode 100644 index 0000000..181d603 --- /dev/null +++ b/AppleII/Integer adc 2 Byte/Unidrive2_Output.txt @@ -0,0 +1,286 @@ +------+-------------------------+-------------+----+---------+------+-----------------------+------------------------------------------------------------------- + Line | # File Line | Line Type | MX | Reloc | Size | Address Object Code | Source Code +------+-------------------------+-------------+----+---------+------+-----------------------+------------------------------------------------------------------- + 1 | 1 Unidrive2.asm 1 | Comment | 11 | | 0 | 00/8000 | * @com.wudsn.ide.asm.hardware=APPLE2 + 2 | 1 Unidrive2.asm 2 | Comment | 11 | | 0 | 00/8000 | * Protocol Converter Call + 3 | 1 Unidrive2.asm 3 | Directive | 11 | | 0 | 00/8000 | XC + 4 | 1 Unidrive2.asm 4 | Equivalence | 11 | | 0 | 00/8000 | ZPTempL equ $0006 ;Temporary zero page storage + 5 | 1 Unidrive2.asm 5 | Equivalence | 11 | | 0 | 00/8000 | ZPTempH equ $0007 + 6 | 1 Unidrive2.asm 6 | Comment | 11 | | 0 | 00/8000 | ** Zero page storage ** + 7 | 1 Unidrive2.asm 7 | Equivalence | 11 | | 0 | 00/8000 | N1 equ $19 ;25 + 8 | 1 Unidrive2.asm 8 | Equivalence | 11 | | 0 | 00/8000 | N2 equ $1B ;27 + 9 | 1 Unidrive2.asm 9 | Equivalence | 11 | | 0 | 00/8000 | RSLT equ $1D ;29 + 10 | 1 Unidrive2.asm 10 | Comment | 11 | | 0 | 00/8000 | *** Monitor routines *** + 11 | 1 Unidrive2.asm 11 | Equivalence | 11 | | 0 | 00/8000 | COut equ $FDED ;Console output ASCII + 12 | 1 Unidrive2.asm 12 | Equivalence | 11 | | 0 | 00/8000 | CROut equ $FD8E ;Carriage return + 13 | 1 Unidrive2.asm 13 | Comment | 11 | | 0 | 00/8000 | ** Command Code ** + 14 | 1 Unidrive2.asm 14 | Equivalence | 11 | | 0 | 00/8000 | StatusCmd equ 0 + 15 | 1 Unidrive2.asm 15 | Comment | 11 | | 0 | 00/8000 | ** Status Code ** + 16 | 1 Unidrive2.asm 16 | Comment | 11 | | 0 | 00/8000 | * StatusDIB equ 3 + 17 | 1 Unidrive2.asm 17 | Equivalence | 11 | | 0 | 00/8000 | StatusUNI equ 5 + 18 | 1 Unidrive2.asm 18 | Comment | 11 | | 0 | 00/8000 | * + 19 | 1 Unidrive2.asm 19 | Equivalence | 11 | | 0 | 00/8000 | ControlCmd equ 4 + 20 | 1 Unidrive2.asm 20 | Comment | 11 | | 0 | 00/8000 | ** Control Codes ** + 21 | 1 Unidrive2.asm 21 | Equivalence | 11 | | 0 | 00/8000 | Eject equ 4 + 22 | 1 Unidrive2.asm 22 | Equivalence | 11 | | 0 | 00/8000 | Run equ 5 + 23 | 1 Unidrive2.asm 23 | Equivalence | 11 | | 0 | 00/8000 | SetDWLoad equ 6 + 24 | 1 Unidrive2.asm 24 | Equivalence | 11 | | 0 | 00/8000 | DWLoad equ 7 + 25 | 1 Unidrive2.asm 25 | Comment | 11 | | 0 | 00/8000 | * + 26 | 1 Unidrive2.asm 26 | Directive | 11 | | 0 | 00/8000 | org $8000 + 27 | 1 Unidrive2.asm 27 | Comment | 11 | | 0 | 00/8000 | ***************************************************** + 28 | 1 Unidrive2.asm 28 | Empty | 11 | | 0 | 00/8000 | + 29 | 1 Unidrive2.asm 29 | Comment | 11 | | 0 | 00/8000 | * + 30 | 1 Unidrive2.asm 30 | Comment | 11 | | 0 | 00/8000 | * Find a Protocol Converter in one of the slots. + 31 | 1 Unidrive2.asm 31 | Code | 11 | | 3 | 00/8000 : 20 6A 80 | START jsr {ozunid_4} + 32 | 1 Unidrive2.asm 32 | Code | 11 | | 2 | 00/8003 : B0 10 | bcs {ozunid_1} + 33 | 1 Unidrive2.asm 33 | Comment | 11 | | 0 | 00/8005 | *** Eject *** + 34 | 1 Unidrive2.asm 34 | Code | 11 | | 3 | 00/8005 : 20 9F 80 | jsr {ozunid_9} + 35 | 1 Unidrive2.asm 35 | Data | 11 | | 1 | 00/8008 : 04 | dfb {4} + 36 | 1 Unidrive2.asm 36 | Data | 11 | | 2 | 00/8009 : BE 80 | dw {ozunid_15} + 37 | 1 Unidrive2.asm 37 | Comment | 11 | | 0 | 00/800B | *** Set Address *** + 38 | 1 Unidrive2.asm 38 | Code | 11 | | 3 | 00/800B : 20 9F 80 | jsr {ozunid_9} + 39 | 1 Unidrive2.asm 39 | Data | 11 | | 1 | 00/800E : 04 | dfb {4} + 40 | 1 Unidrive2.asm 40 | Data | 11 | | 2 | 00/800F : AF 80 | dw {ozunid_12} + 41 | 1 Unidrive2.asm 41 | Comment | 11 | | 0 | 00/8011 | * + 42 | 1 Unidrive2.asm 42 | Code | 11 | | 3 | 00/8011 : 20 37 80 | jsr EXEC ; Jump the Error routine + 43 | 1 Unidrive2.asm 43 | Code | 11 | | 1 | 00/8014 : 60 | rts + 44 | 1 Unidrive2.asm 44 | Comment | 11 | | 0 | 00/8015 | ********************************************* + 45 | 1 Unidrive2.asm 45 | Empty | 11 | | 0 | 00/8015 | ozunid_1 + 46 | 1 Unidrive2.asm 45 | Equivalence | 11 | | 0 | 00/8015 | Error equ ozunid_1 + 47 | 1 Unidrive2.asm 46 | Comment | 11 | | 0 | 00/8015 | * + 48 | 1 Unidrive2.asm 47 | Comment | 11 | | 0 | 00/8015 | * There's either no PC around, or there was no give message + 49 | 1 Unidrive2.asm 48 | Comment | 11 | | 0 | 00/8015 | * + 50 | 1 Unidrive2.asm 49 | Code | 11 | | 2 | 00/8015 : A2 00 | ldx #0 + 51 | 1 Unidrive2.asm 50 | Empty | 11 | | 0 | 00/8017 | ozunid_2 + 52 | 1 Unidrive2.asm 50 | Equivalence | 11 | | 0 | 00/8017 | err1 equ ozunid_2 + 53 | 1 Unidrive2.asm 51 | Code | 11 | | 3 | 00/8017 : BD 23 80 | lda Message,x + 54 | 1 Unidrive2.asm 52 | Code | 11 | | 2 | 00/801A : F0 06 | beq {ozunid_3} + 55 | 1 Unidrive2.asm 53 | Code | 11 | | 3 | 00/801C : 20 ED FD | jsr {$FDED} + 56 | 1 Unidrive2.asm 54 | Code | 11 | | 1 | 00/801F : E8 | inx + 57 | 1 Unidrive2.asm 55 | Code | 11 | | 2 | 00/8020 : D0 F5 | bne {ozunid_2} + 58 | 1 Unidrive2.asm 56 | Comment | 11 | | 0 | 00/8022 | * + 59 | 1 Unidrive2.asm 57 | Empty | 11 | | 0 | 00/8022 | ozunid_3 + 60 | 1 Unidrive2.asm 57 | Equivalence | 11 | | 0 | 00/8022 | errout equ ozunid_3 + 61 | 1 Unidrive2.asm 58 | Code | 11 | | 1 | 00/8022 : 60 | rts + 62 | 1 Unidrive2.asm 59 | Comment | 11 | | 0 | 00/8023 | * + 63 | 1 Unidrive2.asm 60 | Data | 11 | | 18 | 00/8023 : 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 | + 64 | 1 Unidrive2.asm 61 | Data | 11 | | 2 | 00/8035 : 8D 00 | dfb $8D,0 + 65 | 1 Unidrive2.asm 62 | Comment | 11 | | 0 | 00/8037 | ********************************************* + 66 | 1 Unidrive2.asm 63 | Comment | 11 | | 0 | 00/8037 | * + 67 | 1 Unidrive2.asm 64 | Comment | 11 | | 0 | 00/8037 | ** Set the Input Value first ** + 68 | 1 Unidrive2.asm 65 | Code | 11 | | 2 | 00/8037 : A5 19 | EXEC lda {$19} + 69 | 1 Unidrive2.asm 66 | Code | 11 | | 3 | 00/8039 : 8D E9 80 | sta $80E9 ; Absolute addressing + 70 | 1 Unidrive2.asm 67 | Code | 11 | | 2 | 00/803C : A5 1A | lda {$19}+1 + 71 | 1 Unidrive2.asm 68 | Code | 11 | | 3 | 00/803E : 8D EA 80 | sta $80EA + 72 | 1 Unidrive2.asm 69 | Empty | 11 | | 0 | 00/8041 | + 73 | 1 Unidrive2.asm 70 | Code | 11 | | 2 | 00/8041 : A5 1B | lda {$1B} + 74 | 1 Unidrive2.asm 71 | Code | 11 | | 3 | 00/8043 : 8D EB 80 | sta $80EB + 75 | 1 Unidrive2.asm 72 | Code | 11 | | 2 | 00/8046 : A5 1C | lda {$1B}+1 + 76 | 1 Unidrive2.asm 73 | Code | 11 | | 3 | 00/8048 : 8D EC 80 | sta $80EC + 77 | 1 Unidrive2.asm 74 | Comment | 11 | | 0 | 00/804B | *** Download *** + 78 | 1 Unidrive2.asm 75 | Code | 11 | | 3 | 00/804B : 20 9F 80 | jsr {ozunid_9} + 79 | 1 Unidrive2.asm 76 | Data | 11 | | 1 | 00/804E : 04 | dfb {4} + 80 | 1 Unidrive2.asm 77 | Data | 11 | | 2 | 00/804F : B4 80 | dw {ozunid_13} + 81 | 1 Unidrive2.asm 78 | Comment | 11 | | 0 | 00/8051 | ** Execute ** + 82 | 1 Unidrive2.asm 79 | Code | 11 | | 3 | 00/8051 : 20 9F 80 | jsr {ozunid_9} + 83 | 1 Unidrive2.asm 80 | Data | 11 | | 1 | 00/8054 : 04 | dfb {4} + 84 | 1 Unidrive2.asm 81 | Data | 11 | | 2 | 00/8055 : B9 80 | dw {ozunid_14} + 85 | 1 Unidrive2.asm 82 | Code | 11 | | 3 | 00/8057 : 20 9F 80 | READ jsr {ozunid_9} + 86 | 1 Unidrive2.asm 83 | Data | 11 | | 1 | 00/805A : 00 | dfb {0} + 87 | 1 Unidrive2.asm 84 | Data | 11 | | 2 | 00/805B : A2 80 | dw {ozunid_10} + 88 | 1 Unidrive2.asm 85 | Code | 11 | | 2 | 00/805D : B0 B6 | bcs {ozunid_1} + 89 | 1 Unidrive2.asm 86 | Comment | 11 | | 0 | 00/805F | * + 90 | 1 Unidrive2.asm 87 | Comment | 11 | | 0 | 00/805F | **** Store Output results in //c **** + 91 | 1 Unidrive2.asm 88 | Comment | 11 | | 0 | 00/805F | * + 92 | 1 Unidrive2.asm 89 | Code | 11 | | 3 | 00/805F : AD AB 80 | lda UNIX_reg + 93 | 1 Unidrive2.asm 90 | Code | 11 | | 2 | 00/8062 : 85 1D | sta {$1D} ; Store the result + 94 | 1 Unidrive2.asm 91 | Code | 11 | | 3 | 00/8064 : AD AC 80 | lda UNIY_reg + 95 | 1 Unidrive2.asm 92 | Code | 11 | | 2 | 00/8067 : 85 1E | sta {$1D}+1 + 96 | 1 Unidrive2.asm 93 | Comment | 11 | | 0 | 00/8069 | * + 97 | 1 Unidrive2.asm 94 | Code | 11 | | 1 | 00/8069 : 60 | rts + 98 | 1 Unidrive2.asm 95 | Empty | 11 | | 0 | 00/806A | + 99 | 1 Unidrive2.asm 96 | Comment | 11 | | 0 | 00/806A | ****************************************************** + 100 | 1 Unidrive2.asm 97 | Empty | 11 | | 0 | 00/806A | ozunid_4 + 101 | 1 Unidrive2.asm 97 | Equivalence | 11 | | 0 | 00/806A | FindPC equ ozunid_4 + 102 | 1 Unidrive2.asm 98 | Comment | 11 | | 0 | 00/806A | * + 103 | 1 Unidrive2.asm 99 | Comment | 11 | | 0 | 00/806A | * Search slot 7 to slot 1 looking for signature bytes + 104 | 1 Unidrive2.asm 100 | Comment | 11 | | 0 | 00/806A | * + 105 | 1 Unidrive2.asm 101 | Code | 11 | | 2 | 00/806A : A2 07 | ldx #7 ;Do for seven slots + 106 | 1 Unidrive2.asm 102 | Code | 11 | | 2 | 00/806C : A9 C7 | lda #$C7 + 107 | 1 Unidrive2.asm 103 | Code | 11 | | 2 | 00/806E : 85 07 | sta {$0007} + 108 | 1 Unidrive2.asm 104 | Code | 11 | | 2 | 00/8070 : A9 00 | lda #$00 + 109 | 1 Unidrive2.asm 105 | Code | 11 | | 2 | 00/8072 : 85 06 | sta {$0006} + 110 | 1 Unidrive2.asm 106 | Comment | 11 | | 0 | 00/8074 | * + 111 | 1 Unidrive2.asm 107 | Empty | 11 | | 0 | 00/8074 | ozunid_5 + 112 | 1 Unidrive2.asm 107 | Equivalence | 11 | | 0 | 00/8074 | newslot equ ozunid_5 + 113 | 1 Unidrive2.asm 108 | Code | 11 | | 2 | 00/8074 : A0 07 | ldy #7 + 114 | 1 Unidrive2.asm 109 | Comment | 11 | | 0 | 00/8076 | * + 115 | 1 Unidrive2.asm 110 | Empty | 11 | | 0 | 00/8076 | ozunid_6 + 116 | 1 Unidrive2.asm 110 | Equivalence | 11 | | 0 | 00/8076 | again equ ozunid_6 + 117 | 1 Unidrive2.asm 111 | Code | 11 | | 2 | 00/8076 : B1 06 | lda ({$0006}),y + 118 | 1 Unidrive2.asm 112 | Code | 11 | | 3 | 00/8078 : D9 97 80 | cmp sigtab,y ;One for byte signature + 119 | 1 Unidrive2.asm 113 | Code | 11 | | 2 | 00/807B : F0 07 | beq {ozunid_7} ;Found one signature byte + 120 | 1 Unidrive2.asm 114 | Code | 11 | | 2 | 00/807D : C6 07 | dec {$0007} + 121 | 1 Unidrive2.asm 115 | Code | 11 | | 1 | 00/807F : CA | dex + 122 | 1 Unidrive2.asm 116 | Code | 11 | | 2 | 00/8080 : D0 F2 | bne {ozunid_5} + 123 | 1 Unidrive2.asm 117 | Comment | 11 | | 0 | 00/8082 | * + 124 | 1 Unidrive2.asm 118 | Comment | 11 | | 0 | 00/8082 | * if we get here, no PC find + 125 | 1 Unidrive2.asm 119 | Code | 11 | | 1 | 00/8082 : 38 | sec + 126 | 1 Unidrive2.asm 120 | Code | 11 | | 1 | 00/8083 : 60 | rts + 127 | 1 Unidrive2.asm 121 | Comment | 11 | | 0 | 00/8084 | * + 128 | 1 Unidrive2.asm 122 | Comment | 11 | | 0 | 00/8084 | * if we get here, no byte find on PC + 129 | 1 Unidrive2.asm 123 | Empty | 11 | | 0 | 00/8084 | ozunid_7 + 130 | 1 Unidrive2.asm 123 | Equivalence | 11 | | 0 | 00/8084 | maybe equ ozunid_7 + 131 | 1 Unidrive2.asm 124 | Code | 11 | | 1 | 00/8084 : 88 | dey + 132 | 1 Unidrive2.asm 125 | Code | 11 | | 1 | 00/8085 : 88 | dey ;if N=1 then all sig bytes OK + 133 | 1 Unidrive2.asm 126 | Code | 11 | | 2 | 00/8086 : 10 EE | bpl {ozunid_6} + 134 | 1 Unidrive2.asm 127 | Comment | 11 | | 0 | 00/8088 | * Found PC interface. Set up call address. + 135 | 1 Unidrive2.asm 128 | Comment | 11 | | 0 | 00/8088 | * we already have high byte ($CN), we need low byte + 136 | 1 Unidrive2.asm 129 | Comment | 11 | | 0 | 00/8088 | * + 137 | 1 Unidrive2.asm 130 | Empty | 11 | | 0 | 00/8088 | ozunid_8 + 138 | 1 Unidrive2.asm 130 | Equivalence | 11 | | 0 | 00/8088 | foundPC equ ozunid_8 + 139 | 1 Unidrive2.asm 131 | Code | 11 | | 2 | 00/8088 : A9 FF | lda #$FF + 140 | 1 Unidrive2.asm 132 | Code | 11 | | 2 | 00/808A : 85 06 | sta {$0006} + 141 | 1 Unidrive2.asm 133 | Code | 11 | | 2 | 00/808C : A0 00 | ldy #0 ;For indirect load + 142 | 1 Unidrive2.asm 134 | Code | 11 | | 2 | 00/808E : B1 06 | lda ({$0006}),y ;Get the byte + 143 | 1 Unidrive2.asm 135 | Comment | 11 | | 0 | 00/8090 | * + 144 | 1 Unidrive2.asm 136 | Comment | 11 | | 0 | 00/8090 | * Now the Acc has the low oreder ProDOS entry point. + 145 | 1 Unidrive2.asm 137 | Comment | 11 | | 0 | 00/8090 | * The PC entry is three locations past this ... + 146 | 1 Unidrive2.asm 138 | Comment | 11 | | 0 | 00/8090 | * + 147 | 1 Unidrive2.asm 139 | Code | 11 | | 1 | 00/8090 : 18 | clc + 148 | 1 Unidrive2.asm 140 | Code | 11 | | 2 | 00/8091 : 69 03 | adc #3 + 149 | 1 Unidrive2.asm 141 | Code | 11 | | 2 | 00/8093 : 85 06 | sta {$0006} + 150 | 1 Unidrive2.asm 142 | Comment | 11 | | 0 | 00/8095 | * + 151 | 1 Unidrive2.asm 143 | Comment | 11 | | 0 | 00/8095 | * Now ZPTempL has PC entry point. + 152 | 1 Unidrive2.asm 144 | Comment | 11 | | 0 | 00/8095 | * Return with carry clear. + 153 | 1 Unidrive2.asm 145 | Comment | 11 | | 0 | 00/8095 | * + 154 | 1 Unidrive2.asm 146 | Code | 11 | | 1 | 00/8095 : 18 | clc + 155 | 1 Unidrive2.asm 147 | Code | 11 | | 1 | 00/8096 : 60 | rts + 156 | 1 Unidrive2.asm 148 | Comment | 11 | | 0 | 00/8097 | *********************************************************** + 157 | 1 Unidrive2.asm 149 | Comment | 11 | | 0 | 00/8097 | * + 158 | 1 Unidrive2.asm 150 | Comment | 11 | | 0 | 00/8097 | * There are the PC signature bytes in their relative order. + 159 | 1 Unidrive2.asm 151 | Comment | 11 | | 0 | 00/8097 | * The $FF bytes are filler bytes and are not compared. + 160 | 1 Unidrive2.asm 152 | Comment | 11 | | 0 | 00/8097 | * + 161 | 1 Unidrive2.asm 153 | Data | 11 | | 4 | 00/8097 : FF 20 FF 00 | sigtab dfb $FF,$20,$FF,$00 + 162 | 1 Unidrive2.asm 154 | Data | 11 | | 4 | 00/809B : FF 03 FF 00 | dfb $FF,$03,$FF,$00 + 163 | 1 Unidrive2.asm 155 | Comment | 11 | | 0 | 00/809F | * + 164 | 1 Unidrive2.asm 156 | Empty | 11 | | 0 | 00/809F | ozunid_9 + 165 | 1 Unidrive2.asm 156 | Equivalence | 11 | | 0 | 00/809F | Dispatch equ ozunid_9 + 166 | 1 Unidrive2.asm 157 | Code | 11 | | 3 | 00/809F : 6C 06 00 | jmp ({$0006}) ;Simulate an indirect JSR to PC + 167 | 1 Unidrive2.asm 158 | Comment | 11 | | 0 | 00/80A2 | * + 168 | 1 Unidrive2.asm 159 | Comment | 11 | | 0 | 00/80A2 | *** Status Parameter Set for UNI *** + 169 | 1 Unidrive2.asm 160 | Empty | 11 | | 0 | 00/80A2 | ozunid_10 + 170 | 1 Unidrive2.asm 160 | Equivalence | 11 | | 0 | 00/80A2 | DParms equ ozunid_10 + 171 | 1 Unidrive2.asm 161 | Data | 11 | | 1 | 00/80A2 : 03 | DPParmsCt dfb 3 ;Status calls have three parameters + 172 | 1 Unidrive2.asm 162 | Data | 11 | | 1 | 00/80A3 : 01 | DPUnit dfb 1 + 173 | 1 Unidrive2.asm 163 | Data | 11 | | 2 | 00/80A4 : A7 80 | DPBuffer dw {ozunid_11} + 174 | 1 Unidrive2.asm 164 | Data | 11 | | 1 | 00/80A6 : 05 | DPStatCode dfb {5} + 175 | 1 Unidrive2.asm 165 | Comment | 11 | | 0 | 00/80A7 | * + 176 | 1 Unidrive2.asm 166 | Comment | 11 | | 0 | 00/80A7 | * + 177 | 1 Unidrive2.asm 167 | Comment | 11 | | 0 | 00/80A7 | * + 178 | 1 Unidrive2.asm 168 | Comment | 11 | | 0 | 00/80A7 | *** Status List UNI *** + 179 | 1 Unidrive2.asm 169 | Empty | 11 | | 0 | 00/80A7 | ozunid_11 + 180 | 1 Unidrive2.asm 169 | Equivalence | 11 | | 0 | 00/80A7 | UNI equ ozunid_11 + 181 | 1 Unidrive2.asm 170 | Data | 11 | | 1 | 00/80A7 : 00 | dfb 0 + 182 | 1 Unidrive2.asm 171 | Data | 11 | | 1 | 00/80A8 : 00 | UNIError dfb 0 + 183 | 1 Unidrive2.asm 172 | Data | 11 | | 1 | 00/80A9 : 00 | UNIRetries dfb 0 + 184 | 1 Unidrive2.asm 173 | Data | 11 | | 1 | 00/80AA : 00 | UNIAcc_reg dfb 0 + 185 | 1 Unidrive2.asm 174 | Data | 11 | | 1 | 00/80AB : 00 | UNIX_reg dfb 0 + 186 | 1 Unidrive2.asm 175 | Data | 11 | | 1 | 00/80AC : 00 | UNIY_reg dfb 0 + 187 | 1 Unidrive2.asm 176 | Data | 11 | | 1 | 00/80AD : 00 | UNIP_val dfb 0 + 188 | 1 Unidrive2.asm 177 | Data | 11 | | 1 | 00/80AE : 00 | HHH dfb 0 + 189 | 1 Unidrive2.asm 178 | Comment | 11 | | 0 | 00/80AF | * + 190 | 1 Unidrive2.asm 179 | Comment | 11 | | 0 | 00/80AF | *** Set Address *** + 191 | 1 Unidrive2.asm 180 | Empty | 11 | | 0 | 00/80AF | ozunid_12 + 192 | 1 Unidrive2.asm 180 | Equivalence | 11 | | 0 | 00/80AF | SET_ADD equ ozunid_12 + 193 | 1 Unidrive2.asm 181 | Data | 11 | | 1 | 00/80AF : 03 | dfb 3 + 194 | 1 Unidrive2.asm 182 | Data | 11 | | 1 | 00/80B0 : 01 | dfb 1 + 195 | 1 Unidrive2.asm 183 | Data | 11 | | 2 | 00/80B1 : CD 80 | dw {ozunid_18} + 196 | 1 Unidrive2.asm 184 | Data | 11 | | 1 | 00/80B3 : 06 | dfb {6} + 197 | 1 Unidrive2.asm 185 | Comment | 11 | | 0 | 00/80B4 | * + 198 | 1 Unidrive2.asm 186 | Comment | 11 | | 0 | 00/80B4 | *** Download *** + 199 | 1 Unidrive2.asm 187 | Empty | 11 | | 0 | 00/80B4 | ozunid_13 + 200 | 1 Unidrive2.asm 187 | Equivalence | 11 | | 0 | 00/80B4 | DOWNLOAD equ ozunid_13 + 201 | 1 Unidrive2.asm 188 | Data | 11 | | 1 | 00/80B4 : 03 | dfb 3 + 202 | 1 Unidrive2.asm 189 | Data | 11 | | 1 | 00/80B5 : 01 | dfb 1 + 203 | 1 Unidrive2.asm 190 | Data | 11 | | 2 | 00/80B6 : D1 80 | dw {ozunid_19} + 204 | 1 Unidrive2.asm 191 | Data | 11 | | 1 | 00/80B8 : 07 | dfb {7} + 205 | 1 Unidrive2.asm 192 | Comment | 11 | | 0 | 00/80B9 | * + 206 | 1 Unidrive2.asm 193 | Comment | 11 | | 0 | 00/80B9 | *** Execute *** + 207 | 1 Unidrive2.asm 194 | Empty | 11 | | 0 | 00/80B9 | ozunid_14 + 208 | 1 Unidrive2.asm 194 | Equivalence | 11 | | 0 | 00/80B9 | EXE equ ozunid_14 + 209 | 1 Unidrive2.asm 195 | Data | 11 | | 1 | 00/80B9 : 03 | dfb 3 + 210 | 1 Unidrive2.asm 196 | Data | 11 | | 1 | 00/80BA : 01 | dfb 1 + 211 | 1 Unidrive2.asm 197 | Data | 11 | | 2 | 00/80BB : C5 80 | dw {ozunid_17} + 212 | 1 Unidrive2.asm 198 | Data | 11 | | 1 | 00/80BD : 05 | dfb {5} + 213 | 1 Unidrive2.asm 199 | Comment | 11 | | 0 | 00/80BE | *** Eject *** + 214 | 1 Unidrive2.asm 200 | Empty | 11 | | 0 | 00/80BE | ozunid_15 + 215 | 1 Unidrive2.asm 200 | Equivalence | 11 | | 0 | 00/80BE | E_JECT equ ozunid_15 + 216 | 1 Unidrive2.asm 201 | Data | 11 | | 1 | 00/80BE : 03 | dfb 3 + 217 | 1 Unidrive2.asm 202 | Data | 11 | | 1 | 00/80BF : 01 | dfb 1 + 218 | 1 Unidrive2.asm 203 | Data | 11 | | 2 | 00/80C0 : C3 80 | dw {ozunid_16} + 219 | 1 Unidrive2.asm 204 | Data | 11 | | 1 | 00/80C2 : 04 | dfb {4} + 220 | 1 Unidrive2.asm 205 | Comment | 11 | | 0 | 00/80C3 | * + 221 | 1 Unidrive2.asm 206 | Comment | 11 | | 0 | 00/80C3 | ******** CONTROL LISTS ******** + 222 | 1 Unidrive2.asm 207 | Comment | 11 | | 0 | 00/80C3 | * + 223 | 1 Unidrive2.asm 208 | Comment | 11 | | 0 | 00/80C3 | * + 224 | 1 Unidrive2.asm 209 | Comment | 11 | | 0 | 00/80C3 | *** Eject *** + 225 | 1 Unidrive2.asm 210 | Empty | 11 | | 0 | 00/80C3 | ozunid_16 + 226 | 1 Unidrive2.asm 210 | Equivalence | 11 | | 0 | 00/80C3 | CNTL_LIST1 equ ozunid_16 + 227 | 1 Unidrive2.asm 211 | Data | 11 | | 2 | 00/80C3 : 00 00 | dw $0000 + 228 | 1 Unidrive2.asm 212 | Comment | 11 | | 0 | 00/80C5 | * + 229 | 1 Unidrive2.asm 213 | Comment | 11 | | 0 | 00/80C5 | *** Execute *** + 230 | 1 Unidrive2.asm 214 | Empty | 11 | | 0 | 00/80C5 | ozunid_17 + 231 | 1 Unidrive2.asm 214 | Equivalence | 11 | | 0 | 00/80C5 | CNTL_LIST2 equ ozunid_17 + 232 | 1 Unidrive2.asm 215 | Data | 11 | | 1 | 00/80C5 : 06 | Clow_byte dfb $06 + 233 | 1 Unidrive2.asm 216 | Data | 11 | | 1 | 00/80C6 : 00 | Chigh_byte dfb $00 + 234 | 1 Unidrive2.asm 217 | Data | 11 | | 1 | 00/80C7 : 00 | AccValue dfb $00 ; Input Value + 235 | 1 Unidrive2.asm 218 | Data | 11 | | 1 | 00/80C8 : 00 | X_reg dfb $00 ; Input Value (N1) + 236 | 1 Unidrive2.asm 219 | Data | 11 | | 1 | 00/80C9 : 00 | Y_reg dfb $00 ; Input Value (N2) + 237 | 1 Unidrive2.asm 220 | Data | 11 | | 1 | 00/80CA : 00 | ProStatus dfb $00 ; Input Value + 238 | 1 Unidrive2.asm 221 | Data | 11 | | 1 | 00/80CB : 05 | LowPC_reg dfb $05 ; Like ORG + 239 | 1 Unidrive2.asm 222 | Data | 11 | | 1 | 00/80CC : 05 | HighPC_reg dfb $05 + 240 | 1 Unidrive2.asm 223 | Comment | 11 | | 0 | 00/80CD | * + 241 | 1 Unidrive2.asm 224 | Comment | 11 | | 0 | 00/80CD | *** Set Address *** + 242 | 1 Unidrive2.asm 225 | Empty | 11 | | 0 | 00/80CD | ozunid_18 + 243 | 1 Unidrive2.asm 225 | Equivalence | 11 | | 0 | 00/80CD | CNTL_LIST3 equ ozunid_18 + 244 | 1 Unidrive2.asm 226 | Data | 11 | | 1 | 00/80CD : 02 | CountL_byte dfb $02 + 245 | 1 Unidrive2.asm 227 | Data | 11 | | 1 | 00/80CE : 00 | CountH_byte dfb $00 + 246 | 1 Unidrive2.asm 228 | Data | 11 | | 1 | 00/80CF : 05 | LByte_Addr dfb $05 ; Like ORG + 247 | 1 Unidrive2.asm 229 | Data | 11 | | 1 | 00/80D0 : 05 | HByte_Addr dfb $05 + 248 | 1 Unidrive2.asm 230 | Comment | 11 | | 0 | 00/80D1 | * + 249 | 1 Unidrive2.asm 231 | Comment | 11 | | 0 | 00/80D1 | *** Download *** + 250 | 1 Unidrive2.asm 232 | Empty | 11 | | 0 | 00/80D1 | ozunid_19 + 251 | 1 Unidrive2.asm 232 | Equivalence | 11 | | 0 | 00/80D1 | CNTL_LIST4 equ ozunid_19 + 252 | 1 Unidrive2.asm 233 | Data | 11 | | 1 | 00/80D1 : 1A | LenghtL_byte dfb $1A ;<----- Lenght of Unidisk program Lo Byte + 253 | 1 Unidrive2.asm 234 | Data | 11 | | 1 | 00/80D2 : 00 | LenghtH_byte dfb $00 ;<----- Lenght of Unidisk program Hi Byte + 254 | 1 Unidrive2.asm 235 | Comment | 11 | | 0 | 00/80D3 | * + 255 | 1 Unidrive2.asm 236 | Comment | 11 | | 0 | 00/80D3 | *** Start UNIDISK Program *** + 256 | 1 Unidrive2.asm 237 | Comment | 11 | | 0 | 00/80D3 | ** Two byte adc ** + 257 | 1 Unidrive2.asm 238 | Directive | 11 | | 0 | 00/80D3 | org $0505 + 258 | 1 Unidrive2.asm 239 | Equivalence | 11 | | 0 | 00/0505 | RSLTU equ $C0 + 259 | 1 Unidrive2.asm 240 | Empty | 11 | | 0 | 00/0505 | + 260 | 1 Unidrive2.asm 241 | Code | 11 | | 1 | 00/0505 : 18 | clc + 261 | 1 Unidrive2.asm 242 | Empty | 11 | | 0 | 00/0506 | + 262 | 1 Unidrive2.asm 243 | Code | 11 | | 3 | 00/0506 : AD 1B 05 | lda N1U ; Lo Byte + 263 | 1 Unidrive2.asm 244 | Code | 11 | | 3 | 00/0509 : 6D 1D 05 | adc N2U + 264 | 1 Unidrive2.asm 245 | Code | 11 | | 2 | 00/050C : 85 C0 | sta {$C0} + 265 | 1 Unidrive2.asm 246 | Empty | 11 | | 0 | 00/050E | + 266 | 1 Unidrive2.asm 247 | Code | 11 | | 3 | 00/050E : AD 1C 05 | lda N1U+1 ; Hi Byte + 267 | 1 Unidrive2.asm 248 | Code | 11 | | 3 | 00/0511 : 6D 1E 05 | adc N2U+1 + 268 | 1 Unidrive2.asm 249 | Code | 11 | | 2 | 00/0514 : 85 C1 | sta {$C0}+1 + 269 | 1 Unidrive2.asm 250 | Comment | 11 | | 0 | 00/0516 | ** Output Data ** + 270 | 1 Unidrive2.asm 251 | Code | 11 | | 2 | 00/0516 : A6 C0 | ldx {$C0} + 271 | 1 Unidrive2.asm 252 | Code | 11 | | 2 | 00/0518 : A4 C1 | ldy {$C0}+1 + 272 | 1 Unidrive2.asm 253 | Empty | 11 | | 0 | 00/051A | + 273 | 1 Unidrive2.asm 254 | Code | 11 | | 1 | 00/051A : 60 | rts + 274 | 1 Unidrive2.asm 255 | Comment | 11 | | 0 | 00/051B | ** Input Dynamic Data append in the end of Unidisk routine ** + 275 | 1 Unidrive2.asm 256 | Data | 11 | | 1 | 00/051B : 00 | N1U dfb $00 + 276 | 1 Unidrive2.asm 257 | Data | 11 | | 1 | 00/051C : 00 | dfb $00 + 277 | 1 Unidrive2.asm 258 | Data | 11 | | 1 | 00/051D : 00 | N2U dfb $00 + 278 | 1 Unidrive2.asm 259 | Data | 11 | | 1 | 00/051E : 00 | dfb $00 +------+-------------------------+-------------+----+---------+------+-----------------------+------------------------------------------------------------------- diff --git a/AppleII/Memory dump/Uniprox b/AppleII/Memory dump/Uniprox new file mode 100644 index 0000000000000000000000000000000000000000..a6c1d4323f5293e0727eb01df45d6b767e5d998a GIT binary patch literal 438 zcmaiuJxc>Y5QgWnxjoDw*cq@{M6gREg0)GIQ%N)*LcrqE2!8wn5pOgXQzU_a*obgB zOmSc&Y3u??qaqg9YNM5;h!O%REW)`P?Ok?zwyvczY&pXcA-0l;hT|n*bJ)nT@<`kaLKYiI8(RA~VTb{}J#+`QkF9>!50Sl& z#*){M#Hai2bBDa^kDd_&{1@mjQx)nAMJyt_GjxvFMxXwA(qnP95oYlO<02B>(!$Xa z*k16aijT!AcJqOLt%V%3 zpc3d!qw9DdDqrwCi|)Cn+lupGDh`;`QkwK-6Z^`&^5hPd^g?0k%kg*~nl!jeOd8ZZ z=7C2%IG{kJW0Z-sg9QFNM5-Yrl7kA7t^{<6egMj`H;`o?e=6kLxei~{zV7Hh#+

+* +* The target of this project is to dump all the Unidisk 3.5 memory +* +* Copyright (C) 2014 Riccardo Greco . +* +* 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 . +* +* +* @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 START + jsr COut + inx + bne LOOP +* +DATA asc 'UNIDISK 3.5 UTILITY BY R. GRECO' + dfb $8D,0 ; Inverse mode on +***************************************************** +* +* Find a Protocol Converter in one of the slots. +START jsr FindPC + bcs Error + + jsr CROut + jsr CROut +* +* 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 + 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 RESET ; 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 + jsr Dispatch + dfb ControlCmd + dw EXE +*** Read *** +READ jsr Dispatch + dfb StatusCmd + dw DParms + bcs Error +* +**** Screen Output **** +* +*** Accumulator *** + lda UNIAcc_reg + jsr COut ; Out the ASCII value + ldx #03 ; Set 3 space + jsr PRBL2 +*** Y Register *** + lda UNIY_reg + jsr PRbyte +*** X Register *** + lda UNIX_reg + jsr PRbyte + ldx #01 ; 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 +X_reg dfb $00 ;($80E3) Lo Byte start $00 (Unidisk) +Y_reg dfb $DF ;($80E4) Hi Byte One more before start $E0 - $FF-->$00 for zero page (Unidisk) +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 $0B ;<----- Lenght of Unidisk program Lo Byte +LenghtH_byte dfb $00 ;<----- Lenght of Unidisk program Hi Byte +* +*** Start UNIDISK Program *** +** Temporaney save in UNIDISK "Free zero page space" the address point stored in UNIDISK X, Y registers** + stx $00C0 + sty $00C1 +** Store in UNIDISK Accumulator the value of the UniDISK location that is store in $00C0 plus $00C1 + ldy #0 + lda ($00C0),y +** Restore the value of Y Unidisk register + ldy $00C1 + rts \ No newline at end of file diff --git a/AppleII/Memory dump/Uniprox_Output.txt b/AppleII/Memory dump/Uniprox_Output.txt new file mode 100644 index 0000000..454c162 --- /dev/null +++ b/AppleII/Memory dump/Uniprox_Output.txt @@ -0,0 +1,400 @@ +------+-----------------------+-------------+----+---------+------+-----------------------+------------------------------------------------------------------- + Line | # File Line | Line Type | MX | Reloc | Size | Address Object Code | Source Code +------+-----------------------+-------------+----+---------+------+-----------------------+------------------------------------------------------------------- + 1 | 1 Uniprox.asm 1 | Comment | 11 | | 0 | 00/8000 | * @com.wudsn.ide.asm.hardware=APPLE2 + 2 | 1 Uniprox.asm 2 | Comment | 11 | | 0 | 00/8000 | * Protocol Converter Call + 3 | 1 Uniprox.asm 3 | Directive | 11 | | 0 | 00/8000 | XC + 4 | 1 Uniprox.asm 4 | Equivalence | 11 | | 0 | 00/8000 | ZPTempL equ $0006 ;Temporary zero page storage + 5 | 1 Uniprox.asm 5 | Equivalence | 11 | | 0 | 00/8000 | ZPTempH equ $0007 + 6 | 1 Uniprox.asm 6 | Comment | 11 | | 0 | 00/8000 | *** Pointers *** + 7 | 1 Uniprox.asm 7 | Equivalence | 11 | | 0 | 00/8000 | LowMain equ $000A + 8 | 1 Uniprox.asm 8 | Equivalence | 11 | | 0 | 00/8000 | HiMain equ $000B + 9 | 1 Uniprox.asm 9 | Comment | 11 | | 0 | 00/8000 | *** Monitor routines *** + 10 | 1 Uniprox.asm 10 | Equivalence | 11 | | 0 | 00/8000 | COut equ $FDED ;Console output ASCII + 11 | 1 Uniprox.asm 11 | Equivalence | 11 | | 0 | 00/8000 | COUT1 equ $FDF0 ;Output to screen + 12 | 1 Uniprox.asm 12 | Equivalence | 11 | | 0 | 00/8000 | CROut equ $FD8E ;Carriage return + 13 | 1 Uniprox.asm 13 | Equivalence | 11 | | 0 | 00/8000 | PRbyte equ $FDDA ;Print byte in hex + 14 | 1 Uniprox.asm 14 | Equivalence | 11 | | 0 | 00/8000 | PRBL2 equ $F94A ;Print many spaces + 15 | 1 Uniprox.asm 15 | Equivalence | 11 | | 0 | 00/8000 | KEYIN equ $FD1B ;Waits for keypress + 16 | 1 Uniprox.asm 16 | Comment | 11 | | 0 | 00/8000 | ** Command Code ** + 17 | 1 Uniprox.asm 17 | Equivalence | 11 | | 0 | 00/8000 | StatusCmd equ 0 + 18 | 1 Uniprox.asm 18 | Comment | 11 | | 0 | 00/8000 | ** Status Code ** + 19 | 1 Uniprox.asm 19 | Equivalence | 11 | | 0 | 00/8000 | StatusDIB equ 3 + 20 | 1 Uniprox.asm 20 | Equivalence | 11 | | 0 | 00/8000 | StatusUNI equ 5 + 21 | 1 Uniprox.asm 21 | Comment | 11 | | 0 | 00/8000 | * + 22 | 1 Uniprox.asm 22 | Equivalence | 11 | | 0 | 00/8000 | ControlCmd equ 4 + 23 | 1 Uniprox.asm 23 | Comment | 11 | | 0 | 00/8000 | ** Control Codes ** + 24 | 1 Uniprox.asm 24 | Equivalence | 11 | | 0 | 00/8000 | Eject equ 4 + 25 | 1 Uniprox.asm 25 | Equivalence | 11 | | 0 | 00/8000 | Run equ 5 + 26 | 1 Uniprox.asm 26 | Equivalence | 11 | | 0 | 00/8000 | SetDWLoad equ 6 + 27 | 1 Uniprox.asm 27 | Equivalence | 11 | | 0 | 00/8000 | DWLoad equ 7 + 28 | 1 Uniprox.asm 28 | Comment | 11 | | 0 | 00/8000 | * + 29 | 1 Uniprox.asm 29 | Directive | 11 | | 0 | 00/8000 | org $8000 + 30 | 1 Uniprox.asm 30 | Comment | 11 | | 0 | 00/8000 | * + 31 | 1 Uniprox.asm 31 | Comment | 11 | | 0 | 00/8000 | * Presentation message + 32 | 1 Uniprox.asm 32 | Comment | 11 | | 0 | 00/8000 | * + 33 | 1 Uniprox.asm 33 | Code | 11 | | 2 | 00/8000 : A2 00 | ldx #0 + 34 | 1 Uniprox.asm 34 | Empty | 11 | | 0 | 00/8002 | ozunid_1 + 35 | 1 Uniprox.asm 34 | Equivalence | 11 | | 0 | 00/8002 | LOOP equ ozunid_1 + 36 | 1 Uniprox.asm 35 | Code | 11 | | 3 | 00/8002 : BD 0D 80 | lda DATA,x + 37 | 1 Uniprox.asm 36 | Code | 11 | | 2 | 00/8005 : F0 27 | beq START + 38 | 1 Uniprox.asm 37 | Code | 11 | | 3 | 00/8007 : 20 ED FD | jsr {$FDED} + 39 | 1 Uniprox.asm 38 | Code | 11 | | 1 | 00/800A : E8 | inx + 40 | 1 Uniprox.asm 39 | Code | 11 | | 2 | 00/800B : D0 F5 | bne {ozunid_1} + 41 | 1 Uniprox.asm 40 | Comment | 11 | | 0 | 00/800D | * + 42 | 1 Uniprox.asm 41 | Data | 11 | | 31 | 00/800D : 55 4E 49 44 | DATA asc 'UNIDISK 3.5 UTILITY BY R. GRECO' + | | | | | | 49 53 4B 20 | + | | | | | | 33 2E 35 20 | + | | | | | | 55 54 49 4C | + | | | | | | 49 54 59 20 | + | | | | | | 42 59 20 52 | + | | | | | | 2E 20 47 52 | + | | | | | | 45 43 4F | + 43 | 1 Uniprox.asm 42 | Data | 11 | | 2 | 00/802C : 8D 00 | dfb $8D,0 ; Inverse mode on + 44 | 1 Uniprox.asm 43 | Comment | 11 | | 0 | 00/802E | * + 45 | 1 Uniprox.asm 44 | Comment | 11 | | 0 | 00/802E | * Find a Protocol Converter in one of the slots. + 46 | 1 Uniprox.asm 45 | Code | 11 | | 3 | 00/802E : 20 24 81 | START jsr {ozunid_7} + 47 | 1 Uniprox.asm 46 | Code | 11 | | 2 | 00/8031 : B0 61 | bcs {ozunid_4} + 48 | 1 Uniprox.asm 47 | Empty | 11 | | 0 | 00/8033 | + 49 | 1 Uniprox.asm 48 | Code | 11 | | 3 | 00/8033 : 20 8E FD | jsr {$FD8E} + 50 | 1 Uniprox.asm 49 | Code | 11 | | 3 | 00/8036 : 20 8E FD | jsr {$FD8E} + 51 | 1 Uniprox.asm 50 | Comment | 11 | | 0 | 00/8039 | * + 52 | 1 Uniprox.asm 51 | Comment | 11 | | 0 | 00/8039 | * Now make the DIB call to the first guy + 53 | 1 Uniprox.asm 52 | Comment | 11 | | 0 | 00/8039 | * + 54 | 1 Uniprox.asm 53 | Code | 11 | | 3 | 00/8039 : 20 59 81 | jsr {ozunid_12} + 55 | 1 Uniprox.asm 54 | Data | 11 | | 1 | 00/803C : 00 | dfb {0} + 56 | 1 Uniprox.asm 55 | Data | 11 | | 2 | 00/803D : 61 81 | dw {ozunid_14} + 57 | 1 Uniprox.asm 56 | Code | 11 | | 2 | 00/803F : B0 53 | bcs {ozunid_4} + 58 | 1 Uniprox.asm 57 | Comment | 11 | | 0 | 00/8041 | * + 59 | 1 Uniprox.asm 58 | Comment | 11 | | 0 | 00/8041 | * Got the DIB; now print the name string + 60 | 1 Uniprox.asm 59 | Comment | 11 | | 0 | 00/8041 | * + 61 | 1 Uniprox.asm 60 | Code | 11 | | 2 | 00/8041 : A2 00 | ldx #0 + 62 | 1 Uniprox.asm 61 | Empty | 11 | | 0 | 00/8043 | ozunid_2 + 63 | 1 Uniprox.asm 61 | Equivalence | 11 | | 0 | 00/8043 | morechars equ ozunid_2 + 64 | 1 Uniprox.asm 62 | Code | 11 | | 3 | 00/8043 : BD 6B 81 | lda DIBName,x + 65 | 1 Uniprox.asm 63 | Code | 11 | | 2 | 00/8046 : 09 80 | ora #$80 ;COut wants high Bit set + 66 | 1 Uniprox.asm 64 | Code | 11 | | 3 | 00/8048 : 20 ED FD | jsr {$FDED} ; ASCII + 67 | 1 Uniprox.asm 65 | Code | 11 | | 1 | 00/804B : E8 | inx + 68 | 1 Uniprox.asm 66 | Code | 11 | | 3 | 00/804C : EC 6A 81 | cpx DIBNameLen + 69 | 1 Uniprox.asm 67 | Code | 11 | | 2 | 00/804F : D0 F2 | bne {ozunid_2} + 70 | 1 Uniprox.asm 68 | Empty | 11 | | 0 | 00/8051 | + 71 | 1 Uniprox.asm 69 | Code | 11 | | 2 | 00/8051 : A2 02 | ldx #02 ; Set 2 space + 72 | 1 Uniprox.asm 70 | Code | 11 | | 3 | 00/8053 : 20 4A F9 | jsr {$F94A} + 73 | 1 Uniprox.asm 71 | Comment | 11 | | 0 | 00/8056 | ** Type ** + 74 | 1 Uniprox.asm 72 | Code | 11 | | 3 | 00/8056 : AD 7B 81 | lda DIBType + 75 | 1 Uniprox.asm 73 | Code | 11 | | 3 | 00/8059 : 20 DA FD | jsr {$FDDA} ; HEX form + 76 | 1 Uniprox.asm 74 | Empty | 11 | | 0 | 00/805C | + 77 | 1 Uniprox.asm 75 | Code | 11 | | 2 | 00/805C : A2 02 | ldx #02 ; Set 2 space + 78 | 1 Uniprox.asm 76 | Code | 11 | | 3 | 00/805E : 20 4A F9 | jsr {$F94A} + 79 | 1 Uniprox.asm 77 | Comment | 11 | | 0 | 00/8061 | ** Firmware version + 80 | 1 Uniprox.asm 78 | Code | 11 | | 2 | 00/8061 : A2 00 | ldx #0 + 81 | 1 Uniprox.asm 79 | Empty | 11 | | 0 | 00/8063 | ozunid_3 + 82 | 1 Uniprox.asm 79 | Equivalence | 11 | | 0 | 00/8063 | morechars2 equ ozunid_3 + 83 | 1 Uniprox.asm 80 | Code | 11 | | 3 | 00/8063 : BD 7D 81 | lda DIBVersion,x + 84 | 1 Uniprox.asm 81 | Code | 11 | | 3 | 00/8066 : 20 DA FD | jsr {$FDDA} ; HEX form + 85 | 1 Uniprox.asm 82 | Code | 11 | | 1 | 00/8069 : E8 | inx + 86 | 1 Uniprox.asm 83 | Code | 11 | | 2 | 00/806A : E0 02 | cpx #$02 ; 2 Byte + 87 | 1 Uniprox.asm 84 | Code | 11 | | 2 | 00/806C : D0 F5 | bne {ozunid_3} + 88 | 1 Uniprox.asm 85 | Code | 11 | | 3 | 00/806E : 20 ED FD | jsr {$FDED} + 89 | 1 Uniprox.asm 86 | Empty | 11 | | 0 | 00/8071 | + 90 | 1 Uniprox.asm 87 | Code | 11 | | 3 | 00/8071 : 20 8E FD | jsr {$FD8E} + 91 | 1 Uniprox.asm 88 | Code | 11 | | 3 | 00/8074 : 20 8E FD | jsr {$FD8E} + 92 | 1 Uniprox.asm 89 | Comment | 11 | | 0 | 00/8077 | ** Wait keypress to continue ** + 93 | 1 Uniprox.asm 90 | Comment | 11 | | 0 | 00/8077 | * + 94 | 1 Uniprox.asm 91 | Code | 11 | | 3 | 00/8077 : 20 1B FD | jsr {$FD1B} + 95 | 1 Uniprox.asm 92 | Comment | 11 | | 0 | 00/807A | * + 96 | 1 Uniprox.asm 93 | Comment | 11 | | 0 | 00/807A | *** Eject *** + 97 | 1 Uniprox.asm 94 | Code | 11 | | 3 | 00/807A : 20 59 81 | jsr {ozunid_12} + 98 | 1 Uniprox.asm 95 | Data | 11 | | 1 | 00/807D : 04 | dfb {4} + 99 | 1 Uniprox.asm 96 | Data | 11 | | 2 | 00/807E : 96 81 | dw {ozunid_20} + 100 | 1 Uniprox.asm 97 | Comment | 11 | | 0 | 00/8080 | *** Set start HiMain Memory Pointers *** + 101 | 1 Uniprox.asm 98 | Code | 11 | | 2 | 00/8080 : A9 20 | lda #$20 ; Hi Byte start (//c ram) + 102 | 1 Uniprox.asm 99 | Code | 11 | | 2 | 00/8082 : 85 0B | sta {$000B} ; HiMain=$20 set + 103 | 1 Uniprox.asm 100 | Comment | 11 | | 0 | 00/8084 | *** Set Address *** + 104 | 1 Uniprox.asm 101 | Code | 11 | | 3 | 00/8084 : 20 59 81 | jsr {ozunid_12} + 105 | 1 Uniprox.asm 102 | Data | 11 | | 1 | 00/8087 : 04 | dfb {4} + 106 | 1 Uniprox.asm 103 | Data | 11 | | 2 | 00/8088 : 87 81 | dw {ozunid_17} + 107 | 1 Uniprox.asm 104 | Comment | 11 | | 0 | 00/808A | *** Download *** + 108 | 1 Uniprox.asm 105 | Code | 11 | | 3 | 00/808A : 20 59 81 | jsr {ozunid_12} + 109 | 1 Uniprox.asm 106 | Data | 11 | | 1 | 00/808D : 04 | dfb {4} + 110 | 1 Uniprox.asm 107 | Data | 11 | | 2 | 00/808E : 8C 81 | dw {ozunid_18} + 111 | 1 Uniprox.asm 108 | Empty | 11 | | 0 | 00/8090 | + 112 | 1 Uniprox.asm 109 | Code | 11 | | 3 | 00/8090 : 20 B6 80 | jsr RESET ; Jump the Error routine + 113 | 1 Uniprox.asm 110 | Code | 11 | | 1 | 00/8093 : 60 | rts + 114 | 1 Uniprox.asm 111 | Comment | 11 | | 0 | 00/8094 | ********************************************* + 115 | 1 Uniprox.asm 112 | Empty | 11 | | 0 | 00/8094 | ozunid_4 + 116 | 1 Uniprox.asm 112 | Equivalence | 11 | | 0 | 00/8094 | Error equ ozunid_4 + 117 | 1 Uniprox.asm 113 | Comment | 11 | | 0 | 00/8094 | * + 118 | 1 Uniprox.asm 114 | Comment | 11 | | 0 | 00/8094 | * There's either no PC around, or there was no give message + 119 | 1 Uniprox.asm 115 | Comment | 11 | | 0 | 00/8094 | * + 120 | 1 Uniprox.asm 116 | Code | 11 | | 2 | 00/8094 : A2 00 | ldx #0 + 121 | 1 Uniprox.asm 117 | Empty | 11 | | 0 | 00/8096 | ozunid_5 + 122 | 1 Uniprox.asm 117 | Equivalence | 11 | | 0 | 00/8096 | err1 equ ozunid_5 + 123 | 1 Uniprox.asm 118 | Code | 11 | | 3 | 00/8096 : BD A2 80 | lda Message,x + 124 | 1 Uniprox.asm 119 | Code | 11 | | 2 | 00/8099 : F0 06 | beq {ozunid_6} + 125 | 1 Uniprox.asm 120 | Code | 11 | | 3 | 00/809B : 20 ED FD | jsr {$FDED} + 126 | 1 Uniprox.asm 121 | Code | 11 | | 1 | 00/809E : E8 | inx + 127 | 1 Uniprox.asm 122 | Code | 11 | | 2 | 00/809F : D0 F5 | bne {ozunid_5} + 128 | 1 Uniprox.asm 123 | Comment | 11 | | 0 | 00/80A1 | * + 129 | 1 Uniprox.asm 124 | Empty | 11 | | 0 | 00/80A1 | ozunid_6 + 130 | 1 Uniprox.asm 124 | Equivalence | 11 | | 0 | 00/80A1 | errout equ ozunid_6 + 131 | 1 Uniprox.asm 125 | Code | 11 | | 1 | 00/80A1 : 60 | rts + 132 | 1 Uniprox.asm 126 | Comment | 11 | | 0 | 00/80A2 | * + 133 | 1 Uniprox.asm 127 | Data | 11 | | 18 | 00/80A2 : 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 | + 134 | 1 Uniprox.asm 128 | Data | 11 | | 2 | 00/80B4 : 8D 00 | dfb $8D,0 + 135 | 1 Uniprox.asm 129 | Comment | 11 | | 0 | 00/80B6 | ********************************************* + 136 | 1 Uniprox.asm 130 | Empty | 11 | | 0 | 00/80B6 | + 137 | 1 Uniprox.asm 131 | Comment | 11 | | 0 | 00/80B6 | *** Set and Reset LoMain Memory Counter *** + 138 | 1 Uniprox.asm 132 | Code | 11 | | 2 | 00/80B6 : A2 FF | RESET ldx #$FF ;Lo Byte start One more before $00 (//c ram) + 139 | 1 Uniprox.asm 133 | Code | 11 | | 1 | 00/80B8 : 18 | clc + 140 | 1 Uniprox.asm 134 | Code | 11 | | 3 | 00/80B9 : AC A1 81 | ldy Y_reg ; 1 time $DF --> Y + 141 | 1 Uniprox.asm 135 | Code | 11 | | 1 | 00/80BC : C8 | iny ; Y+ --> $FF + 142 | 1 Uniprox.asm 136 | Code | 11 | | 3 | 00/80BD : 8C A1 81 | sty Y_reg ; Y --> Y_reg Uni=$FF + 143 | 1 Uniprox.asm 137 | Comment | 11 | | 0 | 00/80C0 | *** Execute *** + 144 | 1 Uniprox.asm 138 | Code | 11 | | 1 | 00/80C0 : E8 | EXEC inx + 145 | 1 Uniprox.asm 139 | Code | 11 | | 2 | 00/80C1 : 86 0A | stx {$000A} ; 1 time set LowMain=$00 + 146 | 1 Uniprox.asm 140 | Code | 11 | | 3 | 00/80C3 : 8E A0 81 | stx X_reg + 147 | 1 Uniprox.asm 141 | Code | 11 | | 3 | 00/80C6 : 20 59 81 | jsr {ozunid_12} + 148 | 1 Uniprox.asm 142 | Data | 11 | | 1 | 00/80C9 : 04 | dfb {4} + 149 | 1 Uniprox.asm 143 | Data | 11 | | 2 | 00/80CA : 91 81 | dw {ozunid_19} + 150 | 1 Uniprox.asm 144 | Code | 11 | | 3 | 00/80CC : 20 59 81 | READ jsr {ozunid_12} + 151 | 1 Uniprox.asm 145 | Data | 11 | | 1 | 00/80CF : 00 | dfb {0} + 152 | 1 Uniprox.asm 146 | Data | 11 | | 2 | 00/80D0 : 5C 81 | dw {ozunid_13} + 153 | 1 Uniprox.asm 147 | Code | 11 | | 2 | 00/80D2 : B0 C0 | bcs {ozunid_4} + 154 | 1 Uniprox.asm 148 | Comment | 11 | | 0 | 00/80D4 | * + 155 | 1 Uniprox.asm 149 | Comment | 11 | | 0 | 00/80D4 | **** Screen Output **** + 156 | 1 Uniprox.asm 150 | Comment | 11 | | 0 | 00/80D4 | * + 157 | 1 Uniprox.asm 151 | Comment | 11 | | 0 | 00/80D4 | *** Accumulator *** + 158 | 1 Uniprox.asm 152 | Code | 11 | | 3 | 00/80D4 : AD 82 81 | lda UNIAcc_reg + 159 | 1 Uniprox.asm 153 | Code | 11 | | 3 | 00/80D7 : 20 ED FD | jsr {$FDED} ; Out the ASCII value + 160 | 1 Uniprox.asm 154 | Code | 11 | | 2 | 00/80DA : A2 03 | ldx #03 ; Set 3 space + 161 | 1 Uniprox.asm 155 | Code | 11 | | 3 | 00/80DC : 20 4A F9 | jsr {$F94A} + 162 | 1 Uniprox.asm 156 | Comment | 11 | | 0 | 00/80DF | *** Y Register *** + 163 | 1 Uniprox.asm 157 | Code | 11 | | 3 | 00/80DF : AD 84 81 | lda UNIY_reg + 164 | 1 Uniprox.asm 158 | Code | 11 | | 3 | 00/80E2 : 20 DA FD | jsr {$FDDA} + 165 | 1 Uniprox.asm 159 | Comment | 11 | | 0 | 00/80E5 | *** X Register *** + 166 | 1 Uniprox.asm 160 | Code | 11 | | 3 | 00/80E5 : AD 83 81 | lda UNIX_reg + 167 | 1 Uniprox.asm 161 | Code | 11 | | 3 | 00/80E8 : 20 DA FD | jsr {$FDDA} + 168 | 1 Uniprox.asm 162 | Code | 11 | | 2 | 00/80EB : A2 01 | ldx #01 ; Set one space + 169 | 1 Uniprox.asm 163 | Code | 11 | | 3 | 00/80ED : 20 4A F9 | jsr {$F94A} + 170 | 1 Uniprox.asm 164 | Comment | 11 | | 0 | 00/80F0 | *** Process Status *** + 171 | 1 Uniprox.asm 165 | Code | 11 | | 3 | 00/80F0 : AD 85 81 | lda UNIP_val + 172 | 1 Uniprox.asm 166 | Code | 11 | | 3 | 00/80F3 : 20 DA FD | jsr {$FDDA} + 173 | 1 Uniprox.asm 167 | Code | 11 | | 2 | 00/80F6 : A2 05 | ldx #05 ; Set five space + 174 | 1 Uniprox.asm 168 | Code | 11 | | 3 | 00/80F8 : 20 4A F9 | jsr {$F94A} + 175 | 1 Uniprox.asm 169 | Comment | 11 | | 0 | 00/80FB | ** //c Memory store adress ** + 176 | 1 Uniprox.asm 170 | Code | 11 | | 2 | 00/80FB : A5 0B | lda {$000B} + 177 | 1 Uniprox.asm 171 | Code | 11 | | 3 | 00/80FD : 20 DA FD | jsr {$FDDA} + 178 | 1 Uniprox.asm 172 | Code | 11 | | 2 | 00/8100 : A5 0A | lda {$000A} + 179 | 1 Uniprox.asm 173 | Code | 11 | | 3 | 00/8102 : 20 DA FD | jsr {$FDDA} + 180 | 1 Uniprox.asm 174 | Code | 11 | | 3 | 00/8105 : 20 8E FD | jsr {$FD8E} + 181 | 1 Uniprox.asm 175 | Comment | 11 | | 0 | 00/8108 | **** Store in //c Main Memory **** + 182 | 1 Uniprox.asm 176 | Code | 11 | | 3 | 00/8108 : AE A0 81 | ldx X_reg + 183 | 1 Uniprox.asm 177 | Code | 11 | | 3 | 00/810B : AD 82 81 | lda UNIAcc_reg ;#$FB Test + 184 | 1 Uniprox.asm 178 | Code | 11 | | 2 | 00/810E : A0 00 | ldy #0 + 185 | 1 Uniprox.asm 179 | Code | 11 | | 2 | 00/8110 : 91 0A | sta ({$000A}),y + 186 | 1 Uniprox.asm 180 | Code | 11 | | 3 | 00/8112 : EC 17 81 | cpx UNIL_End + 187 | 1 Uniprox.asm 181 | Code | 11 | | 2 | 00/8115 : D0 A9 | bne EXEC + 188 | 1 Uniprox.asm 182 | Data | 11 | | 1 | 00/8117 : FF | UNIL_End dfb $FF ; Lo Byte stop (Unidisk) - $C0 for zero page + 189 | 1 Uniprox.asm 183 | Comment | 11 | | 0 | 00/8118 | *** Increment HiMain *** + 190 | 1 Uniprox.asm 184 | Code | 11 | | 2 | 00/8118 : E6 0B | inc {$000B} + 191 | 1 Uniprox.asm 185 | Code | 11 | | 3 | 00/811A : AC A1 81 | ldy Y_reg + 192 | 1 Uniprox.asm 186 | Code | 11 | | 3 | 00/811D : CC 22 81 | cpy UNIH_End + 193 | 1 Uniprox.asm 187 | Code | 11 | | 2 | 00/8120 : D0 94 | bne RESET + 194 | 1 Uniprox.asm 188 | Data | 11 | | 1 | 00/8122 : FF | UNIH_End dfb $FF ; Hi Byte stop (Unidisk) - $00 for zero page + 195 | 1 Uniprox.asm 189 | Comment | 11 | | 0 | 00/8123 | * + 196 | 1 Uniprox.asm 190 | Code | 11 | | 1 | 00/8123 : 60 | rts + 197 | 1 Uniprox.asm 191 | Empty | 11 | | 0 | 00/8124 | + 198 | 1 Uniprox.asm 192 | Comment | 11 | | 0 | 00/8124 | ****************************************************** + 199 | 1 Uniprox.asm 193 | Empty | 11 | | 0 | 00/8124 | ozunid_7 + 200 | 1 Uniprox.asm 193 | Equivalence | 11 | | 0 | 00/8124 | FindPC equ ozunid_7 + 201 | 1 Uniprox.asm 194 | Comment | 11 | | 0 | 00/8124 | * + 202 | 1 Uniprox.asm 195 | Comment | 11 | | 0 | 00/8124 | * Search slot 7 to slot 1 looking for signature bytes + 203 | 1 Uniprox.asm 196 | Comment | 11 | | 0 | 00/8124 | * + 204 | 1 Uniprox.asm 197 | Code | 11 | | 2 | 00/8124 : A2 07 | ldx #7 ;Do for seven slots + 205 | 1 Uniprox.asm 198 | Code | 11 | | 2 | 00/8126 : A9 C7 | lda #$C7 + 206 | 1 Uniprox.asm 199 | Code | 11 | | 2 | 00/8128 : 85 07 | sta {$0007} + 207 | 1 Uniprox.asm 200 | Code | 11 | | 2 | 00/812A : A9 00 | lda #$00 + 208 | 1 Uniprox.asm 201 | Code | 11 | | 2 | 00/812C : 85 06 | sta {$0006} + 209 | 1 Uniprox.asm 202 | Comment | 11 | | 0 | 00/812E | * + 210 | 1 Uniprox.asm 203 | Empty | 11 | | 0 | 00/812E | ozunid_8 + 211 | 1 Uniprox.asm 203 | Equivalence | 11 | | 0 | 00/812E | newslot equ ozunid_8 + 212 | 1 Uniprox.asm 204 | Code | 11 | | 2 | 00/812E : A0 07 | ldy #7 + 213 | 1 Uniprox.asm 205 | Comment | 11 | | 0 | 00/8130 | * + 214 | 1 Uniprox.asm 206 | Empty | 11 | | 0 | 00/8130 | ozunid_9 + 215 | 1 Uniprox.asm 206 | Equivalence | 11 | | 0 | 00/8130 | again equ ozunid_9 + 216 | 1 Uniprox.asm 207 | Code | 11 | | 2 | 00/8130 : B1 06 | lda ({$0006}),y + 217 | 1 Uniprox.asm 208 | Code | 11 | | 3 | 00/8132 : D9 51 81 | cmp sigtab,y ;One for byte signature + 218 | 1 Uniprox.asm 209 | Code | 11 | | 2 | 00/8135 : F0 07 | beq {ozunid_10} ;Found one signature byte + 219 | 1 Uniprox.asm 210 | Code | 11 | | 2 | 00/8137 : C6 07 | dec {$0007} + 220 | 1 Uniprox.asm 211 | Code | 11 | | 1 | 00/8139 : CA | dex + 221 | 1 Uniprox.asm 212 | Code | 11 | | 2 | 00/813A : D0 F2 | bne {ozunid_8} + 222 | 1 Uniprox.asm 213 | Comment | 11 | | 0 | 00/813C | * + 223 | 1 Uniprox.asm 214 | Comment | 11 | | 0 | 00/813C | * if we get here, no PC find + 224 | 1 Uniprox.asm 215 | Code | 11 | | 1 | 00/813C : 38 | sec + 225 | 1 Uniprox.asm 216 | Code | 11 | | 1 | 00/813D : 60 | rts + 226 | 1 Uniprox.asm 217 | Comment | 11 | | 0 | 00/813E | * + 227 | 1 Uniprox.asm 218 | Comment | 11 | | 0 | 00/813E | * if we get here, no byte find on PC + 228 | 1 Uniprox.asm 219 | Empty | 11 | | 0 | 00/813E | ozunid_10 + 229 | 1 Uniprox.asm 219 | Equivalence | 11 | | 0 | 00/813E | maybe equ ozunid_10 + 230 | 1 Uniprox.asm 220 | Code | 11 | | 1 | 00/813E : 88 | dey + 231 | 1 Uniprox.asm 221 | Code | 11 | | 1 | 00/813F : 88 | dey ;if N=1 then all sig bytes OK + 232 | 1 Uniprox.asm 222 | Code | 11 | | 2 | 00/8140 : 10 EE | bpl {ozunid_9} + 233 | 1 Uniprox.asm 223 | Comment | 11 | | 0 | 00/8142 | * Found PC interface. Set up call address. + 234 | 1 Uniprox.asm 224 | Comment | 11 | | 0 | 00/8142 | * we already have high byte ($CN), we need low byte + 235 | 1 Uniprox.asm 225 | Comment | 11 | | 0 | 00/8142 | * + 236 | 1 Uniprox.asm 226 | Empty | 11 | | 0 | 00/8142 | ozunid_11 + 237 | 1 Uniprox.asm 226 | Equivalence | 11 | | 0 | 00/8142 | foundPC equ ozunid_11 + 238 | 1 Uniprox.asm 227 | Code | 11 | | 2 | 00/8142 : A9 FF | lda #$FF + 239 | 1 Uniprox.asm 228 | Code | 11 | | 2 | 00/8144 : 85 06 | sta {$0006} + 240 | 1 Uniprox.asm 229 | Code | 11 | | 2 | 00/8146 : A0 00 | ldy #0 ;For indirect load + 241 | 1 Uniprox.asm 230 | Code | 11 | | 2 | 00/8148 : B1 06 | lda ({$0006}),y ;Get the byte + 242 | 1 Uniprox.asm 231 | Comment | 11 | | 0 | 00/814A | * + 243 | 1 Uniprox.asm 232 | Comment | 11 | | 0 | 00/814A | * Now the Acc has the low oreder ProDOS entry point. + 244 | 1 Uniprox.asm 233 | Comment | 11 | | 0 | 00/814A | * The PC entry is three locations past this ... + 245 | 1 Uniprox.asm 234 | Comment | 11 | | 0 | 00/814A | * + 246 | 1 Uniprox.asm 235 | Code | 11 | | 1 | 00/814A : 18 | clc + 247 | 1 Uniprox.asm 236 | Code | 11 | | 2 | 00/814B : 69 03 | adc #3 + 248 | 1 Uniprox.asm 237 | Code | 11 | | 2 | 00/814D : 85 06 | sta {$0006} + 249 | 1 Uniprox.asm 238 | Comment | 11 | | 0 | 00/814F | * + 250 | 1 Uniprox.asm 239 | Comment | 11 | | 0 | 00/814F | * Now ZPTempL has PC entry point. + 251 | 1 Uniprox.asm 240 | Comment | 11 | | 0 | 00/814F | * Return with carry clear. + 252 | 1 Uniprox.asm 241 | Comment | 11 | | 0 | 00/814F | * + 253 | 1 Uniprox.asm 242 | Code | 11 | | 1 | 00/814F : 18 | clc + 254 | 1 Uniprox.asm 243 | Code | 11 | | 1 | 00/8150 : 60 | rts + 255 | 1 Uniprox.asm 244 | Comment | 11 | | 0 | 00/8151 | *********************************************************** + 256 | 1 Uniprox.asm 245 | Comment | 11 | | 0 | 00/8151 | * + 257 | 1 Uniprox.asm 246 | Comment | 11 | | 0 | 00/8151 | * There are the PC signature bytes in their relative order. + 258 | 1 Uniprox.asm 247 | Comment | 11 | | 0 | 00/8151 | * The $FF bytes are filler bytes and are not compared. + 259 | 1 Uniprox.asm 248 | Comment | 11 | | 0 | 00/8151 | * + 260 | 1 Uniprox.asm 249 | Data | 11 | | 4 | 00/8151 : FF 20 FF 00 | sigtab dfb $FF,$20,$FF,$00 + 261 | 1 Uniprox.asm 250 | Data | 11 | | 4 | 00/8155 : FF 03 FF 00 | dfb $FF,$03,$FF,$00 + 262 | 1 Uniprox.asm 251 | Comment | 11 | | 0 | 00/8159 | * + 263 | 1 Uniprox.asm 252 | Empty | 11 | | 0 | 00/8159 | ozunid_12 + 264 | 1 Uniprox.asm 252 | Equivalence | 11 | | 0 | 00/8159 | Dispatch equ ozunid_12 + 265 | 1 Uniprox.asm 253 | Code | 11 | | 3 | 00/8159 : 6C 06 00 | jmp ({$0006}) ;Simulate an indirect JSR to PC + 266 | 1 Uniprox.asm 254 | Comment | 11 | | 0 | 00/815C | * + 267 | 1 Uniprox.asm 255 | Comment | 11 | | 0 | 00/815C | *** Status Parameter Set for UNI *** + 268 | 1 Uniprox.asm 256 | Empty | 11 | | 0 | 00/815C | ozunid_13 + 269 | 1 Uniprox.asm 256 | Equivalence | 11 | | 0 | 00/815C | DParms equ ozunid_13 + 270 | 1 Uniprox.asm 257 | Data | 11 | | 1 | 00/815C : 03 | DPParmsCt dfb 3 ;Status calls have three parameters + 271 | 1 Uniprox.asm 258 | Data | 11 | | 1 | 00/815D : 01 | DPUnit dfb 1 + 272 | 1 Uniprox.asm 259 | Data | 11 | | 2 | 00/815E : 7F 81 | DPBuffer dw {ozunid_16} + 273 | 1 Uniprox.asm 260 | Data | 11 | | 1 | 00/8160 : 05 | DPStatCode dfb {5} + 274 | 1 Uniprox.asm 261 | Comment | 11 | | 0 | 00/8161 | * + 275 | 1 Uniprox.asm 262 | Comment | 11 | | 0 | 00/8161 | * + 276 | 1 Uniprox.asm 263 | Comment | 11 | | 0 | 00/8161 | *** Status Parameter Set for DIB *** + 277 | 1 Uniprox.asm 264 | Empty | 11 | | 0 | 00/8161 | ozunid_14 + 278 | 1 Uniprox.asm 264 | Equivalence | 11 | | 0 | 00/8161 | DParmsDIB equ ozunid_14 + 279 | 1 Uniprox.asm 265 | Data | 11 | | 1 | 00/8161 : 03 | DPParmsCt2 dfb 3 ;Status calls have three parameters + 280 | 1 Uniprox.asm 266 | Data | 11 | | 1 | 00/8162 : 01 | DPUnit2 dfb 1 + 281 | 1 Uniprox.asm 267 | Data | 11 | | 2 | 00/8163 : 66 81 | DPBuffer2 dw {ozunid_15} + 282 | 1 Uniprox.asm 268 | Data | 11 | | 1 | 00/8165 : 03 | DPStatCode2 dfb {3} + 283 | 1 Uniprox.asm 269 | Comment | 11 | | 0 | 00/8166 | * + 284 | 1 Uniprox.asm 270 | Comment | 11 | | 0 | 00/8166 | * + 285 | 1 Uniprox.asm 271 | Comment | 11 | | 0 | 00/8166 | *** Status List DIB *** + 286 | 1 Uniprox.asm 272 | Empty | 11 | | 0 | 00/8166 | ozunid_15 + 287 | 1 Uniprox.asm 272 | Equivalence | 11 | | 0 | 00/8166 | DIB equ ozunid_15 + 288 | 1 Uniprox.asm 273 | Data | 11 | | 1 | 00/8166 : 00 | DIBStatByte1 dfb 0 + 289 | 1 Uniprox.asm 274 | Data | 11 | | 3 | 00/8167 : 00 00 00 | DIBDevSize dfb 0,0,0 + 290 | 1 Uniprox.asm 275 | Data | 11 | | 1 | 00/816A : 00 | DIBNameLen dfb 0 + 291 | 1 Uniprox.asm 276 | Data | 11 | | 16 | 00/816B : 00 00 00 00 | DIBName ds 16,0 + | | | | | | 00 00 00 00 | + | | | | | | 00 00 00 00 | + | | | | | | 00 00 00 00 | + 292 | 1 Uniprox.asm 277 | Data | 11 | | 1 | 00/817B : 00 | DIBType dfb 0 + 293 | 1 Uniprox.asm 278 | Data | 11 | | 1 | 00/817C : 00 | DIBSubType dfb 0 + 294 | 1 Uniprox.asm 279 | Data | 11 | | 2 | 00/817D : 00 00 | DIBVersion dw 0 + 295 | 1 Uniprox.asm 280 | Comment | 11 | | 0 | 00/817F | * + 296 | 1 Uniprox.asm 281 | Comment | 11 | | 0 | 00/817F | *** Status List UNI *** + 297 | 1 Uniprox.asm 282 | Empty | 11 | | 0 | 00/817F | ozunid_16 + 298 | 1 Uniprox.asm 282 | Equivalence | 11 | | 0 | 00/817F | UNI equ ozunid_16 + 299 | 1 Uniprox.asm 283 | Data | 11 | | 1 | 00/817F : 00 | dfb 0 + 300 | 1 Uniprox.asm 284 | Data | 11 | | 1 | 00/8180 : 00 | UNIError dfb 0 + 301 | 1 Uniprox.asm 285 | Data | 11 | | 1 | 00/8181 : 00 | UNIRetries dfb 0 + 302 | 1 Uniprox.asm 286 | Data | 11 | | 1 | 00/8182 : 00 | UNIAcc_reg dfb 0 + 303 | 1 Uniprox.asm 287 | Data | 11 | | 1 | 00/8183 : 00 | UNIX_reg dfb 0 + 304 | 1 Uniprox.asm 288 | Data | 11 | | 1 | 00/8184 : 00 | UNIY_reg dfb 0 + 305 | 1 Uniprox.asm 289 | Data | 11 | | 1 | 00/8185 : 00 | UNIP_val dfb 0 + 306 | 1 Uniprox.asm 290 | Data | 11 | | 1 | 00/8186 : 00 | HHH dfb 0 + 307 | 1 Uniprox.asm 291 | Comment | 11 | | 0 | 00/8187 | * + 308 | 1 Uniprox.asm 292 | Comment | 11 | | 0 | 00/8187 | *** Set Address *** + 309 | 1 Uniprox.asm 293 | Empty | 11 | | 0 | 00/8187 | ozunid_17 + 310 | 1 Uniprox.asm 293 | Equivalence | 11 | | 0 | 00/8187 | SET_ADD equ ozunid_17 + 311 | 1 Uniprox.asm 294 | Data | 11 | | 1 | 00/8187 : 03 | dfb 3 + 312 | 1 Uniprox.asm 295 | Data | 11 | | 1 | 00/8188 : 01 | dfb 1 + 313 | 1 Uniprox.asm 296 | Data | 11 | | 2 | 00/8189 : A5 81 | dw {ozunid_23} + 314 | 1 Uniprox.asm 297 | Data | 11 | | 1 | 00/818B : 06 | dfb {6} + 315 | 1 Uniprox.asm 298 | Comment | 11 | | 0 | 00/818C | * + 316 | 1 Uniprox.asm 299 | Comment | 11 | | 0 | 00/818C | *** Download *** + 317 | 1 Uniprox.asm 300 | Empty | 11 | | 0 | 00/818C | ozunid_18 + 318 | 1 Uniprox.asm 300 | Equivalence | 11 | | 0 | 00/818C | DOWNLOAD equ ozunid_18 + 319 | 1 Uniprox.asm 301 | Data | 11 | | 1 | 00/818C : 03 | dfb 3 + 320 | 1 Uniprox.asm 302 | Data | 11 | | 1 | 00/818D : 01 | dfb 1 + 321 | 1 Uniprox.asm 303 | Data | 11 | | 2 | 00/818E : A9 81 | dw {ozunid_24} + 322 | 1 Uniprox.asm 304 | Data | 11 | | 1 | 00/8190 : 07 | dfb {7} + 323 | 1 Uniprox.asm 305 | Comment | 11 | | 0 | 00/8191 | * + 324 | 1 Uniprox.asm 306 | Comment | 11 | | 0 | 00/8191 | *** Execute *** + 325 | 1 Uniprox.asm 307 | Empty | 11 | | 0 | 00/8191 | ozunid_19 + 326 | 1 Uniprox.asm 307 | Equivalence | 11 | | 0 | 00/8191 | EXE equ ozunid_19 + 327 | 1 Uniprox.asm 308 | Data | 11 | | 1 | 00/8191 : 03 | dfb 3 + 328 | 1 Uniprox.asm 309 | Data | 11 | | 1 | 00/8192 : 01 | dfb 1 + 329 | 1 Uniprox.asm 310 | Data | 11 | | 2 | 00/8193 : 9D 81 | dw {ozunid_22} + 330 | 1 Uniprox.asm 311 | Data | 11 | | 1 | 00/8195 : 05 | dfb {5} + 331 | 1 Uniprox.asm 312 | Comment | 11 | | 0 | 00/8196 | *** Eject *** + 332 | 1 Uniprox.asm 313 | Empty | 11 | | 0 | 00/8196 | ozunid_20 + 333 | 1 Uniprox.asm 313 | Equivalence | 11 | | 0 | 00/8196 | E_JECT equ ozunid_20 + 334 | 1 Uniprox.asm 314 | Data | 11 | | 1 | 00/8196 : 03 | dfb 3 + 335 | 1 Uniprox.asm 315 | Data | 11 | | 1 | 00/8197 : 01 | dfb 1 + 336 | 1 Uniprox.asm 316 | Data | 11 | | 2 | 00/8198 : 9B 81 | dw {ozunid_21} + 337 | 1 Uniprox.asm 317 | Data | 11 | | 1 | 00/819A : 04 | dfb {4} + 338 | 1 Uniprox.asm 318 | Comment | 11 | | 0 | 00/819B | * + 339 | 1 Uniprox.asm 319 | Comment | 11 | | 0 | 00/819B | ******** CONTROL LISTS ******** + 340 | 1 Uniprox.asm 320 | Comment | 11 | | 0 | 00/819B | * + 341 | 1 Uniprox.asm 321 | Comment | 11 | | 0 | 00/819B | * + 342 | 1 Uniprox.asm 322 | Comment | 11 | | 0 | 00/819B | *** Eject *** + 343 | 1 Uniprox.asm 323 | Empty | 11 | | 0 | 00/819B | ozunid_21 + 344 | 1 Uniprox.asm 323 | Equivalence | 11 | | 0 | 00/819B | CNTL_LIST1 equ ozunid_21 + 345 | 1 Uniprox.asm 324 | Data | 11 | | 2 | 00/819B : 00 00 | dw $0000 + 346 | 1 Uniprox.asm 325 | Comment | 11 | | 0 | 00/819D | * + 347 | 1 Uniprox.asm 326 | Comment | 11 | | 0 | 00/819D | *** Execute *** + 348 | 1 Uniprox.asm 327 | Empty | 11 | | 0 | 00/819D | ozunid_22 + 349 | 1 Uniprox.asm 327 | Equivalence | 11 | | 0 | 00/819D | CNTL_LIST2 equ ozunid_22 + 350 | 1 Uniprox.asm 328 | Data | 11 | | 1 | 00/819D : 06 | Clow_byte dfb $06 + 351 | 1 Uniprox.asm 329 | Data | 11 | | 1 | 00/819E : 00 | Chigh_byte dfb $00 + 352 | 1 Uniprox.asm 330 | Data | 11 | | 1 | 00/819F : 00 | AccValue dfb $00 + 353 | 1 Uniprox.asm 331 | Data | 11 | | 1 | 00/81A0 : 00 | X_reg dfb $00 ;($80E3) Lo Byte start $00 (Unidisk) + 354 | 1 Uniprox.asm 332 | Data | 11 | | 1 | 00/81A1 : DF | Y_reg dfb $DF ;($80E4) Hi Byte One more before start $E0 - $FF-->$00 for zero page (Unidisk) + 355 | 1 Uniprox.asm 333 | Data | 11 | | 1 | 00/81A2 : 00 | ProStatus dfb $00 + 356 | 1 Uniprox.asm 334 | Data | 11 | | 1 | 00/81A3 : 05 | LowPC_reg dfb $05 + 357 | 1 Uniprox.asm 335 | Data | 11 | | 1 | 00/81A4 : 05 | HighPC_reg dfb $05 + 358 | 1 Uniprox.asm 336 | Comment | 11 | | 0 | 00/81A5 | * + 359 | 1 Uniprox.asm 337 | Comment | 11 | | 0 | 00/81A5 | *** Set Address *** + 360 | 1 Uniprox.asm 338 | Empty | 11 | | 0 | 00/81A5 | ozunid_23 + 361 | 1 Uniprox.asm 338 | Equivalence | 11 | | 0 | 00/81A5 | CNTL_LIST3 equ ozunid_23 + 362 | 1 Uniprox.asm 339 | Data | 11 | | 1 | 00/81A5 : 02 | CountL_byte dfb $02 + 363 | 1 Uniprox.asm 340 | Data | 11 | | 1 | 00/81A6 : 00 | CountH_byte dfb $00 + 364 | 1 Uniprox.asm 341 | Data | 11 | | 1 | 00/81A7 : 05 | LByte_Addr dfb $05 + 365 | 1 Uniprox.asm 342 | Data | 11 | | 1 | 00/81A8 : 05 | HByte_Addr dfb $05 + 366 | 1 Uniprox.asm 343 | Comment | 11 | | 0 | 00/81A9 | * + 367 | 1 Uniprox.asm 344 | Comment | 11 | | 0 | 00/81A9 | *** Download *** + 368 | 1 Uniprox.asm 345 | Empty | 11 | | 0 | 00/81A9 | ozunid_24 + 369 | 1 Uniprox.asm 345 | Equivalence | 11 | | 0 | 00/81A9 | CNTL_LIST4 equ ozunid_24 + 370 | 1 Uniprox.asm 346 | Data | 11 | | 1 | 00/81A9 : 0B | LenghtL_byte dfb $0B + 371 | 1 Uniprox.asm 347 | Data | 11 | | 1 | 00/81AA : 00 | LenghtH_byte dfb $00 + 372 | 1 Uniprox.asm 348 | Comment | 11 | | 0 | 00/81AB | * + 373 | 1 Uniprox.asm 349 | Comment | 11 | | 0 | 00/81AB | *** Start UNIDISK Program *** + 374 | 1 Uniprox.asm 350 | Comment | 11 | | 0 | 00/81AB | ** Temporaney save in UNIDISK "Free zero page space" the address point stored in UNIDISK X, Y registers** + 375 | 1 Uniprox.asm 351 | Code | 11 | | 2 | 00/81AB : 86 C0 | stx $00C0 + 376 | 1 Uniprox.asm 352 | Code | 11 | | 2 | 00/81AD : 84 C1 | sty $00C1 + 377 | 1 Uniprox.asm 353 | Comment | 11 | | 0 | 00/81AF | ** Store in UNIDISK Accumulator the value of the UniDISK location that is store in $00C0 plus $00C1 + 378 | 1 Uniprox.asm 354 | Code | 11 | | 2 | 00/81AF : A0 00 | ldy #0 + 379 | 1 Uniprox.asm 355 | Code | 11 | | 2 | 00/81B1 : B1 C0 | lda ($00C0),y + 380 | 1 Uniprox.asm 356 | Comment | 11 | | 0 | 00/81B3 | ** Restore the value of Y Unidisk register + 381 | 1 Uniprox.asm 357 | Code | 11 | | 2 | 00/81B3 : A4 C1 | ldy $00C1 + 382 | 1 Uniprox.asm 358 | Code | 11 | | 1 | 00/81B5 : 60 | rts +------+-----------------------+-------------+----+---------+------+-----------------------+------------------------------------------------------------------- diff --git a/AppleII/Memory dump/Uniproz b/AppleII/Memory dump/Uniproz new file mode 100644 index 0000000000000000000000000000000000000000..a6a6dd1c9dbc2b89968827a4aa280a26f1e58a90 GIT binary patch literal 249 zcmY%BY1ojuQlXVw;a~&H#Rd?0tzprBi8W6ePV_u!c+tky_ZTdC8$>c3Y1m-C_DqAq zt-ou}g2{7W@;r!C==;0waRX3x0mDSDH?a*D4jp*L4K(LWM#F`*3<--E_Et1}U{iSe z_r-;;34ZIi))ytvuiKIBKDQXTiI7Kw6ZN=-^g}zXTt~fW9+9ce6mRB z=n#0f@;^|VVI!MFCUYyBM8bcC{|x_`|1;#UF)%ZpY+z-80%pb+4Q$MeZyMN{86PyT bvH^wvGqAEU0Wmj2+kuvYKr;?3IhX(dCs}Pk literal 0 HcmV?d00001 diff --git a/AppleII/Memory dump/Uniproz.asm b/AppleII/Memory dump/Uniproz.asm new file mode 100644 index 0000000..ec41555 --- /dev/null +++ b/AppleII/Memory dump/Uniproz.asm @@ -0,0 +1,264 @@ +* +* Unidisk 3.5 RAM Zero Page Memory Dump +* +* The target of this project is to dump all the Unidisk 3.5 memory +* +* Copyright (C) 2014 Riccardo Greco . +* +* 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 . +* +* +* @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 +CROut equ $FD8E ;Carriage return +PRbyte equ $FDDA ;Print byte in hex +** Command Code ** +StatusCmd equ 0 +** Status Code ** +StatusDIB equ 3 +StatusUNI equ 5 +* +ControlCmd equ 4 +** Control Codes ** +Run equ 5 +SetDWLoad equ 6 +DWLoad equ 7 +* + org $8000 +* +* Find a Protocol Converter in one of the slots. +* + jsr FindPC + bcs Error +* +*** Set HiMain Memory Pointers *** + lda #$20 + sta HiMain +*** Set Address *** + jsr Dispatch + dfb ControlCmd + dw SET_ADD +*** Download *** + jsr Dispatch + dfb ControlCmd + dw DOWNLOAD +*** Set and Reset LoMain Memory Counter *** +RESET ldx #$FF ;One more before start + clc + ldy Y_reg + iny + sty Y_reg +*** Execute *** +EXEC inx + stx LowMain + stx X_reg + jsr Dispatch + dfb ControlCmd + dw EXE +READ jsr Dispatch + dfb StatusCmd + dw DParms + bcs Error +* +*** Accumulator *** + lda UNIAcc_reg + jsr PRbyte +*** X Register *** + lda UNIX_reg + jsr PRbyte +*** Y Register *** + lda UNIY_reg + jsr PRbyte +*** Process Status *** + lda UNIP_val + 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 $C0 ;$FF +*** Increment HiMain *** + inc HiMain + ldy Y_reg + cpy UNIH_End + bne RESET +UNIH_End dfb $00 ;$FF +* + 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 +* +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 *** +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 +X_reg dfb $00 ;($80E3) +Y_reg dfb $FF ;($80E4) One more before start +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 $0B +LenghtH_byte dfb $00 +* +*** Start UNIDISK Program *** +** Temporaney save in UNIDISK "Free zero page space" the address point stored in UNIDISK X, Y registers** + stx $00C0 + sty $00C1 +** Store in UNIDISK Accumulator the value of the UniDISK location that is store in $00C0 plus $00C1 + ldy #0 + lda ($00C0),y +** Restore the value of Y Unidisk register + ldy $00C1 + rts \ No newline at end of file diff --git a/AppleII/Memory dump/Uniproz_Output.txt b/AppleII/Memory dump/Uniproz_Output.txt new file mode 100644 index 0000000..e9c86e2 --- /dev/null +++ b/AppleII/Memory dump/Uniproz_Output.txt @@ -0,0 +1,270 @@ +------+-----------------------+-------------+----+---------+------+-----------------------+------------------------------------------------------------------- + Line | # File Line | Line Type | MX | Reloc | Size | Address Object Code | Source Code +------+-----------------------+-------------+----+---------+------+-----------------------+------------------------------------------------------------------- + 1 | 1 Uniproz.asm 1 | Comment | 11 | | 0 | 00/8000 | * @com.wudsn.ide.asm.hardware=APPLE2 + 2 | 1 Uniproz.asm 2 | Comment | 11 | | 0 | 00/8000 | * Protocol Converter Call + 3 | 1 Uniproz.asm 3 | Directive | 11 | | 0 | 00/8000 | XC + 4 | 1 Uniproz.asm 4 | Equivalence | 11 | | 0 | 00/8000 | ZPTempL equ $0006 ;Temporary zero page storage + 5 | 1 Uniproz.asm 5 | Equivalence | 11 | | 0 | 00/8000 | ZPTempH equ $0007 + 6 | 1 Uniproz.asm 6 | Comment | 11 | | 0 | 00/8000 | *** Pointers *** + 7 | 1 Uniproz.asm 7 | Equivalence | 11 | | 0 | 00/8000 | LowMain equ $000A + 8 | 1 Uniproz.asm 8 | Equivalence | 11 | | 0 | 00/8000 | HiMain equ $000B + 9 | 1 Uniproz.asm 9 | Comment | 11 | | 0 | 00/8000 | *** Monitor routines *** + 10 | 1 Uniproz.asm 10 | Equivalence | 11 | | 0 | 00/8000 | COut equ $FDED ;Console output ASCII + 11 | 1 Uniproz.asm 11 | Equivalence | 11 | | 0 | 00/8000 | CROut equ $FD8E ;Carriage return + 12 | 1 Uniproz.asm 12 | Equivalence | 11 | | 0 | 00/8000 | PRbyte equ $FDDA ;Print byte in hex + 13 | 1 Uniproz.asm 13 | Comment | 11 | | 0 | 00/8000 | ** Command Code ** + 14 | 1 Uniproz.asm 14 | Equivalence | 11 | | 0 | 00/8000 | StatusCmd equ 0 + 15 | 1 Uniproz.asm 15 | Comment | 11 | | 0 | 00/8000 | ** Status Code ** + 16 | 1 Uniproz.asm 16 | Equivalence | 11 | | 0 | 00/8000 | StatusDIB equ 3 + 17 | 1 Uniproz.asm 17 | Equivalence | 11 | | 0 | 00/8000 | StatusUNI equ 5 + 18 | 1 Uniproz.asm 18 | Comment | 11 | | 0 | 00/8000 | * + 19 | 1 Uniproz.asm 19 | Equivalence | 11 | | 0 | 00/8000 | ControlCmd equ 4 + 20 | 1 Uniproz.asm 20 | Comment | 11 | | 0 | 00/8000 | ** Control Codes ** + 21 | 1 Uniproz.asm 21 | Equivalence | 11 | | 0 | 00/8000 | Run equ 5 + 22 | 1 Uniproz.asm 22 | Equivalence | 11 | | 0 | 00/8000 | SetDWLoad equ 6 + 23 | 1 Uniproz.asm 23 | Equivalence | 11 | | 0 | 00/8000 | DWLoad equ 7 + 24 | 1 Uniproz.asm 24 | Comment | 11 | | 0 | 00/8000 | * + 25 | 1 Uniproz.asm 25 | Directive | 11 | | 0 | 00/8000 | org $8000 + 26 | 1 Uniproz.asm 26 | Comment | 11 | | 0 | 00/8000 | * + 27 | 1 Uniproz.asm 27 | Comment | 11 | | 0 | 00/8000 | * Find a Protocol Converter in one of the slots. + 28 | 1 Uniproz.asm 28 | Comment | 11 | | 0 | 00/8000 | * + 29 | 1 Uniproz.asm 29 | Code | 11 | | 3 | 00/8000 : 20 8C 80 | jsr {ozunid_4} + 30 | 1 Uniproz.asm 30 | Code | 11 | | 2 | 00/8003 : B0 65 | bcs {ozunid_1} + 31 | 1 Uniproz.asm 31 | Comment | 11 | | 0 | 00/8005 | * + 32 | 1 Uniproz.asm 32 | Comment | 11 | | 0 | 00/8005 | *** Set HiMain Memory Pointers *** + 33 | 1 Uniproz.asm 33 | Code | 11 | | 2 | 00/8005 : A9 20 | lda #$20 + 34 | 1 Uniproz.asm 34 | Code | 11 | | 2 | 00/8007 : 85 0B | sta {$000B} + 35 | 1 Uniproz.asm 35 | Comment | 11 | | 0 | 00/8009 | *** Set Address *** + 36 | 1 Uniproz.asm 36 | Code | 11 | | 3 | 00/8009 : 20 C1 80 | jsr {ozunid_9} + 37 | 1 Uniproz.asm 37 | Data | 11 | | 1 | 00/800C : 04 | dfb {4} + 38 | 1 Uniproz.asm 38 | Data | 11 | | 2 | 00/800D : D1 80 | dw {ozunid_12} + 39 | 1 Uniproz.asm 39 | Comment | 11 | | 0 | 00/800F | *** Download *** + 40 | 1 Uniproz.asm 40 | Code | 11 | | 3 | 00/800F : 20 C1 80 | jsr {ozunid_9} + 41 | 1 Uniproz.asm 41 | Data | 11 | | 1 | 00/8012 : 04 | dfb {4} + 42 | 1 Uniproz.asm 42 | Data | 11 | | 2 | 00/8013 : D6 80 | dw {ozunid_13} + 43 | 1 Uniproz.asm 43 | Comment | 11 | | 0 | 00/8015 | *** Set and Reset LoMain Memory Counter *** + 44 | 1 Uniproz.asm 44 | Code | 11 | | 2 | 00/8015 : A2 FF | RESET ldx #$FF ;One more before start + 45 | 1 Uniproz.asm 45 | Code | 11 | | 1 | 00/8017 : 18 | clc + 46 | 1 Uniproz.asm 46 | Code | 11 | | 3 | 00/8018 : AC E4 80 | ldy Y_reg + 47 | 1 Uniproz.asm 47 | Code | 11 | | 1 | 00/801B : C8 | iny + 48 | 1 Uniproz.asm 48 | Code | 11 | | 3 | 00/801C : 8C E4 80 | sty Y_reg + 49 | 1 Uniproz.asm 49 | Comment | 11 | | 0 | 00/801F | *** Execute *** + 50 | 1 Uniproz.asm 50 | Code | 11 | | 1 | 00/801F : E8 | EXEC inx + 51 | 1 Uniproz.asm 51 | Code | 11 | | 2 | 00/8020 : 86 0A | stx {$000A} + 52 | 1 Uniproz.asm 52 | Code | 11 | | 3 | 00/8022 : 8E E3 80 | stx X_reg + 53 | 1 Uniproz.asm 53 | Code | 11 | | 3 | 00/8025 : 20 C1 80 | jsr {ozunid_9} + 54 | 1 Uniproz.asm 54 | Data | 11 | | 1 | 00/8028 : 04 | dfb {4} + 55 | 1 Uniproz.asm 55 | Data | 11 | | 2 | 00/8029 : DB 80 | dw {ozunid_14} + 56 | 1 Uniproz.asm 56 | Code | 11 | | 3 | 00/802B : 20 C1 80 | READ jsr {ozunid_9} + 57 | 1 Uniproz.asm 57 | Data | 11 | | 1 | 00/802E : 00 | dfb {0} + 58 | 1 Uniproz.asm 58 | Data | 11 | | 2 | 00/802F : C4 80 | dw {ozunid_10} + 59 | 1 Uniproz.asm 59 | Code | 11 | | 2 | 00/8031 : B0 37 | bcs {ozunid_1} + 60 | 1 Uniproz.asm 60 | Comment | 11 | | 0 | 00/8033 | * + 61 | 1 Uniproz.asm 61 | Comment | 11 | | 0 | 00/8033 | *** Accumulator *** + 62 | 1 Uniproz.asm 62 | Code | 11 | | 3 | 00/8033 : AD CC 80 | lda UNIAcc_reg + 63 | 1 Uniproz.asm 63 | Code | 11 | | 3 | 00/8036 : 20 DA FD | jsr {$FDDA} + 64 | 1 Uniproz.asm 64 | Comment | 11 | | 0 | 00/8039 | *** X Register *** + 65 | 1 Uniproz.asm 65 | Code | 11 | | 3 | 00/8039 : AD CD 80 | lda UNIX_reg + 66 | 1 Uniproz.asm 66 | Code | 11 | | 3 | 00/803C : 20 DA FD | jsr {$FDDA} + 67 | 1 Uniproz.asm 67 | Comment | 11 | | 0 | 00/803F | *** Y Register *** + 68 | 1 Uniproz.asm 68 | Code | 11 | | 3 | 00/803F : AD CE 80 | lda UNIY_reg + 69 | 1 Uniproz.asm 69 | Code | 11 | | 3 | 00/8042 : 20 DA FD | jsr {$FDDA} + 70 | 1 Uniproz.asm 70 | Comment | 11 | | 0 | 00/8045 | *** Prrocess Status *** + 71 | 1 Uniproz.asm 71 | Code | 11 | | 3 | 00/8045 : AD CF 80 | lda UNIP_val + 72 | 1 Uniproz.asm 72 | Code | 11 | | 3 | 00/8048 : 20 DA FD | jsr {$FDDA} + 73 | 1 Uniproz.asm 73 | Code | 11 | | 3 | 00/804B : 20 8E FD | jsr {$FD8E} + 74 | 1 Uniproz.asm 74 | Comment | 11 | | 0 | 00/804E | **** Store in //c Main Memory **** + 75 | 1 Uniproz.asm 75 | Code | 11 | | 3 | 00/804E : AE E3 80 | ldx X_reg + 76 | 1 Uniproz.asm 76 | Code | 11 | | 3 | 00/8051 : AD CC 80 | lda UNIAcc_reg ;#$FB Test + 77 | 1 Uniproz.asm 77 | Code | 11 | | 2 | 00/8054 : A0 00 | ldy #0 + 78 | 1 Uniproz.asm 78 | Code | 11 | | 2 | 00/8056 : 91 0A | sta ({$000A}),y + 79 | 1 Uniproz.asm 79 | Code | 11 | | 3 | 00/8058 : EC 5D 80 | cpx UNIL_End + 80 | 1 Uniproz.asm 80 | Code | 11 | | 2 | 00/805B : D0 C2 | bne EXEC + 81 | 1 Uniproz.asm 81 | Data | 11 | | 1 | 00/805D : C0 | UNIL_End dfb $C0 ;$FF + 82 | 1 Uniproz.asm 82 | Comment | 11 | | 0 | 00/805E | *** Increment HiMain *** + 83 | 1 Uniproz.asm 83 | Code | 11 | | 2 | 00/805E : E6 0B | inc {$000B} + 84 | 1 Uniproz.asm 84 | Code | 11 | | 3 | 00/8060 : AC E4 80 | ldy Y_reg + 85 | 1 Uniproz.asm 85 | Code | 11 | | 3 | 00/8063 : CC 68 80 | cpy UNIH_End + 86 | 1 Uniproz.asm 86 | Code | 11 | | 2 | 00/8066 : D0 AD | bne RESET + 87 | 1 Uniproz.asm 87 | Data | 11 | | 1 | 00/8068 : 00 | UNIH_End dfb $00 ;$FF + 88 | 1 Uniproz.asm 88 | Comment | 11 | | 0 | 00/8069 | * + 89 | 1 Uniproz.asm 89 | Code | 11 | | 1 | 00/8069 : 60 | rts + 90 | 1 Uniproz.asm 90 | Comment | 11 | | 0 | 00/806A | * + 91 | 1 Uniproz.asm 91 | Empty | 11 | | 0 | 00/806A | ozunid_1 + 92 | 1 Uniproz.asm 91 | Equivalence | 11 | | 0 | 00/806A | Error equ ozunid_1 + 93 | 1 Uniproz.asm 92 | Comment | 11 | | 0 | 00/806A | * + 94 | 1 Uniproz.asm 93 | Comment | 11 | | 0 | 00/806A | * There's either no PC around, or there was no give message + 95 | 1 Uniproz.asm 94 | Comment | 11 | | 0 | 00/806A | * + 96 | 1 Uniproz.asm 95 | Code | 11 | | 2 | 00/806A : A2 00 | ldx #0 + 97 | 1 Uniproz.asm 96 | Empty | 11 | | 0 | 00/806C | ozunid_2 + 98 | 1 Uniproz.asm 96 | Equivalence | 11 | | 0 | 00/806C | err1 equ ozunid_2 + 99 | 1 Uniproz.asm 97 | Code | 11 | | 3 | 00/806C : BD 78 80 | lda Message,x + 100 | 1 Uniproz.asm 98 | Code | 11 | | 2 | 00/806F : F0 06 | beq {ozunid_3} + 101 | 1 Uniproz.asm 99 | Code | 11 | | 3 | 00/8071 : 20 ED FD | jsr {$FDED} + 102 | 1 Uniproz.asm 100 | Code | 11 | | 1 | 00/8074 : E8 | inx + 103 | 1 Uniproz.asm 101 | Code | 11 | | 2 | 00/8075 : D0 F5 | bne {ozunid_2} + 104 | 1 Uniproz.asm 102 | Comment | 11 | | 0 | 00/8077 | * + 105 | 1 Uniproz.asm 103 | Empty | 11 | | 0 | 00/8077 | ozunid_3 + 106 | 1 Uniproz.asm 103 | Equivalence | 11 | | 0 | 00/8077 | errout equ ozunid_3 + 107 | 1 Uniproz.asm 104 | Code | 11 | | 1 | 00/8077 : 60 | rts + 108 | 1 Uniproz.asm 105 | Comment | 11 | | 0 | 00/8078 | * + 109 | 1 Uniproz.asm 106 | Data | 11 | | 18 | 00/8078 : 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 | + 110 | 1 Uniproz.asm 107 | Data | 11 | | 2 | 00/808A : 8D 00 | dfb $8D,0 + 111 | 1 Uniproz.asm 108 | Comment | 11 | | 0 | 00/808C | * + 112 | 1 Uniproz.asm 109 | Empty | 11 | | 0 | 00/808C | ozunid_4 + 113 | 1 Uniproz.asm 109 | Equivalence | 11 | | 0 | 00/808C | FindPC equ ozunid_4 + 114 | 1 Uniproz.asm 110 | Comment | 11 | | 0 | 00/808C | * + 115 | 1 Uniproz.asm 111 | Comment | 11 | | 0 | 00/808C | * Search slot 7 to slot 1 looking for signature bytes + 116 | 1 Uniproz.asm 112 | Comment | 11 | | 0 | 00/808C | * + 117 | 1 Uniproz.asm 113 | Code | 11 | | 2 | 00/808C : A2 07 | ldx #7 ;Do for seven slots + 118 | 1 Uniproz.asm 114 | Code | 11 | | 2 | 00/808E : A9 C7 | lda #$C7 + 119 | 1 Uniproz.asm 115 | Code | 11 | | 2 | 00/8090 : 85 07 | sta {$0007} + 120 | 1 Uniproz.asm 116 | Code | 11 | | 2 | 00/8092 : A9 00 | lda #$00 + 121 | 1 Uniproz.asm 117 | Code | 11 | | 2 | 00/8094 : 85 06 | sta {$0006} + 122 | 1 Uniproz.asm 118 | Comment | 11 | | 0 | 00/8096 | * + 123 | 1 Uniproz.asm 119 | Empty | 11 | | 0 | 00/8096 | ozunid_5 + 124 | 1 Uniproz.asm 119 | Equivalence | 11 | | 0 | 00/8096 | newslot equ ozunid_5 + 125 | 1 Uniproz.asm 120 | Code | 11 | | 2 | 00/8096 : A0 07 | ldy #7 + 126 | 1 Uniproz.asm 121 | Comment | 11 | | 0 | 00/8098 | * + 127 | 1 Uniproz.asm 122 | Empty | 11 | | 0 | 00/8098 | ozunid_6 + 128 | 1 Uniproz.asm 122 | Equivalence | 11 | | 0 | 00/8098 | again equ ozunid_6 + 129 | 1 Uniproz.asm 123 | Code | 11 | | 2 | 00/8098 : B1 06 | lda ({$0006}),y + 130 | 1 Uniproz.asm 124 | Code | 11 | | 3 | 00/809A : D9 B9 80 | cmp sigtab,y ;One for byte signature + 131 | 1 Uniproz.asm 125 | Code | 11 | | 2 | 00/809D : F0 07 | beq {ozunid_7} ;Found one signature byte + 132 | 1 Uniproz.asm 126 | Code | 11 | | 2 | 00/809F : C6 07 | dec {$0007} + 133 | 1 Uniproz.asm 127 | Code | 11 | | 1 | 00/80A1 : CA | dex + 134 | 1 Uniproz.asm 128 | Code | 11 | | 2 | 00/80A2 : D0 F2 | bne {ozunid_5} + 135 | 1 Uniproz.asm 129 | Comment | 11 | | 0 | 00/80A4 | * + 136 | 1 Uniproz.asm 130 | Comment | 11 | | 0 | 00/80A4 | * if we get here, no PC find + 137 | 1 Uniproz.asm 131 | Code | 11 | | 1 | 00/80A4 : 38 | sec + 138 | 1 Uniproz.asm 132 | Code | 11 | | 1 | 00/80A5 : 60 | rts + 139 | 1 Uniproz.asm 133 | Comment | 11 | | 0 | 00/80A6 | * + 140 | 1 Uniproz.asm 134 | Comment | 11 | | 0 | 00/80A6 | * if we get here, no byte find on PC + 141 | 1 Uniproz.asm 135 | Empty | 11 | | 0 | 00/80A6 | ozunid_7 + 142 | 1 Uniproz.asm 135 | Equivalence | 11 | | 0 | 00/80A6 | maybe equ ozunid_7 + 143 | 1 Uniproz.asm 136 | Code | 11 | | 1 | 00/80A6 : 88 | dey + 144 | 1 Uniproz.asm 137 | Code | 11 | | 1 | 00/80A7 : 88 | dey ;if N=1 then all sig bytes OK + 145 | 1 Uniproz.asm 138 | Code | 11 | | 2 | 00/80A8 : 10 EE | bpl {ozunid_6} + 146 | 1 Uniproz.asm 139 | Comment | 11 | | 0 | 00/80AA | * Found PC interface. Set up call address. + 147 | 1 Uniproz.asm 140 | Comment | 11 | | 0 | 00/80AA | * we already have high byte ($CN), we need low byte + 148 | 1 Uniproz.asm 141 | Comment | 11 | | 0 | 00/80AA | * + 149 | 1 Uniproz.asm 142 | Empty | 11 | | 0 | 00/80AA | ozunid_8 + 150 | 1 Uniproz.asm 142 | Equivalence | 11 | | 0 | 00/80AA | foundPC equ ozunid_8 + 151 | 1 Uniproz.asm 143 | Code | 11 | | 2 | 00/80AA : A9 FF | lda #$FF + 152 | 1 Uniproz.asm 144 | Code | 11 | | 2 | 00/80AC : 85 06 | sta {$0006} + 153 | 1 Uniproz.asm 145 | Code | 11 | | 2 | 00/80AE : A0 00 | ldy #0 ;For indirect load + 154 | 1 Uniproz.asm 146 | Code | 11 | | 2 | 00/80B0 : B1 06 | lda ({$0006}),y ;Get the byte + 155 | 1 Uniproz.asm 147 | Comment | 11 | | 0 | 00/80B2 | * + 156 | 1 Uniproz.asm 148 | Comment | 11 | | 0 | 00/80B2 | * Now the Acc has the low oreder ProDOS entry point. + 157 | 1 Uniproz.asm 149 | Comment | 11 | | 0 | 00/80B2 | * The PC entry is three locations past this ... + 158 | 1 Uniproz.asm 150 | Comment | 11 | | 0 | 00/80B2 | * + 159 | 1 Uniproz.asm 151 | Code | 11 | | 1 | 00/80B2 : 18 | clc + 160 | 1 Uniproz.asm 152 | Code | 11 | | 2 | 00/80B3 : 69 03 | adc #3 + 161 | 1 Uniproz.asm 153 | Code | 11 | | 2 | 00/80B5 : 85 06 | sta {$0006} + 162 | 1 Uniproz.asm 154 | Comment | 11 | | 0 | 00/80B7 | * + 163 | 1 Uniproz.asm 155 | Comment | 11 | | 0 | 00/80B7 | * Now ZPTempL has PC entry point. + 164 | 1 Uniproz.asm 156 | Comment | 11 | | 0 | 00/80B7 | * Return with carry clear. + 165 | 1 Uniproz.asm 157 | Comment | 11 | | 0 | 00/80B7 | * + 166 | 1 Uniproz.asm 158 | Code | 11 | | 1 | 00/80B7 : 18 | clc + 167 | 1 Uniproz.asm 159 | Code | 11 | | 1 | 00/80B8 : 60 | rts + 168 | 1 Uniproz.asm 160 | Comment | 11 | | 0 | 00/80B9 | * + 169 | 1 Uniproz.asm 161 | Comment | 11 | | 0 | 00/80B9 | * There are the PC signature bytes in their relative order. + 170 | 1 Uniproz.asm 162 | Comment | 11 | | 0 | 00/80B9 | * The $FF bytes are filler bytes and are not compared. + 171 | 1 Uniproz.asm 163 | Comment | 11 | | 0 | 00/80B9 | * + 172 | 1 Uniproz.asm 164 | Data | 11 | | 4 | 00/80B9 : FF 20 FF 00 | sigtab dfb $FF,$20,$FF,$00 + 173 | 1 Uniproz.asm 165 | Data | 11 | | 4 | 00/80BD : FF 03 FF 00 | dfb $FF,$03,$FF,$00 + 174 | 1 Uniproz.asm 166 | Comment | 11 | | 0 | 00/80C1 | * + 175 | 1 Uniproz.asm 167 | Empty | 11 | | 0 | 00/80C1 | ozunid_9 + 176 | 1 Uniproz.asm 167 | Equivalence | 11 | | 0 | 00/80C1 | Dispatch equ ozunid_9 + 177 | 1 Uniproz.asm 168 | Code | 11 | | 3 | 00/80C1 : 6C 06 00 | jmp ({$0006}) ;Simulate an indirect JSR to PC + 178 | 1 Uniproz.asm 169 | Comment | 11 | | 0 | 00/80C4 | *** Status Parameter Set *** + 179 | 1 Uniproz.asm 170 | Empty | 11 | | 0 | 00/80C4 | ozunid_10 + 180 | 1 Uniproz.asm 170 | Equivalence | 11 | | 0 | 00/80C4 | DParms equ ozunid_10 + 181 | 1 Uniproz.asm 171 | Data | 11 | | 1 | 00/80C4 : 03 | DPParmsCt dfb 3 ;Status calls have three parameters + 182 | 1 Uniproz.asm 172 | Data | 11 | | 1 | 00/80C5 : 01 | DPUnit dfb 1 + 183 | 1 Uniproz.asm 173 | Data | 11 | | 2 | 00/80C6 : C9 80 | DPBuffer dw {ozunid_11} + 184 | 1 Uniproz.asm 174 | Data | 11 | | 1 | 00/80C8 : 05 | DPStatCode dfb {5} + 185 | 1 Uniproz.asm 175 | Comment | 11 | | 0 | 00/80C9 | * + 186 | 1 Uniproz.asm 176 | Comment | 11 | | 0 | 00/80C9 | * + 187 | 1 Uniproz.asm 177 | Comment | 11 | | 0 | 00/80C9 | *** Status List UNI *** + 188 | 1 Uniproz.asm 178 | Empty | 11 | | 0 | 00/80C9 | ozunid_11 + 189 | 1 Uniproz.asm 178 | Equivalence | 11 | | 0 | 00/80C9 | UNI equ ozunid_11 + 190 | 1 Uniproz.asm 179 | Data | 11 | | 1 | 00/80C9 : 00 | dfb 0 + 191 | 1 Uniproz.asm 180 | Data | 11 | | 1 | 00/80CA : 00 | UNIError dfb 0 + 192 | 1 Uniproz.asm 181 | Data | 11 | | 1 | 00/80CB : 00 | UNIRetries dfb 0 + 193 | 1 Uniproz.asm 182 | Data | 11 | | 1 | 00/80CC : 00 | UNIAcc_reg dfb 0 + 194 | 1 Uniproz.asm 183 | Data | 11 | | 1 | 00/80CD : 00 | UNIX_reg dfb 0 + 195 | 1 Uniproz.asm 184 | Data | 11 | | 1 | 00/80CE : 00 | UNIY_reg dfb 0 + 196 | 1 Uniproz.asm 185 | Data | 11 | | 1 | 00/80CF : 00 | UNIP_val dfb 0 + 197 | 1 Uniproz.asm 186 | Data | 11 | | 1 | 00/80D0 : 00 | HHH dfb 0 + 198 | 1 Uniproz.asm 187 | Comment | 11 | | 0 | 00/80D1 | * + 199 | 1 Uniproz.asm 188 | Comment | 11 | | 0 | 00/80D1 | *** Set Address *** + 200 | 1 Uniproz.asm 189 | Empty | 11 | | 0 | 00/80D1 | ozunid_12 + 201 | 1 Uniproz.asm 189 | Equivalence | 11 | | 0 | 00/80D1 | SET_ADD equ ozunid_12 + 202 | 1 Uniproz.asm 190 | Data | 11 | | 1 | 00/80D1 : 03 | dfb 3 + 203 | 1 Uniproz.asm 191 | Data | 11 | | 1 | 00/80D2 : 01 | dfb 1 + 204 | 1 Uniproz.asm 192 | Data | 11 | | 2 | 00/80D3 : E8 80 | dw {ozunid_16} + 205 | 1 Uniproz.asm 193 | Data | 11 | | 1 | 00/80D5 : 06 | dfb {6} + 206 | 1 Uniproz.asm 194 | Comment | 11 | | 0 | 00/80D6 | * + 207 | 1 Uniproz.asm 195 | Comment | 11 | | 0 | 00/80D6 | *** Download *** + 208 | 1 Uniproz.asm 196 | Empty | 11 | | 0 | 00/80D6 | ozunid_13 + 209 | 1 Uniproz.asm 196 | Equivalence | 11 | | 0 | 00/80D6 | DOWNLOAD equ ozunid_13 + 210 | 1 Uniproz.asm 197 | Data | 11 | | 1 | 00/80D6 : 03 | dfb 3 + 211 | 1 Uniproz.asm 198 | Data | 11 | | 1 | 00/80D7 : 01 | dfb 1 + 212 | 1 Uniproz.asm 199 | Data | 11 | | 2 | 00/80D8 : EC 80 | dw {ozunid_17} + 213 | 1 Uniproz.asm 200 | Data | 11 | | 1 | 00/80DA : 07 | dfb {7} + 214 | 1 Uniproz.asm 201 | Comment | 11 | | 0 | 00/80DB | * + 215 | 1 Uniproz.asm 202 | Comment | 11 | | 0 | 00/80DB | *** Execute *** + 216 | 1 Uniproz.asm 203 | Empty | 11 | | 0 | 00/80DB | ozunid_14 + 217 | 1 Uniproz.asm 203 | Equivalence | 11 | | 0 | 00/80DB | EXE equ ozunid_14 + 218 | 1 Uniproz.asm 204 | Data | 11 | | 1 | 00/80DB : 03 | dfb 3 + 219 | 1 Uniproz.asm 205 | Data | 11 | | 1 | 00/80DC : 01 | dfb 1 + 220 | 1 Uniproz.asm 206 | Data | 11 | | 2 | 00/80DD : E0 80 | dw {ozunid_15} + 221 | 1 Uniproz.asm 207 | Data | 11 | | 1 | 00/80DF : 05 | dfb {5} + 222 | 1 Uniproz.asm 208 | Comment | 11 | | 0 | 00/80E0 | * + 223 | 1 Uniproz.asm 209 | Comment | 11 | | 0 | 00/80E0 | * + 224 | 1 Uniproz.asm 210 | Comment | 11 | | 0 | 00/80E0 | ******** CONTROL LISTS ******** + 225 | 1 Uniproz.asm 211 | Comment | 11 | | 0 | 00/80E0 | * + 226 | 1 Uniproz.asm 212 | Comment | 11 | | 0 | 00/80E0 | * + 227 | 1 Uniproz.asm 213 | Comment | 11 | | 0 | 00/80E0 | *** Execute *** + 228 | 1 Uniproz.asm 214 | Empty | 11 | | 0 | 00/80E0 | ozunid_15 + 229 | 1 Uniproz.asm 214 | Equivalence | 11 | | 0 | 00/80E0 | CNTL_LIST2 equ ozunid_15 + 230 | 1 Uniproz.asm 215 | Data | 11 | | 1 | 00/80E0 : 06 | Clow_byte dfb $06 + 231 | 1 Uniproz.asm 216 | Data | 11 | | 1 | 00/80E1 : 00 | Chigh_byte dfb $00 + 232 | 1 Uniproz.asm 217 | Data | 11 | | 1 | 00/80E2 : 00 | AccValue dfb $00 + 233 | 1 Uniproz.asm 218 | Data | 11 | | 1 | 00/80E3 : 00 | X_reg dfb $00 ;($80E3) + 234 | 1 Uniproz.asm 219 | Data | 11 | | 1 | 00/80E4 : FF | Y_reg dfb $FF ;($80E4) One more before start + 235 | 1 Uniproz.asm 220 | Data | 11 | | 1 | 00/80E5 : 00 | ProStatus dfb $00 + 236 | 1 Uniproz.asm 221 | Data | 11 | | 1 | 00/80E6 : 05 | LowPC_reg dfb $05 + 237 | 1 Uniproz.asm 222 | Data | 11 | | 1 | 00/80E7 : 05 | HighPC_reg dfb $05 + 238 | 1 Uniproz.asm 223 | Comment | 11 | | 0 | 00/80E8 | * + 239 | 1 Uniproz.asm 224 | Comment | 11 | | 0 | 00/80E8 | *** Set Address *** + 240 | 1 Uniproz.asm 225 | Empty | 11 | | 0 | 00/80E8 | ozunid_16 + 241 | 1 Uniproz.asm 225 | Equivalence | 11 | | 0 | 00/80E8 | CNTL_LIST3 equ ozunid_16 + 242 | 1 Uniproz.asm 226 | Data | 11 | | 1 | 00/80E8 : 02 | CountL_byte dfb $02 + 243 | 1 Uniproz.asm 227 | Data | 11 | | 1 | 00/80E9 : 00 | CountH_byte dfb $00 + 244 | 1 Uniproz.asm 228 | Data | 11 | | 1 | 00/80EA : 05 | LByte_Addr dfb $05 + 245 | 1 Uniproz.asm 229 | Data | 11 | | 1 | 00/80EB : 05 | HByte_Addr dfb $05 + 246 | 1 Uniproz.asm 230 | Comment | 11 | | 0 | 00/80EC | * + 247 | 1 Uniproz.asm 231 | Comment | 11 | | 0 | 00/80EC | *** Download *** + 248 | 1 Uniproz.asm 232 | Empty | 11 | | 0 | 00/80EC | ozunid_17 + 249 | 1 Uniproz.asm 232 | Equivalence | 11 | | 0 | 00/80EC | CNTL_LIST4 equ ozunid_17 + 250 | 1 Uniproz.asm 233 | Data | 11 | | 1 | 00/80EC : 0B | LenghtL_byte dfb $0B + 251 | 1 Uniproz.asm 234 | Data | 11 | | 1 | 00/80ED : 00 | LenghtH_byte dfb $00 + 252 | 1 Uniproz.asm 235 | Comment | 11 | | 0 | 00/80EE | * + 253 | 1 Uniproz.asm 236 | Comment | 11 | | 0 | 00/80EE | *** Start UNIDISK Program *** + 254 | 1 Uniproz.asm 237 | Comment | 11 | | 0 | 00/80EE | ** Temporaney save in UNIDISK "Free zero page space" the address point stored in UNIDISK X, Y registers** + 255 | 1 Uniproz.asm 238 | Code | 11 | | 2 | 00/80EE : 86 C0 | stx $00C0 + 256 | 1 Uniproz.asm 239 | Code | 11 | | 2 | 00/80F0 : 84 C1 | sty $00C1 + 257 | 1 Uniproz.asm 240 | Comment | 11 | | 0 | 00/80F2 | ** Store in UNIDISK Accumulator the value of the UniDISK location that is store in $00C0 plus $00C1 + 258 | 1 Uniproz.asm 241 | Code | 11 | | 2 | 00/80F2 : A0 00 | ldy #0 + 259 | 1 Uniproz.asm 242 | Code | 11 | | 2 | 00/80F4 : B1 C0 | lda ($00C0),y + 260 | 1 Uniproz.asm 243 | Comment | 11 | | 0 | 00/80F6 | ** Restore the value of Y Unidisk register + 261 | 1 Uniproz.asm 244 | Code | 11 | | 2 | 00/80F6 : A4 C1 | ldy $00C1 + 262 | 1 Uniproz.asm 245 | Code | 11 | | 1 | 00/80F8 : 60 | rts +------+-----------------------+-------------+----+---------+------+-----------------------+------------------------------------------------------------------- diff --git a/AppleII/N integer adc 2 Byte/TestN b/AppleII/N integer adc 2 Byte/TestN new file mode 100644 index 0000000..e511c2a --- /dev/null +++ b/AppleII/N integer adc 2 Byte/TestN @@ -0,0 +1,2 @@ +HĭIťąŅ +:¥ŅL+:ée…eŅĥÅL` \ No newline at end of file diff --git a/AppleII/N integer adc 2 Byte/TestN.asm b/AppleII/N integer adc 2 Byte/TestN.asm new file mode 100644 index 0000000..908e421 --- /dev/null +++ b/AppleII/N integer adc 2 Byte/TestN.asm @@ -0,0 +1,71 @@ +* @com.wudsn.ide.asm.hardware=APPLE2 +*** Start UNIDISK Program *** +** Two byte adc ** + org $300 +RSLTU equ $C0 +NDEC equ $C2 +N equ $C4 + +** Save the N number ** + lda N1U + sta N + lda N1U+1 + sta N+1 +** Set RSLTU=N ** + lda N + sta RSLTU ; N Lo + lda N+1 + sta RSLTU+1 ; N Hi + +LOOP lda N + + beq HI ; If NLo =0 dec NHi + +** Set NDEC=N-1 Lo ** + dec A + sta NDEC ; N-1 Lo +** Set NDEC=N Hi ** + lda N+1 + sta NDEC+1 ; NHi = NDEC Hi + + jmp ENTRY + +** Set NDEC=N-1 Hi ** +HI lda N+1 + + beq DONE ; If also NHi =0 done + + dec A + sta NDEC+1 ; N-1 Hi + + lda #$FF + sta NDEC ; N-1 Lo = FF Set NDEC to FF + +ENTRY clc + + lda RSLTU ; Lo Byte + adc NDEC ; N+(N-1) + sta RSLTU + + lda RSLTU+1 ; Hi Byte + adc NDEC+1 ; N+(N-1) + sta RSLTU+1 + +** Update N=NDEC ** + lda NDEC + sta N + lda NDEC+1 + sta N+1 + + jmp LOOP + +** Output Data ** +DONE ldx RSLTU + ldy RSLTU+1 + + rts + + +** Input Dynamic Data append in the end of Unidisk routine ** +N1U dfb $FF + dfb $FF \ No newline at end of file diff --git a/AppleII/N integer adc 2 Byte/TestN_Output.txt b/AppleII/N integer adc 2 Byte/TestN_Output.txt new file mode 100644 index 0000000..13e91db --- /dev/null +++ b/AppleII/N integer adc 2 Byte/TestN_Output.txt @@ -0,0 +1,75 @@ +------+---------------------+-------------+----+---------+------+-----------------------+------------------------------------------------------------------- + Line | # File Line | Line Type | MX | Reloc | Size | Address Object Code | Source Code +------+---------------------+-------------+----+---------+------+-----------------------+------------------------------------------------------------------- + 1 | 1 TestN.asm 1 | Comment | 11 | | 0 | 00/8000 | * @com.wudsn.ide.asm.hardware=APPLE2 + 2 | 1 TestN.asm 2 | Comment | 11 | | 0 | 00/8000 | *** Start UNIDISK Program *** + 3 | 1 TestN.asm 3 | Comment | 11 | | 0 | 00/8000 | ** Two byte adc ** + 4 | 1 TestN.asm 4 | Directive | 11 | | 0 | 00/8000 | org $300 + 5 | 1 TestN.asm 5 | Equivalence | 11 | | 0 | 00/0300 | RSLTU equ $C0 + 6 | 1 TestN.asm 6 | Equivalence | 11 | | 0 | 00/0300 | NDEC equ $C2 + 7 | 1 TestN.asm 7 | Equivalence | 11 | | 0 | 00/0300 | N equ $C4 + 8 | 1 TestN.asm 8 | Empty | 11 | | 0 | 00/0300 | + 9 | 1 TestN.asm 9 | Comment | 11 | | 0 | 00/0300 | ** Save the N number ** + 10 | 1 TestN.asm 10 | Code | 11 | | 3 | 00/0300 : AD 48 03 | lda N1U + 11 | 1 TestN.asm 11 | Code | 11 | | 2 | 00/0303 : 85 C4 | sta {$C4} + 12 | 1 TestN.asm 12 | Code | 11 | | 3 | 00/0305 : AD 49 03 | lda N1U+1 + 13 | 1 TestN.asm 13 | Code | 11 | | 2 | 00/0308 : 85 C5 | sta {$C4}+1 + 14 | 1 TestN.asm 14 | Comment | 11 | | 0 | 00/030A | ** Set RSLTU=N ** + 15 | 1 TestN.asm 15 | Code | 11 | | 2 | 00/030A : A5 C4 | lda {$C4} + 16 | 1 TestN.asm 16 | Code | 11 | | 2 | 00/030C : 85 C0 | sta {$C0} ; N Lo + 17 | 1 TestN.asm 17 | Code | 11 | | 2 | 00/030E : A5 C5 | lda {$C4}+1 + 18 | 1 TestN.asm 18 | Code | 11 | | 2 | 00/0310 : 85 C1 | sta {$C0}+1 ; N Hi + 19 | 1 TestN.asm 19 | Empty | 11 | | 0 | 00/0312 | + 20 | 1 TestN.asm 20 | Code | 11 | | 2 | 00/0312 : A5 C4 | LOOP lda {$C4} + 21 | 1 TestN.asm 21 | Empty | 11 | | 0 | 00/0314 | + 22 | 1 TestN.asm 22 | Code | 11 | | 2 | 00/0314 : F0 0A | beq HI ; If NLo =0 dec NHi + 23 | 1 TestN.asm 23 | Empty | 11 | | 0 | 00/0316 | + 24 | 1 TestN.asm 24 | Comment | 11 | | 0 | 00/0316 | ** Set NDEC=N-1 Lo ** + 25 | 1 TestN.asm 25 | Code | 11 | | 1 | 00/0316 : 3A | dec A + 26 | 1 TestN.asm 26 | Code | 11 | | 2 | 00/0317 : 85 C2 | sta {$C2} ; N-1 Lo + 27 | 1 TestN.asm 27 | Comment | 11 | | 0 | 00/0319 | ** Set NDEC=N Hi ** + 28 | 1 TestN.asm 28 | Code | 11 | | 2 | 00/0319 : A5 C5 | lda {$C4}+1 + 29 | 1 TestN.asm 29 | Code | 11 | | 2 | 00/031B : 85 C3 | sta {$C2}+1 ; NHi = NDEC Hi + 30 | 1 TestN.asm 30 | Empty | 11 | | 0 | 00/031D | + 31 | 1 TestN.asm 31 | Code | 11 | | 3 | 00/031D : 4C 2B 03 | jmp ENTRY + 32 | 1 TestN.asm 32 | Empty | 11 | | 0 | 00/0320 | + 33 | 1 TestN.asm 33 | Comment | 11 | | 0 | 00/0320 | ** Set NDEC=N-1 Hi ** + 34 | 1 TestN.asm 34 | Code | 11 | | 2 | 00/0320 : A5 C5 | HI lda {$C4}+1 + 35 | 1 TestN.asm 35 | Empty | 11 | | 0 | 00/0322 | + 36 | 1 TestN.asm 36 | Code | 11 | | 2 | 00/0322 : F0 1F | beq DONE ; If also NHi =0 done + 37 | 1 TestN.asm 37 | Empty | 11 | | 0 | 00/0324 | + 38 | 1 TestN.asm 38 | Code | 11 | | 1 | 00/0324 : 3A | dec A + 39 | 1 TestN.asm 39 | Code | 11 | | 2 | 00/0325 : 85 C3 | sta {$C2}+1 ; N-1 Hi + 40 | 1 TestN.asm 40 | Empty | 11 | | 0 | 00/0327 | + 41 | 1 TestN.asm 41 | Code | 11 | | 2 | 00/0327 : A9 FF | lda #$FF + 42 | 1 TestN.asm 42 | Code | 11 | | 2 | 00/0329 : 85 C2 | sta {$C2} ; N-1 Lo = FF Set NDEC to FF + 43 | 1 TestN.asm 43 | Empty | 11 | | 0 | 00/032B | + 44 | 1 TestN.asm 44 | Code | 11 | | 1 | 00/032B : 18 | ENTRY clc + 45 | 1 TestN.asm 45 | Empty | 11 | | 0 | 00/032C | + 46 | 1 TestN.asm 46 | Code | 11 | | 2 | 00/032C : A5 C0 | lda {$C0} ; Lo Byte + 47 | 1 TestN.asm 47 | Code | 11 | | 2 | 00/032E : 65 C2 | adc {$C2} ; N+(N-1) + 48 | 1 TestN.asm 48 | Code | 11 | | 2 | 00/0330 : 85 C0 | sta {$C0} + 49 | 1 TestN.asm 49 | Empty | 11 | | 0 | 00/0332 | + 50 | 1 TestN.asm 50 | Code | 11 | | 2 | 00/0332 : A5 C1 | lda {$C0}+1 ; Hi Byte + 51 | 1 TestN.asm 51 | Code | 11 | | 2 | 00/0334 : 65 C3 | adc {$C2}+1 ; N+(N-1) + 52 | 1 TestN.asm 52 | Code | 11 | | 2 | 00/0336 : 85 C1 | sta {$C0}+1 + 53 | 1 TestN.asm 53 | Empty | 11 | | 0 | 00/0338 | + 54 | 1 TestN.asm 54 | Comment | 11 | | 0 | 00/0338 | ** Update N=NDEC ** + 55 | 1 TestN.asm 55 | Code | 11 | | 2 | 00/0338 : A5 C2 | lda {$C2} + 56 | 1 TestN.asm 56 | Code | 11 | | 2 | 00/033A : 85 C4 | sta {$C4} + 57 | 1 TestN.asm 57 | Code | 11 | | 2 | 00/033C : A5 C3 | lda {$C2}+1 + 58 | 1 TestN.asm 58 | Code | 11 | | 2 | 00/033E : 85 C5 | sta {$C4}+1 + 59 | 1 TestN.asm 59 | Empty | 11 | | 0 | 00/0340 | + 60 | 1 TestN.asm 60 | Code | 11 | | 3 | 00/0340 : 4C 12 03 | jmp LOOP + 61 | 1 TestN.asm 61 | Empty | 11 | | 0 | 00/0343 | + 62 | 1 TestN.asm 62 | Comment | 11 | | 0 | 00/0343 | ** Output Data ** + 63 | 1 TestN.asm 63 | Code | 11 | | 2 | 00/0343 : A6 C0 | DONE ldx {$C0} + 64 | 1 TestN.asm 64 | Code | 11 | | 2 | 00/0345 : A4 C1 | ldy {$C0}+1 + 65 | 1 TestN.asm 65 | Empty | 11 | | 0 | 00/0347 | + 66 | 1 TestN.asm 66 | Code | 11 | | 1 | 00/0347 : 60 | rts + 67 | 1 TestN.asm 67 | Empty | 11 | | 0 | 00/0348 | + 68 | 1 TestN.asm 68 | Empty | 11 | | 0 | 00/0348 | + 69 | 1 TestN.asm 69 | Comment | 11 | | 0 | 00/0348 | ** Input Dynamic Data append in the end of Unidisk routine ** + 70 | 1 TestN.asm 70 | Data | 11 | | 1 | 00/0348 : FF | N1U dfb $FF + 71 | 1 TestN.asm 71 | Data | 11 | | 1 | 00/0349 : FF | dfb $FF +------+---------------------+-------------+----+---------+------+-----------------------+------------------------------------------------------------------- diff --git a/AppleII/N integer adc 2 Byte/Unidrive3 b/AppleII/N integer adc 2 Byte/Unidrive3 new file mode 100644 index 0000000000000000000000000000000000000000..887902855b929e6e5e954f1b2c53fd668b96ae8e GIT binary patch literal 275 zcmXX_rnr!1OTk9a#SvCmOu$Bh zuulV4Y5fBmWf3f8oDH7ha5xW+(l~CaOKd!0%?8yT>JVObuoCL?_hbH}dwq4%R{c}u z#6jomu-ys3tOqMYvk|Ng>(#?z`&ctv;W&wJkv8KHX-kJPnvslv#EqPY_W&#TD&OYc z`+78Lenr;#FcJPaBjIbSELdjYLICrwk;6Zjm!n|b3?=iX$eH(y4FIu7IbQ +* +* The target of this project is to use the Unidisk 3.5 drive to perform +* specific numerical routines: 2 Byte Add of the first N integer numbers calculation; +* in order to use it as a Apple II co-processor unit. +* +* Copyright (C) 2015 Riccardo Greco . +* +* 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 . +* +* +* @com.wudsn.ide.asm.hardware=APPLE2 +* Protocol Converter Call + XC +ZPTempL equ $0006 ;Temporary zero page storage +ZPTempH equ $0007 +** Zero page storage ** +N1 equ $19 ;25 +* N2 equ $1B ;27 +RSLT equ $1D ;29 +*** Monitor routines *** +COut equ $FDED ;Console output ASCII +CROut equ $FD8E ;Carriage return +** 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 +***************************************************** + +* +* Find a Protocol Converter in one of the slots. +START jsr FindPC + bcs Error +*** Eject *** + jsr Dispatch + dfb ControlCmd + dw E_JECT +*** Set Address *** + jsr Dispatch + dfb ControlCmd + dw SET_ADD +* + 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 the Input Value first ** +EXEC lda N1 + sta $8111 ; Absolute addressing + lda N1+1 + sta $8112 +*** Download *** + jsr Dispatch + dfb ControlCmd + dw DOWNLOAD +** Execute ** + jsr Dispatch + dfb ControlCmd + dw EXE +READ jsr Dispatch + dfb StatusCmd + dw DParms + bcs Error +* +**** Store Output results in //c **** +* + lda UNIX_reg + sta RSLT ; Store the result + lda UNIY_reg + sta RSLT+1 +* + 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 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 $00 ; Input Value (N1) +Y_reg dfb $00 ; Input Value (N2) +ProStatus dfb $00 ; Input Value +LowPC_reg dfb $05 ; Like ORG +HighPC_reg dfb $05 +* +*** Set Address *** +CNTL_LIST3 equ * +CountL_byte dfb $02 +CountH_byte dfb $00 +LByte_Addr dfb $05 ; Like ORG +HByte_Addr dfb $05 +* +*** Download *** +CNTL_LIST4 equ * +LenghtL_byte dfb $4A ;<----- Lenght of Unidisk program Lo Byte +LenghtH_byte dfb $00 ;<----- Lenght of Unidisk program Hi Byte +* +*** Start UNIDISK Program *** +** Two byte adc ** + org $0505 +RSLTU equ $C0 +NDEC equ $C2 +N equ $C4 + +** Save the N number ** + lda N1U + sta N + lda N1U+1 + sta N+1 +** Set RSLTU=N ** + lda N + sta RSLTU ; N Lo + lda N+1 + sta RSLTU+1 ; N Hi + +LOOP lda N + + beq HI ; If NLo =0 dec NHi + +** Set NDEC=N-1 Lo ** + dec A + sta NDEC ; N-1 Lo +** Set NDEC=N Hi ** + lda N+1 + sta NDEC+1 ; NHi = NDEC Hi + + jmp ENTRY + +** Set NDEC=N-1 Hi ** +HI lda N+1 + + beq DONE ; If also NHi =0 done + + dec A + sta NDEC+1 ; N-1 Hi + + lda #$FF + sta NDEC ; N-1 Lo = FF Set NDEC to FF + +ENTRY clc + + lda RSLTU ; Lo Byte + adc NDEC ; N+(N-1) + sta RSLTU + + lda RSLTU+1 ; Hi Byte + adc NDEC+1 ; N+(N-1) + sta RSLTU+1 + +** Update N=NDEC ** + lda NDEC + sta N + lda NDEC+1 + sta N+1 + + jmp LOOP + +** Output Data ** +DONE ldx RSLTU + ldy RSLTU+1 + + rts + + +** Input Dynamic Data append in the end of Unidisk routine ** +N1U dfb $00 + dfb $00 \ No newline at end of file diff --git a/AppleII/N integer adc 2 Byte/Unidrive3_Output.txt b/AppleII/N integer adc 2 Byte/Unidrive3_Output.txt new file mode 100644 index 0000000..342042f --- /dev/null +++ b/AppleII/N integer adc 2 Byte/Unidrive3_Output.txt @@ -0,0 +1,327 @@ +------+-------------------------+-------------+----+---------+------+-----------------------+------------------------------------------------------------------- + Line | # File Line | Line Type | MX | Reloc | Size | Address Object Code | Source Code +------+-------------------------+-------------+----+---------+------+-----------------------+------------------------------------------------------------------- + 1 | 1 Unidrive3.asm 1 | Comment | 11 | | 0 | 00/8000 | * @com.wudsn.ide.asm.hardware=APPLE2 + 2 | 1 Unidrive3.asm 2 | Comment | 11 | | 0 | 00/8000 | * Protocol Converter Call + 3 | 1 Unidrive3.asm 3 | Directive | 11 | | 0 | 00/8000 | XC + 4 | 1 Unidrive3.asm 4 | Equivalence | 11 | | 0 | 00/8000 | ZPTempL equ $0006 ;Temporary zero page storage + 5 | 1 Unidrive3.asm 5 | Equivalence | 11 | | 0 | 00/8000 | ZPTempH equ $0007 + 6 | 1 Unidrive3.asm 6 | Comment | 11 | | 0 | 00/8000 | ** Zero page storage ** + 7 | 1 Unidrive3.asm 7 | Equivalence | 11 | | 0 | 00/8000 | N1 equ $19 ;25 + 8 | 1 Unidrive3.asm 8 | Comment | 11 | | 0 | 00/8000 | * N2 equ $1B ;27 + 9 | 1 Unidrive3.asm 9 | Equivalence | 11 | | 0 | 00/8000 | RSLT equ $1D ;29 + 10 | 1 Unidrive3.asm 10 | Comment | 11 | | 0 | 00/8000 | *** Monitor routines *** + 11 | 1 Unidrive3.asm 11 | Equivalence | 11 | | 0 | 00/8000 | COut equ $FDED ;Console output ASCII + 12 | 1 Unidrive3.asm 12 | Equivalence | 11 | | 0 | 00/8000 | CROut equ $FD8E ;Carriage return + 13 | 1 Unidrive3.asm 13 | Comment | 11 | | 0 | 00/8000 | ** Command Code ** + 14 | 1 Unidrive3.asm 14 | Equivalence | 11 | | 0 | 00/8000 | StatusCmd equ 0 + 15 | 1 Unidrive3.asm 15 | Comment | 11 | | 0 | 00/8000 | ** Status Code ** + 16 | 1 Unidrive3.asm 16 | Comment | 11 | | 0 | 00/8000 | * StatusDIB equ 3 + 17 | 1 Unidrive3.asm 17 | Equivalence | 11 | | 0 | 00/8000 | StatusUNI equ 5 + 18 | 1 Unidrive3.asm 18 | Comment | 11 | | 0 | 00/8000 | * + 19 | 1 Unidrive3.asm 19 | Equivalence | 11 | | 0 | 00/8000 | ControlCmd equ 4 + 20 | 1 Unidrive3.asm 20 | Comment | 11 | | 0 | 00/8000 | ** Control Codes ** + 21 | 1 Unidrive3.asm 21 | Equivalence | 11 | | 0 | 00/8000 | Eject equ 4 + 22 | 1 Unidrive3.asm 22 | Equivalence | 11 | | 0 | 00/8000 | Run equ 5 + 23 | 1 Unidrive3.asm 23 | Equivalence | 11 | | 0 | 00/8000 | SetDWLoad equ 6 + 24 | 1 Unidrive3.asm 24 | Equivalence | 11 | | 0 | 00/8000 | DWLoad equ 7 + 25 | 1 Unidrive3.asm 25 | Comment | 11 | | 0 | 00/8000 | * + 26 | 1 Unidrive3.asm 26 | Directive | 11 | | 0 | 00/8000 | org $8000 + 27 | 1 Unidrive3.asm 27 | Comment | 11 | | 0 | 00/8000 | ***************************************************** + 28 | 1 Unidrive3.asm 28 | Empty | 11 | | 0 | 00/8000 | + 29 | 1 Unidrive3.asm 29 | Comment | 11 | | 0 | 00/8000 | * + 30 | 1 Unidrive3.asm 30 | Comment | 11 | | 0 | 00/8000 | * Find a Protocol Converter in one of the slots. + 31 | 1 Unidrive3.asm 31 | Code | 11 | | 3 | 00/8000 : 20 60 80 | START jsr {ozunid_4} + 32 | 1 Unidrive3.asm 32 | Code | 11 | | 2 | 00/8003 : B0 10 | bcs {ozunid_1} + 33 | 1 Unidrive3.asm 33 | Comment | 11 | | 0 | 00/8005 | *** Eject *** + 34 | 1 Unidrive3.asm 34 | Code | 11 | | 3 | 00/8005 : 20 95 80 | jsr {ozunid_9} + 35 | 1 Unidrive3.asm 35 | Data | 11 | | 1 | 00/8008 : 04 | dfb {4} + 36 | 1 Unidrive3.asm 36 | Data | 11 | | 2 | 00/8009 : B4 80 | dw {ozunid_15} + 37 | 1 Unidrive3.asm 37 | Comment | 11 | | 0 | 00/800B | *** Set Address *** + 38 | 1 Unidrive3.asm 38 | Code | 11 | | 3 | 00/800B : 20 95 80 | jsr {ozunid_9} + 39 | 1 Unidrive3.asm 39 | Data | 11 | | 1 | 00/800E : 04 | dfb {4} + 40 | 1 Unidrive3.asm 40 | Data | 11 | | 2 | 00/800F : A5 80 | dw {ozunid_12} + 41 | 1 Unidrive3.asm 41 | Comment | 11 | | 0 | 00/8011 | * + 42 | 1 Unidrive3.asm 42 | Code | 11 | | 3 | 00/8011 : 20 37 80 | jsr EXEC ; Jump the Error routine + 43 | 1 Unidrive3.asm 43 | Code | 11 | | 1 | 00/8014 : 60 | rts + 44 | 1 Unidrive3.asm 44 | Comment | 11 | | 0 | 00/8015 | ********************************************* + 45 | 1 Unidrive3.asm 45 | Empty | 11 | | 0 | 00/8015 | ozunid_1 + 46 | 1 Unidrive3.asm 45 | Equivalence | 11 | | 0 | 00/8015 | Error equ ozunid_1 + 47 | 1 Unidrive3.asm 46 | Comment | 11 | | 0 | 00/8015 | * + 48 | 1 Unidrive3.asm 47 | Comment | 11 | | 0 | 00/8015 | * There's either no PC around, or there was no give message + 49 | 1 Unidrive3.asm 48 | Comment | 11 | | 0 | 00/8015 | * + 50 | 1 Unidrive3.asm 49 | Code | 11 | | 2 | 00/8015 : A2 00 | ldx #0 + 51 | 1 Unidrive3.asm 50 | Empty | 11 | | 0 | 00/8017 | ozunid_2 + 52 | 1 Unidrive3.asm 50 | Equivalence | 11 | | 0 | 00/8017 | err1 equ ozunid_2 + 53 | 1 Unidrive3.asm 51 | Code | 11 | | 3 | 00/8017 : BD 23 80 | lda Message,x + 54 | 1 Unidrive3.asm 52 | Code | 11 | | 2 | 00/801A : F0 06 | beq {ozunid_3} + 55 | 1 Unidrive3.asm 53 | Code | 11 | | 3 | 00/801C : 20 ED FD | jsr {$FDED} + 56 | 1 Unidrive3.asm 54 | Code | 11 | | 1 | 00/801F : E8 | inx + 57 | 1 Unidrive3.asm 55 | Code | 11 | | 2 | 00/8020 : D0 F5 | bne {ozunid_2} + 58 | 1 Unidrive3.asm 56 | Comment | 11 | | 0 | 00/8022 | * + 59 | 1 Unidrive3.asm 57 | Empty | 11 | | 0 | 00/8022 | ozunid_3 + 60 | 1 Unidrive3.asm 57 | Equivalence | 11 | | 0 | 00/8022 | errout equ ozunid_3 + 61 | 1 Unidrive3.asm 58 | Code | 11 | | 1 | 00/8022 : 60 | rts + 62 | 1 Unidrive3.asm 59 | Comment | 11 | | 0 | 00/8023 | * + 63 | 1 Unidrive3.asm 60 | Data | 11 | | 18 | 00/8023 : 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 | + 64 | 1 Unidrive3.asm 61 | Data | 11 | | 2 | 00/8035 : 8D 00 | dfb $8D,0 + 65 | 1 Unidrive3.asm 62 | Comment | 11 | | 0 | 00/8037 | ********************************************* + 66 | 1 Unidrive3.asm 63 | Comment | 11 | | 0 | 00/8037 | * + 67 | 1 Unidrive3.asm 64 | Comment | 11 | | 0 | 00/8037 | ** Set the Input Value first ** + 68 | 1 Unidrive3.asm 65 | Code | 11 | | 2 | 00/8037 : A5 19 | EXEC lda {$19} + 69 | 1 Unidrive3.asm 66 | Code | 11 | | 3 | 00/8039 : 8D 11 81 | sta $8111 ; Absolute addressing + 70 | 1 Unidrive3.asm 67 | Code | 11 | | 2 | 00/803C : A5 1A | lda {$19}+1 + 71 | 1 Unidrive3.asm 68 | Code | 11 | | 3 | 00/803E : 8D 12 81 | sta $8112 + 72 | 1 Unidrive3.asm 69 | Comment | 11 | | 0 | 00/8041 | *** Download *** + 73 | 1 Unidrive3.asm 70 | Code | 11 | | 3 | 00/8041 : 20 95 80 | jsr {ozunid_9} + 74 | 1 Unidrive3.asm 71 | Data | 11 | | 1 | 00/8044 : 04 | dfb {4} + 75 | 1 Unidrive3.asm 72 | Data | 11 | | 2 | 00/8045 : AA 80 | dw {ozunid_13} + 76 | 1 Unidrive3.asm 73 | Comment | 11 | | 0 | 00/8047 | ** Execute ** + 77 | 1 Unidrive3.asm 74 | Code | 11 | | 3 | 00/8047 : 20 95 80 | jsr {ozunid_9} + 78 | 1 Unidrive3.asm 75 | Data | 11 | | 1 | 00/804A : 04 | dfb {4} + 79 | 1 Unidrive3.asm 76 | Data | 11 | | 2 | 00/804B : AF 80 | dw {ozunid_14} + 80 | 1 Unidrive3.asm 77 | Code | 11 | | 3 | 00/804D : 20 95 80 | READ jsr {ozunid_9} + 81 | 1 Unidrive3.asm 78 | Data | 11 | | 1 | 00/8050 : 00 | dfb {0} + 82 | 1 Unidrive3.asm 79 | Data | 11 | | 2 | 00/8051 : 98 80 | dw {ozunid_10} + 83 | 1 Unidrive3.asm 80 | Code | 11 | | 2 | 00/8053 : B0 C0 | bcs {ozunid_1} + 84 | 1 Unidrive3.asm 81 | Comment | 11 | | 0 | 00/8055 | * + 85 | 1 Unidrive3.asm 82 | Comment | 11 | | 0 | 00/8055 | **** Store Output results in //c **** + 86 | 1 Unidrive3.asm 83 | Comment | 11 | | 0 | 00/8055 | * + 87 | 1 Unidrive3.asm 84 | Code | 11 | | 3 | 00/8055 : AD A1 80 | lda UNIX_reg + 88 | 1 Unidrive3.asm 85 | Code | 11 | | 2 | 00/8058 : 85 1D | sta {$1D} ; Store the result + 89 | 1 Unidrive3.asm 86 | Code | 11 | | 3 | 00/805A : AD A2 80 | lda UNIY_reg + 90 | 1 Unidrive3.asm 87 | Code | 11 | | 2 | 00/805D : 85 1E | sta {$1D}+1 + 91 | 1 Unidrive3.asm 88 | Comment | 11 | | 0 | 00/805F | * + 92 | 1 Unidrive3.asm 89 | Code | 11 | | 1 | 00/805F : 60 | rts + 93 | 1 Unidrive3.asm 90 | Empty | 11 | | 0 | 00/8060 | + 94 | 1 Unidrive3.asm 91 | Comment | 11 | | 0 | 00/8060 | ****************************************************** + 95 | 1 Unidrive3.asm 92 | Empty | 11 | | 0 | 00/8060 | ozunid_4 + 96 | 1 Unidrive3.asm 92 | Equivalence | 11 | | 0 | 00/8060 | FindPC equ ozunid_4 + 97 | 1 Unidrive3.asm 93 | Comment | 11 | | 0 | 00/8060 | * + 98 | 1 Unidrive3.asm 94 | Comment | 11 | | 0 | 00/8060 | * Search slot 7 to slot 1 looking for signature bytes + 99 | 1 Unidrive3.asm 95 | Comment | 11 | | 0 | 00/8060 | * + 100 | 1 Unidrive3.asm 96 | Code | 11 | | 2 | 00/8060 : A2 07 | ldx #7 ;Do for seven slots + 101 | 1 Unidrive3.asm 97 | Code | 11 | | 2 | 00/8062 : A9 C7 | lda #$C7 + 102 | 1 Unidrive3.asm 98 | Code | 11 | | 2 | 00/8064 : 85 07 | sta {$0007} + 103 | 1 Unidrive3.asm 99 | Code | 11 | | 2 | 00/8066 : A9 00 | lda #$00 + 104 | 1 Unidrive3.asm 100 | Code | 11 | | 2 | 00/8068 : 85 06 | sta {$0006} + 105 | 1 Unidrive3.asm 101 | Comment | 11 | | 0 | 00/806A | * + 106 | 1 Unidrive3.asm 102 | Empty | 11 | | 0 | 00/806A | ozunid_5 + 107 | 1 Unidrive3.asm 102 | Equivalence | 11 | | 0 | 00/806A | newslot equ ozunid_5 + 108 | 1 Unidrive3.asm 103 | Code | 11 | | 2 | 00/806A : A0 07 | ldy #7 + 109 | 1 Unidrive3.asm 104 | Comment | 11 | | 0 | 00/806C | * + 110 | 1 Unidrive3.asm 105 | Empty | 11 | | 0 | 00/806C | ozunid_6 + 111 | 1 Unidrive3.asm 105 | Equivalence | 11 | | 0 | 00/806C | again equ ozunid_6 + 112 | 1 Unidrive3.asm 106 | Code | 11 | | 2 | 00/806C : B1 06 | lda ({$0006}),y + 113 | 1 Unidrive3.asm 107 | Code | 11 | | 3 | 00/806E : D9 8D 80 | cmp sigtab,y ;One for byte signature + 114 | 1 Unidrive3.asm 108 | Code | 11 | | 2 | 00/8071 : F0 07 | beq {ozunid_7} ;Found one signature byte + 115 | 1 Unidrive3.asm 109 | Code | 11 | | 2 | 00/8073 : C6 07 | dec {$0007} + 116 | 1 Unidrive3.asm 110 | Code | 11 | | 1 | 00/8075 : CA | dex + 117 | 1 Unidrive3.asm 111 | Code | 11 | | 2 | 00/8076 : D0 F2 | bne {ozunid_5} + 118 | 1 Unidrive3.asm 112 | Comment | 11 | | 0 | 00/8078 | * + 119 | 1 Unidrive3.asm 113 | Comment | 11 | | 0 | 00/8078 | * if we get here, no PC find + 120 | 1 Unidrive3.asm 114 | Code | 11 | | 1 | 00/8078 : 38 | sec + 121 | 1 Unidrive3.asm 115 | Code | 11 | | 1 | 00/8079 : 60 | rts + 122 | 1 Unidrive3.asm 116 | Comment | 11 | | 0 | 00/807A | * + 123 | 1 Unidrive3.asm 117 | Comment | 11 | | 0 | 00/807A | * if we get here, no byte find on PC + 124 | 1 Unidrive3.asm 118 | Empty | 11 | | 0 | 00/807A | ozunid_7 + 125 | 1 Unidrive3.asm 118 | Equivalence | 11 | | 0 | 00/807A | maybe equ ozunid_7 + 126 | 1 Unidrive3.asm 119 | Code | 11 | | 1 | 00/807A : 88 | dey + 127 | 1 Unidrive3.asm 120 | Code | 11 | | 1 | 00/807B : 88 | dey ;if N=1 then all sig bytes OK + 128 | 1 Unidrive3.asm 121 | Code | 11 | | 2 | 00/807C : 10 EE | bpl {ozunid_6} + 129 | 1 Unidrive3.asm 122 | Comment | 11 | | 0 | 00/807E | * Found PC interface. Set up call address. + 130 | 1 Unidrive3.asm 123 | Comment | 11 | | 0 | 00/807E | * we already have high byte ($CN), we need low byte + 131 | 1 Unidrive3.asm 124 | Comment | 11 | | 0 | 00/807E | * + 132 | 1 Unidrive3.asm 125 | Empty | 11 | | 0 | 00/807E | ozunid_8 + 133 | 1 Unidrive3.asm 125 | Equivalence | 11 | | 0 | 00/807E | foundPC equ ozunid_8 + 134 | 1 Unidrive3.asm 126 | Code | 11 | | 2 | 00/807E : A9 FF | lda #$FF + 135 | 1 Unidrive3.asm 127 | Code | 11 | | 2 | 00/8080 : 85 06 | sta {$0006} + 136 | 1 Unidrive3.asm 128 | Code | 11 | | 2 | 00/8082 : A0 00 | ldy #0 ;For indirect load + 137 | 1 Unidrive3.asm 129 | Code | 11 | | 2 | 00/8084 : B1 06 | lda ({$0006}),y ;Get the byte + 138 | 1 Unidrive3.asm 130 | Comment | 11 | | 0 | 00/8086 | * + 139 | 1 Unidrive3.asm 131 | Comment | 11 | | 0 | 00/8086 | * Now the Acc has the low oreder ProDOS entry point. + 140 | 1 Unidrive3.asm 132 | Comment | 11 | | 0 | 00/8086 | * The PC entry is three locations past this ... + 141 | 1 Unidrive3.asm 133 | Comment | 11 | | 0 | 00/8086 | * + 142 | 1 Unidrive3.asm 134 | Code | 11 | | 1 | 00/8086 : 18 | clc + 143 | 1 Unidrive3.asm 135 | Code | 11 | | 2 | 00/8087 : 69 03 | adc #3 + 144 | 1 Unidrive3.asm 136 | Code | 11 | | 2 | 00/8089 : 85 06 | sta {$0006} + 145 | 1 Unidrive3.asm 137 | Comment | 11 | | 0 | 00/808B | * + 146 | 1 Unidrive3.asm 138 | Comment | 11 | | 0 | 00/808B | * Now ZPTempL has PC entry point. + 147 | 1 Unidrive3.asm 139 | Comment | 11 | | 0 | 00/808B | * Return with carry clear. + 148 | 1 Unidrive3.asm 140 | Comment | 11 | | 0 | 00/808B | * + 149 | 1 Unidrive3.asm 141 | Code | 11 | | 1 | 00/808B : 18 | clc + 150 | 1 Unidrive3.asm 142 | Code | 11 | | 1 | 00/808C : 60 | rts + 151 | 1 Unidrive3.asm 143 | Comment | 11 | | 0 | 00/808D | *********************************************************** + 152 | 1 Unidrive3.asm 144 | Comment | 11 | | 0 | 00/808D | * + 153 | 1 Unidrive3.asm 145 | Comment | 11 | | 0 | 00/808D | * There are the PC signature bytes in their relative order. + 154 | 1 Unidrive3.asm 146 | Comment | 11 | | 0 | 00/808D | * The $FF bytes are filler bytes and are not compared. + 155 | 1 Unidrive3.asm 147 | Comment | 11 | | 0 | 00/808D | * + 156 | 1 Unidrive3.asm 148 | Data | 11 | | 4 | 00/808D : FF 20 FF 00 | sigtab dfb $FF,$20,$FF,$00 + 157 | 1 Unidrive3.asm 149 | Data | 11 | | 4 | 00/8091 : FF 03 FF 00 | dfb $FF,$03,$FF,$00 + 158 | 1 Unidrive3.asm 150 | Comment | 11 | | 0 | 00/8095 | * + 159 | 1 Unidrive3.asm 151 | Empty | 11 | | 0 | 00/8095 | ozunid_9 + 160 | 1 Unidrive3.asm 151 | Equivalence | 11 | | 0 | 00/8095 | Dispatch equ ozunid_9 + 161 | 1 Unidrive3.asm 152 | Code | 11 | | 3 | 00/8095 : 6C 06 00 | jmp ({$0006}) ;Simulate an indirect JSR to PC + 162 | 1 Unidrive3.asm 153 | Comment | 11 | | 0 | 00/8098 | * + 163 | 1 Unidrive3.asm 154 | Comment | 11 | | 0 | 00/8098 | *** Status Parameter Set for UNI *** + 164 | 1 Unidrive3.asm 155 | Empty | 11 | | 0 | 00/8098 | ozunid_10 + 165 | 1 Unidrive3.asm 155 | Equivalence | 11 | | 0 | 00/8098 | DParms equ ozunid_10 + 166 | 1 Unidrive3.asm 156 | Data | 11 | | 1 | 00/8098 : 03 | DPParmsCt dfb 3 ;Status calls have three parameters + 167 | 1 Unidrive3.asm 157 | Data | 11 | | 1 | 00/8099 : 01 | DPUnit dfb 1 + 168 | 1 Unidrive3.asm 158 | Data | 11 | | 2 | 00/809A : 9D 80 | DPBuffer dw {ozunid_11} + 169 | 1 Unidrive3.asm 159 | Data | 11 | | 1 | 00/809C : 05 | DPStatCode dfb {5} + 170 | 1 Unidrive3.asm 160 | Comment | 11 | | 0 | 00/809D | * + 171 | 1 Unidrive3.asm 161 | Comment | 11 | | 0 | 00/809D | * + 172 | 1 Unidrive3.asm 162 | Comment | 11 | | 0 | 00/809D | * + 173 | 1 Unidrive3.asm 163 | Comment | 11 | | 0 | 00/809D | *** Status List UNI *** + 174 | 1 Unidrive3.asm 164 | Empty | 11 | | 0 | 00/809D | ozunid_11 + 175 | 1 Unidrive3.asm 164 | Equivalence | 11 | | 0 | 00/809D | UNI equ ozunid_11 + 176 | 1 Unidrive3.asm 165 | Data | 11 | | 1 | 00/809D : 00 | dfb 0 + 177 | 1 Unidrive3.asm 166 | Data | 11 | | 1 | 00/809E : 00 | UNIError dfb 0 + 178 | 1 Unidrive3.asm 167 | Data | 11 | | 1 | 00/809F : 00 | UNIRetries dfb 0 + 179 | 1 Unidrive3.asm 168 | Data | 11 | | 1 | 00/80A0 : 00 | UNIAcc_reg dfb 0 + 180 | 1 Unidrive3.asm 169 | Data | 11 | | 1 | 00/80A1 : 00 | UNIX_reg dfb 0 + 181 | 1 Unidrive3.asm 170 | Data | 11 | | 1 | 00/80A2 : 00 | UNIY_reg dfb 0 + 182 | 1 Unidrive3.asm 171 | Data | 11 | | 1 | 00/80A3 : 00 | UNIP_val dfb 0 + 183 | 1 Unidrive3.asm 172 | Data | 11 | | 1 | 00/80A4 : 00 | HHH dfb 0 + 184 | 1 Unidrive3.asm 173 | Comment | 11 | | 0 | 00/80A5 | * + 185 | 1 Unidrive3.asm 174 | Comment | 11 | | 0 | 00/80A5 | *** Set Address *** + 186 | 1 Unidrive3.asm 175 | Empty | 11 | | 0 | 00/80A5 | ozunid_12 + 187 | 1 Unidrive3.asm 175 | Equivalence | 11 | | 0 | 00/80A5 | SET_ADD equ ozunid_12 + 188 | 1 Unidrive3.asm 176 | Data | 11 | | 1 | 00/80A5 : 03 | dfb 3 + 189 | 1 Unidrive3.asm 177 | Data | 11 | | 1 | 00/80A6 : 01 | dfb 1 + 190 | 1 Unidrive3.asm 178 | Data | 11 | | 2 | 00/80A7 : C3 80 | dw {ozunid_18} + 191 | 1 Unidrive3.asm 179 | Data | 11 | | 1 | 00/80A9 : 06 | dfb {6} + 192 | 1 Unidrive3.asm 180 | Comment | 11 | | 0 | 00/80AA | * + 193 | 1 Unidrive3.asm 181 | Comment | 11 | | 0 | 00/80AA | *** Download *** + 194 | 1 Unidrive3.asm 182 | Empty | 11 | | 0 | 00/80AA | ozunid_13 + 195 | 1 Unidrive3.asm 182 | Equivalence | 11 | | 0 | 00/80AA | DOWNLOAD equ ozunid_13 + 196 | 1 Unidrive3.asm 183 | Data | 11 | | 1 | 00/80AA : 03 | dfb 3 + 197 | 1 Unidrive3.asm 184 | Data | 11 | | 1 | 00/80AB : 01 | dfb 1 + 198 | 1 Unidrive3.asm 185 | Data | 11 | | 2 | 00/80AC : C7 80 | dw {ozunid_19} + 199 | 1 Unidrive3.asm 186 | Data | 11 | | 1 | 00/80AE : 07 | dfb {7} + 200 | 1 Unidrive3.asm 187 | Comment | 11 | | 0 | 00/80AF | * + 201 | 1 Unidrive3.asm 188 | Comment | 11 | | 0 | 00/80AF | *** Execute *** + 202 | 1 Unidrive3.asm 189 | Empty | 11 | | 0 | 00/80AF | ozunid_14 + 203 | 1 Unidrive3.asm 189 | Equivalence | 11 | | 0 | 00/80AF | EXE equ ozunid_14 + 204 | 1 Unidrive3.asm 190 | Data | 11 | | 1 | 00/80AF : 03 | dfb 3 + 205 | 1 Unidrive3.asm 191 | Data | 11 | | 1 | 00/80B0 : 01 | dfb 1 + 206 | 1 Unidrive3.asm 192 | Data | 11 | | 2 | 00/80B1 : BB 80 | dw {ozunid_17} + 207 | 1 Unidrive3.asm 193 | Data | 11 | | 1 | 00/80B3 : 05 | dfb {5} + 208 | 1 Unidrive3.asm 194 | Comment | 11 | | 0 | 00/80B4 | *** Eject *** + 209 | 1 Unidrive3.asm 195 | Empty | 11 | | 0 | 00/80B4 | ozunid_15 + 210 | 1 Unidrive3.asm 195 | Equivalence | 11 | | 0 | 00/80B4 | E_JECT equ ozunid_15 + 211 | 1 Unidrive3.asm 196 | Data | 11 | | 1 | 00/80B4 : 03 | dfb 3 + 212 | 1 Unidrive3.asm 197 | Data | 11 | | 1 | 00/80B5 : 01 | dfb 1 + 213 | 1 Unidrive3.asm 198 | Data | 11 | | 2 | 00/80B6 : B9 80 | dw {ozunid_16} + 214 | 1 Unidrive3.asm 199 | Data | 11 | | 1 | 00/80B8 : 04 | dfb {4} + 215 | 1 Unidrive3.asm 200 | Comment | 11 | | 0 | 00/80B9 | * + 216 | 1 Unidrive3.asm 201 | Comment | 11 | | 0 | 00/80B9 | ******** CONTROL LISTS ******** + 217 | 1 Unidrive3.asm 202 | Comment | 11 | | 0 | 00/80B9 | * + 218 | 1 Unidrive3.asm 203 | Comment | 11 | | 0 | 00/80B9 | * + 219 | 1 Unidrive3.asm 204 | Comment | 11 | | 0 | 00/80B9 | *** Eject *** + 220 | 1 Unidrive3.asm 205 | Empty | 11 | | 0 | 00/80B9 | ozunid_16 + 221 | 1 Unidrive3.asm 205 | Equivalence | 11 | | 0 | 00/80B9 | CNTL_LIST1 equ ozunid_16 + 222 | 1 Unidrive3.asm 206 | Data | 11 | | 2 | 00/80B9 : 00 00 | dw $0000 + 223 | 1 Unidrive3.asm 207 | Comment | 11 | | 0 | 00/80BB | * + 224 | 1 Unidrive3.asm 208 | Comment | 11 | | 0 | 00/80BB | *** Execute *** + 225 | 1 Unidrive3.asm 209 | Empty | 11 | | 0 | 00/80BB | ozunid_17 + 226 | 1 Unidrive3.asm 209 | Equivalence | 11 | | 0 | 00/80BB | CNTL_LIST2 equ ozunid_17 + 227 | 1 Unidrive3.asm 210 | Data | 11 | | 1 | 00/80BB : 06 | Clow_byte dfb $06 + 228 | 1 Unidrive3.asm 211 | Data | 11 | | 1 | 00/80BC : 00 | Chigh_byte dfb $00 + 229 | 1 Unidrive3.asm 212 | Data | 11 | | 1 | 00/80BD : 00 | AccValue dfb $00 ; Input Value + 230 | 1 Unidrive3.asm 213 | Data | 11 | | 1 | 00/80BE : 00 | X_reg dfb $00 ; Input Value (N1) + 231 | 1 Unidrive3.asm 214 | Data | 11 | | 1 | 00/80BF : 00 | Y_reg dfb $00 ; Input Value (N2) + 232 | 1 Unidrive3.asm 215 | Data | 11 | | 1 | 00/80C0 : 00 | ProStatus dfb $00 ; Input Value + 233 | 1 Unidrive3.asm 216 | Data | 11 | | 1 | 00/80C1 : 05 | LowPC_reg dfb $05 ; Like ORG + 234 | 1 Unidrive3.asm 217 | Data | 11 | | 1 | 00/80C2 : 05 | HighPC_reg dfb $05 + 235 | 1 Unidrive3.asm 218 | Comment | 11 | | 0 | 00/80C3 | * + 236 | 1 Unidrive3.asm 219 | Comment | 11 | | 0 | 00/80C3 | *** Set Address *** + 237 | 1 Unidrive3.asm 220 | Empty | 11 | | 0 | 00/80C3 | ozunid_18 + 238 | 1 Unidrive3.asm 220 | Equivalence | 11 | | 0 | 00/80C3 | CNTL_LIST3 equ ozunid_18 + 239 | 1 Unidrive3.asm 221 | Data | 11 | | 1 | 00/80C3 : 02 | CountL_byte dfb $02 + 240 | 1 Unidrive3.asm 222 | Data | 11 | | 1 | 00/80C4 : 00 | CountH_byte dfb $00 + 241 | 1 Unidrive3.asm 223 | Data | 11 | | 1 | 00/80C5 : 05 | LByte_Addr dfb $05 ; Like ORG + 242 | 1 Unidrive3.asm 224 | Data | 11 | | 1 | 00/80C6 : 05 | HByte_Addr dfb $05 + 243 | 1 Unidrive3.asm 225 | Comment | 11 | | 0 | 00/80C7 | * + 244 | 1 Unidrive3.asm 226 | Comment | 11 | | 0 | 00/80C7 | *** Download *** + 245 | 1 Unidrive3.asm 227 | Empty | 11 | | 0 | 00/80C7 | ozunid_19 + 246 | 1 Unidrive3.asm 227 | Equivalence | 11 | | 0 | 00/80C7 | CNTL_LIST4 equ ozunid_19 + 247 | 1 Unidrive3.asm 228 | Data | 11 | | 1 | 00/80C7 : 4A | LenghtL_byte dfb $4A ;<----- Lenght of Unidisk program Lo Byte + 248 | 1 Unidrive3.asm 229 | Data | 11 | | 1 | 00/80C8 : 00 | LenghtH_byte dfb $00 ;<----- Lenght of Unidisk program Hi Byte + 249 | 1 Unidrive3.asm 230 | Comment | 11 | | 0 | 00/80C9 | * + 250 | 1 Unidrive3.asm 231 | Comment | 11 | | 0 | 00/80C9 | *** Start UNIDISK Program *** + 251 | 1 Unidrive3.asm 232 | Comment | 11 | | 0 | 00/80C9 | ** Two byte adc ** + 252 | 1 Unidrive3.asm 233 | Directive | 11 | | 0 | 00/80C9 | org $0505 + 253 | 1 Unidrive3.asm 234 | Equivalence | 11 | | 0 | 00/0505 | RSLTU equ $C0 + 254 | 1 Unidrive3.asm 235 | Equivalence | 11 | | 0 | 00/0505 | NDEC equ $C2 + 255 | 1 Unidrive3.asm 236 | Equivalence | 11 | | 0 | 00/0505 | N equ $C4 + 256 | 1 Unidrive3.asm 237 | Empty | 11 | | 0 | 00/0505 | + 257 | 1 Unidrive3.asm 238 | Comment | 11 | | 0 | 00/0505 | ** Save the N number ** + 258 | 1 Unidrive3.asm 239 | Code | 11 | | 3 | 00/0505 : AD 4D 05 | lda N1U + 259 | 1 Unidrive3.asm 240 | Code | 11 | | 2 | 00/0508 : 85 C4 | sta {$C4} + 260 | 1 Unidrive3.asm 241 | Code | 11 | | 3 | 00/050A : AD 4E 05 | lda N1U+1 + 261 | 1 Unidrive3.asm 242 | Code | 11 | | 2 | 00/050D : 85 C5 | sta {$C4}+1 + 262 | 1 Unidrive3.asm 243 | Comment | 11 | | 0 | 00/050F | ** Set RSLTU=N ** + 263 | 1 Unidrive3.asm 244 | Code | 11 | | 2 | 00/050F : A5 C4 | lda {$C4} + 264 | 1 Unidrive3.asm 245 | Code | 11 | | 2 | 00/0511 : 85 C0 | sta {$C0} ; N Lo + 265 | 1 Unidrive3.asm 246 | Code | 11 | | 2 | 00/0513 : A5 C5 | lda {$C4}+1 + 266 | 1 Unidrive3.asm 247 | Code | 11 | | 2 | 00/0515 : 85 C1 | sta {$C0}+1 ; N Hi + 267 | 1 Unidrive3.asm 248 | Empty | 11 | | 0 | 00/0517 | + 268 | 1 Unidrive3.asm 249 | Code | 11 | | 2 | 00/0517 : A5 C4 | LOOP lda {$C4} + 269 | 1 Unidrive3.asm 250 | Empty | 11 | | 0 | 00/0519 | + 270 | 1 Unidrive3.asm 251 | Code | 11 | | 2 | 00/0519 : F0 0A | beq HI ; If NLo =0 dec NHi + 271 | 1 Unidrive3.asm 252 | Empty | 11 | | 0 | 00/051B | + 272 | 1 Unidrive3.asm 253 | Comment | 11 | | 0 | 00/051B | ** Set NDEC=N-1 Lo ** + 273 | 1 Unidrive3.asm 254 | Code | 11 | | 1 | 00/051B : 3A | dec A + 274 | 1 Unidrive3.asm 255 | Code | 11 | | 2 | 00/051C : 85 C2 | sta {$C2} ; N-1 Lo + 275 | 1 Unidrive3.asm 256 | Comment | 11 | | 0 | 00/051E | ** Set NDEC=N Hi ** + 276 | 1 Unidrive3.asm 257 | Code | 11 | | 2 | 00/051E : A5 C5 | lda {$C4}+1 + 277 | 1 Unidrive3.asm 258 | Code | 11 | | 2 | 00/0520 : 85 C3 | sta {$C2}+1 ; NHi = NDEC Hi + 278 | 1 Unidrive3.asm 259 | Empty | 11 | | 0 | 00/0522 | + 279 | 1 Unidrive3.asm 260 | Code | 11 | | 3 | 00/0522 : 4C 30 05 | jmp ENTRY + 280 | 1 Unidrive3.asm 261 | Empty | 11 | | 0 | 00/0525 | + 281 | 1 Unidrive3.asm 262 | Comment | 11 | | 0 | 00/0525 | ** Set NDEC=N-1 Hi ** + 282 | 1 Unidrive3.asm 263 | Code | 11 | | 2 | 00/0525 : A5 C5 | HI lda {$C4}+1 + 283 | 1 Unidrive3.asm 264 | Empty | 11 | | 0 | 00/0527 | + 284 | 1 Unidrive3.asm 265 | Code | 11 | | 2 | 00/0527 : F0 1F | beq DONE ; If also NHi =0 done + 285 | 1 Unidrive3.asm 266 | Empty | 11 | | 0 | 00/0529 | + 286 | 1 Unidrive3.asm 267 | Code | 11 | | 1 | 00/0529 : 3A | dec A + 287 | 1 Unidrive3.asm 268 | Code | 11 | | 2 | 00/052A : 85 C3 | sta {$C2}+1 ; N-1 Hi + 288 | 1 Unidrive3.asm 269 | Empty | 11 | | 0 | 00/052C | + 289 | 1 Unidrive3.asm 270 | Code | 11 | | 2 | 00/052C : A9 FF | lda #$FF + 290 | 1 Unidrive3.asm 271 | Code | 11 | | 2 | 00/052E : 85 C2 | sta {$C2} ; N-1 Lo = FF Set NDEC to FF + 291 | 1 Unidrive3.asm 272 | Empty | 11 | | 0 | 00/0530 | + 292 | 1 Unidrive3.asm 273 | Code | 11 | | 1 | 00/0530 : 18 | ENTRY clc + 293 | 1 Unidrive3.asm 274 | Empty | 11 | | 0 | 00/0531 | + 294 | 1 Unidrive3.asm 275 | Code | 11 | | 2 | 00/0531 : A5 C0 | lda {$C0} ; Lo Byte + 295 | 1 Unidrive3.asm 276 | Code | 11 | | 2 | 00/0533 : 65 C2 | adc {$C2} ; N+(N-1) + 296 | 1 Unidrive3.asm 277 | Code | 11 | | 2 | 00/0535 : 85 C0 | sta {$C0} + 297 | 1 Unidrive3.asm 278 | Empty | 11 | | 0 | 00/0537 | + 298 | 1 Unidrive3.asm 279 | Code | 11 | | 2 | 00/0537 : A5 C1 | lda {$C0}+1 ; Hi Byte + 299 | 1 Unidrive3.asm 280 | Code | 11 | | 2 | 00/0539 : 65 C3 | adc {$C2}+1 ; N+(N-1) + 300 | 1 Unidrive3.asm 281 | Code | 11 | | 2 | 00/053B : 85 C1 | sta {$C0}+1 + 301 | 1 Unidrive3.asm 282 | Empty | 11 | | 0 | 00/053D | + 302 | 1 Unidrive3.asm 283 | Comment | 11 | | 0 | 00/053D | ** Update N=NDEC ** + 303 | 1 Unidrive3.asm 284 | Code | 11 | | 2 | 00/053D : A5 C2 | lda {$C2} + 304 | 1 Unidrive3.asm 285 | Code | 11 | | 2 | 00/053F : 85 C4 | sta {$C4} + 305 | 1 Unidrive3.asm 286 | Code | 11 | | 2 | 00/0541 : A5 C3 | lda {$C2}+1 + 306 | 1 Unidrive3.asm 287 | Code | 11 | | 2 | 00/0543 : 85 C5 | sta {$C4}+1 + 307 | 1 Unidrive3.asm 288 | Empty | 11 | | 0 | 00/0545 | + 308 | 1 Unidrive3.asm 289 | Code | 11 | | 3 | 00/0545 : 4C 17 05 | jmp LOOP + 309 | 1 Unidrive3.asm 290 | Empty | 11 | | 0 | 00/0548 | + 310 | 1 Unidrive3.asm 291 | Comment | 11 | | 0 | 00/0548 | ** Output Data ** + 311 | 1 Unidrive3.asm 292 | Code | 11 | | 2 | 00/0548 : A6 C0 | DONE ldx {$C0} + 312 | 1 Unidrive3.asm 293 | Code | 11 | | 2 | 00/054A : A4 C1 | ldy {$C0}+1 + 313 | 1 Unidrive3.asm 294 | Empty | 11 | | 0 | 00/054C | + 314 | 1 Unidrive3.asm 295 | Code | 11 | | 1 | 00/054C : 60 | rts + 315 | 1 Unidrive3.asm 296 | Empty | 11 | | 0 | 00/054D | + 316 | 1 Unidrive3.asm 297 | Empty | 11 | | 0 | 00/054D | + 317 | 1 Unidrive3.asm 298 | Comment | 11 | | 0 | 00/054D | ** Input Dynamic Data append in the end of Unidisk routine ** + 318 | 1 Unidrive3.asm 299 | Data | 11 | | 1 | 00/054D : 00 | N1U dfb $00 + 319 | 1 Unidrive3.asm 300 | Data | 11 | | 1 | 00/054E : 00 | dfb $00 +------+-------------------------+-------------+----+---------+------+-----------------------+------------------------------------------------------------------- From a1c0cea057d15e13d2d77ee66c9cdc5767195558 Mon Sep 17 00:00:00 2001 From: rigreco Date: Wed, 18 Feb 2015 22:46:21 +0100 Subject: [PATCH 06/12] Del --- AppleII/FP operations/.gitignore | 2 - AppleII/FP operations/UniFP.asm | 163 ------ AppleII/FP operations/UniFP_Output.txt | 167 ------ AppleII/FP operations/Unidrive4 | Bin 567 -> 0 bytes AppleII/FP operations/Unidrive4t | Bin 574 -> 0 bytes AppleII/FP operations/Unidrive4t.asm | 522 ----------------- AppleII/FP operations/Unidrive4t_Output.txt | 549 ------------------ AppleII/FP operations/_FileInformation.txt | 2 - AppleII/Integer adc 1 Byte/Unicalc | Bin 353 -> 0 bytes AppleII/Integer adc 1 Byte/Unicalc.do | Bin 143360 -> 0 bytes AppleII/Integer adc 1 Byte/Unicalc_Output.txt | 415 ------------- AppleII/Integer adc 1 Byte/Unidrive | Bin 243 -> 0 bytes .../Integer adc 1 Byte/Unidrive_Output.txt | 343 ----------- AppleII/Integer adc 2 Byte/Unidrive2 | Bin 237 -> 0 bytes .../Integer adc 2 Byte/Unidrive2_Output.txt | 286 --------- AppleII/Memory dump/Uniprox | Bin 438 -> 0 bytes AppleII/Memory dump/Uniprox_Output.txt | 400 ------------- AppleII/Memory dump/Uniproz | Bin 249 -> 0 bytes AppleII/Memory dump/Uniproz_Output.txt | 270 --------- AppleII/N integer adc 2 Byte/TestN | 2 - AppleII/N integer adc 2 Byte/TestN_Output.txt | 75 --- AppleII/N integer adc 2 Byte/Unidrive3 | Bin 275 -> 0 bytes .../N integer adc 2 Byte/Unidrive3_Output.txt | 327 ----------- 23 files changed, 3523 deletions(-) delete mode 100644 AppleII/FP operations/.gitignore delete mode 100644 AppleII/FP operations/UniFP.asm delete mode 100644 AppleII/FP operations/UniFP_Output.txt delete mode 100644 AppleII/FP operations/Unidrive4 delete mode 100644 AppleII/FP operations/Unidrive4t delete mode 100644 AppleII/FP operations/Unidrive4t.asm delete mode 100644 AppleII/FP operations/Unidrive4t_Output.txt delete mode 100644 AppleII/FP operations/_FileInformation.txt delete mode 100644 AppleII/Integer adc 1 Byte/Unicalc delete mode 100644 AppleII/Integer adc 1 Byte/Unicalc.do delete mode 100644 AppleII/Integer adc 1 Byte/Unicalc_Output.txt delete mode 100644 AppleII/Integer adc 1 Byte/Unidrive delete mode 100644 AppleII/Integer adc 1 Byte/Unidrive_Output.txt delete mode 100644 AppleII/Integer adc 2 Byte/Unidrive2 delete mode 100644 AppleII/Integer adc 2 Byte/Unidrive2_Output.txt delete mode 100644 AppleII/Memory dump/Uniprox delete mode 100644 AppleII/Memory dump/Uniprox_Output.txt delete mode 100644 AppleII/Memory dump/Uniproz delete mode 100644 AppleII/Memory dump/Uniproz_Output.txt delete mode 100644 AppleII/N integer adc 2 Byte/TestN delete mode 100644 AppleII/N integer adc 2 Byte/TestN_Output.txt delete mode 100644 AppleII/N integer adc 2 Byte/Unidrive3 delete mode 100644 AppleII/N integer adc 2 Byte/Unidrive3_Output.txt diff --git a/AppleII/FP operations/.gitignore b/AppleII/FP operations/.gitignore deleted file mode 100644 index 7b87f7c..0000000 --- a/AppleII/FP operations/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -/UniFP -/UniFP_Output.txt diff --git a/AppleII/FP operations/UniFP.asm b/AppleII/FP operations/UniFP.asm deleted file mode 100644 index 3eea7f6..0000000 --- a/AppleII/FP operations/UniFP.asm +++ /dev/null @@ -1,163 +0,0 @@ -* @com.wudsn.ide.asm.hardware=APPLE2 - *********************** - * * - * APPLE-II FLOATING * - * POINT ROUTINES * - * * - * COPYRIGHT 1977 BY * - * APPLE COMPUTER INC. * - * * - * ALL RIGHTS RESERVED * - * * - * S. WOZNIAK * - * * - *********************** -* TITLE "FLOATING POINT ROUTINES for //c memory" -* -SIGN EQU $EB ; $F3 - - ** FP2 4 Bytes ** -X2 EQU $EC ; $F4 -M2 EQU $ED ; $F5 - $7 - - ** FP1 4 Bytes + E extension ** -X1 EQU $FA ; $F8 -M1 EQU $FB ; $F9 - $FB -E EQU $FE ; $FC - -OVLOC EQU $3F5 - - ORG $300 - -ADD CLC ;CLEAR CARRY - LDX #$2 ;INDEX FOR 3-BYTE ADD. -ADD1 LDA M1,X - ADC M2,X ;ADD A BYTE OF MANT2 TO MANT1 - STA M1,X - DEX ;INDEX TO NEXT MORE SIGNIF. BYTE. - BPL ADD1 ;LOOP UNTIL DONE. - RTS ;RETURN -MD1 ASL SIGN ;CLEAR LSB OF SIGN. - JSR ABSWAP ;ABS VAL OF M1, THEN SWAP WITH M2 -ABSWAP BIT M1 ;MANT1 NEGATIVE? - BPL ABSWAP1 ;NO, SWAP WITH MANT2 AND RETURN. - JSR FCOMPL ;YES, COMPLEMENT IT. - INC SIGN ;INCR SIGN, COMPLEMENTING LSB. -ABSWAP1 SEC ;SET CARRY FOR RETURN TO MUL/DIV. -SWAP LDX #$4 ;INDEX FOR 4 BYTE SWAP. -SWAP1 STY E-1,X - LDA X1-1,X ;SWAP A BYTE OF EXP/MANT1 WITH - LDY X2-1,X ;EXP/MANT2 AND LEAVE A COPY OF - STY X1-1,X ;MANT1 IN E (3 BYTES). E+3 USED - STA X2-1,X - DEX ;ADVANCE INDEX TO NEXT BYTE - BNE SWAP1 ;LOOP UNTIL DONE. - RTS ;RETURN -FLOAT LDA #$8E ;INIT EXP1 TO 14, <--------------- int to fp - STA X1 ;THEN NORMALIZE TO FLOAT. -NORM1 LDA M1 ;HIGH-ORDER MANT1 BYTE. - CMP #$C0 ;UPPER TWO BITS UNEQUAL? - BMI RTS1 ;YES, RETURN WITH MANT1 NORMALIZED - DEC X1 ;DECREMENT EXP1. - ASL M1+2 - ROL M1+1 ;SHIFT MANT1 (3 BYTES) LEFT. - ROL M1 -NORM LDA X1 ;EXP1 ZERO? - BNE NORM1 ;NO, CONTINUE NORMALIZING. -RTS1 RTS ;RETURN. -FSUB JSR FCOMPL ;CMPL MANT1,CLEARS CARRY UNLESS 0 <---- sub -SWPALGN JSR ALGNSWP ;RIGHT SHIFT MANT1 OR SWAP WITH -FADD LDA X2 ;<------------------------------------- add - CMP X1 ;COMPARE EXP1 WITH EXP2. - BNE SWPALGN ;IF #,SWAP ADDENDS OR ALIGN MANTS. - JSR ADD ;ADD ALIGNED MANTISSAS. -ADDEND BVC NORM ;NO OVERFLOW, NORMALIZE RESULT. - BVS RTLOG ;OV: SHIFT M1 RIGHT, CARRY INTO SIGN -ALGNSWP BCC SWAP ;SWAP IF CARRY CLEAR, - * ELSE SHIFT RIGHT ARITH. -RTAR LDA M1 ;SIGN OF MANT1 INTO CARRY FOR - ASL ;RIGHT ARITH SHIFT. -RTLOG INC X1 ;INCR X1 TO ADJUST FOR RIGHT SHIFT - BEQ OVFL ;EXP1 OUT OF RANGE. -RTLOG1 LDX #$FA ;INDEX FOR 6:BYTE RIGHT SHIFT. -ROR1 ROR E+3,X - INX ;NEXT BYTE OF SHIFT. - BNE ROR1 ;LOOP UNTIL DONE. - RTS ;RETURN. -FMUL JSR MD1 ;ABS VAL OF MANT1, MANT2 <-------------- mul - ADC X1 ;ADD EXP1 TO EXP2 FOR PRODUCT EXP - JSR MD2 ;CHECK PROD. EXP AND PREP. FOR MUL - CLC ;CLEAR CARRY FOR FIRST BIT. -MUL1 JSR RTLOG1 ;M1 AND E RIGHT (PROD AND MPLIER) - BCC MUL2 ;IF CARRY CLEAR, SKIP PARTIAL PROD - JSR ADD ;ADD MULTIPLICAND TO PRODUCT. -MUL2 DEY ;NEXT MUL ITERATION. - BPL MUL1 ;LOOP UNTIL DONE. -MDEND LSR SIGN ;TEST SIGN LSB. -NORMX BCC NORM ;IF EVEN,NORMALIZE PROD,ELSE COMP -FCOMPL SEC ;SET CARRY FOR SUBTRACT. <--------------- not - LDX #$3 ;INDEX FOR 3 BYTE SUBTRACT. -COMPL1 LDA #$0 ;CLEAR A. - SBC X1,X ;SUBTRACT BYTE OF EXP1. - STA X1,X ;RESTORE IT. - DEX ;NEXT MORE SIGNIFICANT BYTE. - BNE COMPL1 ;LOOP UNTIL DONE. - BEQ ADDEND ;NORMALIZE (OR SHIFT RT IF OVFL). -FDIV JSR MD1 ;TAKE ABS VAL OF MANT1, MANT2. <--------- div - SBC X1 ;SUBTRACT EXP1 FROM EXP2. - JSR MD2 ;SAVE AS QUOTIENT EXP. -DIV1 SEC ;SET CARRY FOR SUBTRACT. - LDX #$2 ;INDEX FOR 3-BYTE SUBTRACTION. -DIV2 LDA M2,X - SBC E,X ;SUBTRACT A BYTE OF E FROM MANT2. - PHA ;SAVE ON STACK. - DEX ;NEXT MORE SIGNIFICANT BYTE. - BPL DIV2 ;LOOP UNTIL DONE. - LDX #$FD ;INDEX FOR 3-BYTE CONDITIONAL MOVE -DIV3 PLA ;PULL BYTE OF DIFFERENCE OFF STACK - BCC DIV4 ;IF M2Ph<9Pr%h}0NuvgplO0}}r2>%dgi%FsCUS?KF6r}yM z5;E+N7{)K5*q1Ww<0ZKM^C>LWgqmr}Xu}>n``8MH1mA>@B<{i#F2SN6Qw6hk+be#^ z*}4OIvMd{6Kaw%^V@l=XrK-L9-G+H=kMqSuS+>IC^vOh2OCO}Gm5YV&D0;scZ2Ft3 xaxRn1=ZkMwDU;h5h}pkq&SD;GG|$(!!d|RrMg$RR`eCA}Nc;%Jd~$YI@DHTe1YQ6D diff --git a/AppleII/FP operations/Unidrive4t b/AppleII/FP operations/Unidrive4t deleted file mode 100644 index aa10344fd8e8463957079aa3fd4acb11cd968c8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 574 zcmZ9JO=uHA6vtB>?V3x5Cj$cKny`lT&f|pX^5NJlkf0&y!Ye1_kRyRq%{-2p~)RO z@n0#%e0O#Q1_q(vt5NfI|qa}Oq-s?^{BzO+qlK3}F;rpHPYMZdhK{Qd>_3i z1tq_vYDY53VzKh1K$%=WM$ExAa~iM48qK54m9QV{nG!*S+J2a5D-yp#F`pb>7W@Sd CLI -* -* 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 . -* -* 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 . -* -* -* @com.wudsn.ide.asm.hardware=APPLE2 -* -* Protocol Converter Call - XC -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 ;29 -*** Monitor routines *** -COut equ $FDED ;Console output ASCII -CROut equ $FD8E ;Carriage return -** 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 -***************************************************** - -* -* Find a Protocol Converter in one of the slots. -START jsr FindPC - bcs Error -*** Eject *** - jsr Dispatch - dfb ControlCmd - dw E_JECT -*** Set Address *** - jsr Dispatch - dfb ControlCmd - dw SET_ADD -* - jsr EXEC ; Jump the Error routine - rts -********************************************* -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 $8236 ; Absolute addressing - lda N1+1 ;M1 (1) - sta $8237 - lda N1+2 ;M1 (2) - sta $8238 - lda N1+3 ;M1 (3) - sta $8239 - - ** 4 Byte N2 to FP2 ** - lda N2 ;X2 - sta $823A - lda N2+1 ;M2 (1) - sta $823B - lda N2+2 ;M2 (2) - sta $823C - lda N2+3 ;M2 (3) - sta $823D - -*** Download *** - jsr Dispatch - dfb ControlCmd - dw DOWNLOAD -** Set Unidisk Registers ** - lda #00 ;First time - sta UNIP_val -** 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 N1 - lda UNIX_reg - sta N1+1 ; Store the result - lda UNIY_reg - sta N1+2 - -** Second time execute ** - lda #02 ; Second time - sta UNIP_val -** 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 N1+3 -* - 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 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 ; 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 -HighPC_reg dfb $05 -* -*** Set Address *** -CNTL_LIST3 equ * -CountL_byte dfb $02 -CountH_byte dfb $00 -LByte_Addr dfb $00 ; ORG of Unidisk program, set begin program address $0500 -HByte_Addr dfb $05 -* -*** Download *** -CNTL_LIST4 equ * -LenghtL_byte dfb $36 ;<----- Lenght of Unidisk program Lo - Byte 312 byte -LenghtH_byte dfb $01 ;<----- Lenght of Unidisk program Hi Byte -* -**************** Start UNIDISK Program **************** -* - org $0500 ; Start Unidisk program address - -SIGN EQU $C0 ;$EB ; $F3 - - ** FP2 4 Bytes ** -X2 EQU $C1 ;$EC ; $F4 -M2 EQU $C2 ;$ED ; $F5 - $F7 - - ** FP1 4 Bytes + E extension ** -X1 EQU $C5 ;$FA ; $F8 -M1 EQU $C6 ;$FB ; $F9 - $FB -E EQU $C9 ;$FE ; $FC - -OVLOC EQU $C10 ;$3F5 ;Overflow routine is not implemented at now) -* -** Main program ** -* -* CHK if is the second execution * - - * cmp #01 - beq SECOND ;Only to read the rest part of result - -** Input data to Zero Page ** - - ** FP1 ** - lda FP1 - sta X1 - - lda FP1+1 - sta M1 - lda FP1+2 - sta M1+1 - lda FP1+3 - sta M1+2 - - ** FP2 ** - lda FP2 - sta X2 - - lda FP2+1 - sta M2 - lda FP2+2 - sta M2+1 - lda FP2+3 - sta M2+2 - -************************** Target Function *********************** -* Y=N1+N2 * -****************************************************************** -* -** Simple ADD ** - jsr FADD ; Call FP routine - -*** Output Data result FP1 to Unidisk registers First Time first 3 Byte out *** - lda X1 - ldx M1 - ldy M1+1 - - rts -*** Output Data result FP1 to Unidisk registers Second Time latest 1 Byte out *** -SECOND lda M1+2 - - rts -*************************************************** -* -***************** FP Routine ***************** -* - *********************** - * * - * APPLE-II FLOATING * - * POINT ROUTINES * - * * - * COPYRIGHT 1977 BY * - * APPLE COMPUTER INC. * - * * - * ALL RIGHTS RESERVED * - * * - * S. WOZNIAK * - * * - *********************** -* TITLE "FLOATING POINT ROUTINES for Unidisk memory" -* - -* ORG $300 - -ADD CLC ;CLEAR CARRY - LDX #$2 ;INDEX FOR 3-BYTE ADD. -ADD1 LDA M1,X - ADC M2,X ;ADD A BYTE OF MANT2 TO MANT1 - STA M1,X - DEX ;INDEX TO NEXT MORE SIGNIF. BYTE. - BPL ADD1 ;LOOP UNTIL DONE. - RTS ;RETURN -MD1 ASL SIGN ;CLEAR LSB OF SIGN. - JSR ABSWAP ;ABS VAL OF M1, THEN SWAP WITH M2 -ABSWAP BIT M1 ;MANT1 NEGATIVE? - BPL ABSWAP1 ;NO, SWAP WITH MANT2 AND RETURN. - JSR FCOMPL ;YES, COMPLEMENT IT. - INC SIGN ;INCR SIGN, COMPLEMENTING LSB. -ABSWAP1 SEC ;SET CARRY FOR RETURN TO MUL/DIV. -SWAP LDX #$4 ;INDEX FOR 4 BYTE SWAP. -SWAP1 STY E-1,X - LDA X1-1,X ;SWAP A BYTE OF EXP/MANT1 WITH - LDY X2-1,X ;EXP/MANT2 AND LEAVE A COPY OF - STY X1-1,X ;MANT1 IN E (3 BYTES). E+3 USED - STA X2-1,X - DEX ;ADVANCE INDEX TO NEXT BYTE - BNE SWAP1 ;LOOP UNTIL DONE. - RTS ;RETURN -FLOAT LDA #$8E ;INIT EXP1 TO 14, <--------------- int to fp - STA X1 ;THEN NORMALIZE TO FLOAT. -NORM1 LDA M1 ;HIGH-ORDER MANT1 BYTE. - CMP #$C0 ;UPPER TWO BITS UNEQUAL? - BMI RTS1 ;YES, RETURN WITH MANT1 NORMALIZED - DEC X1 ;DECREMENT EXP1. - ASL M1+2 - ROL M1+1 ;SHIFT MANT1 (3 BYTES) LEFT. - ROL M1 -NORM LDA X1 ;EXP1 ZERO? - BNE NORM1 ;NO, CONTINUE NORMALIZING. -RTS1 RTS ;RETURN. -FSUB JSR FCOMPL ;CMPL MANT1,CLEARS CARRY UNLESS 0 <---- sub -SWPALGN JSR ALGNSWP ;RIGHT SHIFT MANT1 OR SWAP WITH -FADD LDA X2 ;<------------------------------------- add - CMP X1 ;COMPARE EXP1 WITH EXP2. - BNE SWPALGN ;IF #,SWAP ADDENDS OR ALIGN MANTS. - JSR ADD ;ADD ALIGNED MANTISSAS. -ADDEND BVC NORM ;NO OVERFLOW, NORMALIZE RESULT. - BVS RTLOG ;OV: SHIFT M1 RIGHT, CARRY INTO SIGN -ALGNSWP BCC SWAP ;SWAP IF CARRY CLEAR, - * ELSE SHIFT RIGHT ARITH. -RTAR LDA M1 ;SIGN OF MANT1 INTO CARRY FOR - ASL ;RIGHT ARITH SHIFT. -RTLOG INC X1 ;INCR X1 TO ADJUST FOR RIGHT SHIFT - BEQ OVFL ;EXP1 OUT OF RANGE. -RTLOG1 LDX #$FA ;INDEX FOR 6:BYTE RIGHT SHIFT. -ROR1 ROR E+3,X - INX ;NEXT BYTE OF SHIFT. - BNE ROR1 ;LOOP UNTIL DONE. - RTS ;RETURN. -FMUL JSR MD1 ;ABS VAL OF MANT1, MANT2 <-------------- mul - ADC X1 ;ADD EXP1 TO EXP2 FOR PRODUCT EXP - JSR MD2 ;CHECK PROD. EXP AND PREP. FOR MUL - CLC ;CLEAR CARRY FOR FIRST BIT. -MUL1 JSR RTLOG1 ;M1 AND E RIGHT (PROD AND MPLIER) - BCC MUL2 ;IF CARRY CLEAR, SKIP PARTIAL PROD - JSR ADD ;ADD MULTIPLICAND TO PRODUCT. -MUL2 DEY ;NEXT MUL ITERATION. - BPL MUL1 ;LOOP UNTIL DONE. -MDEND LSR SIGN ;TEST SIGN LSB. -NORMX BCC NORM ;IF EVEN,NORMALIZE PROD,ELSE COMP -FCOMPL SEC ;SET CARRY FOR SUBTRACT. <--------------- not - LDX #$3 ;INDEX FOR 3 BYTE SUBTRACT. -COMPL1 LDA #$0 ;CLEAR A. - SBC X1,X ;SUBTRACT BYTE OF EXP1. - STA X1,X ;RESTORE IT. - DEX ;NEXT MORE SIGNIFICANT BYTE. - BNE COMPL1 ;LOOP UNTIL DONE. - BEQ ADDEND ;NORMALIZE (OR SHIFT RT IF OVFL). -FDIV JSR MD1 ;TAKE ABS VAL OF MANT1, MANT2. <--------- div - SBC X1 ;SUBTRACT EXP1 FROM EXP2. - JSR MD2 ;SAVE AS QUOTIENT EXP. -DIV1 SEC ;SET CARRY FOR SUBTRACT. - LDX #$2 ;INDEX FOR 3-BYTE SUBTRACTION. -DIV2 LDA M2,X - SBC E,X ;SUBTRACT A BYTE OF E FROM MANT2. - PHA ;SAVE ON STACK. - DEX ;NEXT MORE SIGNIFICANT BYTE. - BPL DIV2 ;LOOP UNTIL DONE. - LDX #$FD ;INDEX FOR 3-BYTE CONDITIONAL MOVE -DIV3 PLA ;PULL BYTE OF DIFFERENCE OFF STACK - BCC DIV4 ;IF M2 - 3 | 1 Unidrive4t.asm 3 | Comment | 11 | | 0 | 00/8000 | * - 4 | 1 Unidrive4t.asm 4 | Comment | 11 | | 0 | 00/8000 | * The target of this project is to use the Unidisk 3.5 drive to perform - 5 | 1 Unidrive4t.asm 5 | Comment | 11 | | 0 | 00/8000 | * specific numerical routines (integers and floating point numbers) - 6 | 1 Unidrive4t.asm 6 | Comment | 11 | | 0 | 00/8000 | * calculation in order to use it as a Apple II co-processor unit. - 7 | 1 Unidrive4t.asm 7 | Comment | 11 | | 0 | 00/8000 | * - 8 | 1 Unidrive4t.asm 8 | Comment | 11 | | 0 | 00/8000 | * Copyright (C) 2015 Riccardo Greco . - 9 | 1 Unidrive4t.asm 9 | Comment | 11 | | 0 | 00/8000 | * - 10 | 1 Unidrive4t.asm 10 | Comment | 11 | | 0 | 00/8000 | * This program is free software: you can redistribute it and/or modify - 11 | 1 Unidrive4t.asm 11 | Comment | 11 | | 0 | 00/8000 | * it under the terms of the GNU General Public License as published by - 12 | 1 Unidrive4t.asm 12 | Comment | 11 | | 0 | 00/8000 | * the Free Software Foundation, either version 3 of the License, or - 13 | 1 Unidrive4t.asm 13 | Comment | 11 | | 0 | 00/8000 | * (at your option) any later version. - 14 | 1 Unidrive4t.asm 14 | Comment | 11 | | 0 | 00/8000 | * This program is distributed in the hope that it will be useful, - 15 | 1 Unidrive4t.asm 15 | Comment | 11 | | 0 | 00/8000 | * but WITHOUT ANY WARRANTY; without even the implied warranty of - 16 | 1 Unidrive4t.asm 16 | Comment | 11 | | 0 | 00/8000 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - 17 | 1 Unidrive4t.asm 17 | Comment | 11 | | 0 | 00/8000 | * GNU General Public License for more details. - 18 | 1 Unidrive4t.asm 18 | Comment | 11 | | 0 | 00/8000 | * You should have received a copy of the GNU General Public License - 19 | 1 Unidrive4t.asm 19 | Comment | 11 | | 0 | 00/8000 | * along with this program. If not, see . - 20 | 1 Unidrive4t.asm 20 | Comment | 11 | | 0 | 00/8000 | * - 21 | 1 Unidrive4t.asm 21 | Comment | 11 | | 0 | 00/8000 | * - 22 | 1 Unidrive4t.asm 22 | Comment | 11 | | 0 | 00/8000 | * @com.wudsn.ide.asm.hardware=APPLE2 - 23 | 1 Unidrive4t.asm 23 | Comment | 11 | | 0 | 00/8000 | * - 24 | 1 Unidrive4t.asm 24 | Comment | 11 | | 0 | 00/8000 | * Protocol Converter Call - 25 | 1 Unidrive4t.asm 25 | Directive | 11 | | 0 | 00/8000 | XC - 26 | 1 Unidrive4t.asm 26 | Equivalence | 11 | | 0 | 00/8000 | ZPTempL equ $0006 ;Temporary zero page storage - 27 | 1 Unidrive4t.asm 27 | Equivalence | 11 | | 0 | 00/8000 | ZPTempH equ $0007 - 28 | 1 Unidrive4t.asm 28 | Comment | 11 | | 0 | 00/8000 | ** Zero page storage ** - 29 | 1 Unidrive4t.asm 29 | Equivalence | 11 | | 0 | 00/8000 | N1 equ $FA ;25 4 Byte FP FA--FD (FP1) - 30 | 1 Unidrive4t.asm 30 | Equivalence | 11 | | 0 | 00/8000 | N2 equ $EC ;27 4 Byte FP EC--EF (FP2) - 31 | 1 Unidrive4t.asm 31 | Comment | 11 | | 0 | 00/8000 | ; RSLT equ $1D ;29 - 32 | 1 Unidrive4t.asm 32 | Comment | 11 | | 0 | 00/8000 | *** Monitor routines *** - 33 | 1 Unidrive4t.asm 33 | Equivalence | 11 | | 0 | 00/8000 | COut equ $FDED ;Console output ASCII - 34 | 1 Unidrive4t.asm 34 | Equivalence | 11 | | 0 | 00/8000 | CROut equ $FD8E ;Carriage return - 35 | 1 Unidrive4t.asm 35 | Comment | 11 | | 0 | 00/8000 | ** Command Code ** - 36 | 1 Unidrive4t.asm 36 | Equivalence | 11 | | 0 | 00/8000 | StatusCmd equ 0 - 37 | 1 Unidrive4t.asm 37 | Comment | 11 | | 0 | 00/8000 | ** Status Code ** - 38 | 1 Unidrive4t.asm 38 | Comment | 11 | | 0 | 00/8000 | * StatusDIB equ 3 - 39 | 1 Unidrive4t.asm 39 | Equivalence | 11 | | 0 | 00/8000 | StatusUNI equ 5 - 40 | 1 Unidrive4t.asm 40 | Comment | 11 | | 0 | 00/8000 | * - 41 | 1 Unidrive4t.asm 41 | Equivalence | 11 | | 0 | 00/8000 | ControlCmd equ 4 - 42 | 1 Unidrive4t.asm 42 | Comment | 11 | | 0 | 00/8000 | ** Control Codes ** - 43 | 1 Unidrive4t.asm 43 | Equivalence | 11 | | 0 | 00/8000 | Eject equ 4 - 44 | 1 Unidrive4t.asm 44 | Equivalence | 11 | | 0 | 00/8000 | Run equ 5 - 45 | 1 Unidrive4t.asm 45 | Equivalence | 11 | | 0 | 00/8000 | SetDWLoad equ 6 - 46 | 1 Unidrive4t.asm 46 | Equivalence | 11 | | 0 | 00/8000 | DWLoad equ 7 - 47 | 1 Unidrive4t.asm 47 | Comment | 11 | | 0 | 00/8000 | * - 48 | 1 Unidrive4t.asm 48 | Directive | 11 | | 0 | 00/8000 | org $8000 - 49 | 1 Unidrive4t.asm 49 | Comment | 11 | | 0 | 00/8000 | ***************************************************** - 50 | 1 Unidrive4t.asm 50 | Empty | 11 | | 0 | 00/8000 | - 51 | 1 Unidrive4t.asm 51 | Comment | 11 | | 0 | 00/8000 | * - 52 | 1 Unidrive4t.asm 52 | Comment | 11 | | 0 | 00/8000 | * Find a Protocol Converter in one of the slots. - 53 | 1 Unidrive4t.asm 53 | Code | 11 | | 3 | 00/8000 : 20 9E 80 | START jsr {ozunid_4} - 54 | 1 Unidrive4t.asm 54 | Code | 11 | | 2 | 00/8003 : B0 10 | bcs {ozunid_1} - 55 | 1 Unidrive4t.asm 55 | Comment | 11 | | 0 | 00/8005 | *** Eject *** - 56 | 1 Unidrive4t.asm 56 | Code | 11 | | 3 | 00/8005 : 20 D3 80 | jsr {ozunid_9} - 57 | 1 Unidrive4t.asm 57 | Data | 11 | | 1 | 00/8008 : 04 | dfb {4} - 58 | 1 Unidrive4t.asm 58 | Data | 11 | | 2 | 00/8009 : F2 80 | dw {ozunid_15} - 59 | 1 Unidrive4t.asm 59 | Comment | 11 | | 0 | 00/800B | *** Set Address *** - 60 | 1 Unidrive4t.asm 60 | Code | 11 | | 3 | 00/800B : 20 D3 80 | jsr {ozunid_9} - 61 | 1 Unidrive4t.asm 61 | Data | 11 | | 1 | 00/800E : 04 | dfb {4} - 62 | 1 Unidrive4t.asm 62 | Data | 11 | | 2 | 00/800F : E3 80 | dw {ozunid_12} - 63 | 1 Unidrive4t.asm 63 | Comment | 11 | | 0 | 00/8011 | * - 64 | 1 Unidrive4t.asm 64 | Code | 11 | | 3 | 00/8011 : 20 37 80 | jsr EXEC ; Jump the Error routine - 65 | 1 Unidrive4t.asm 65 | Code | 11 | | 1 | 00/8014 : 60 | rts - 66 | 1 Unidrive4t.asm 66 | Comment | 11 | | 0 | 00/8015 | ********************************************* - 67 | 1 Unidrive4t.asm 67 | Empty | 11 | | 0 | 00/8015 | ozunid_1 - 68 | 1 Unidrive4t.asm 67 | Equivalence | 11 | | 0 | 00/8015 | Error equ ozunid_1 - 69 | 1 Unidrive4t.asm 68 | Comment | 11 | | 0 | 00/8015 | * - 70 | 1 Unidrive4t.asm 69 | Comment | 11 | | 0 | 00/8015 | * There is either no PC around, or there was no give message - 71 | 1 Unidrive4t.asm 70 | Comment | 11 | | 0 | 00/8015 | * - 72 | 1 Unidrive4t.asm 71 | Code | 11 | | 2 | 00/8015 : A2 00 | ldx #0 - 73 | 1 Unidrive4t.asm 72 | Empty | 11 | | 0 | 00/8017 | ozunid_2 - 74 | 1 Unidrive4t.asm 72 | Equivalence | 11 | | 0 | 00/8017 | err1 equ ozunid_2 - 75 | 1 Unidrive4t.asm 73 | Code | 11 | | 3 | 00/8017 : BD 23 80 | lda Message,x - 76 | 1 Unidrive4t.asm 74 | Code | 11 | | 2 | 00/801A : F0 06 | beq {ozunid_3} - 77 | 1 Unidrive4t.asm 75 | Code | 11 | | 3 | 00/801C : 20 ED FD | jsr {$FDED} - 78 | 1 Unidrive4t.asm 76 | Code | 11 | | 1 | 00/801F : E8 | inx - 79 | 1 Unidrive4t.asm 77 | Code | 11 | | 2 | 00/8020 : D0 F5 | bne {ozunid_2} - 80 | 1 Unidrive4t.asm 78 | Comment | 11 | | 0 | 00/8022 | * - 81 | 1 Unidrive4t.asm 79 | Empty | 11 | | 0 | 00/8022 | ozunid_3 - 82 | 1 Unidrive4t.asm 79 | Equivalence | 11 | | 0 | 00/8022 | errout equ ozunid_3 - 83 | 1 Unidrive4t.asm 80 | Code | 11 | | 1 | 00/8022 : 60 | rts - 84 | 1 Unidrive4t.asm 81 | Comment | 11 | | 0 | 00/8023 | * - 85 | 1 Unidrive4t.asm 82 | Data | 11 | | 18 | 00/8023 : 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 | - 86 | 1 Unidrive4t.asm 83 | Data | 11 | | 2 | 00/8035 : 8D 00 | dfb $8D,0 - 87 | 1 Unidrive4t.asm 84 | Comment | 11 | | 0 | 00/8037 | ********************************************* - 88 | 1 Unidrive4t.asm 85 | Comment | 11 | | 0 | 00/8037 | * - 89 | 1 Unidrive4t.asm 86 | Empty | 11 | | 0 | 00/8037 | - 90 | 1 Unidrive4t.asm 87 | Comment | 11 | | 0 | 00/8037 | ** Set the Input Value first in Dynamic data ** - 91 | 1 Unidrive4t.asm 88 | Comment | 11 | | 0 | 00/8037 | ** 4 Byte N1 to FP1 ** - 92 | 1 Unidrive4t.asm 89 | Code | 11 | | 2 | 00/8037 : A5 FA | EXEC lda {$FA} ;X1 - 93 | 1 Unidrive4t.asm 90 | Code | 11 | | 3 | 00/8039 : 8D 36 82 | sta $8236 ; Absolute addressing - 94 | 1 Unidrive4t.asm 91 | Code | 11 | | 2 | 00/803C : A5 FB | lda {$FA}+1 ;M1 (1) - 95 | 1 Unidrive4t.asm 92 | Code | 11 | | 3 | 00/803E : 8D 37 82 | sta $8237 - 96 | 1 Unidrive4t.asm 93 | Code | 11 | | 2 | 00/8041 : A5 FC | lda {$FA}+2 ;M1 (2) - 97 | 1 Unidrive4t.asm 94 | Code | 11 | | 3 | 00/8043 : 8D 38 82 | sta $8238 - 98 | 1 Unidrive4t.asm 95 | Code | 11 | | 2 | 00/8046 : A5 FD | lda {$FA}+3 ;M1 (3) - 99 | 1 Unidrive4t.asm 96 | Code | 11 | | 3 | 00/8048 : 8D 39 82 | sta $8239 - 100 | 1 Unidrive4t.asm 97 | Empty | 11 | | 0 | 00/804B | - 101 | 1 Unidrive4t.asm 98 | Comment | 11 | | 0 | 00/804B | ** 4 Byte N2 to FP2 ** - 102 | 1 Unidrive4t.asm 99 | Code | 11 | | 2 | 00/804B : A5 EC | lda {$EC} ;X2 - 103 | 1 Unidrive4t.asm 100 | Code | 11 | | 3 | 00/804D : 8D 3A 82 | sta $823A - 104 | 1 Unidrive4t.asm 101 | Code | 11 | | 2 | 00/8050 : A5 ED | lda {$EC}+1 ;M2 (1) - 105 | 1 Unidrive4t.asm 102 | Code | 11 | | 3 | 00/8052 : 8D 3B 82 | sta $823B - 106 | 1 Unidrive4t.asm 103 | Code | 11 | | 2 | 00/8055 : A5 EE | lda {$EC}+2 ;M2 (2) - 107 | 1 Unidrive4t.asm 104 | Code | 11 | | 3 | 00/8057 : 8D 3C 82 | sta $823C - 108 | 1 Unidrive4t.asm 105 | Code | 11 | | 2 | 00/805A : A5 EF | lda {$EC}+3 ;M2 (3) - 109 | 1 Unidrive4t.asm 106 | Code | 11 | | 3 | 00/805C : 8D 3D 82 | sta $823D - 110 | 1 Unidrive4t.asm 107 | Empty | 11 | | 0 | 00/805F | - 111 | 1 Unidrive4t.asm 108 | Comment | 11 | | 0 | 00/805F | *** Download *** - 112 | 1 Unidrive4t.asm 109 | Code | 11 | | 3 | 00/805F : 20 D3 80 | jsr {ozunid_9} - 113 | 1 Unidrive4t.asm 110 | Data | 11 | | 1 | 00/8062 : 04 | dfb {4} - 114 | 1 Unidrive4t.asm 111 | Data | 11 | | 2 | 00/8063 : E8 80 | dw {ozunid_13} - 115 | 1 Unidrive4t.asm 112 | Comment | 11 | | 0 | 00/8065 | ** Set Unidisk Registers ** - 116 | 1 Unidrive4t.asm 113 | Code | 11 | | 2 | 00/8065 : A9 00 | lda #00 ;First time - 117 | 1 Unidrive4t.asm 114 | Code | 11 | | 3 | 00/8067 : 8D E1 80 | sta UNIP_val - 118 | 1 Unidrive4t.asm 115 | Comment | 11 | | 0 | 00/806A | ** Execute ** - 119 | 1 Unidrive4t.asm 116 | Code | 11 | | 3 | 00/806A : 20 D3 80 | jsr {ozunid_9} - 120 | 1 Unidrive4t.asm 117 | Data | 11 | | 1 | 00/806D : 04 | dfb {4} - 121 | 1 Unidrive4t.asm 118 | Data | 11 | | 2 | 00/806E : ED 80 | dw {ozunid_14} - 122 | 1 Unidrive4t.asm 119 | Comment | 11 | | 0 | 00/8070 | ** Read ** - 123 | 1 Unidrive4t.asm 120 | Code | 11 | | 3 | 00/8070 : 20 D3 80 | READ jsr {ozunid_9} - 124 | 1 Unidrive4t.asm 121 | Data | 11 | | 1 | 00/8073 : 00 | dfb {0} - 125 | 1 Unidrive4t.asm 122 | Data | 11 | | 2 | 00/8074 : D6 80 | dw {ozunid_10} - 126 | 1 Unidrive4t.asm 123 | Code | 11 | | 2 | 00/8076 : B0 9D | bcs {ozunid_1} - 127 | 1 Unidrive4t.asm 124 | Comment | 11 | | 0 | 00/8078 | * - 128 | 1 Unidrive4t.asm 125 | Comment | 11 | | 0 | 00/8078 | **** Store Output results in //c **** - 129 | 1 Unidrive4t.asm 126 | Empty | 11 | | 0 | 00/8078 | - 130 | 1 Unidrive4t.asm 127 | Comment | 11 | | 0 | 00/8078 | * First time execute * - 131 | 1 Unidrive4t.asm 128 | Code | 11 | | 3 | 00/8078 : AD DE 80 | lda UNIAcc_reg - 132 | 1 Unidrive4t.asm 129 | Code | 11 | | 2 | 00/807B : 85 FA | sta {$FA} - 133 | 1 Unidrive4t.asm 130 | Code | 11 | | 3 | 00/807D : AD DF 80 | lda UNIX_reg - 134 | 1 Unidrive4t.asm 131 | Code | 11 | | 2 | 00/8080 : 85 FB | sta {$FA}+1 ; Store the result - 135 | 1 Unidrive4t.asm 132 | Code | 11 | | 3 | 00/8082 : AD E0 80 | lda UNIY_reg - 136 | 1 Unidrive4t.asm 133 | Code | 11 | | 2 | 00/8085 : 85 FC | sta {$FA}+2 - 137 | 1 Unidrive4t.asm 134 | Empty | 11 | | 0 | 00/8087 | - 138 | 1 Unidrive4t.asm 135 | Comment | 11 | | 0 | 00/8087 | ** Second time execute ** - 139 | 1 Unidrive4t.asm 136 | Code | 11 | | 2 | 00/8087 : A9 02 | lda #02 ; Second time - 140 | 1 Unidrive4t.asm 137 | Code | 11 | | 3 | 00/8089 : 8D E1 80 | sta UNIP_val - 141 | 1 Unidrive4t.asm 138 | Comment | 11 | | 0 | 00/808C | ** Execute ** - 142 | 1 Unidrive4t.asm 139 | Code | 11 | | 3 | 00/808C : 20 D3 80 | jsr {ozunid_9} - 143 | 1 Unidrive4t.asm 140 | Data | 11 | | 1 | 00/808F : 04 | dfb {4} - 144 | 1 Unidrive4t.asm 141 | Data | 11 | | 2 | 00/8090 : ED 80 | dw {ozunid_14} - 145 | 1 Unidrive4t.asm 142 | Comment | 11 | | 0 | 00/8092 | ** Read ** - 146 | 1 Unidrive4t.asm 143 | Code | 11 | | 3 | 00/8092 : 20 D3 80 | jsr {ozunid_9} - 147 | 1 Unidrive4t.asm 144 | Data | 11 | | 1 | 00/8095 : 00 | dfb {0} - 148 | 1 Unidrive4t.asm 145 | Data | 11 | | 2 | 00/8096 : D6 80 | dw {ozunid_10} - 149 | 1 Unidrive4t.asm 146 | Comment | 11 | | 0 | 00/8098 | * bcs Error - 150 | 1 Unidrive4t.asm 147 | Empty | 11 | | 0 | 00/8098 | - 151 | 1 Unidrive4t.asm 148 | Comment | 11 | | 0 | 00/8098 | * Second time execute only to read the latest Byte of FP1* - 152 | 1 Unidrive4t.asm 149 | Code | 11 | | 3 | 00/8098 : AD DE 80 | lda UNIAcc_reg - 153 | 1 Unidrive4t.asm 150 | Code | 11 | | 2 | 00/809B : 85 FD | sta {$FA}+3 - 154 | 1 Unidrive4t.asm 151 | Comment | 11 | | 0 | 00/809D | * - 155 | 1 Unidrive4t.asm 152 | Code | 11 | | 1 | 00/809D : 60 | rts - 156 | 1 Unidrive4t.asm 153 | Empty | 11 | | 0 | 00/809E | - 157 | 1 Unidrive4t.asm 154 | Comment | 11 | | 0 | 00/809E | ****************************************************** - 158 | 1 Unidrive4t.asm 155 | Empty | 11 | | 0 | 00/809E | ozunid_4 - 159 | 1 Unidrive4t.asm 155 | Equivalence | 11 | | 0 | 00/809E | FindPC equ ozunid_4 - 160 | 1 Unidrive4t.asm 156 | Comment | 11 | | 0 | 00/809E | * - 161 | 1 Unidrive4t.asm 157 | Comment | 11 | | 0 | 00/809E | * Search slot 7 to slot 1 looking for signature bytes - 162 | 1 Unidrive4t.asm 158 | Comment | 11 | | 0 | 00/809E | * - 163 | 1 Unidrive4t.asm 159 | Code | 11 | | 2 | 00/809E : A2 07 | ldx #7 ;Do for seven slots - 164 | 1 Unidrive4t.asm 160 | Code | 11 | | 2 | 00/80A0 : A9 C7 | lda #$C7 - 165 | 1 Unidrive4t.asm 161 | Code | 11 | | 2 | 00/80A2 : 85 07 | sta {$0007} - 166 | 1 Unidrive4t.asm 162 | Code | 11 | | 2 | 00/80A4 : A9 00 | lda #$00 - 167 | 1 Unidrive4t.asm 163 | Code | 11 | | 2 | 00/80A6 : 85 06 | sta {$0006} - 168 | 1 Unidrive4t.asm 164 | Comment | 11 | | 0 | 00/80A8 | * - 169 | 1 Unidrive4t.asm 165 | Empty | 11 | | 0 | 00/80A8 | ozunid_5 - 170 | 1 Unidrive4t.asm 165 | Equivalence | 11 | | 0 | 00/80A8 | newslot equ ozunid_5 - 171 | 1 Unidrive4t.asm 166 | Code | 11 | | 2 | 00/80A8 : A0 07 | ldy #7 - 172 | 1 Unidrive4t.asm 167 | Comment | 11 | | 0 | 00/80AA | * - 173 | 1 Unidrive4t.asm 168 | Empty | 11 | | 0 | 00/80AA | ozunid_6 - 174 | 1 Unidrive4t.asm 168 | Equivalence | 11 | | 0 | 00/80AA | again equ ozunid_6 - 175 | 1 Unidrive4t.asm 169 | Code | 11 | | 2 | 00/80AA : B1 06 | lda ({$0006}),y - 176 | 1 Unidrive4t.asm 170 | Code | 11 | | 3 | 00/80AC : D9 CB 80 | cmp sigtab,y ;One for byte signature - 177 | 1 Unidrive4t.asm 171 | Code | 11 | | 2 | 00/80AF : F0 07 | beq {ozunid_7} ;Found one signature byte - 178 | 1 Unidrive4t.asm 172 | Code | 11 | | 2 | 00/80B1 : C6 07 | dec {$0007} - 179 | 1 Unidrive4t.asm 173 | Code | 11 | | 1 | 00/80B3 : CA | dex - 180 | 1 Unidrive4t.asm 174 | Code | 11 | | 2 | 00/80B4 : D0 F2 | bne {ozunid_5} - 181 | 1 Unidrive4t.asm 175 | Comment | 11 | | 0 | 00/80B6 | * - 182 | 1 Unidrive4t.asm 176 | Comment | 11 | | 0 | 00/80B6 | * if we get here, no PC find - 183 | 1 Unidrive4t.asm 177 | Code | 11 | | 1 | 00/80B6 : 38 | sec - 184 | 1 Unidrive4t.asm 178 | Code | 11 | | 1 | 00/80B7 : 60 | rts - 185 | 1 Unidrive4t.asm 179 | Comment | 11 | | 0 | 00/80B8 | * - 186 | 1 Unidrive4t.asm 180 | Comment | 11 | | 0 | 00/80B8 | * if we get here, no byte find on PC - 187 | 1 Unidrive4t.asm 181 | Empty | 11 | | 0 | 00/80B8 | ozunid_7 - 188 | 1 Unidrive4t.asm 181 | Equivalence | 11 | | 0 | 00/80B8 | maybe equ ozunid_7 - 189 | 1 Unidrive4t.asm 182 | Code | 11 | | 1 | 00/80B8 : 88 | dey - 190 | 1 Unidrive4t.asm 183 | Code | 11 | | 1 | 00/80B9 : 88 | dey ;if N=1 then all sig bytes OK - 191 | 1 Unidrive4t.asm 184 | Code | 11 | | 2 | 00/80BA : 10 EE | bpl {ozunid_6} - 192 | 1 Unidrive4t.asm 185 | Comment | 11 | | 0 | 00/80BC | * Found PC interface. Set up call address. - 193 | 1 Unidrive4t.asm 186 | Comment | 11 | | 0 | 00/80BC | * we already have high byte ($CN), we need low byte - 194 | 1 Unidrive4t.asm 187 | Comment | 11 | | 0 | 00/80BC | * - 195 | 1 Unidrive4t.asm 188 | Empty | 11 | | 0 | 00/80BC | ozunid_8 - 196 | 1 Unidrive4t.asm 188 | Equivalence | 11 | | 0 | 00/80BC | foundPC equ ozunid_8 - 197 | 1 Unidrive4t.asm 189 | Code | 11 | | 2 | 00/80BC : A9 FF | lda #$FF - 198 | 1 Unidrive4t.asm 190 | Code | 11 | | 2 | 00/80BE : 85 06 | sta {$0006} - 199 | 1 Unidrive4t.asm 191 | Code | 11 | | 2 | 00/80C0 : A0 00 | ldy #0 ;For indirect load - 200 | 1 Unidrive4t.asm 192 | Code | 11 | | 2 | 00/80C2 : B1 06 | lda ({$0006}),y ;Get the byte - 201 | 1 Unidrive4t.asm 193 | Comment | 11 | | 0 | 00/80C4 | * - 202 | 1 Unidrive4t.asm 194 | Comment | 11 | | 0 | 00/80C4 | * Now the Acc has the low oreder ProDOS entry point. - 203 | 1 Unidrive4t.asm 195 | Comment | 11 | | 0 | 00/80C4 | * The PC entry is three locations past this ... - 204 | 1 Unidrive4t.asm 196 | Comment | 11 | | 0 | 00/80C4 | * - 205 | 1 Unidrive4t.asm 197 | Code | 11 | | 1 | 00/80C4 : 18 | clc - 206 | 1 Unidrive4t.asm 198 | Code | 11 | | 2 | 00/80C5 : 69 03 | adc #3 - 207 | 1 Unidrive4t.asm 199 | Code | 11 | | 2 | 00/80C7 : 85 06 | sta {$0006} - 208 | 1 Unidrive4t.asm 200 | Comment | 11 | | 0 | 00/80C9 | * - 209 | 1 Unidrive4t.asm 201 | Comment | 11 | | 0 | 00/80C9 | * Now ZPTempL has PC entry point. - 210 | 1 Unidrive4t.asm 202 | Comment | 11 | | 0 | 00/80C9 | * Return with carry clear. - 211 | 1 Unidrive4t.asm 203 | Comment | 11 | | 0 | 00/80C9 | * - 212 | 1 Unidrive4t.asm 204 | Code | 11 | | 1 | 00/80C9 : 18 | clc - 213 | 1 Unidrive4t.asm 205 | Code | 11 | | 1 | 00/80CA : 60 | rts - 214 | 1 Unidrive4t.asm 206 | Comment | 11 | | 0 | 00/80CB | *********************************************************** - 215 | 1 Unidrive4t.asm 207 | Comment | 11 | | 0 | 00/80CB | * - 216 | 1 Unidrive4t.asm 208 | Comment | 11 | | 0 | 00/80CB | * There are the PC signature bytes in their relative order. - 217 | 1 Unidrive4t.asm 209 | Comment | 11 | | 0 | 00/80CB | * The $FF bytes are filler bytes and are not compared. - 218 | 1 Unidrive4t.asm 210 | Comment | 11 | | 0 | 00/80CB | * - 219 | 1 Unidrive4t.asm 211 | Data | 11 | | 4 | 00/80CB : FF 20 FF 00 | sigtab dfb $FF,$20,$FF,$00 - 220 | 1 Unidrive4t.asm 212 | Data | 11 | | 4 | 00/80CF : FF 03 FF 00 | dfb $FF,$03,$FF,$00 - 221 | 1 Unidrive4t.asm 213 | Comment | 11 | | 0 | 00/80D3 | * - 222 | 1 Unidrive4t.asm 214 | Empty | 11 | | 0 | 00/80D3 | ozunid_9 - 223 | 1 Unidrive4t.asm 214 | Equivalence | 11 | | 0 | 00/80D3 | Dispatch equ ozunid_9 - 224 | 1 Unidrive4t.asm 215 | Code | 11 | | 3 | 00/80D3 : 6C 06 00 | jmp ({$0006}) ;Simulate an indirect JSR to PC - 225 | 1 Unidrive4t.asm 216 | Comment | 11 | | 0 | 00/80D6 | * - 226 | 1 Unidrive4t.asm 217 | Comment | 11 | | 0 | 00/80D6 | *** Status Parameter Set for UNI *** - 227 | 1 Unidrive4t.asm 218 | Empty | 11 | | 0 | 00/80D6 | ozunid_10 - 228 | 1 Unidrive4t.asm 218 | Equivalence | 11 | | 0 | 00/80D6 | DParms equ ozunid_10 - 229 | 1 Unidrive4t.asm 219 | Data | 11 | | 1 | 00/80D6 : 03 | DPParmsCt dfb 3 ;Status calls have three parameters - 230 | 1 Unidrive4t.asm 220 | Data | 11 | | 1 | 00/80D7 : 01 | DPUnit dfb 1 - 231 | 1 Unidrive4t.asm 221 | Data | 11 | | 2 | 00/80D8 : DB 80 | DPBuffer dw {ozunid_11} - 232 | 1 Unidrive4t.asm 222 | Data | 11 | | 1 | 00/80DA : 05 | DPStatCode dfb {5} - 233 | 1 Unidrive4t.asm 223 | Comment | 11 | | 0 | 00/80DB | * - 234 | 1 Unidrive4t.asm 224 | Comment | 11 | | 0 | 00/80DB | * - 235 | 1 Unidrive4t.asm 225 | Comment | 11 | | 0 | 00/80DB | * - 236 | 1 Unidrive4t.asm 226 | Comment | 11 | | 0 | 00/80DB | *** Status List UNI *** - 237 | 1 Unidrive4t.asm 227 | Empty | 11 | | 0 | 00/80DB | ozunid_11 - 238 | 1 Unidrive4t.asm 227 | Equivalence | 11 | | 0 | 00/80DB | UNI equ ozunid_11 - 239 | 1 Unidrive4t.asm 228 | Data | 11 | | 1 | 00/80DB : 00 | dfb 0 - 240 | 1 Unidrive4t.asm 229 | Data | 11 | | 1 | 00/80DC : 00 | UNIError dfb 0 - 241 | 1 Unidrive4t.asm 230 | Data | 11 | | 1 | 00/80DD : 00 | UNIRetries dfb 0 - 242 | 1 Unidrive4t.asm 231 | Data | 11 | | 1 | 00/80DE : 00 | UNIAcc_reg dfb 0 - 243 | 1 Unidrive4t.asm 232 | Data | 11 | | 1 | 00/80DF : 00 | UNIX_reg dfb 0 - 244 | 1 Unidrive4t.asm 233 | Data | 11 | | 1 | 00/80E0 : 00 | UNIY_reg dfb 0 - 245 | 1 Unidrive4t.asm 234 | Data | 11 | | 1 | 00/80E1 : 00 | UNIP_val dfb 0 - 246 | 1 Unidrive4t.asm 235 | Data | 11 | | 1 | 00/80E2 : 00 | HHH dfb 0 - 247 | 1 Unidrive4t.asm 236 | Comment | 11 | | 0 | 00/80E3 | * - 248 | 1 Unidrive4t.asm 237 | Comment | 11 | | 0 | 00/80E3 | *** Set Address *** - 249 | 1 Unidrive4t.asm 238 | Empty | 11 | | 0 | 00/80E3 | ozunid_12 - 250 | 1 Unidrive4t.asm 238 | Equivalence | 11 | | 0 | 00/80E3 | SET_ADD equ ozunid_12 - 251 | 1 Unidrive4t.asm 239 | Data | 11 | | 1 | 00/80E3 : 03 | dfb 3 - 252 | 1 Unidrive4t.asm 240 | Data | 11 | | 1 | 00/80E4 : 01 | dfb 1 - 253 | 1 Unidrive4t.asm 241 | Data | 11 | | 2 | 00/80E5 : 01 81 | dw {ozunid_18} - 254 | 1 Unidrive4t.asm 242 | Data | 11 | | 1 | 00/80E7 : 06 | dfb {6} - 255 | 1 Unidrive4t.asm 243 | Comment | 11 | | 0 | 00/80E8 | * - 256 | 1 Unidrive4t.asm 244 | Comment | 11 | | 0 | 00/80E8 | *** Download *** - 257 | 1 Unidrive4t.asm 245 | Empty | 11 | | 0 | 00/80E8 | ozunid_13 - 258 | 1 Unidrive4t.asm 245 | Equivalence | 11 | | 0 | 00/80E8 | DOWNLOAD equ ozunid_13 - 259 | 1 Unidrive4t.asm 246 | Data | 11 | | 1 | 00/80E8 : 03 | dfb 3 - 260 | 1 Unidrive4t.asm 247 | Data | 11 | | 1 | 00/80E9 : 01 | dfb 1 - 261 | 1 Unidrive4t.asm 248 | Data | 11 | | 2 | 00/80EA : 05 81 | dw {ozunid_19} - 262 | 1 Unidrive4t.asm 249 | Data | 11 | | 1 | 00/80EC : 07 | dfb {7} - 263 | 1 Unidrive4t.asm 250 | Comment | 11 | | 0 | 00/80ED | * - 264 | 1 Unidrive4t.asm 251 | Comment | 11 | | 0 | 00/80ED | *** Execute *** - 265 | 1 Unidrive4t.asm 252 | Empty | 11 | | 0 | 00/80ED | ozunid_14 - 266 | 1 Unidrive4t.asm 252 | Equivalence | 11 | | 0 | 00/80ED | EXE equ ozunid_14 - 267 | 1 Unidrive4t.asm 253 | Data | 11 | | 1 | 00/80ED : 03 | dfb 3 - 268 | 1 Unidrive4t.asm 254 | Data | 11 | | 1 | 00/80EE : 01 | dfb 1 - 269 | 1 Unidrive4t.asm 255 | Data | 11 | | 2 | 00/80EF : F9 80 | dw {ozunid_17} - 270 | 1 Unidrive4t.asm 256 | Data | 11 | | 1 | 00/80F1 : 05 | dfb {5} - 271 | 1 Unidrive4t.asm 257 | Comment | 11 | | 0 | 00/80F2 | *** Eject *** - 272 | 1 Unidrive4t.asm 258 | Empty | 11 | | 0 | 00/80F2 | ozunid_15 - 273 | 1 Unidrive4t.asm 258 | Equivalence | 11 | | 0 | 00/80F2 | E_JECT equ ozunid_15 - 274 | 1 Unidrive4t.asm 259 | Data | 11 | | 1 | 00/80F2 : 03 | dfb 3 - 275 | 1 Unidrive4t.asm 260 | Data | 11 | | 1 | 00/80F3 : 01 | dfb 1 - 276 | 1 Unidrive4t.asm 261 | Data | 11 | | 2 | 00/80F4 : F7 80 | dw {ozunid_16} - 277 | 1 Unidrive4t.asm 262 | Data | 11 | | 1 | 00/80F6 : 04 | dfb {4} - 278 | 1 Unidrive4t.asm 263 | Comment | 11 | | 0 | 00/80F7 | * - 279 | 1 Unidrive4t.asm 264 | Comment | 11 | | 0 | 00/80F7 | ******** CONTROL LISTS ******** - 280 | 1 Unidrive4t.asm 265 | Comment | 11 | | 0 | 00/80F7 | * - 281 | 1 Unidrive4t.asm 266 | Comment | 11 | | 0 | 00/80F7 | * - 282 | 1 Unidrive4t.asm 267 | Comment | 11 | | 0 | 00/80F7 | *** Eject *** - 283 | 1 Unidrive4t.asm 268 | Empty | 11 | | 0 | 00/80F7 | ozunid_16 - 284 | 1 Unidrive4t.asm 268 | Equivalence | 11 | | 0 | 00/80F7 | CNTL_LIST1 equ ozunid_16 - 285 | 1 Unidrive4t.asm 269 | Data | 11 | | 2 | 00/80F7 : 00 00 | dw $0000 - 286 | 1 Unidrive4t.asm 270 | Comment | 11 | | 0 | 00/80F9 | * - 287 | 1 Unidrive4t.asm 271 | Comment | 11 | | 0 | 00/80F9 | *** Execute *** - 288 | 1 Unidrive4t.asm 272 | Empty | 11 | | 0 | 00/80F9 | ozunid_17 - 289 | 1 Unidrive4t.asm 272 | Equivalence | 11 | | 0 | 00/80F9 | CNTL_LIST2 equ ozunid_17 - 290 | 1 Unidrive4t.asm 273 | Data | 11 | | 1 | 00/80F9 : 06 | Clow_byte dfb $06 - 291 | 1 Unidrive4t.asm 274 | Data | 11 | | 1 | 00/80FA : 00 | Chigh_byte dfb $00 - 292 | 1 Unidrive4t.asm 275 | Data | 11 | | 1 | 00/80FB : 00 | AccValue dfb $00 ; Init Value Unidisk Accumulator Register - 293 | 1 Unidrive4t.asm 276 | Data | 11 | | 1 | 00/80FC : 00 | X_reg dfb $00 ; Init Value Unidisk X Register - 294 | 1 Unidrive4t.asm 277 | Data | 11 | | 1 | 00/80FD : 00 | Y_reg dfb $00 ; Init Value Unidisk Y Register - 295 | 1 Unidrive4t.asm 278 | Data | 11 | | 1 | 00/80FE : 00 | ProStatus dfb $00 ; Init Value Unidisk Status Register - 296 | 1 Unidrive4t.asm 279 | Data | 11 | | 1 | 00/80FF : 00 | LowPC_reg dfb $00 ; Init Value Unidisk Program Counter $0500 - 297 | 1 Unidrive4t.asm 280 | Data | 11 | | 1 | 00/8100 : 05 | HighPC_reg dfb $05 - 298 | 1 Unidrive4t.asm 281 | Comment | 11 | | 0 | 00/8101 | * - 299 | 1 Unidrive4t.asm 282 | Comment | 11 | | 0 | 00/8101 | *** Set Address *** - 300 | 1 Unidrive4t.asm 283 | Empty | 11 | | 0 | 00/8101 | ozunid_18 - 301 | 1 Unidrive4t.asm 283 | Equivalence | 11 | | 0 | 00/8101 | CNTL_LIST3 equ ozunid_18 - 302 | 1 Unidrive4t.asm 284 | Data | 11 | | 1 | 00/8101 : 02 | CountL_byte dfb $02 - 303 | 1 Unidrive4t.asm 285 | Data | 11 | | 1 | 00/8102 : 00 | CountH_byte dfb $00 - 304 | 1 Unidrive4t.asm 286 | Data | 11 | | 1 | 00/8103 : 00 | LByte_Addr dfb $00 ; ORG of Unidisk program, set begin program address $0500 - 305 | 1 Unidrive4t.asm 287 | Data | 11 | | 1 | 00/8104 : 05 | HByte_Addr dfb $05 - 306 | 1 Unidrive4t.asm 288 | Comment | 11 | | 0 | 00/8105 | * - 307 | 1 Unidrive4t.asm 289 | Comment | 11 | | 0 | 00/8105 | *** Download *** - 308 | 1 Unidrive4t.asm 290 | Empty | 11 | | 0 | 00/8105 | ozunid_19 - 309 | 1 Unidrive4t.asm 290 | Equivalence | 11 | | 0 | 00/8105 | CNTL_LIST4 equ ozunid_19 - 310 | 1 Unidrive4t.asm 291 | Data | 11 | | 1 | 00/8105 : 36 | LenghtL_byte dfb $36 ;<----- Lenght of Unidisk program Lo - Byte 312 byte - 311 | 1 Unidrive4t.asm 292 | Data | 11 | | 1 | 00/8106 : 01 | LenghtH_byte dfb $01 ;<----- Lenght of Unidisk program Hi Byte - 312 | 1 Unidrive4t.asm 293 | Comment | 11 | | 0 | 00/8107 | * - 313 | 1 Unidrive4t.asm 294 | Comment | 11 | | 0 | 00/8107 | **************** Start UNIDISK Program **************** - 314 | 1 Unidrive4t.asm 295 | Comment | 11 | | 0 | 00/8107 | * - 315 | 1 Unidrive4t.asm 296 | Directive | 11 | | 0 | 00/8107 | org $0500 ; Start Unidisk program address - 316 | 1 Unidrive4t.asm 297 | Empty | 11 | | 0 | 00/0500 | - 317 | 1 Unidrive4t.asm 298 | Equivalence | 11 | | 0 | 00/0500 | SIGN EQU $C0 ;$EB ; $F3 - 318 | 1 Unidrive4t.asm 299 | Empty | 11 | | 0 | 00/0500 | - 319 | 1 Unidrive4t.asm 300 | Comment | 11 | | 0 | 00/0500 | ** FP2 4 Bytes ** - 320 | 1 Unidrive4t.asm 301 | Equivalence | 11 | | 0 | 00/0500 | X2 EQU $C1 ;$EC ; $F4 - 321 | 1 Unidrive4t.asm 302 | Equivalence | 11 | | 0 | 00/0500 | M2 EQU $C2 ;$ED ; $F5 - $F7 - 322 | 1 Unidrive4t.asm 303 | Empty | 11 | | 0 | 00/0500 | - 323 | 1 Unidrive4t.asm 304 | Comment | 11 | | 0 | 00/0500 | ** FP1 4 Bytes + E extension ** - 324 | 1 Unidrive4t.asm 305 | Equivalence | 11 | | 0 | 00/0500 | X1 EQU $C5 ;$FA ; $F8 - 325 | 1 Unidrive4t.asm 306 | Equivalence | 11 | | 0 | 00/0500 | M1 EQU $C6 ;$FB ; $F9 - $FB - 326 | 1 Unidrive4t.asm 307 | Equivalence | 11 | | 0 | 00/0500 | E EQU $C9 ;$FE ; $FC - 327 | 1 Unidrive4t.asm 308 | Empty | 11 | | 0 | 00/0500 | - 328 | 1 Unidrive4t.asm 309 | Equivalence | 11 | | 0 | 00/0500 | OVLOC EQU $C10 ;$3F5 ;Overflow routine is not implemented at now) - 329 | 1 Unidrive4t.asm 310 | Comment | 11 | | 0 | 00/0500 | * - 330 | 1 Unidrive4t.asm 311 | Comment | 11 | | 0 | 00/0500 | ** Main program ** - 331 | 1 Unidrive4t.asm 312 | Comment | 11 | | 0 | 00/0500 | * - 332 | 1 Unidrive4t.asm 313 | Comment | 11 | | 0 | 00/0500 | * CHK if is the second execution * - 333 | 1 Unidrive4t.asm 314 | Empty | 11 | | 0 | 00/0500 | - 334 | 1 Unidrive4t.asm 315 | Comment | 11 | | 0 | 00/0500 | * cmp #01 - 335 | 1 Unidrive4t.asm 316 | Code | 11 | | 2 | 00/0500 : F0 32 | beq SECOND ;Only to read the rest part of result - 336 | 1 Unidrive4t.asm 317 | Empty | 11 | | 0 | 00/0502 | - 337 | 1 Unidrive4t.asm 318 | Comment | 11 | | 0 | 00/0502 | ** Input data to Zero Page ** - 338 | 1 Unidrive4t.asm 319 | Empty | 11 | | 0 | 00/0502 | - 339 | 1 Unidrive4t.asm 320 | Comment | 11 | | 0 | 00/0502 | ** FP1 ** - 340 | 1 Unidrive4t.asm 321 | Code | 11 | | 3 | 00/0502 : AD 2F 06 | lda FP1 - 341 | 1 Unidrive4t.asm 322 | Code | 11 | | 2 | 00/0505 : 85 C5 | sta {$C5} - 342 | 1 Unidrive4t.asm 323 | Empty | 11 | | 0 | 00/0507 | - 343 | 1 Unidrive4t.asm 324 | Code | 11 | | 3 | 00/0507 : AD 30 06 | lda FP1+1 - 344 | 1 Unidrive4t.asm 325 | Code | 11 | | 2 | 00/050A : 85 C6 | sta {$C6} - 345 | 1 Unidrive4t.asm 326 | Code | 11 | | 3 | 00/050C : AD 31 06 | lda FP1+2 - 346 | 1 Unidrive4t.asm 327 | Code | 11 | | 2 | 00/050F : 85 C7 | sta {$C6}+1 - 347 | 1 Unidrive4t.asm 328 | Code | 11 | | 3 | 00/0511 : AD 32 06 | lda FP1+3 - 348 | 1 Unidrive4t.asm 329 | Code | 11 | | 2 | 00/0514 : 85 C8 | sta {$C6}+2 - 349 | 1 Unidrive4t.asm 330 | Empty | 11 | | 0 | 00/0516 | - 350 | 1 Unidrive4t.asm 331 | Comment | 11 | | 0 | 00/0516 | ** FP2 ** - 351 | 1 Unidrive4t.asm 332 | Code | 11 | | 3 | 00/0516 : AD 33 06 | lda FP2 - 352 | 1 Unidrive4t.asm 333 | Code | 11 | | 2 | 00/0519 : 85 C1 | sta {$C1} - 353 | 1 Unidrive4t.asm 334 | Empty | 11 | | 0 | 00/051B | - 354 | 1 Unidrive4t.asm 335 | Code | 11 | | 3 | 00/051B : AD 34 06 | lda FP2+1 - 355 | 1 Unidrive4t.asm 336 | Code | 11 | | 2 | 00/051E : 85 C2 | sta {$C2} - 356 | 1 Unidrive4t.asm 337 | Code | 11 | | 3 | 00/0520 : AD 35 06 | lda FP2+2 - 357 | 1 Unidrive4t.asm 338 | Code | 11 | | 2 | 00/0523 : 85 C3 | sta {$C2}+1 - 358 | 1 Unidrive4t.asm 339 | Code | 11 | | 3 | 00/0525 : AD 36 06 | lda FP2+3 - 359 | 1 Unidrive4t.asm 340 | Code | 11 | | 2 | 00/0528 : 85 C4 | sta {$C2}+2 - 360 | 1 Unidrive4t.asm 341 | Empty | 11 | | 0 | 00/052A | - 361 | 1 Unidrive4t.asm 342 | Comment | 11 | | 0 | 00/052A | ************************** Target Function *********************** - 362 | 1 Unidrive4t.asm 343 | Comment | 11 | | 0 | 00/052A | * Y=N1+N2 * - 363 | 1 Unidrive4t.asm 344 | Comment | 11 | | 0 | 00/052A | ****************************************************************** - 364 | 1 Unidrive4t.asm 345 | Comment | 11 | | 0 | 00/052A | * - 365 | 1 Unidrive4t.asm 346 | Comment | 11 | | 0 | 00/052A | ** Simple ADD ** - 366 | 1 Unidrive4t.asm 347 | Code | 11 | | 3 | 00/052A : 20 80 05 | jsr FADD ; Call FP routine - 367 | 1 Unidrive4t.asm 348 | Empty | 11 | | 0 | 00/052D | - 368 | 1 Unidrive4t.asm 349 | Comment | 11 | | 0 | 00/052D | *** Output Data result FP1 to Unidisk registers First Time first 3 Byte out *** - 369 | 1 Unidrive4t.asm 350 | Code | 11 | | 2 | 00/052D : A5 C5 | lda {$C5} - 370 | 1 Unidrive4t.asm 351 | Code | 11 | | 2 | 00/052F : A6 C6 | ldx {$C6} - 371 | 1 Unidrive4t.asm 352 | Code | 11 | | 2 | 00/0531 : A4 C7 | ldy {$C6}+1 - 372 | 1 Unidrive4t.asm 353 | Empty | 11 | | 0 | 00/0533 | - 373 | 1 Unidrive4t.asm 354 | Code | 11 | | 1 | 00/0533 : 60 | rts - 374 | 1 Unidrive4t.asm 355 | Comment | 11 | | 0 | 00/0534 | *** Output Data result FP1 to Unidisk registers Second Time latest 1 Byte out *** - 375 | 1 Unidrive4t.asm 356 | Code | 11 | | 2 | 00/0534 : A5 C8 | SECOND lda {$C6}+2 - 376 | 1 Unidrive4t.asm 357 | Empty | 11 | | 0 | 00/0536 | - 377 | 1 Unidrive4t.asm 358 | Code | 11 | | 1 | 00/0536 : 60 | rts - 378 | 1 Unidrive4t.asm 359 | Comment | 11 | | 0 | 00/0537 | *************************************************** - 379 | 1 Unidrive4t.asm 360 | Comment | 11 | | 0 | 00/0537 | * - 380 | 1 Unidrive4t.asm 361 | Comment | 11 | | 0 | 00/0537 | ***************** FP Routine ***************** - 381 | 1 Unidrive4t.asm 362 | Comment | 11 | | 0 | 00/0537 | * - 382 | 1 Unidrive4t.asm 363 | Comment | 11 | | 0 | 00/0537 | *********************** - 383 | 1 Unidrive4t.asm 364 | Comment | 11 | | 0 | 00/0537 | * * - 384 | 1 Unidrive4t.asm 365 | Comment | 11 | | 0 | 00/0537 | * APPLE-II FLOATING * - 385 | 1 Unidrive4t.asm 366 | Comment | 11 | | 0 | 00/0537 | * POINT ROUTINES * - 386 | 1 Unidrive4t.asm 367 | Comment | 11 | | 0 | 00/0537 | * * - 387 | 1 Unidrive4t.asm 368 | Comment | 11 | | 0 | 00/0537 | * COPYRIGHT 1977 BY * - 388 | 1 Unidrive4t.asm 369 | Comment | 11 | | 0 | 00/0537 | * APPLE COMPUTER INC. * - 389 | 1 Unidrive4t.asm 370 | Comment | 11 | | 0 | 00/0537 | * * - 390 | 1 Unidrive4t.asm 371 | Comment | 11 | | 0 | 00/0537 | * ALL RIGHTS RESERVED * - 391 | 1 Unidrive4t.asm 372 | Comment | 11 | | 0 | 00/0537 | * * - 392 | 1 Unidrive4t.asm 373 | Comment | 11 | | 0 | 00/0537 | * S. WOZNIAK * - 393 | 1 Unidrive4t.asm 374 | Comment | 11 | | 0 | 00/0537 | * * - 394 | 1 Unidrive4t.asm 375 | Comment | 11 | | 0 | 00/0537 | *********************** - 395 | 1 Unidrive4t.asm 376 | Comment | 11 | | 0 | 00/0537 | * TITLE "FLOATING POINT ROUTINES for Unidisk memory" - 396 | 1 Unidrive4t.asm 377 | Comment | 11 | | 0 | 00/0537 | * - 397 | 1 Unidrive4t.asm 378 | Empty | 11 | | 0 | 00/0537 | - 398 | 1 Unidrive4t.asm 379 | Comment | 11 | | 0 | 00/0537 | * ORG $300 - 399 | 1 Unidrive4t.asm 380 | Empty | 11 | | 0 | 00/0537 | - 400 | 1 Unidrive4t.asm 381 | Code | 11 | | 1 | 00/0537 : 18 | ADD CLC ;CLEAR CARRY - 401 | 1 Unidrive4t.asm 382 | Code | 11 | | 2 | 00/0538 : A2 02 | LDX #$2 ;INDEX FOR 3-BYTE ADD. - 402 | 1 Unidrive4t.asm 383 | Code | 11 | | 2 | 00/053A : B5 C6 | ADD1 LDA {$C6},X - 403 | 1 Unidrive4t.asm 384 | Code | 11 | | 2 | 00/053C : 75 C2 | ADC {$C2},X ;ADD A BYTE OF MANT2 TO MANT1 - 404 | 1 Unidrive4t.asm 385 | Code | 11 | | 2 | 00/053E : 95 C6 | STA {$C6},X - 405 | 1 Unidrive4t.asm 386 | Code | 11 | | 1 | 00/0540 : CA | DEX ;INDEX TO NEXT MORE SIGNIF. BYTE. - 406 | 1 Unidrive4t.asm 387 | Code | 11 | | 2 | 00/0541 : 10 F7 | BPL ADD1 ;LOOP UNTIL DONE. - 407 | 1 Unidrive4t.asm 388 | Code | 11 | | 1 | 00/0543 : 60 | RTS ;RETURN - 408 | 1 Unidrive4t.asm 389 | Code | 11 | | 2 | 00/0544 : 06 C0 | MD1 ASL {$C0} ;CLEAR LSB OF SIGN. - 409 | 1 Unidrive4t.asm 390 | Code | 11 | | 3 | 00/0546 : 20 49 05 | JSR ABSWAP ;ABS VAL OF M1, THEN SWAP WITH M2 - 410 | 1 Unidrive4t.asm 391 | Code | 11 | | 2 | 00/0549 : 24 C6 | ABSWAP BIT {$C6} ;MANT1 NEGATIVE? - 411 | 1 Unidrive4t.asm 392 | Code | 11 | | 2 | 00/054B : 10 05 | BPL ABSWAP1 ;NO, SWAP WITH MANT2 AND RETURN. - 412 | 1 Unidrive4t.asm 393 | Code | 11 | | 3 | 00/054D : 20 B6 05 | JSR FCOMPL ;YES, COMPLEMENT IT. - 413 | 1 Unidrive4t.asm 394 | Code | 11 | | 2 | 00/0550 : E6 C0 | INC {$C0} ;INCR SIGN, COMPLEMENTING LSB. - 414 | 1 Unidrive4t.asm 395 | Code | 11 | | 1 | 00/0552 : 38 | ABSWAP1 SEC ;SET CARRY FOR RETURN TO MUL/DIV. - 415 | 1 Unidrive4t.asm 396 | Code | 11 | | 2 | 00/0553 : A2 04 | SWAP LDX #$4 ;INDEX FOR 4 BYTE SWAP. - 416 | 1 Unidrive4t.asm 397 | Code | 11 | | 2 | 00/0555 : 94 C8 | SWAP1 STY {$C9}-1,X - 417 | 1 Unidrive4t.asm 398 | Code | 11 | | 2 | 00/0557 : B5 C4 | LDA {$C5}-1,X ;SWAP A BYTE OF EXP/MANT1 WITH - 418 | 1 Unidrive4t.asm 399 | Code | 11 | | 2 | 00/0559 : B4 C0 | LDY {$C1}-1,X ;EXP/MANT2 AND LEAVE A COPY OF - 419 | 1 Unidrive4t.asm 400 | Code | 11 | | 2 | 00/055B : 94 C4 | STY {$C5}-1,X ;MANT1 IN E (3 BYTES). E+3 USED - 420 | 1 Unidrive4t.asm 401 | Code | 11 | | 2 | 00/055D : 95 C0 | STA {$C1}-1,X - 421 | 1 Unidrive4t.asm 402 | Code | 11 | | 1 | 00/055F : CA | DEX ;ADVANCE INDEX TO NEXT BYTE - 422 | 1 Unidrive4t.asm 403 | Code | 11 | | 2 | 00/0560 : D0 F3 | BNE SWAP1 ;LOOP UNTIL DONE. - 423 | 1 Unidrive4t.asm 404 | Code | 11 | | 1 | 00/0562 : 60 | RTS ;RETURN - 424 | 1 Unidrive4t.asm 405 | Code | 11 | | 2 | 00/0563 : A9 8E | FLOAT LDA #$8E ;INIT EXP1 TO 14, <--------------- int to fp - 425 | 1 Unidrive4t.asm 406 | Code | 11 | | 2 | 00/0565 : 85 C5 | STA {$C5} ;THEN NORMALIZE TO FLOAT. - 426 | 1 Unidrive4t.asm 407 | Code | 11 | | 2 | 00/0567 : A5 C6 | NORM1 LDA {$C6} ;HIGH-ORDER MANT1 BYTE. - 427 | 1 Unidrive4t.asm 408 | Code | 11 | | 2 | 00/0569 : C9 C0 | CMP #$C0 ;UPPER TWO BITS UNEQUAL? - 428 | 1 Unidrive4t.asm 409 | Code | 11 | | 2 | 00/056B : 30 0C | BMI RTS1 ;YES, RETURN WITH MANT1 NORMALIZED - 429 | 1 Unidrive4t.asm 410 | Code | 11 | | 2 | 00/056D : C6 C5 | DEC {$C5} ;DECREMENT EXP1. - 430 | 1 Unidrive4t.asm 411 | Code | 11 | | 2 | 00/056F : 06 C8 | ASL {$C6}+2 - 431 | 1 Unidrive4t.asm 412 | Code | 11 | | 2 | 00/0571 : 26 C7 | ROL {$C6}+1 ;SHIFT MANT1 (3 BYTES) LEFT. - 432 | 1 Unidrive4t.asm 413 | Code | 11 | | 2 | 00/0573 : 26 C6 | ROL {$C6} - 433 | 1 Unidrive4t.asm 414 | Code | 11 | | 2 | 00/0575 : A5 C5 | NORM LDA {$C5} ;EXP1 ZERO? - 434 | 1 Unidrive4t.asm 415 | Code | 11 | | 2 | 00/0577 : D0 EE | BNE NORM1 ;NO, CONTINUE NORMALIZING. - 435 | 1 Unidrive4t.asm 416 | Code | 11 | | 1 | 00/0579 : 60 | RTS1 RTS ;RETURN. - 436 | 1 Unidrive4t.asm 417 | Code | 11 | | 3 | 00/057A : 20 B6 05 | FSUB JSR FCOMPL ;CMPL MANT1,CLEARS CARRY UNLESS 0 <---- sub - 437 | 1 Unidrive4t.asm 418 | Code | 11 | | 3 | 00/057D : 20 8D 05 | SWPALGN JSR ALGNSWP ;RIGHT SHIFT MANT1 OR SWAP WITH - 438 | 1 Unidrive4t.asm 419 | Code | 11 | | 2 | 00/0580 : A5 C1 | FADD LDA {$C1} ;<------------------------------------- add - 439 | 1 Unidrive4t.asm 420 | Code | 11 | | 2 | 00/0582 : C5 C5 | CMP {$C5} ;COMPARE EXP1 WITH EXP2. - 440 | 1 Unidrive4t.asm 421 | Code | 11 | | 2 | 00/0584 : D0 F7 | BNE SWPALGN ;IF #,SWAP ADDENDS OR ALIGN MANTS. - 441 | 1 Unidrive4t.asm 422 | Code | 11 | | 3 | 00/0586 : 20 37 05 | JSR ADD ;ADD ALIGNED MANTISSAS. - 442 | 1 Unidrive4t.asm 423 | Code | 11 | | 2 | 00/0589 : 50 EA | ADDEND BVC NORM ;NO OVERFLOW, NORMALIZE RESULT. - 443 | 1 Unidrive4t.asm 424 | Code | 11 | | 2 | 00/058B : 70 05 | BVS RTLOG ;OV: SHIFT M1 RIGHT, CARRY INTO SIGN - 444 | 1 Unidrive4t.asm 425 | Code | 11 | | 2 | 00/058D : 90 C4 | ALGNSWP BCC SWAP ;SWAP IF CARRY CLEAR, - 445 | 1 Unidrive4t.asm 426 | Comment | 11 | | 0 | 00/058F | * ELSE SHIFT RIGHT ARITH. - 446 | 1 Unidrive4t.asm 427 | Code | 11 | | 2 | 00/058F : A5 C6 | RTAR LDA {$C6} ;SIGN OF MANT1 INTO CARRY FOR - 447 | 1 Unidrive4t.asm 428 | Code | 11 | | 1 | 00/0591 : 0A | ASL ;RIGHT ARITH SHIFT. - 448 | 1 Unidrive4t.asm 429 | Code | 11 | | 2 | 00/0592 : E6 C5 | RTLOG INC {$C5} ;INCR X1 TO ADJUST FOR RIGHT SHIFT - 449 | 1 Unidrive4t.asm 430 | Code | 11 | | 2 | 00/0594 : F0 75 | BEQ OVFL ;EXP1 OUT OF RANGE. - 450 | 1 Unidrive4t.asm 431 | Code | 11 | | 2 | 00/0596 : A2 FA | RTLOG1 LDX #$FA ;INDEX FOR 6:BYTE RIGHT SHIFT. - 451 | 1 Unidrive4t.asm 432 | Code | 11 | | 2 | 00/0598 : 76 CC | ROR1 ROR {$C9}+3,X - 452 | 1 Unidrive4t.asm 433 | Code | 11 | | 1 | 00/059A : E8 | INX ;NEXT BYTE OF SHIFT. - 453 | 1 Unidrive4t.asm 434 | Code | 11 | | 2 | 00/059B : D0 FB | BNE ROR1 ;LOOP UNTIL DONE. - 454 | 1 Unidrive4t.asm 435 | Code | 11 | | 1 | 00/059D : 60 | RTS ;RETURN. - 455 | 1 Unidrive4t.asm 436 | Code | 11 | | 3 | 00/059E : 20 44 05 | FMUL JSR MD1 ;ABS VAL OF MANT1, MANT2 <-------------- mul - 456 | 1 Unidrive4t.asm 437 | Code | 11 | | 2 | 00/05A1 : 65 C5 | ADC {$C5} ;ADD EXP1 TO EXP2 FOR PRODUCT EXP - 457 | 1 Unidrive4t.asm 438 | Code | 11 | | 3 | 00/05A3 : 20 F4 05 | JSR MD2 ;CHECK PROD. EXP AND PREP. FOR MUL - 458 | 1 Unidrive4t.asm 439 | Code | 11 | | 1 | 00/05A6 : 18 | CLC ;CLEAR CARRY FOR FIRST BIT. - 459 | 1 Unidrive4t.asm 440 | Code | 11 | | 3 | 00/05A7 : 20 96 05 | MUL1 JSR RTLOG1 ;M1 AND E RIGHT (PROD AND MPLIER) - 460 | 1 Unidrive4t.asm 441 | Code | 11 | | 2 | 00/05AA : 90 03 | BCC MUL2 ;IF CARRY CLEAR, SKIP PARTIAL PROD - 461 | 1 Unidrive4t.asm 442 | Code | 11 | | 3 | 00/05AC : 20 37 05 | JSR ADD ;ADD MULTIPLICAND TO PRODUCT. - 462 | 1 Unidrive4t.asm 443 | Code | 11 | | 1 | 00/05AF : 88 | MUL2 DEY ;NEXT MUL ITERATION. - 463 | 1 Unidrive4t.asm 444 | Code | 11 | | 2 | 00/05B0 : 10 F5 | BPL MUL1 ;LOOP UNTIL DONE. - 464 | 1 Unidrive4t.asm 445 | Code | 11 | | 2 | 00/05B2 : 46 C0 | MDEND LSR {$C0} ;TEST SIGN LSB. - 465 | 1 Unidrive4t.asm 446 | Code | 11 | | 2 | 00/05B4 : 90 BF | NORMX BCC NORM ;IF EVEN,NORMALIZE PROD,ELSE COMP - 466 | 1 Unidrive4t.asm 447 | Code | 11 | | 1 | 00/05B6 : 38 | FCOMPL SEC ;SET CARRY FOR SUBTRACT. <--------------- not - 467 | 1 Unidrive4t.asm 448 | Code | 11 | | 2 | 00/05B7 : A2 03 | LDX #$3 ;INDEX FOR 3 BYTE SUBTRACT. - 468 | 1 Unidrive4t.asm 449 | Code | 11 | | 2 | 00/05B9 : A9 00 | COMPL1 LDA #$0 ;CLEAR A. - 469 | 1 Unidrive4t.asm 450 | Code | 11 | | 2 | 00/05BB : F5 C5 | SBC {$C5},X ;SUBTRACT BYTE OF EXP1. - 470 | 1 Unidrive4t.asm 451 | Code | 11 | | 2 | 00/05BD : 95 C5 | STA {$C5},X ;RESTORE IT. - 471 | 1 Unidrive4t.asm 452 | Code | 11 | | 1 | 00/05BF : CA | DEX ;NEXT MORE SIGNIFICANT BYTE. - 472 | 1 Unidrive4t.asm 453 | Code | 11 | | 2 | 00/05C0 : D0 F7 | BNE COMPL1 ;LOOP UNTIL DONE. - 473 | 1 Unidrive4t.asm 454 | Code | 11 | | 2 | 00/05C2 : F0 C5 | BEQ ADDEND ;NORMALIZE (OR SHIFT RT IF OVFL). - 474 | 1 Unidrive4t.asm 455 | Code | 11 | | 3 | 00/05C4 : 20 44 05 | FDIV JSR MD1 ;TAKE ABS VAL OF MANT1, MANT2. <--------- div - 475 | 1 Unidrive4t.asm 456 | Code | 11 | | 2 | 00/05C7 : E5 C5 | SBC {$C5} ;SUBTRACT EXP1 FROM EXP2. - 476 | 1 Unidrive4t.asm 457 | Code | 11 | | 3 | 00/05C9 : 20 F4 05 | JSR MD2 ;SAVE AS QUOTIENT EXP. - 477 | 1 Unidrive4t.asm 458 | Code | 11 | | 1 | 00/05CC : 38 | DIV1 SEC ;SET CARRY FOR SUBTRACT. - 478 | 1 Unidrive4t.asm 459 | Code | 11 | | 2 | 00/05CD : A2 02 | LDX #$2 ;INDEX FOR 3-BYTE SUBTRACTION. - 479 | 1 Unidrive4t.asm 460 | Code | 11 | | 2 | 00/05CF : B5 C2 | DIV2 LDA {$C2},X - 480 | 1 Unidrive4t.asm 461 | Code | 11 | | 2 | 00/05D1 : F5 C9 | SBC {$C9},X ;SUBTRACT A BYTE OF E FROM MANT2. - 481 | 1 Unidrive4t.asm 462 | Code | 11 | | 1 | 00/05D3 : 48 | PHA ;SAVE ON STACK. - 482 | 1 Unidrive4t.asm 463 | Code | 11 | | 1 | 00/05D4 : CA | DEX ;NEXT MORE SIGNIFICANT BYTE. - 483 | 1 Unidrive4t.asm 464 | Code | 11 | | 2 | 00/05D5 : 10 F8 | BPL DIV2 ;LOOP UNTIL DONE. - 484 | 1 Unidrive4t.asm 465 | Code | 11 | | 2 | 00/05D7 : A2 FD | LDX #$FD ;INDEX FOR 3-BYTE CONDITIONAL MOVE - 485 | 1 Unidrive4t.asm 466 | Code | 11 | | 1 | 00/05D9 : 68 | DIV3 PLA ;PULL BYTE OF DIFFERENCE OFF STACK - 486 | 1 Unidrive4t.asm 467 | Code | 11 | | 2 | 00/05DA : 90 02 | BCC DIV4 ;IF M2FxE3w2o3S{@eGMnaEeq2(o=8`a&`9aWl-q* z3q*?;_BuCwkl<_p>-y}d00a>V3Xvc>0I29h0=jUdtlOjThcJzy`51!OveIz*)gRNCC)jaSiiyb_E&%)L{qG!NA$L;lf(|Mul5{7cnb%{akAR zW-@}9h6qt3Fq0K1ny`p{|1%#6Z~%nXD8Ghj+Uxb#5k!2|$@*>n~F diff --git a/AppleII/Integer adc 1 Byte/Unicalc.do b/AppleII/Integer adc 1 Byte/Unicalc.do deleted file mode 100644 index fbb858c9aaff87e722f2a1355537a022b9fafcad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 143360 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 diff --git a/AppleII/Integer adc 1 Byte/Unicalc_Output.txt b/AppleII/Integer adc 1 Byte/Unicalc_Output.txt deleted file mode 100644 index 8c9295b..0000000 --- a/AppleII/Integer adc 1 Byte/Unicalc_Output.txt +++ /dev/null @@ -1,415 +0,0 @@ -------+-----------------------+-------------+----+---------+------+-----------------------+------------------------------------------------------------------- - Line | # File Line | Line Type | MX | Reloc | Size | Address Object Code | Source Code -------+-----------------------+-------------+----+---------+------+-----------------------+------------------------------------------------------------------- - 1 | 1 Unicalc.asm 1 | Comment | 11 | | 0 | 00/8000 | * @com.wudsn.ide.asm.hardware=APPLE2 - 2 | 1 Unicalc.asm 2 | Comment | 11 | | 0 | 00/8000 | * Protocol Converter Call - 3 | 1 Unicalc.asm 3 | Directive | 11 | | 0 | 00/8000 | XC - 4 | 1 Unicalc.asm 4 | Equivalence | 11 | | 0 | 00/8000 | ZPTempL equ $0006 ;Temporary zero page storage - 5 | 1 Unicalc.asm 5 | Equivalence | 11 | | 0 | 00/8000 | ZPTempH equ $0007 - 6 | 1 Unicalc.asm 6 | Comment | 11 | | 0 | 00/8000 | *** Pointers *** - 7 | 1 Unicalc.asm 7 | Equivalence | 11 | | 0 | 00/8000 | LowMain equ $000A - 8 | 1 Unicalc.asm 8 | Equivalence | 11 | | 0 | 00/8000 | HiMain equ $000B - 9 | 1 Unicalc.asm 9 | Comment | 11 | | 0 | 00/8000 | *** Monitor routines *** - 10 | 1 Unicalc.asm 10 | Equivalence | 11 | | 0 | 00/8000 | COut equ $FDED ;Console output ASCII - 11 | 1 Unicalc.asm 11 | Equivalence | 11 | | 0 | 00/8000 | COUT1 equ $FDF0 ;Output to screen - 12 | 1 Unicalc.asm 12 | Equivalence | 11 | | 0 | 00/8000 | CROut equ $FD8E ;Carriage return - 13 | 1 Unicalc.asm 13 | Equivalence | 11 | | 0 | 00/8000 | PRbyte equ $FDDA ;Print byte in hex - 14 | 1 Unicalc.asm 14 | Equivalence | 11 | | 0 | 00/8000 | PRBL2 equ $F94A ;Print many spaces - 15 | 1 Unicalc.asm 15 | Equivalence | 11 | | 0 | 00/8000 | KEYIN equ $FD1B ;Waits for keypress - 16 | 1 Unicalc.asm 16 | Comment | 11 | | 0 | 00/8000 | ** Command Code ** - 17 | 1 Unicalc.asm 17 | Equivalence | 11 | | 0 | 00/8000 | StatusCmd equ 0 - 18 | 1 Unicalc.asm 18 | Comment | 11 | | 0 | 00/8000 | ** Status Code ** - 19 | 1 Unicalc.asm 19 | Equivalence | 11 | | 0 | 00/8000 | StatusDIB equ 3 - 20 | 1 Unicalc.asm 20 | Equivalence | 11 | | 0 | 00/8000 | StatusUNI equ 5 - 21 | 1 Unicalc.asm 21 | Comment | 11 | | 0 | 00/8000 | * - 22 | 1 Unicalc.asm 22 | Equivalence | 11 | | 0 | 00/8000 | ControlCmd equ 4 - 23 | 1 Unicalc.asm 23 | Comment | 11 | | 0 | 00/8000 | ** Control Codes ** - 24 | 1 Unicalc.asm 24 | Equivalence | 11 | | 0 | 00/8000 | Eject equ 4 - 25 | 1 Unicalc.asm 25 | Equivalence | 11 | | 0 | 00/8000 | Run equ 5 - 26 | 1 Unicalc.asm 26 | Equivalence | 11 | | 0 | 00/8000 | SetDWLoad equ 6 - 27 | 1 Unicalc.asm 27 | Equivalence | 11 | | 0 | 00/8000 | DWLoad equ 7 - 28 | 1 Unicalc.asm 28 | Comment | 11 | | 0 | 00/8000 | * - 29 | 1 Unicalc.asm 29 | Directive | 11 | | 0 | 00/8000 | org $8000 - 30 | 1 Unicalc.asm 30 | Comment | 11 | | 0 | 00/8000 | ***************************************************** - 31 | 1 Unicalc.asm 31 | Comment | 11 | | 0 | 00/8000 | * Presentation message ************** - 32 | 1 Unicalc.asm 32 | Comment | 11 | | 0 | 00/8000 | * - 33 | 1 Unicalc.asm 33 | Code | 11 | | 2 | 00/8000 : A2 00 | ldx #0 - 34 | 1 Unicalc.asm 34 | Empty | 11 | | 0 | 00/8002 | ozunid_1 - 35 | 1 Unicalc.asm 34 | Equivalence | 11 | | 0 | 00/8002 | LOOP equ ozunid_1 - 36 | 1 Unicalc.asm 35 | Code | 11 | | 3 | 00/8002 : BD 0D 80 | lda DATA,x - 37 | 1 Unicalc.asm 36 | Code | 11 | | 2 | 00/8005 : F0 27 | beq ME2 - 38 | 1 Unicalc.asm 37 | Code | 11 | | 3 | 00/8007 : 20 ED FD | jsr {$FDED} - 39 | 1 Unicalc.asm 38 | Code | 11 | | 1 | 00/800A : E8 | inx - 40 | 1 Unicalc.asm 39 | Code | 11 | | 2 | 00/800B : D0 F5 | bne {ozunid_1} - 41 | 1 Unicalc.asm 40 | Comment | 11 | | 0 | 00/800D | * - 42 | 1 Unicalc.asm 41 | Data | 11 | | 31 | 00/800D : 55 4E 49 44 | DATA asc 'UNIDISK 3.5 UTILITY BY R. GRECO' - | | | | | | 49 53 4B 20 | - | | | | | | 33 2E 35 20 | - | | | | | | 55 54 49 4C | - | | | | | | 49 54 59 20 | - | | | | | | 42 59 20 52 | - | | | | | | 2E 20 47 52 | - | | | | | | 45 43 4F | - 43 | 1 Unicalc.asm 42 | Data | 11 | | 2 | 00/802C : 8D 00 | dfb $8D,0 ; Inverse mode on - 44 | 1 Unicalc.asm 43 | Empty | 11 | | 0 | 00/802E | - 45 | 1 Unicalc.asm 44 | Code | 11 | | 3 | 00/802E : 20 8E FD | ME2 jsr {$FD8E} - 46 | 1 Unicalc.asm 45 | Code | 11 | | 3 | 00/8031 : 20 8E FD | jsr {$FD8E} - 47 | 1 Unicalc.asm 46 | Empty | 11 | | 0 | 00/8034 | - 48 | 1 Unicalc.asm 47 | Code | 11 | | 2 | 00/8034 : A2 00 | ldx #0 - 49 | 1 Unicalc.asm 48 | Empty | 11 | | 0 | 00/8036 | ozunid_2 - 50 | 1 Unicalc.asm 48 | Equivalence | 11 | | 0 | 00/8036 | LOOP2 equ ozunid_2 - 51 | 1 Unicalc.asm 49 | Code | 11 | | 3 | 00/8036 : BD 43 80 | lda DATA2,x - 52 | 1 Unicalc.asm 50 | Code | 11 | | 2 | 00/8039 : F0 18 | beq START - 53 | 1 Unicalc.asm 51 | Code | 11 | | 2 | 00/803B : 09 80 | ora #$80 - 54 | 1 Unicalc.asm 52 | Code | 11 | | 3 | 00/803D : 20 ED FD | jsr {$FDED} - 55 | 1 Unicalc.asm 53 | Code | 11 | | 1 | 00/8040 : E8 | inx - 56 | 1 Unicalc.asm 54 | Code | 11 | | 2 | 00/8041 : D0 F3 | bne {ozunid_2} - 57 | 1 Unicalc.asm 55 | Comment | 11 | | 0 | 00/8043 | * - 58 | 1 Unicalc.asm 56 | Data | 11 | | 14 | 00/8043 : 41 20 20 20 | DATA2 asc 'A X Y P' - | | | | | | 20 58 20 20 | - | | | | | | 59 20 20 20 | - | | | | | | 20 50 | - 59 | 1 Unicalc.asm 57 | Data | 11 | | 2 | 00/8051 : 8D 00 | dfb $8D,0 ; Inverse mode on - 60 | 1 Unicalc.asm 58 | Comment | 11 | | 0 | 00/8053 | ***************************************************** - 61 | 1 Unicalc.asm 59 | Comment | 11 | | 0 | 00/8053 | * - 62 | 1 Unicalc.asm 60 | Comment | 11 | | 0 | 00/8053 | * Find a Protocol Converter in one of the slots. - 63 | 1 Unicalc.asm 61 | Code | 11 | | 3 | 00/8053 : 20 D1 80 | START jsr {ozunid_6} - 64 | 1 Unicalc.asm 62 | Code | 11 | | 2 | 00/8056 : B0 1C | bcs {ozunid_3} - 65 | 1 Unicalc.asm 63 | Comment | 11 | | 0 | 00/8058 | * - 66 | 1 Unicalc.asm 64 | Comment | 11 | | 0 | 00/8058 | * Now make the DIB call to the first guy - 67 | 1 Unicalc.asm 65 | Comment | 11 | | 0 | 00/8058 | * - 68 | 1 Unicalc.asm 66 | Comment | 11 | | 0 | 00/8058 | * jsr Dispatch - 69 | 1 Unicalc.asm 67 | Comment | 11 | | 0 | 00/8058 | * dfb StatusCmd - 70 | 1 Unicalc.asm 68 | Comment | 11 | | 0 | 00/8058 | * dw DParmsDIB - 71 | 1 Unicalc.asm 69 | Comment | 11 | | 0 | 00/8058 | * bcs Error - 72 | 1 Unicalc.asm 70 | Comment | 11 | | 0 | 00/8058 | * - 73 | 1 Unicalc.asm 71 | Comment | 11 | | 0 | 00/8058 | * Got the DIB; now print the name string - 74 | 1 Unicalc.asm 72 | Comment | 11 | | 0 | 00/8058 | * - 75 | 1 Unicalc.asm 73 | Comment | 11 | | 0 | 00/8058 | * ldx #0 - 76 | 1 Unicalc.asm 74 | Comment | 11 | | 0 | 00/8058 | * morechars equ * - 77 | 1 Unicalc.asm 75 | Comment | 11 | | 0 | 00/8058 | * lda DIBName,x - 78 | 1 Unicalc.asm 76 | Comment | 11 | | 0 | 00/8058 | * ora #$80 ;COut wants high Bit set - 79 | 1 Unicalc.asm 77 | Comment | 11 | | 0 | 00/8058 | * jsr COut ; ASCII - 80 | 1 Unicalc.asm 78 | Comment | 11 | | 0 | 00/8058 | * inx - 81 | 1 Unicalc.asm 79 | Comment | 11 | | 0 | 00/8058 | * cpx DIBNameLen - 82 | 1 Unicalc.asm 80 | Comment | 11 | | 0 | 00/8058 | * bne morechars - 83 | 1 Unicalc.asm 81 | Comment | 11 | | 0 | 00/8058 | ************************************* - 84 | 1 Unicalc.asm 82 | Comment | 11 | | 0 | 00/8058 | * ldx #02 ; Set 2 space - 85 | 1 Unicalc.asm 83 | Comment | 11 | | 0 | 00/8058 | * jsr PRBL2 - 86 | 1 Unicalc.asm 84 | Comment | 11 | | 0 | 00/8058 | ** Print Type *********************** - 87 | 1 Unicalc.asm 85 | Comment | 11 | | 0 | 00/8058 | * lda DIBType - 88 | 1 Unicalc.asm 86 | Comment | 11 | | 0 | 00/8058 | * jsr PRbyte ; HEX form - 89 | 1 Unicalc.asm 87 | Comment | 11 | | 0 | 00/8058 | ************************************* - 90 | 1 Unicalc.asm 88 | Comment | 11 | | 0 | 00/8058 | * ldx #02 ; Set 2 space - 91 | 1 Unicalc.asm 89 | Comment | 11 | | 0 | 00/8058 | * jsr PRBL2 - 92 | 1 Unicalc.asm 90 | Comment | 11 | | 0 | 00/8058 | ** Print Firmware version *********** - 93 | 1 Unicalc.asm 91 | Comment | 11 | | 0 | 00/8058 | * ldx #0 - 94 | 1 Unicalc.asm 92 | Comment | 11 | | 0 | 00/8058 | * morechars2 equ * - 95 | 1 Unicalc.asm 93 | Comment | 11 | | 0 | 00/8058 | * lda DIBVersion,x - 96 | 1 Unicalc.asm 94 | Comment | 11 | | 0 | 00/8058 | * jsr PRbyte ; HEX form - 97 | 1 Unicalc.asm 95 | Comment | 11 | | 0 | 00/8058 | * inx - 98 | 1 Unicalc.asm 96 | Comment | 11 | | 0 | 00/8058 | * cpx #$02 ; 2 Byte - 99 | 1 Unicalc.asm 97 | Comment | 11 | | 0 | 00/8058 | * bne morechars2 - 100 | 1 Unicalc.asm 98 | Comment | 11 | | 0 | 00/8058 | * jsr COut - 101 | 1 Unicalc.asm 99 | Comment | 11 | | 0 | 00/8058 | ************************************** - 102 | 1 Unicalc.asm 100 | Code | 11 | | 3 | 00/8058 : 20 8E FD | jsr {$FD8E} - 103 | 1 Unicalc.asm 101 | Comment | 11 | | 0 | 00/805B | ** Wait keypress to continue ** - 104 | 1 Unicalc.asm 102 | Comment | 11 | | 0 | 00/805B | * - 105 | 1 Unicalc.asm 103 | Code | 11 | | 3 | 00/805B : 20 1B FD | jsr {$FD1B} - 106 | 1 Unicalc.asm 104 | Comment | 11 | | 0 | 00/805E | * - 107 | 1 Unicalc.asm 105 | Comment | 11 | | 0 | 00/805E | *** Eject *** - 108 | 1 Unicalc.asm 106 | Code | 11 | | 3 | 00/805E : 20 06 81 | jsr {ozunid_11} - 109 | 1 Unicalc.asm 107 | Data | 11 | | 1 | 00/8061 : 04 | dfb {4} - 110 | 1 Unicalc.asm 108 | Data | 11 | | 2 | 00/8062 : 43 81 | dw {ozunid_19} - 111 | 1 Unicalc.asm 109 | Comment | 11 | | 0 | 00/8064 | *** Set start HiMain Memory Pointers *** - 112 | 1 Unicalc.asm 110 | Comment | 11 | | 0 | 00/8064 | * lda #$20 ; Hi Byte start (//c ram) - 113 | 1 Unicalc.asm 111 | Comment | 11 | | 0 | 00/8064 | * sta HiMain ; HiMain=$20 set - 114 | 1 Unicalc.asm 112 | Comment | 11 | | 0 | 00/8064 | *** Set Address *** - 115 | 1 Unicalc.asm 113 | Code | 11 | | 3 | 00/8064 : 20 06 81 | jsr {ozunid_11} - 116 | 1 Unicalc.asm 114 | Data | 11 | | 1 | 00/8067 : 04 | dfb {4} - 117 | 1 Unicalc.asm 115 | Data | 11 | | 2 | 00/8068 : 34 81 | dw {ozunid_16} - 118 | 1 Unicalc.asm 116 | Comment | 11 | | 0 | 00/806A | *** Download *** - 119 | 1 Unicalc.asm 117 | Code | 11 | | 3 | 00/806A : 20 06 81 | jsr {ozunid_11} - 120 | 1 Unicalc.asm 118 | Data | 11 | | 1 | 00/806D : 04 | dfb {4} - 121 | 1 Unicalc.asm 119 | Data | 11 | | 2 | 00/806E : 39 81 | dw {ozunid_17} - 122 | 1 Unicalc.asm 120 | Comment | 11 | | 0 | 00/8070 | * - 123 | 1 Unicalc.asm 121 | Code | 11 | | 3 | 00/8070 : 20 96 80 | jsr EXEC ; Jump the Error routine - 124 | 1 Unicalc.asm 122 | Code | 11 | | 1 | 00/8073 : 60 | rts - 125 | 1 Unicalc.asm 123 | Comment | 11 | | 0 | 00/8074 | ********************************************* - 126 | 1 Unicalc.asm 124 | Empty | 11 | | 0 | 00/8074 | ozunid_3 - 127 | 1 Unicalc.asm 124 | Equivalence | 11 | | 0 | 00/8074 | Error equ ozunid_3 - 128 | 1 Unicalc.asm 125 | Comment | 11 | | 0 | 00/8074 | * - 129 | 1 Unicalc.asm 126 | Comment | 11 | | 0 | 00/8074 | * There's either no PC around, or there was no give message - 130 | 1 Unicalc.asm 127 | Comment | 11 | | 0 | 00/8074 | * - 131 | 1 Unicalc.asm 128 | Code | 11 | | 2 | 00/8074 : A2 00 | ldx #0 - 132 | 1 Unicalc.asm 129 | Empty | 11 | | 0 | 00/8076 | ozunid_4 - 133 | 1 Unicalc.asm 129 | Equivalence | 11 | | 0 | 00/8076 | err1 equ ozunid_4 - 134 | 1 Unicalc.asm 130 | Code | 11 | | 3 | 00/8076 : BD 82 80 | lda Message,x - 135 | 1 Unicalc.asm 131 | Code | 11 | | 2 | 00/8079 : F0 06 | beq {ozunid_5} - 136 | 1 Unicalc.asm 132 | Code | 11 | | 3 | 00/807B : 20 ED FD | jsr {$FDED} - 137 | 1 Unicalc.asm 133 | Code | 11 | | 1 | 00/807E : E8 | inx - 138 | 1 Unicalc.asm 134 | Code | 11 | | 2 | 00/807F : D0 F5 | bne {ozunid_4} - 139 | 1 Unicalc.asm 135 | Comment | 11 | | 0 | 00/8081 | * - 140 | 1 Unicalc.asm 136 | Empty | 11 | | 0 | 00/8081 | ozunid_5 - 141 | 1 Unicalc.asm 136 | Equivalence | 11 | | 0 | 00/8081 | errout equ ozunid_5 - 142 | 1 Unicalc.asm 137 | Code | 11 | | 1 | 00/8081 : 60 | rts - 143 | 1 Unicalc.asm 138 | Comment | 11 | | 0 | 00/8082 | * - 144 | 1 Unicalc.asm 139 | Data | 11 | | 18 | 00/8082 : 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 | - 145 | 1 Unicalc.asm 140 | Data | 11 | | 2 | 00/8094 : 8D 00 | dfb $8D,0 - 146 | 1 Unicalc.asm 141 | Comment | 11 | | 0 | 00/8096 | ********************************************* - 147 | 1 Unicalc.asm 142 | Empty | 11 | | 0 | 00/8096 | - 148 | 1 Unicalc.asm 143 | Comment | 11 | | 0 | 00/8096 | *** Set and Reset LoMain Memory Counter *** - 149 | 1 Unicalc.asm 144 | Comment | 11 | | 0 | 00/8096 | * RESET ldx #$FF ;Lo Byte start One more before $00 (//c ram) - 150 | 1 Unicalc.asm 145 | Comment | 11 | | 0 | 00/8096 | * clc - 151 | 1 Unicalc.asm 146 | Comment | 11 | | 0 | 00/8096 | * ldy Y_reg ; 1 time $DF --> Y - 152 | 1 Unicalc.asm 147 | Comment | 11 | | 0 | 00/8096 | * iny ; Y+ --> $FF - 153 | 1 Unicalc.asm 148 | Comment | 11 | | 0 | 00/8096 | * sty Y_reg ; Y --> Y_reg Uni=$FF - 154 | 1 Unicalc.asm 149 | Comment | 11 | | 0 | 00/8096 | *** Execute *** - 155 | 1 Unicalc.asm 150 | Comment | 11 | | 0 | 00/8096 | * EXEC inx - 156 | 1 Unicalc.asm 151 | Comment | 11 | | 0 | 00/8096 | * stx LowMain ; 1 time set LowMain=$00 - 157 | 1 Unicalc.asm 152 | Comment | 11 | | 0 | 00/8096 | * stx X_reg - 158 | 1 Unicalc.asm 153 | Code | 11 | | 3 | 00/8096 : 20 06 81 | EXEC jsr {ozunid_11} - 159 | 1 Unicalc.asm 154 | Data | 11 | | 1 | 00/8099 : 04 | dfb {4} - 160 | 1 Unicalc.asm 155 | Data | 11 | | 2 | 00/809A : 3E 81 | dw {ozunid_18} - 161 | 1 Unicalc.asm 156 | Code | 11 | | 3 | 00/809C : 20 06 81 | READ jsr {ozunid_11} - 162 | 1 Unicalc.asm 157 | Data | 11 | | 1 | 00/809F : 00 | dfb {0} - 163 | 1 Unicalc.asm 158 | Data | 11 | | 2 | 00/80A0 : 09 81 | dw {ozunid_12} - 164 | 1 Unicalc.asm 159 | Code | 11 | | 2 | 00/80A2 : B0 D0 | bcs {ozunid_3} - 165 | 1 Unicalc.asm 160 | Comment | 11 | | 0 | 00/80A4 | * - 166 | 1 Unicalc.asm 161 | Comment | 11 | | 0 | 00/80A4 | **** Screen Output **** - 167 | 1 Unicalc.asm 162 | Comment | 11 | | 0 | 00/80A4 | * - 168 | 1 Unicalc.asm 163 | Comment | 11 | | 0 | 00/80A4 | *** Accumulator *** - 169 | 1 Unicalc.asm 164 | Code | 11 | | 3 | 00/80A4 : AD 2F 81 | lda UNIAcc_reg - 170 | 1 Unicalc.asm 165 | Code | 11 | | 3 | 00/80A7 : 20 DA FD | jsr {$FDDA} - 171 | 1 Unicalc.asm 166 | Code | 11 | | 2 | 00/80AA : A2 03 | ldx #03 ; Set 3 space - 172 | 1 Unicalc.asm 167 | Code | 11 | | 3 | 00/80AC : 20 4A F9 | jsr {$F94A} - 173 | 1 Unicalc.asm 168 | Comment | 11 | | 0 | 00/80AF | *** X Register *** - 174 | 1 Unicalc.asm 169 | Code | 11 | | 3 | 00/80AF : AD 30 81 | lda UNIX_reg - 175 | 1 Unicalc.asm 170 | Code | 11 | | 3 | 00/80B2 : 20 DA FD | jsr {$FDDA} - 176 | 1 Unicalc.asm 171 | Code | 11 | | 2 | 00/80B5 : A2 01 | ldx #01 ; Set one space - 177 | 1 Unicalc.asm 172 | Code | 11 | | 3 | 00/80B7 : 20 4A F9 | jsr {$F94A} - 178 | 1 Unicalc.asm 173 | Comment | 11 | | 0 | 00/80BA | *** Y Register *** - 179 | 1 Unicalc.asm 174 | Code | 11 | | 3 | 00/80BA : AD 31 81 | lda UNIY_reg - 180 | 1 Unicalc.asm 175 | Code | 11 | | 3 | 00/80BD : 20 DA FD | jsr {$FDDA} - 181 | 1 Unicalc.asm 176 | Code | 11 | | 2 | 00/80C0 : A2 03 | ldx #03 ; Set one space - 182 | 1 Unicalc.asm 177 | Code | 11 | | 3 | 00/80C2 : 20 4A F9 | jsr {$F94A} - 183 | 1 Unicalc.asm 178 | Comment | 11 | | 0 | 00/80C5 | *** Process Status *** - 184 | 1 Unicalc.asm 179 | Code | 11 | | 3 | 00/80C5 : AD 32 81 | lda UNIP_val - 185 | 1 Unicalc.asm 180 | Code | 11 | | 3 | 00/80C8 : 20 DA FD | jsr {$FDDA} - 186 | 1 Unicalc.asm 181 | Code | 11 | | 2 | 00/80CB : A2 05 | ldx #05 ; Set five space - 187 | 1 Unicalc.asm 182 | Code | 11 | | 3 | 00/80CD : 20 4A F9 | jsr {$F94A} - 188 | 1 Unicalc.asm 183 | Comment | 11 | | 0 | 00/80D0 | ** //c Memory store adress ** - 189 | 1 Unicalc.asm 184 | Comment | 11 | | 0 | 00/80D0 | * lda HiMain - 190 | 1 Unicalc.asm 185 | Comment | 11 | | 0 | 00/80D0 | * jsr PRbyte - 191 | 1 Unicalc.asm 186 | Comment | 11 | | 0 | 00/80D0 | * lda LowMain - 192 | 1 Unicalc.asm 187 | Comment | 11 | | 0 | 00/80D0 | * jsr PRbyte - 193 | 1 Unicalc.asm 188 | Comment | 11 | | 0 | 00/80D0 | * jsr CROut - 194 | 1 Unicalc.asm 189 | Comment | 11 | | 0 | 00/80D0 | **** Store in //c Main Memory **** - 195 | 1 Unicalc.asm 190 | Comment | 11 | | 0 | 00/80D0 | * ldx X_reg - 196 | 1 Unicalc.asm 191 | Comment | 11 | | 0 | 00/80D0 | * lda UNIAcc_reg ;#$FB Test - 197 | 1 Unicalc.asm 192 | Comment | 11 | | 0 | 00/80D0 | * ldy #0 - 198 | 1 Unicalc.asm 193 | Comment | 11 | | 0 | 00/80D0 | * sta (LowMain),y - 199 | 1 Unicalc.asm 194 | Comment | 11 | | 0 | 00/80D0 | * cpx UNIL_End - 200 | 1 Unicalc.asm 195 | Comment | 11 | | 0 | 00/80D0 | * bne EXEC - 201 | 1 Unicalc.asm 196 | Comment | 11 | | 0 | 00/80D0 | * UNIL_End dfb $FF ; Lo Byte stop (Unidisk) - $C0 for zero page - 202 | 1 Unicalc.asm 197 | Comment | 11 | | 0 | 00/80D0 | *** Increment HiMain *** - 203 | 1 Unicalc.asm 198 | Comment | 11 | | 0 | 00/80D0 | * inc HiMain - 204 | 1 Unicalc.asm 199 | Comment | 11 | | 0 | 00/80D0 | * ldy Y_reg - 205 | 1 Unicalc.asm 200 | Comment | 11 | | 0 | 00/80D0 | * cpy UNIH_End - 206 | 1 Unicalc.asm 201 | Comment | 11 | | 0 | 00/80D0 | * bne RESET - 207 | 1 Unicalc.asm 202 | Comment | 11 | | 0 | 00/80D0 | * UNIH_End dfb $FF ; Hi Byte stop (Unidisk) - $00 for zero page - 208 | 1 Unicalc.asm 203 | Comment | 11 | | 0 | 00/80D0 | * - 209 | 1 Unicalc.asm 204 | Code | 11 | | 1 | 00/80D0 : 60 | rts - 210 | 1 Unicalc.asm 205 | Empty | 11 | | 0 | 00/80D1 | - 211 | 1 Unicalc.asm 206 | Comment | 11 | | 0 | 00/80D1 | ****************************************************** - 212 | 1 Unicalc.asm 207 | Empty | 11 | | 0 | 00/80D1 | ozunid_6 - 213 | 1 Unicalc.asm 207 | Equivalence | 11 | | 0 | 00/80D1 | FindPC equ ozunid_6 - 214 | 1 Unicalc.asm 208 | Comment | 11 | | 0 | 00/80D1 | * - 215 | 1 Unicalc.asm 209 | Comment | 11 | | 0 | 00/80D1 | * Search slot 7 to slot 1 looking for signature bytes - 216 | 1 Unicalc.asm 210 | Comment | 11 | | 0 | 00/80D1 | * - 217 | 1 Unicalc.asm 211 | Code | 11 | | 2 | 00/80D1 : A2 07 | ldx #7 ;Do for seven slots - 218 | 1 Unicalc.asm 212 | Code | 11 | | 2 | 00/80D3 : A9 C7 | lda #$C7 - 219 | 1 Unicalc.asm 213 | Code | 11 | | 2 | 00/80D5 : 85 07 | sta {$0007} - 220 | 1 Unicalc.asm 214 | Code | 11 | | 2 | 00/80D7 : A9 00 | lda #$00 - 221 | 1 Unicalc.asm 215 | Code | 11 | | 2 | 00/80D9 : 85 06 | sta {$0006} - 222 | 1 Unicalc.asm 216 | Comment | 11 | | 0 | 00/80DB | * - 223 | 1 Unicalc.asm 217 | Empty | 11 | | 0 | 00/80DB | ozunid_7 - 224 | 1 Unicalc.asm 217 | Equivalence | 11 | | 0 | 00/80DB | newslot equ ozunid_7 - 225 | 1 Unicalc.asm 218 | Code | 11 | | 2 | 00/80DB : A0 07 | ldy #7 - 226 | 1 Unicalc.asm 219 | Comment | 11 | | 0 | 00/80DD | * - 227 | 1 Unicalc.asm 220 | Empty | 11 | | 0 | 00/80DD | ozunid_8 - 228 | 1 Unicalc.asm 220 | Equivalence | 11 | | 0 | 00/80DD | again equ ozunid_8 - 229 | 1 Unicalc.asm 221 | Code | 11 | | 2 | 00/80DD : B1 06 | lda ({$0006}),y - 230 | 1 Unicalc.asm 222 | Code | 11 | | 3 | 00/80DF : D9 FE 80 | cmp sigtab,y ;One for byte signature - 231 | 1 Unicalc.asm 223 | Code | 11 | | 2 | 00/80E2 : F0 07 | beq {ozunid_9} ;Found one signature byte - 232 | 1 Unicalc.asm 224 | Code | 11 | | 2 | 00/80E4 : C6 07 | dec {$0007} - 233 | 1 Unicalc.asm 225 | Code | 11 | | 1 | 00/80E6 : CA | dex - 234 | 1 Unicalc.asm 226 | Code | 11 | | 2 | 00/80E7 : D0 F2 | bne {ozunid_7} - 235 | 1 Unicalc.asm 227 | Comment | 11 | | 0 | 00/80E9 | * - 236 | 1 Unicalc.asm 228 | Comment | 11 | | 0 | 00/80E9 | * if we get here, no PC find - 237 | 1 Unicalc.asm 229 | Code | 11 | | 1 | 00/80E9 : 38 | sec - 238 | 1 Unicalc.asm 230 | Code | 11 | | 1 | 00/80EA : 60 | rts - 239 | 1 Unicalc.asm 231 | Comment | 11 | | 0 | 00/80EB | * - 240 | 1 Unicalc.asm 232 | Comment | 11 | | 0 | 00/80EB | * if we get here, no byte find on PC - 241 | 1 Unicalc.asm 233 | Empty | 11 | | 0 | 00/80EB | ozunid_9 - 242 | 1 Unicalc.asm 233 | Equivalence | 11 | | 0 | 00/80EB | maybe equ ozunid_9 - 243 | 1 Unicalc.asm 234 | Code | 11 | | 1 | 00/80EB : 88 | dey - 244 | 1 Unicalc.asm 235 | Code | 11 | | 1 | 00/80EC : 88 | dey ;if N=1 then all sig bytes OK - 245 | 1 Unicalc.asm 236 | Code | 11 | | 2 | 00/80ED : 10 EE | bpl {ozunid_8} - 246 | 1 Unicalc.asm 237 | Comment | 11 | | 0 | 00/80EF | * Found PC interface. Set up call address. - 247 | 1 Unicalc.asm 238 | Comment | 11 | | 0 | 00/80EF | * we already have high byte ($CN), we need low byte - 248 | 1 Unicalc.asm 239 | Comment | 11 | | 0 | 00/80EF | * - 249 | 1 Unicalc.asm 240 | Empty | 11 | | 0 | 00/80EF | ozunid_10 - 250 | 1 Unicalc.asm 240 | Equivalence | 11 | | 0 | 00/80EF | foundPC equ ozunid_10 - 251 | 1 Unicalc.asm 241 | Code | 11 | | 2 | 00/80EF : A9 FF | lda #$FF - 252 | 1 Unicalc.asm 242 | Code | 11 | | 2 | 00/80F1 : 85 06 | sta {$0006} - 253 | 1 Unicalc.asm 243 | Code | 11 | | 2 | 00/80F3 : A0 00 | ldy #0 ;For indirect load - 254 | 1 Unicalc.asm 244 | Code | 11 | | 2 | 00/80F5 : B1 06 | lda ({$0006}),y ;Get the byte - 255 | 1 Unicalc.asm 245 | Comment | 11 | | 0 | 00/80F7 | * - 256 | 1 Unicalc.asm 246 | Comment | 11 | | 0 | 00/80F7 | * Now the Acc has the low oreder ProDOS entry point. - 257 | 1 Unicalc.asm 247 | Comment | 11 | | 0 | 00/80F7 | * The PC entry is three locations past this ... - 258 | 1 Unicalc.asm 248 | Comment | 11 | | 0 | 00/80F7 | * - 259 | 1 Unicalc.asm 249 | Code | 11 | | 1 | 00/80F7 : 18 | clc - 260 | 1 Unicalc.asm 250 | Code | 11 | | 2 | 00/80F8 : 69 03 | adc #3 - 261 | 1 Unicalc.asm 251 | Code | 11 | | 2 | 00/80FA : 85 06 | sta {$0006} - 262 | 1 Unicalc.asm 252 | Comment | 11 | | 0 | 00/80FC | * - 263 | 1 Unicalc.asm 253 | Comment | 11 | | 0 | 00/80FC | * Now ZPTempL has PC entry point. - 264 | 1 Unicalc.asm 254 | Comment | 11 | | 0 | 00/80FC | * Return with carry clear. - 265 | 1 Unicalc.asm 255 | Comment | 11 | | 0 | 00/80FC | * - 266 | 1 Unicalc.asm 256 | Code | 11 | | 1 | 00/80FC : 18 | clc - 267 | 1 Unicalc.asm 257 | Code | 11 | | 1 | 00/80FD : 60 | rts - 268 | 1 Unicalc.asm 258 | Comment | 11 | | 0 | 00/80FE | *********************************************************** - 269 | 1 Unicalc.asm 259 | Comment | 11 | | 0 | 00/80FE | * - 270 | 1 Unicalc.asm 260 | Comment | 11 | | 0 | 00/80FE | * There are the PC signature bytes in their relative order. - 271 | 1 Unicalc.asm 261 | Comment | 11 | | 0 | 00/80FE | * The $FF bytes are filler bytes and are not compared. - 272 | 1 Unicalc.asm 262 | Comment | 11 | | 0 | 00/80FE | * - 273 | 1 Unicalc.asm 263 | Data | 11 | | 4 | 00/80FE : FF 20 FF 00 | sigtab dfb $FF,$20,$FF,$00 - 274 | 1 Unicalc.asm 264 | Data | 11 | | 4 | 00/8102 : FF 03 FF 00 | dfb $FF,$03,$FF,$00 - 275 | 1 Unicalc.asm 265 | Comment | 11 | | 0 | 00/8106 | * - 276 | 1 Unicalc.asm 266 | Empty | 11 | | 0 | 00/8106 | ozunid_11 - 277 | 1 Unicalc.asm 266 | Equivalence | 11 | | 0 | 00/8106 | Dispatch equ ozunid_11 - 278 | 1 Unicalc.asm 267 | Code | 11 | | 3 | 00/8106 : 6C 06 00 | jmp ({$0006}) ;Simulate an indirect JSR to PC - 279 | 1 Unicalc.asm 268 | Comment | 11 | | 0 | 00/8109 | * - 280 | 1 Unicalc.asm 269 | Comment | 11 | | 0 | 00/8109 | *** Status Parameter Set for UNI *** - 281 | 1 Unicalc.asm 270 | Empty | 11 | | 0 | 00/8109 | ozunid_12 - 282 | 1 Unicalc.asm 270 | Equivalence | 11 | | 0 | 00/8109 | DParms equ ozunid_12 - 283 | 1 Unicalc.asm 271 | Data | 11 | | 1 | 00/8109 : 03 | DPParmsCt dfb 3 ;Status calls have three parameters - 284 | 1 Unicalc.asm 272 | Data | 11 | | 1 | 00/810A : 01 | DPUnit dfb 1 - 285 | 1 Unicalc.asm 273 | Data | 11 | | 2 | 00/810B : 2C 81 | DPBuffer dw {ozunid_15} - 286 | 1 Unicalc.asm 274 | Data | 11 | | 1 | 00/810D : 05 | DPStatCode dfb {5} - 287 | 1 Unicalc.asm 275 | Comment | 11 | | 0 | 00/810E | * - 288 | 1 Unicalc.asm 276 | Comment | 11 | | 0 | 00/810E | * - 289 | 1 Unicalc.asm 277 | Comment | 11 | | 0 | 00/810E | *** Status Parameter Set for DIB *** - 290 | 1 Unicalc.asm 278 | Empty | 11 | | 0 | 00/810E | ozunid_13 - 291 | 1 Unicalc.asm 278 | Equivalence | 11 | | 0 | 00/810E | DParmsDIB equ ozunid_13 - 292 | 1 Unicalc.asm 279 | Data | 11 | | 1 | 00/810E : 03 | DPParmsCt2 dfb 3 ;Status calls have three parameters - 293 | 1 Unicalc.asm 280 | Data | 11 | | 1 | 00/810F : 01 | DPUnit2 dfb 1 - 294 | 1 Unicalc.asm 281 | Data | 11 | | 2 | 00/8110 : 13 81 | DPBuffer2 dw {ozunid_14} - 295 | 1 Unicalc.asm 282 | Data | 11 | | 1 | 00/8112 : 03 | DPStatCode2 dfb {3} - 296 | 1 Unicalc.asm 283 | Comment | 11 | | 0 | 00/8113 | * - 297 | 1 Unicalc.asm 284 | Comment | 11 | | 0 | 00/8113 | * - 298 | 1 Unicalc.asm 285 | Comment | 11 | | 0 | 00/8113 | *** Status List DIB *** - 299 | 1 Unicalc.asm 286 | Empty | 11 | | 0 | 00/8113 | ozunid_14 - 300 | 1 Unicalc.asm 286 | Equivalence | 11 | | 0 | 00/8113 | DIB equ ozunid_14 - 301 | 1 Unicalc.asm 287 | Data | 11 | | 1 | 00/8113 : 00 | DIBStatByte1 dfb 0 - 302 | 1 Unicalc.asm 288 | Data | 11 | | 3 | 00/8114 : 00 00 00 | DIBDevSize dfb 0,0,0 - 303 | 1 Unicalc.asm 289 | Data | 11 | | 1 | 00/8117 : 00 | DIBNameLen dfb 0 - 304 | 1 Unicalc.asm 290 | Data | 11 | | 16 | 00/8118 : 00 00 00 00 | DIBName ds 16,0 - | | | | | | 00 00 00 00 | - | | | | | | 00 00 00 00 | - | | | | | | 00 00 00 00 | - 305 | 1 Unicalc.asm 291 | Data | 11 | | 1 | 00/8128 : 00 | DIBType dfb 0 - 306 | 1 Unicalc.asm 292 | Data | 11 | | 1 | 00/8129 : 00 | DIBSubType dfb 0 - 307 | 1 Unicalc.asm 293 | Data | 11 | | 2 | 00/812A : 00 00 | DIBVersion dw 0 - 308 | 1 Unicalc.asm 294 | Comment | 11 | | 0 | 00/812C | * - 309 | 1 Unicalc.asm 295 | Comment | 11 | | 0 | 00/812C | *** Status List UNI *** - 310 | 1 Unicalc.asm 296 | Empty | 11 | | 0 | 00/812C | ozunid_15 - 311 | 1 Unicalc.asm 296 | Equivalence | 11 | | 0 | 00/812C | UNI equ ozunid_15 - 312 | 1 Unicalc.asm 297 | Data | 11 | | 1 | 00/812C : 00 | dfb 0 - 313 | 1 Unicalc.asm 298 | Data | 11 | | 1 | 00/812D : 00 | UNIError dfb 0 - 314 | 1 Unicalc.asm 299 | Data | 11 | | 1 | 00/812E : 00 | UNIRetries dfb 0 - 315 | 1 Unicalc.asm 300 | Data | 11 | | 1 | 00/812F : 00 | UNIAcc_reg dfb 0 - 316 | 1 Unicalc.asm 301 | Data | 11 | | 1 | 00/8130 : 00 | UNIX_reg dfb 0 - 317 | 1 Unicalc.asm 302 | Data | 11 | | 1 | 00/8131 : 00 | UNIY_reg dfb 0 - 318 | 1 Unicalc.asm 303 | Data | 11 | | 1 | 00/8132 : 00 | UNIP_val dfb 0 - 319 | 1 Unicalc.asm 304 | Data | 11 | | 1 | 00/8133 : 00 | HHH dfb 0 - 320 | 1 Unicalc.asm 305 | Comment | 11 | | 0 | 00/8134 | * - 321 | 1 Unicalc.asm 306 | Comment | 11 | | 0 | 00/8134 | *** Set Address *** - 322 | 1 Unicalc.asm 307 | Empty | 11 | | 0 | 00/8134 | ozunid_16 - 323 | 1 Unicalc.asm 307 | Equivalence | 11 | | 0 | 00/8134 | SET_ADD equ ozunid_16 - 324 | 1 Unicalc.asm 308 | Data | 11 | | 1 | 00/8134 : 03 | dfb 3 - 325 | 1 Unicalc.asm 309 | Data | 11 | | 1 | 00/8135 : 01 | dfb 1 - 326 | 1 Unicalc.asm 310 | Data | 11 | | 2 | 00/8136 : 52 81 | dw {ozunid_22} - 327 | 1 Unicalc.asm 311 | Data | 11 | | 1 | 00/8138 : 06 | dfb {6} - 328 | 1 Unicalc.asm 312 | Comment | 11 | | 0 | 00/8139 | * - 329 | 1 Unicalc.asm 313 | Comment | 11 | | 0 | 00/8139 | *** Download *** - 330 | 1 Unicalc.asm 314 | Empty | 11 | | 0 | 00/8139 | ozunid_17 - 331 | 1 Unicalc.asm 314 | Equivalence | 11 | | 0 | 00/8139 | DOWNLOAD equ ozunid_17 - 332 | 1 Unicalc.asm 315 | Data | 11 | | 1 | 00/8139 : 03 | dfb 3 - 333 | 1 Unicalc.asm 316 | Data | 11 | | 1 | 00/813A : 01 | dfb 1 - 334 | 1 Unicalc.asm 317 | Data | 11 | | 2 | 00/813B : 56 81 | dw {ozunid_23} - 335 | 1 Unicalc.asm 318 | Data | 11 | | 1 | 00/813D : 07 | dfb {7} - 336 | 1 Unicalc.asm 319 | Comment | 11 | | 0 | 00/813E | * - 337 | 1 Unicalc.asm 320 | Comment | 11 | | 0 | 00/813E | *** Execute *** - 338 | 1 Unicalc.asm 321 | Empty | 11 | | 0 | 00/813E | ozunid_18 - 339 | 1 Unicalc.asm 321 | Equivalence | 11 | | 0 | 00/813E | EXE equ ozunid_18 - 340 | 1 Unicalc.asm 322 | Data | 11 | | 1 | 00/813E : 03 | dfb 3 - 341 | 1 Unicalc.asm 323 | Data | 11 | | 1 | 00/813F : 01 | dfb 1 - 342 | 1 Unicalc.asm 324 | Data | 11 | | 2 | 00/8140 : 4A 81 | dw {ozunid_21} - 343 | 1 Unicalc.asm 325 | Data | 11 | | 1 | 00/8142 : 05 | dfb {5} - 344 | 1 Unicalc.asm 326 | Comment | 11 | | 0 | 00/8143 | *** Eject *** - 345 | 1 Unicalc.asm 327 | Empty | 11 | | 0 | 00/8143 | ozunid_19 - 346 | 1 Unicalc.asm 327 | Equivalence | 11 | | 0 | 00/8143 | E_JECT equ ozunid_19 - 347 | 1 Unicalc.asm 328 | Data | 11 | | 1 | 00/8143 : 03 | dfb 3 - 348 | 1 Unicalc.asm 329 | Data | 11 | | 1 | 00/8144 : 01 | dfb 1 - 349 | 1 Unicalc.asm 330 | Data | 11 | | 2 | 00/8145 : 48 81 | dw {ozunid_20} - 350 | 1 Unicalc.asm 331 | Data | 11 | | 1 | 00/8147 : 04 | dfb {4} - 351 | 1 Unicalc.asm 332 | Comment | 11 | | 0 | 00/8148 | * - 352 | 1 Unicalc.asm 333 | Comment | 11 | | 0 | 00/8148 | ******** CONTROL LISTS ******** - 353 | 1 Unicalc.asm 334 | Comment | 11 | | 0 | 00/8148 | * - 354 | 1 Unicalc.asm 335 | Comment | 11 | | 0 | 00/8148 | * - 355 | 1 Unicalc.asm 336 | Comment | 11 | | 0 | 00/8148 | *** Eject *** - 356 | 1 Unicalc.asm 337 | Empty | 11 | | 0 | 00/8148 | ozunid_20 - 357 | 1 Unicalc.asm 337 | Equivalence | 11 | | 0 | 00/8148 | CNTL_LIST1 equ ozunid_20 - 358 | 1 Unicalc.asm 338 | Data | 11 | | 2 | 00/8148 : 00 00 | dw $0000 - 359 | 1 Unicalc.asm 339 | Comment | 11 | | 0 | 00/814A | * - 360 | 1 Unicalc.asm 340 | Comment | 11 | | 0 | 00/814A | *** Execute *** - 361 | 1 Unicalc.asm 341 | Empty | 11 | | 0 | 00/814A | ozunid_21 - 362 | 1 Unicalc.asm 341 | Equivalence | 11 | | 0 | 00/814A | CNTL_LIST2 equ ozunid_21 - 363 | 1 Unicalc.asm 342 | Data | 11 | | 1 | 00/814A : 06 | Clow_byte dfb $06 - 364 | 1 Unicalc.asm 343 | Data | 11 | | 1 | 00/814B : 00 | Chigh_byte dfb $00 - 365 | 1 Unicalc.asm 344 | Data | 11 | | 1 | 00/814C : 00 | AccValue dfb $00 ; Input Value - 366 | 1 Unicalc.asm 345 | Data | 11 | | 1 | 00/814D : 0A | X_reg dfb $0A ; Input Value (N1) - 367 | 1 Unicalc.asm 346 | Data | 11 | | 1 | 00/814E : 01 | Y_reg dfb $01 ; Input Value (N2) - 368 | 1 Unicalc.asm 347 | Data | 11 | | 1 | 00/814F : 00 | ProStatus dfb $00 - 369 | 1 Unicalc.asm 348 | Data | 11 | | 1 | 00/8150 : 05 | LowPC_reg dfb $05 - 370 | 1 Unicalc.asm 349 | Data | 11 | | 1 | 00/8151 : 05 | HighPC_reg dfb $05 - 371 | 1 Unicalc.asm 350 | Comment | 11 | | 0 | 00/8152 | * - 372 | 1 Unicalc.asm 351 | Comment | 11 | | 0 | 00/8152 | *** Set Address *** - 373 | 1 Unicalc.asm 352 | Empty | 11 | | 0 | 00/8152 | ozunid_22 - 374 | 1 Unicalc.asm 352 | Equivalence | 11 | | 0 | 00/8152 | CNTL_LIST3 equ ozunid_22 - 375 | 1 Unicalc.asm 353 | Data | 11 | | 1 | 00/8152 : 02 | CountL_byte dfb $02 - 376 | 1 Unicalc.asm 354 | Data | 11 | | 1 | 00/8153 : 00 | CountH_byte dfb $00 - 377 | 1 Unicalc.asm 355 | Data | 11 | | 1 | 00/8154 : 05 | LByte_Addr dfb $05 - 378 | 1 Unicalc.asm 356 | Data | 11 | | 1 | 00/8155 : 05 | HByte_Addr dfb $05 - 379 | 1 Unicalc.asm 357 | Comment | 11 | | 0 | 00/8156 | * - 380 | 1 Unicalc.asm 358 | Comment | 11 | | 0 | 00/8156 | *** Download *** - 381 | 1 Unicalc.asm 359 | Empty | 11 | | 0 | 00/8156 | ozunid_23 - 382 | 1 Unicalc.asm 359 | Equivalence | 11 | | 0 | 00/8156 | CNTL_LIST4 equ ozunid_23 - 383 | 1 Unicalc.asm 360 | Data | 11 | | 1 | 00/8156 : 09 | LenghtL_byte dfb $09 ;<----- Lenght of Unidisk program Lo Byte - 384 | 1 Unicalc.asm 361 | Data | 11 | | 1 | 00/8157 : 00 | LenghtH_byte dfb $00 ;<----- Lenght of Unidisk program Hi Byte - 385 | 1 Unicalc.asm 362 | Comment | 11 | | 0 | 00/8158 | * - 386 | 1 Unicalc.asm 363 | Comment | 11 | | 0 | 00/8158 | *** Start UNIDISK Program *** - 387 | 1 Unicalc.asm 364 | Empty | 11 | | 0 | 00/8158 | - 388 | 1 Unicalc.asm 365 | Code | 11 | | 2 | 00/8158 : 86 C0 | stx $C0 - 389 | 1 Unicalc.asm 366 | Code | 11 | | 2 | 00/815A : 84 C1 | sty $C1 - 390 | 1 Unicalc.asm 367 | Empty | 11 | | 0 | 00/815C | - 391 | 1 Unicalc.asm 368 | Code | 11 | | 2 | 00/815C : A5 C0 | lda $C0 - 392 | 1 Unicalc.asm 369 | Code | 11 | | 2 | 00/815E : 65 C1 | adc $C1 - 393 | 1 Unicalc.asm 370 | Empty | 11 | | 0 | 00/8160 | - 394 | 1 Unicalc.asm 371 | Code | 11 | | 1 | 00/8160 : 60 | rts -------+-----------------------+-------------+----+---------+------+-----------------------+------------------------------------------------------------------- diff --git a/AppleII/Integer adc 1 Byte/Unidrive b/AppleII/Integer adc 1 Byte/Unidrive deleted file mode 100644 index 11be6a795d4b47ad37006529b9fdcf31c4ea7b2d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 243 zcmY#LZrC8H(DzqiMgz;$1`v4+OrCB~aA-(a#IRSV;RBn(+rKX^d`eCp3IuKgNFQ!Y7M_jt+r$EB^z<88)&>WHPt1NhJJN_|Nd4`9DJr8v`@rz6Mri z#-$C+41@qPnfurM&Nfwi%+GBL2Sax%0XXgRp_KHCH?T550W;&-1~z8Kiw*3|j7J+-nHdi^urM&Nfn`})nHX4Er5GgEO0(w5vbG*r TE5n*A$J%;u*?}bo6F^D;edJXX diff --git a/AppleII/Integer adc 2 Byte/Unidrive2_Output.txt b/AppleII/Integer adc 2 Byte/Unidrive2_Output.txt deleted file mode 100644 index 181d603..0000000 --- a/AppleII/Integer adc 2 Byte/Unidrive2_Output.txt +++ /dev/null @@ -1,286 +0,0 @@ -------+-------------------------+-------------+----+---------+------+-----------------------+------------------------------------------------------------------- - Line | # File Line | Line Type | MX | Reloc | Size | Address Object Code | Source Code -------+-------------------------+-------------+----+---------+------+-----------------------+------------------------------------------------------------------- - 1 | 1 Unidrive2.asm 1 | Comment | 11 | | 0 | 00/8000 | * @com.wudsn.ide.asm.hardware=APPLE2 - 2 | 1 Unidrive2.asm 2 | Comment | 11 | | 0 | 00/8000 | * Protocol Converter Call - 3 | 1 Unidrive2.asm 3 | Directive | 11 | | 0 | 00/8000 | XC - 4 | 1 Unidrive2.asm 4 | Equivalence | 11 | | 0 | 00/8000 | ZPTempL equ $0006 ;Temporary zero page storage - 5 | 1 Unidrive2.asm 5 | Equivalence | 11 | | 0 | 00/8000 | ZPTempH equ $0007 - 6 | 1 Unidrive2.asm 6 | Comment | 11 | | 0 | 00/8000 | ** Zero page storage ** - 7 | 1 Unidrive2.asm 7 | Equivalence | 11 | | 0 | 00/8000 | N1 equ $19 ;25 - 8 | 1 Unidrive2.asm 8 | Equivalence | 11 | | 0 | 00/8000 | N2 equ $1B ;27 - 9 | 1 Unidrive2.asm 9 | Equivalence | 11 | | 0 | 00/8000 | RSLT equ $1D ;29 - 10 | 1 Unidrive2.asm 10 | Comment | 11 | | 0 | 00/8000 | *** Monitor routines *** - 11 | 1 Unidrive2.asm 11 | Equivalence | 11 | | 0 | 00/8000 | COut equ $FDED ;Console output ASCII - 12 | 1 Unidrive2.asm 12 | Equivalence | 11 | | 0 | 00/8000 | CROut equ $FD8E ;Carriage return - 13 | 1 Unidrive2.asm 13 | Comment | 11 | | 0 | 00/8000 | ** Command Code ** - 14 | 1 Unidrive2.asm 14 | Equivalence | 11 | | 0 | 00/8000 | StatusCmd equ 0 - 15 | 1 Unidrive2.asm 15 | Comment | 11 | | 0 | 00/8000 | ** Status Code ** - 16 | 1 Unidrive2.asm 16 | Comment | 11 | | 0 | 00/8000 | * StatusDIB equ 3 - 17 | 1 Unidrive2.asm 17 | Equivalence | 11 | | 0 | 00/8000 | StatusUNI equ 5 - 18 | 1 Unidrive2.asm 18 | Comment | 11 | | 0 | 00/8000 | * - 19 | 1 Unidrive2.asm 19 | Equivalence | 11 | | 0 | 00/8000 | ControlCmd equ 4 - 20 | 1 Unidrive2.asm 20 | Comment | 11 | | 0 | 00/8000 | ** Control Codes ** - 21 | 1 Unidrive2.asm 21 | Equivalence | 11 | | 0 | 00/8000 | Eject equ 4 - 22 | 1 Unidrive2.asm 22 | Equivalence | 11 | | 0 | 00/8000 | Run equ 5 - 23 | 1 Unidrive2.asm 23 | Equivalence | 11 | | 0 | 00/8000 | SetDWLoad equ 6 - 24 | 1 Unidrive2.asm 24 | Equivalence | 11 | | 0 | 00/8000 | DWLoad equ 7 - 25 | 1 Unidrive2.asm 25 | Comment | 11 | | 0 | 00/8000 | * - 26 | 1 Unidrive2.asm 26 | Directive | 11 | | 0 | 00/8000 | org $8000 - 27 | 1 Unidrive2.asm 27 | Comment | 11 | | 0 | 00/8000 | ***************************************************** - 28 | 1 Unidrive2.asm 28 | Empty | 11 | | 0 | 00/8000 | - 29 | 1 Unidrive2.asm 29 | Comment | 11 | | 0 | 00/8000 | * - 30 | 1 Unidrive2.asm 30 | Comment | 11 | | 0 | 00/8000 | * Find a Protocol Converter in one of the slots. - 31 | 1 Unidrive2.asm 31 | Code | 11 | | 3 | 00/8000 : 20 6A 80 | START jsr {ozunid_4} - 32 | 1 Unidrive2.asm 32 | Code | 11 | | 2 | 00/8003 : B0 10 | bcs {ozunid_1} - 33 | 1 Unidrive2.asm 33 | Comment | 11 | | 0 | 00/8005 | *** Eject *** - 34 | 1 Unidrive2.asm 34 | Code | 11 | | 3 | 00/8005 : 20 9F 80 | jsr {ozunid_9} - 35 | 1 Unidrive2.asm 35 | Data | 11 | | 1 | 00/8008 : 04 | dfb {4} - 36 | 1 Unidrive2.asm 36 | Data | 11 | | 2 | 00/8009 : BE 80 | dw {ozunid_15} - 37 | 1 Unidrive2.asm 37 | Comment | 11 | | 0 | 00/800B | *** Set Address *** - 38 | 1 Unidrive2.asm 38 | Code | 11 | | 3 | 00/800B : 20 9F 80 | jsr {ozunid_9} - 39 | 1 Unidrive2.asm 39 | Data | 11 | | 1 | 00/800E : 04 | dfb {4} - 40 | 1 Unidrive2.asm 40 | Data | 11 | | 2 | 00/800F : AF 80 | dw {ozunid_12} - 41 | 1 Unidrive2.asm 41 | Comment | 11 | | 0 | 00/8011 | * - 42 | 1 Unidrive2.asm 42 | Code | 11 | | 3 | 00/8011 : 20 37 80 | jsr EXEC ; Jump the Error routine - 43 | 1 Unidrive2.asm 43 | Code | 11 | | 1 | 00/8014 : 60 | rts - 44 | 1 Unidrive2.asm 44 | Comment | 11 | | 0 | 00/8015 | ********************************************* - 45 | 1 Unidrive2.asm 45 | Empty | 11 | | 0 | 00/8015 | ozunid_1 - 46 | 1 Unidrive2.asm 45 | Equivalence | 11 | | 0 | 00/8015 | Error equ ozunid_1 - 47 | 1 Unidrive2.asm 46 | Comment | 11 | | 0 | 00/8015 | * - 48 | 1 Unidrive2.asm 47 | Comment | 11 | | 0 | 00/8015 | * There's either no PC around, or there was no give message - 49 | 1 Unidrive2.asm 48 | Comment | 11 | | 0 | 00/8015 | * - 50 | 1 Unidrive2.asm 49 | Code | 11 | | 2 | 00/8015 : A2 00 | ldx #0 - 51 | 1 Unidrive2.asm 50 | Empty | 11 | | 0 | 00/8017 | ozunid_2 - 52 | 1 Unidrive2.asm 50 | Equivalence | 11 | | 0 | 00/8017 | err1 equ ozunid_2 - 53 | 1 Unidrive2.asm 51 | Code | 11 | | 3 | 00/8017 : BD 23 80 | lda Message,x - 54 | 1 Unidrive2.asm 52 | Code | 11 | | 2 | 00/801A : F0 06 | beq {ozunid_3} - 55 | 1 Unidrive2.asm 53 | Code | 11 | | 3 | 00/801C : 20 ED FD | jsr {$FDED} - 56 | 1 Unidrive2.asm 54 | Code | 11 | | 1 | 00/801F : E8 | inx - 57 | 1 Unidrive2.asm 55 | Code | 11 | | 2 | 00/8020 : D0 F5 | bne {ozunid_2} - 58 | 1 Unidrive2.asm 56 | Comment | 11 | | 0 | 00/8022 | * - 59 | 1 Unidrive2.asm 57 | Empty | 11 | | 0 | 00/8022 | ozunid_3 - 60 | 1 Unidrive2.asm 57 | Equivalence | 11 | | 0 | 00/8022 | errout equ ozunid_3 - 61 | 1 Unidrive2.asm 58 | Code | 11 | | 1 | 00/8022 : 60 | rts - 62 | 1 Unidrive2.asm 59 | Comment | 11 | | 0 | 00/8023 | * - 63 | 1 Unidrive2.asm 60 | Data | 11 | | 18 | 00/8023 : 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 | - 64 | 1 Unidrive2.asm 61 | Data | 11 | | 2 | 00/8035 : 8D 00 | dfb $8D,0 - 65 | 1 Unidrive2.asm 62 | Comment | 11 | | 0 | 00/8037 | ********************************************* - 66 | 1 Unidrive2.asm 63 | Comment | 11 | | 0 | 00/8037 | * - 67 | 1 Unidrive2.asm 64 | Comment | 11 | | 0 | 00/8037 | ** Set the Input Value first ** - 68 | 1 Unidrive2.asm 65 | Code | 11 | | 2 | 00/8037 : A5 19 | EXEC lda {$19} - 69 | 1 Unidrive2.asm 66 | Code | 11 | | 3 | 00/8039 : 8D E9 80 | sta $80E9 ; Absolute addressing - 70 | 1 Unidrive2.asm 67 | Code | 11 | | 2 | 00/803C : A5 1A | lda {$19}+1 - 71 | 1 Unidrive2.asm 68 | Code | 11 | | 3 | 00/803E : 8D EA 80 | sta $80EA - 72 | 1 Unidrive2.asm 69 | Empty | 11 | | 0 | 00/8041 | - 73 | 1 Unidrive2.asm 70 | Code | 11 | | 2 | 00/8041 : A5 1B | lda {$1B} - 74 | 1 Unidrive2.asm 71 | Code | 11 | | 3 | 00/8043 : 8D EB 80 | sta $80EB - 75 | 1 Unidrive2.asm 72 | Code | 11 | | 2 | 00/8046 : A5 1C | lda {$1B}+1 - 76 | 1 Unidrive2.asm 73 | Code | 11 | | 3 | 00/8048 : 8D EC 80 | sta $80EC - 77 | 1 Unidrive2.asm 74 | Comment | 11 | | 0 | 00/804B | *** Download *** - 78 | 1 Unidrive2.asm 75 | Code | 11 | | 3 | 00/804B : 20 9F 80 | jsr {ozunid_9} - 79 | 1 Unidrive2.asm 76 | Data | 11 | | 1 | 00/804E : 04 | dfb {4} - 80 | 1 Unidrive2.asm 77 | Data | 11 | | 2 | 00/804F : B4 80 | dw {ozunid_13} - 81 | 1 Unidrive2.asm 78 | Comment | 11 | | 0 | 00/8051 | ** Execute ** - 82 | 1 Unidrive2.asm 79 | Code | 11 | | 3 | 00/8051 : 20 9F 80 | jsr {ozunid_9} - 83 | 1 Unidrive2.asm 80 | Data | 11 | | 1 | 00/8054 : 04 | dfb {4} - 84 | 1 Unidrive2.asm 81 | Data | 11 | | 2 | 00/8055 : B9 80 | dw {ozunid_14} - 85 | 1 Unidrive2.asm 82 | Code | 11 | | 3 | 00/8057 : 20 9F 80 | READ jsr {ozunid_9} - 86 | 1 Unidrive2.asm 83 | Data | 11 | | 1 | 00/805A : 00 | dfb {0} - 87 | 1 Unidrive2.asm 84 | Data | 11 | | 2 | 00/805B : A2 80 | dw {ozunid_10} - 88 | 1 Unidrive2.asm 85 | Code | 11 | | 2 | 00/805D : B0 B6 | bcs {ozunid_1} - 89 | 1 Unidrive2.asm 86 | Comment | 11 | | 0 | 00/805F | * - 90 | 1 Unidrive2.asm 87 | Comment | 11 | | 0 | 00/805F | **** Store Output results in //c **** - 91 | 1 Unidrive2.asm 88 | Comment | 11 | | 0 | 00/805F | * - 92 | 1 Unidrive2.asm 89 | Code | 11 | | 3 | 00/805F : AD AB 80 | lda UNIX_reg - 93 | 1 Unidrive2.asm 90 | Code | 11 | | 2 | 00/8062 : 85 1D | sta {$1D} ; Store the result - 94 | 1 Unidrive2.asm 91 | Code | 11 | | 3 | 00/8064 : AD AC 80 | lda UNIY_reg - 95 | 1 Unidrive2.asm 92 | Code | 11 | | 2 | 00/8067 : 85 1E | sta {$1D}+1 - 96 | 1 Unidrive2.asm 93 | Comment | 11 | | 0 | 00/8069 | * - 97 | 1 Unidrive2.asm 94 | Code | 11 | | 1 | 00/8069 : 60 | rts - 98 | 1 Unidrive2.asm 95 | Empty | 11 | | 0 | 00/806A | - 99 | 1 Unidrive2.asm 96 | Comment | 11 | | 0 | 00/806A | ****************************************************** - 100 | 1 Unidrive2.asm 97 | Empty | 11 | | 0 | 00/806A | ozunid_4 - 101 | 1 Unidrive2.asm 97 | Equivalence | 11 | | 0 | 00/806A | FindPC equ ozunid_4 - 102 | 1 Unidrive2.asm 98 | Comment | 11 | | 0 | 00/806A | * - 103 | 1 Unidrive2.asm 99 | Comment | 11 | | 0 | 00/806A | * Search slot 7 to slot 1 looking for signature bytes - 104 | 1 Unidrive2.asm 100 | Comment | 11 | | 0 | 00/806A | * - 105 | 1 Unidrive2.asm 101 | Code | 11 | | 2 | 00/806A : A2 07 | ldx #7 ;Do for seven slots - 106 | 1 Unidrive2.asm 102 | Code | 11 | | 2 | 00/806C : A9 C7 | lda #$C7 - 107 | 1 Unidrive2.asm 103 | Code | 11 | | 2 | 00/806E : 85 07 | sta {$0007} - 108 | 1 Unidrive2.asm 104 | Code | 11 | | 2 | 00/8070 : A9 00 | lda #$00 - 109 | 1 Unidrive2.asm 105 | Code | 11 | | 2 | 00/8072 : 85 06 | sta {$0006} - 110 | 1 Unidrive2.asm 106 | Comment | 11 | | 0 | 00/8074 | * - 111 | 1 Unidrive2.asm 107 | Empty | 11 | | 0 | 00/8074 | ozunid_5 - 112 | 1 Unidrive2.asm 107 | Equivalence | 11 | | 0 | 00/8074 | newslot equ ozunid_5 - 113 | 1 Unidrive2.asm 108 | Code | 11 | | 2 | 00/8074 : A0 07 | ldy #7 - 114 | 1 Unidrive2.asm 109 | Comment | 11 | | 0 | 00/8076 | * - 115 | 1 Unidrive2.asm 110 | Empty | 11 | | 0 | 00/8076 | ozunid_6 - 116 | 1 Unidrive2.asm 110 | Equivalence | 11 | | 0 | 00/8076 | again equ ozunid_6 - 117 | 1 Unidrive2.asm 111 | Code | 11 | | 2 | 00/8076 : B1 06 | lda ({$0006}),y - 118 | 1 Unidrive2.asm 112 | Code | 11 | | 3 | 00/8078 : D9 97 80 | cmp sigtab,y ;One for byte signature - 119 | 1 Unidrive2.asm 113 | Code | 11 | | 2 | 00/807B : F0 07 | beq {ozunid_7} ;Found one signature byte - 120 | 1 Unidrive2.asm 114 | Code | 11 | | 2 | 00/807D : C6 07 | dec {$0007} - 121 | 1 Unidrive2.asm 115 | Code | 11 | | 1 | 00/807F : CA | dex - 122 | 1 Unidrive2.asm 116 | Code | 11 | | 2 | 00/8080 : D0 F2 | bne {ozunid_5} - 123 | 1 Unidrive2.asm 117 | Comment | 11 | | 0 | 00/8082 | * - 124 | 1 Unidrive2.asm 118 | Comment | 11 | | 0 | 00/8082 | * if we get here, no PC find - 125 | 1 Unidrive2.asm 119 | Code | 11 | | 1 | 00/8082 : 38 | sec - 126 | 1 Unidrive2.asm 120 | Code | 11 | | 1 | 00/8083 : 60 | rts - 127 | 1 Unidrive2.asm 121 | Comment | 11 | | 0 | 00/8084 | * - 128 | 1 Unidrive2.asm 122 | Comment | 11 | | 0 | 00/8084 | * if we get here, no byte find on PC - 129 | 1 Unidrive2.asm 123 | Empty | 11 | | 0 | 00/8084 | ozunid_7 - 130 | 1 Unidrive2.asm 123 | Equivalence | 11 | | 0 | 00/8084 | maybe equ ozunid_7 - 131 | 1 Unidrive2.asm 124 | Code | 11 | | 1 | 00/8084 : 88 | dey - 132 | 1 Unidrive2.asm 125 | Code | 11 | | 1 | 00/8085 : 88 | dey ;if N=1 then all sig bytes OK - 133 | 1 Unidrive2.asm 126 | Code | 11 | | 2 | 00/8086 : 10 EE | bpl {ozunid_6} - 134 | 1 Unidrive2.asm 127 | Comment | 11 | | 0 | 00/8088 | * Found PC interface. Set up call address. - 135 | 1 Unidrive2.asm 128 | Comment | 11 | | 0 | 00/8088 | * we already have high byte ($CN), we need low byte - 136 | 1 Unidrive2.asm 129 | Comment | 11 | | 0 | 00/8088 | * - 137 | 1 Unidrive2.asm 130 | Empty | 11 | | 0 | 00/8088 | ozunid_8 - 138 | 1 Unidrive2.asm 130 | Equivalence | 11 | | 0 | 00/8088 | foundPC equ ozunid_8 - 139 | 1 Unidrive2.asm 131 | Code | 11 | | 2 | 00/8088 : A9 FF | lda #$FF - 140 | 1 Unidrive2.asm 132 | Code | 11 | | 2 | 00/808A : 85 06 | sta {$0006} - 141 | 1 Unidrive2.asm 133 | Code | 11 | | 2 | 00/808C : A0 00 | ldy #0 ;For indirect load - 142 | 1 Unidrive2.asm 134 | Code | 11 | | 2 | 00/808E : B1 06 | lda ({$0006}),y ;Get the byte - 143 | 1 Unidrive2.asm 135 | Comment | 11 | | 0 | 00/8090 | * - 144 | 1 Unidrive2.asm 136 | Comment | 11 | | 0 | 00/8090 | * Now the Acc has the low oreder ProDOS entry point. - 145 | 1 Unidrive2.asm 137 | Comment | 11 | | 0 | 00/8090 | * The PC entry is three locations past this ... - 146 | 1 Unidrive2.asm 138 | Comment | 11 | | 0 | 00/8090 | * - 147 | 1 Unidrive2.asm 139 | Code | 11 | | 1 | 00/8090 : 18 | clc - 148 | 1 Unidrive2.asm 140 | Code | 11 | | 2 | 00/8091 : 69 03 | adc #3 - 149 | 1 Unidrive2.asm 141 | Code | 11 | | 2 | 00/8093 : 85 06 | sta {$0006} - 150 | 1 Unidrive2.asm 142 | Comment | 11 | | 0 | 00/8095 | * - 151 | 1 Unidrive2.asm 143 | Comment | 11 | | 0 | 00/8095 | * Now ZPTempL has PC entry point. - 152 | 1 Unidrive2.asm 144 | Comment | 11 | | 0 | 00/8095 | * Return with carry clear. - 153 | 1 Unidrive2.asm 145 | Comment | 11 | | 0 | 00/8095 | * - 154 | 1 Unidrive2.asm 146 | Code | 11 | | 1 | 00/8095 : 18 | clc - 155 | 1 Unidrive2.asm 147 | Code | 11 | | 1 | 00/8096 : 60 | rts - 156 | 1 Unidrive2.asm 148 | Comment | 11 | | 0 | 00/8097 | *********************************************************** - 157 | 1 Unidrive2.asm 149 | Comment | 11 | | 0 | 00/8097 | * - 158 | 1 Unidrive2.asm 150 | Comment | 11 | | 0 | 00/8097 | * There are the PC signature bytes in their relative order. - 159 | 1 Unidrive2.asm 151 | Comment | 11 | | 0 | 00/8097 | * The $FF bytes are filler bytes and are not compared. - 160 | 1 Unidrive2.asm 152 | Comment | 11 | | 0 | 00/8097 | * - 161 | 1 Unidrive2.asm 153 | Data | 11 | | 4 | 00/8097 : FF 20 FF 00 | sigtab dfb $FF,$20,$FF,$00 - 162 | 1 Unidrive2.asm 154 | Data | 11 | | 4 | 00/809B : FF 03 FF 00 | dfb $FF,$03,$FF,$00 - 163 | 1 Unidrive2.asm 155 | Comment | 11 | | 0 | 00/809F | * - 164 | 1 Unidrive2.asm 156 | Empty | 11 | | 0 | 00/809F | ozunid_9 - 165 | 1 Unidrive2.asm 156 | Equivalence | 11 | | 0 | 00/809F | Dispatch equ ozunid_9 - 166 | 1 Unidrive2.asm 157 | Code | 11 | | 3 | 00/809F : 6C 06 00 | jmp ({$0006}) ;Simulate an indirect JSR to PC - 167 | 1 Unidrive2.asm 158 | Comment | 11 | | 0 | 00/80A2 | * - 168 | 1 Unidrive2.asm 159 | Comment | 11 | | 0 | 00/80A2 | *** Status Parameter Set for UNI *** - 169 | 1 Unidrive2.asm 160 | Empty | 11 | | 0 | 00/80A2 | ozunid_10 - 170 | 1 Unidrive2.asm 160 | Equivalence | 11 | | 0 | 00/80A2 | DParms equ ozunid_10 - 171 | 1 Unidrive2.asm 161 | Data | 11 | | 1 | 00/80A2 : 03 | DPParmsCt dfb 3 ;Status calls have three parameters - 172 | 1 Unidrive2.asm 162 | Data | 11 | | 1 | 00/80A3 : 01 | DPUnit dfb 1 - 173 | 1 Unidrive2.asm 163 | Data | 11 | | 2 | 00/80A4 : A7 80 | DPBuffer dw {ozunid_11} - 174 | 1 Unidrive2.asm 164 | Data | 11 | | 1 | 00/80A6 : 05 | DPStatCode dfb {5} - 175 | 1 Unidrive2.asm 165 | Comment | 11 | | 0 | 00/80A7 | * - 176 | 1 Unidrive2.asm 166 | Comment | 11 | | 0 | 00/80A7 | * - 177 | 1 Unidrive2.asm 167 | Comment | 11 | | 0 | 00/80A7 | * - 178 | 1 Unidrive2.asm 168 | Comment | 11 | | 0 | 00/80A7 | *** Status List UNI *** - 179 | 1 Unidrive2.asm 169 | Empty | 11 | | 0 | 00/80A7 | ozunid_11 - 180 | 1 Unidrive2.asm 169 | Equivalence | 11 | | 0 | 00/80A7 | UNI equ ozunid_11 - 181 | 1 Unidrive2.asm 170 | Data | 11 | | 1 | 00/80A7 : 00 | dfb 0 - 182 | 1 Unidrive2.asm 171 | Data | 11 | | 1 | 00/80A8 : 00 | UNIError dfb 0 - 183 | 1 Unidrive2.asm 172 | Data | 11 | | 1 | 00/80A9 : 00 | UNIRetries dfb 0 - 184 | 1 Unidrive2.asm 173 | Data | 11 | | 1 | 00/80AA : 00 | UNIAcc_reg dfb 0 - 185 | 1 Unidrive2.asm 174 | Data | 11 | | 1 | 00/80AB : 00 | UNIX_reg dfb 0 - 186 | 1 Unidrive2.asm 175 | Data | 11 | | 1 | 00/80AC : 00 | UNIY_reg dfb 0 - 187 | 1 Unidrive2.asm 176 | Data | 11 | | 1 | 00/80AD : 00 | UNIP_val dfb 0 - 188 | 1 Unidrive2.asm 177 | Data | 11 | | 1 | 00/80AE : 00 | HHH dfb 0 - 189 | 1 Unidrive2.asm 178 | Comment | 11 | | 0 | 00/80AF | * - 190 | 1 Unidrive2.asm 179 | Comment | 11 | | 0 | 00/80AF | *** Set Address *** - 191 | 1 Unidrive2.asm 180 | Empty | 11 | | 0 | 00/80AF | ozunid_12 - 192 | 1 Unidrive2.asm 180 | Equivalence | 11 | | 0 | 00/80AF | SET_ADD equ ozunid_12 - 193 | 1 Unidrive2.asm 181 | Data | 11 | | 1 | 00/80AF : 03 | dfb 3 - 194 | 1 Unidrive2.asm 182 | Data | 11 | | 1 | 00/80B0 : 01 | dfb 1 - 195 | 1 Unidrive2.asm 183 | Data | 11 | | 2 | 00/80B1 : CD 80 | dw {ozunid_18} - 196 | 1 Unidrive2.asm 184 | Data | 11 | | 1 | 00/80B3 : 06 | dfb {6} - 197 | 1 Unidrive2.asm 185 | Comment | 11 | | 0 | 00/80B4 | * - 198 | 1 Unidrive2.asm 186 | Comment | 11 | | 0 | 00/80B4 | *** Download *** - 199 | 1 Unidrive2.asm 187 | Empty | 11 | | 0 | 00/80B4 | ozunid_13 - 200 | 1 Unidrive2.asm 187 | Equivalence | 11 | | 0 | 00/80B4 | DOWNLOAD equ ozunid_13 - 201 | 1 Unidrive2.asm 188 | Data | 11 | | 1 | 00/80B4 : 03 | dfb 3 - 202 | 1 Unidrive2.asm 189 | Data | 11 | | 1 | 00/80B5 : 01 | dfb 1 - 203 | 1 Unidrive2.asm 190 | Data | 11 | | 2 | 00/80B6 : D1 80 | dw {ozunid_19} - 204 | 1 Unidrive2.asm 191 | Data | 11 | | 1 | 00/80B8 : 07 | dfb {7} - 205 | 1 Unidrive2.asm 192 | Comment | 11 | | 0 | 00/80B9 | * - 206 | 1 Unidrive2.asm 193 | Comment | 11 | | 0 | 00/80B9 | *** Execute *** - 207 | 1 Unidrive2.asm 194 | Empty | 11 | | 0 | 00/80B9 | ozunid_14 - 208 | 1 Unidrive2.asm 194 | Equivalence | 11 | | 0 | 00/80B9 | EXE equ ozunid_14 - 209 | 1 Unidrive2.asm 195 | Data | 11 | | 1 | 00/80B9 : 03 | dfb 3 - 210 | 1 Unidrive2.asm 196 | Data | 11 | | 1 | 00/80BA : 01 | dfb 1 - 211 | 1 Unidrive2.asm 197 | Data | 11 | | 2 | 00/80BB : C5 80 | dw {ozunid_17} - 212 | 1 Unidrive2.asm 198 | Data | 11 | | 1 | 00/80BD : 05 | dfb {5} - 213 | 1 Unidrive2.asm 199 | Comment | 11 | | 0 | 00/80BE | *** Eject *** - 214 | 1 Unidrive2.asm 200 | Empty | 11 | | 0 | 00/80BE | ozunid_15 - 215 | 1 Unidrive2.asm 200 | Equivalence | 11 | | 0 | 00/80BE | E_JECT equ ozunid_15 - 216 | 1 Unidrive2.asm 201 | Data | 11 | | 1 | 00/80BE : 03 | dfb 3 - 217 | 1 Unidrive2.asm 202 | Data | 11 | | 1 | 00/80BF : 01 | dfb 1 - 218 | 1 Unidrive2.asm 203 | Data | 11 | | 2 | 00/80C0 : C3 80 | dw {ozunid_16} - 219 | 1 Unidrive2.asm 204 | Data | 11 | | 1 | 00/80C2 : 04 | dfb {4} - 220 | 1 Unidrive2.asm 205 | Comment | 11 | | 0 | 00/80C3 | * - 221 | 1 Unidrive2.asm 206 | Comment | 11 | | 0 | 00/80C3 | ******** CONTROL LISTS ******** - 222 | 1 Unidrive2.asm 207 | Comment | 11 | | 0 | 00/80C3 | * - 223 | 1 Unidrive2.asm 208 | Comment | 11 | | 0 | 00/80C3 | * - 224 | 1 Unidrive2.asm 209 | Comment | 11 | | 0 | 00/80C3 | *** Eject *** - 225 | 1 Unidrive2.asm 210 | Empty | 11 | | 0 | 00/80C3 | ozunid_16 - 226 | 1 Unidrive2.asm 210 | Equivalence | 11 | | 0 | 00/80C3 | CNTL_LIST1 equ ozunid_16 - 227 | 1 Unidrive2.asm 211 | Data | 11 | | 2 | 00/80C3 : 00 00 | dw $0000 - 228 | 1 Unidrive2.asm 212 | Comment | 11 | | 0 | 00/80C5 | * - 229 | 1 Unidrive2.asm 213 | Comment | 11 | | 0 | 00/80C5 | *** Execute *** - 230 | 1 Unidrive2.asm 214 | Empty | 11 | | 0 | 00/80C5 | ozunid_17 - 231 | 1 Unidrive2.asm 214 | Equivalence | 11 | | 0 | 00/80C5 | CNTL_LIST2 equ ozunid_17 - 232 | 1 Unidrive2.asm 215 | Data | 11 | | 1 | 00/80C5 : 06 | Clow_byte dfb $06 - 233 | 1 Unidrive2.asm 216 | Data | 11 | | 1 | 00/80C6 : 00 | Chigh_byte dfb $00 - 234 | 1 Unidrive2.asm 217 | Data | 11 | | 1 | 00/80C7 : 00 | AccValue dfb $00 ; Input Value - 235 | 1 Unidrive2.asm 218 | Data | 11 | | 1 | 00/80C8 : 00 | X_reg dfb $00 ; Input Value (N1) - 236 | 1 Unidrive2.asm 219 | Data | 11 | | 1 | 00/80C9 : 00 | Y_reg dfb $00 ; Input Value (N2) - 237 | 1 Unidrive2.asm 220 | Data | 11 | | 1 | 00/80CA : 00 | ProStatus dfb $00 ; Input Value - 238 | 1 Unidrive2.asm 221 | Data | 11 | | 1 | 00/80CB : 05 | LowPC_reg dfb $05 ; Like ORG - 239 | 1 Unidrive2.asm 222 | Data | 11 | | 1 | 00/80CC : 05 | HighPC_reg dfb $05 - 240 | 1 Unidrive2.asm 223 | Comment | 11 | | 0 | 00/80CD | * - 241 | 1 Unidrive2.asm 224 | Comment | 11 | | 0 | 00/80CD | *** Set Address *** - 242 | 1 Unidrive2.asm 225 | Empty | 11 | | 0 | 00/80CD | ozunid_18 - 243 | 1 Unidrive2.asm 225 | Equivalence | 11 | | 0 | 00/80CD | CNTL_LIST3 equ ozunid_18 - 244 | 1 Unidrive2.asm 226 | Data | 11 | | 1 | 00/80CD : 02 | CountL_byte dfb $02 - 245 | 1 Unidrive2.asm 227 | Data | 11 | | 1 | 00/80CE : 00 | CountH_byte dfb $00 - 246 | 1 Unidrive2.asm 228 | Data | 11 | | 1 | 00/80CF : 05 | LByte_Addr dfb $05 ; Like ORG - 247 | 1 Unidrive2.asm 229 | Data | 11 | | 1 | 00/80D0 : 05 | HByte_Addr dfb $05 - 248 | 1 Unidrive2.asm 230 | Comment | 11 | | 0 | 00/80D1 | * - 249 | 1 Unidrive2.asm 231 | Comment | 11 | | 0 | 00/80D1 | *** Download *** - 250 | 1 Unidrive2.asm 232 | Empty | 11 | | 0 | 00/80D1 | ozunid_19 - 251 | 1 Unidrive2.asm 232 | Equivalence | 11 | | 0 | 00/80D1 | CNTL_LIST4 equ ozunid_19 - 252 | 1 Unidrive2.asm 233 | Data | 11 | | 1 | 00/80D1 : 1A | LenghtL_byte dfb $1A ;<----- Lenght of Unidisk program Lo Byte - 253 | 1 Unidrive2.asm 234 | Data | 11 | | 1 | 00/80D2 : 00 | LenghtH_byte dfb $00 ;<----- Lenght of Unidisk program Hi Byte - 254 | 1 Unidrive2.asm 235 | Comment | 11 | | 0 | 00/80D3 | * - 255 | 1 Unidrive2.asm 236 | Comment | 11 | | 0 | 00/80D3 | *** Start UNIDISK Program *** - 256 | 1 Unidrive2.asm 237 | Comment | 11 | | 0 | 00/80D3 | ** Two byte adc ** - 257 | 1 Unidrive2.asm 238 | Directive | 11 | | 0 | 00/80D3 | org $0505 - 258 | 1 Unidrive2.asm 239 | Equivalence | 11 | | 0 | 00/0505 | RSLTU equ $C0 - 259 | 1 Unidrive2.asm 240 | Empty | 11 | | 0 | 00/0505 | - 260 | 1 Unidrive2.asm 241 | Code | 11 | | 1 | 00/0505 : 18 | clc - 261 | 1 Unidrive2.asm 242 | Empty | 11 | | 0 | 00/0506 | - 262 | 1 Unidrive2.asm 243 | Code | 11 | | 3 | 00/0506 : AD 1B 05 | lda N1U ; Lo Byte - 263 | 1 Unidrive2.asm 244 | Code | 11 | | 3 | 00/0509 : 6D 1D 05 | adc N2U - 264 | 1 Unidrive2.asm 245 | Code | 11 | | 2 | 00/050C : 85 C0 | sta {$C0} - 265 | 1 Unidrive2.asm 246 | Empty | 11 | | 0 | 00/050E | - 266 | 1 Unidrive2.asm 247 | Code | 11 | | 3 | 00/050E : AD 1C 05 | lda N1U+1 ; Hi Byte - 267 | 1 Unidrive2.asm 248 | Code | 11 | | 3 | 00/0511 : 6D 1E 05 | adc N2U+1 - 268 | 1 Unidrive2.asm 249 | Code | 11 | | 2 | 00/0514 : 85 C1 | sta {$C0}+1 - 269 | 1 Unidrive2.asm 250 | Comment | 11 | | 0 | 00/0516 | ** Output Data ** - 270 | 1 Unidrive2.asm 251 | Code | 11 | | 2 | 00/0516 : A6 C0 | ldx {$C0} - 271 | 1 Unidrive2.asm 252 | Code | 11 | | 2 | 00/0518 : A4 C1 | ldy {$C0}+1 - 272 | 1 Unidrive2.asm 253 | Empty | 11 | | 0 | 00/051A | - 273 | 1 Unidrive2.asm 254 | Code | 11 | | 1 | 00/051A : 60 | rts - 274 | 1 Unidrive2.asm 255 | Comment | 11 | | 0 | 00/051B | ** Input Dynamic Data append in the end of Unidisk routine ** - 275 | 1 Unidrive2.asm 256 | Data | 11 | | 1 | 00/051B : 00 | N1U dfb $00 - 276 | 1 Unidrive2.asm 257 | Data | 11 | | 1 | 00/051C : 00 | dfb $00 - 277 | 1 Unidrive2.asm 258 | Data | 11 | | 1 | 00/051D : 00 | N2U dfb $00 - 278 | 1 Unidrive2.asm 259 | Data | 11 | | 1 | 00/051E : 00 | dfb $00 -------+-------------------------+-------------+----+---------+------+-----------------------+------------------------------------------------------------------- diff --git a/AppleII/Memory dump/Uniprox b/AppleII/Memory dump/Uniprox deleted file mode 100644 index a6c1d4323f5293e0727eb01df45d6b767e5d998a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 438 zcmaiuJxc>Y5QgWnxjoDw*cq@{M6gREg0)GIQ%N)*LcrqE2!8wn5pOgXQzU_a*obgB zOmSc&Y3u??qaqg9YNM5;h!O%REW)`P?Ok?zwyvczY&pXcA-0l;hT|n*bJ)nT@<`kaLKYiI8(RA~VTb{}J#+`QkF9>!50Sl& z#*){M#Hai2bBDa^kDd_&{1@mjQx)nAMJyt_GjxvFMxXwA(qnP95oYlO<02B>(!$Xa z*k16aijT!AcJqOLt%V%3 zpc3d!qw9DdDqrwCi|)Cn+lupGDh`;`QkwK-6Z^`&^5hPd^g?0k%kg*~nl!jeOd8ZZ z=7C2%IG{kJW0Z-sg9QFNM5-Yrl7kA7t^{<6egMj`H;`o?e=6kLxei~{zV7Hh#+

Y - 141 | 1 Uniprox.asm 135 | Code | 11 | | 1 | 00/80BC : C8 | iny ; Y+ --> $FF - 142 | 1 Uniprox.asm 136 | Code | 11 | | 3 | 00/80BD : 8C A1 81 | sty Y_reg ; Y --> Y_reg Uni=$FF - 143 | 1 Uniprox.asm 137 | Comment | 11 | | 0 | 00/80C0 | *** Execute *** - 144 | 1 Uniprox.asm 138 | Code | 11 | | 1 | 00/80C0 : E8 | EXEC inx - 145 | 1 Uniprox.asm 139 | Code | 11 | | 2 | 00/80C1 : 86 0A | stx {$000A} ; 1 time set LowMain=$00 - 146 | 1 Uniprox.asm 140 | Code | 11 | | 3 | 00/80C3 : 8E A0 81 | stx X_reg - 147 | 1 Uniprox.asm 141 | Code | 11 | | 3 | 00/80C6 : 20 59 81 | jsr {ozunid_12} - 148 | 1 Uniprox.asm 142 | Data | 11 | | 1 | 00/80C9 : 04 | dfb {4} - 149 | 1 Uniprox.asm 143 | Data | 11 | | 2 | 00/80CA : 91 81 | dw {ozunid_19} - 150 | 1 Uniprox.asm 144 | Code | 11 | | 3 | 00/80CC : 20 59 81 | READ jsr {ozunid_12} - 151 | 1 Uniprox.asm 145 | Data | 11 | | 1 | 00/80CF : 00 | dfb {0} - 152 | 1 Uniprox.asm 146 | Data | 11 | | 2 | 00/80D0 : 5C 81 | dw {ozunid_13} - 153 | 1 Uniprox.asm 147 | Code | 11 | | 2 | 00/80D2 : B0 C0 | bcs {ozunid_4} - 154 | 1 Uniprox.asm 148 | Comment | 11 | | 0 | 00/80D4 | * - 155 | 1 Uniprox.asm 149 | Comment | 11 | | 0 | 00/80D4 | **** Screen Output **** - 156 | 1 Uniprox.asm 150 | Comment | 11 | | 0 | 00/80D4 | * - 157 | 1 Uniprox.asm 151 | Comment | 11 | | 0 | 00/80D4 | *** Accumulator *** - 158 | 1 Uniprox.asm 152 | Code | 11 | | 3 | 00/80D4 : AD 82 81 | lda UNIAcc_reg - 159 | 1 Uniprox.asm 153 | Code | 11 | | 3 | 00/80D7 : 20 ED FD | jsr {$FDED} ; Out the ASCII value - 160 | 1 Uniprox.asm 154 | Code | 11 | | 2 | 00/80DA : A2 03 | ldx #03 ; Set 3 space - 161 | 1 Uniprox.asm 155 | Code | 11 | | 3 | 00/80DC : 20 4A F9 | jsr {$F94A} - 162 | 1 Uniprox.asm 156 | Comment | 11 | | 0 | 00/80DF | *** Y Register *** - 163 | 1 Uniprox.asm 157 | Code | 11 | | 3 | 00/80DF : AD 84 81 | lda UNIY_reg - 164 | 1 Uniprox.asm 158 | Code | 11 | | 3 | 00/80E2 : 20 DA FD | jsr {$FDDA} - 165 | 1 Uniprox.asm 159 | Comment | 11 | | 0 | 00/80E5 | *** X Register *** - 166 | 1 Uniprox.asm 160 | Code | 11 | | 3 | 00/80E5 : AD 83 81 | lda UNIX_reg - 167 | 1 Uniprox.asm 161 | Code | 11 | | 3 | 00/80E8 : 20 DA FD | jsr {$FDDA} - 168 | 1 Uniprox.asm 162 | Code | 11 | | 2 | 00/80EB : A2 01 | ldx #01 ; Set one space - 169 | 1 Uniprox.asm 163 | Code | 11 | | 3 | 00/80ED : 20 4A F9 | jsr {$F94A} - 170 | 1 Uniprox.asm 164 | Comment | 11 | | 0 | 00/80F0 | *** Process Status *** - 171 | 1 Uniprox.asm 165 | Code | 11 | | 3 | 00/80F0 : AD 85 81 | lda UNIP_val - 172 | 1 Uniprox.asm 166 | Code | 11 | | 3 | 00/80F3 : 20 DA FD | jsr {$FDDA} - 173 | 1 Uniprox.asm 167 | Code | 11 | | 2 | 00/80F6 : A2 05 | ldx #05 ; Set five space - 174 | 1 Uniprox.asm 168 | Code | 11 | | 3 | 00/80F8 : 20 4A F9 | jsr {$F94A} - 175 | 1 Uniprox.asm 169 | Comment | 11 | | 0 | 00/80FB | ** //c Memory store adress ** - 176 | 1 Uniprox.asm 170 | Code | 11 | | 2 | 00/80FB : A5 0B | lda {$000B} - 177 | 1 Uniprox.asm 171 | Code | 11 | | 3 | 00/80FD : 20 DA FD | jsr {$FDDA} - 178 | 1 Uniprox.asm 172 | Code | 11 | | 2 | 00/8100 : A5 0A | lda {$000A} - 179 | 1 Uniprox.asm 173 | Code | 11 | | 3 | 00/8102 : 20 DA FD | jsr {$FDDA} - 180 | 1 Uniprox.asm 174 | Code | 11 | | 3 | 00/8105 : 20 8E FD | jsr {$FD8E} - 181 | 1 Uniprox.asm 175 | Comment | 11 | | 0 | 00/8108 | **** Store in //c Main Memory **** - 182 | 1 Uniprox.asm 176 | Code | 11 | | 3 | 00/8108 : AE A0 81 | ldx X_reg - 183 | 1 Uniprox.asm 177 | Code | 11 | | 3 | 00/810B : AD 82 81 | lda UNIAcc_reg ;#$FB Test - 184 | 1 Uniprox.asm 178 | Code | 11 | | 2 | 00/810E : A0 00 | ldy #0 - 185 | 1 Uniprox.asm 179 | Code | 11 | | 2 | 00/8110 : 91 0A | sta ({$000A}),y - 186 | 1 Uniprox.asm 180 | Code | 11 | | 3 | 00/8112 : EC 17 81 | cpx UNIL_End - 187 | 1 Uniprox.asm 181 | Code | 11 | | 2 | 00/8115 : D0 A9 | bne EXEC - 188 | 1 Uniprox.asm 182 | Data | 11 | | 1 | 00/8117 : FF | UNIL_End dfb $FF ; Lo Byte stop (Unidisk) - $C0 for zero page - 189 | 1 Uniprox.asm 183 | Comment | 11 | | 0 | 00/8118 | *** Increment HiMain *** - 190 | 1 Uniprox.asm 184 | Code | 11 | | 2 | 00/8118 : E6 0B | inc {$000B} - 191 | 1 Uniprox.asm 185 | Code | 11 | | 3 | 00/811A : AC A1 81 | ldy Y_reg - 192 | 1 Uniprox.asm 186 | Code | 11 | | 3 | 00/811D : CC 22 81 | cpy UNIH_End - 193 | 1 Uniprox.asm 187 | Code | 11 | | 2 | 00/8120 : D0 94 | bne RESET - 194 | 1 Uniprox.asm 188 | Data | 11 | | 1 | 00/8122 : FF | UNIH_End dfb $FF ; Hi Byte stop (Unidisk) - $00 for zero page - 195 | 1 Uniprox.asm 189 | Comment | 11 | | 0 | 00/8123 | * - 196 | 1 Uniprox.asm 190 | Code | 11 | | 1 | 00/8123 : 60 | rts - 197 | 1 Uniprox.asm 191 | Empty | 11 | | 0 | 00/8124 | - 198 | 1 Uniprox.asm 192 | Comment | 11 | | 0 | 00/8124 | ****************************************************** - 199 | 1 Uniprox.asm 193 | Empty | 11 | | 0 | 00/8124 | ozunid_7 - 200 | 1 Uniprox.asm 193 | Equivalence | 11 | | 0 | 00/8124 | FindPC equ ozunid_7 - 201 | 1 Uniprox.asm 194 | Comment | 11 | | 0 | 00/8124 | * - 202 | 1 Uniprox.asm 195 | Comment | 11 | | 0 | 00/8124 | * Search slot 7 to slot 1 looking for signature bytes - 203 | 1 Uniprox.asm 196 | Comment | 11 | | 0 | 00/8124 | * - 204 | 1 Uniprox.asm 197 | Code | 11 | | 2 | 00/8124 : A2 07 | ldx #7 ;Do for seven slots - 205 | 1 Uniprox.asm 198 | Code | 11 | | 2 | 00/8126 : A9 C7 | lda #$C7 - 206 | 1 Uniprox.asm 199 | Code | 11 | | 2 | 00/8128 : 85 07 | sta {$0007} - 207 | 1 Uniprox.asm 200 | Code | 11 | | 2 | 00/812A : A9 00 | lda #$00 - 208 | 1 Uniprox.asm 201 | Code | 11 | | 2 | 00/812C : 85 06 | sta {$0006} - 209 | 1 Uniprox.asm 202 | Comment | 11 | | 0 | 00/812E | * - 210 | 1 Uniprox.asm 203 | Empty | 11 | | 0 | 00/812E | ozunid_8 - 211 | 1 Uniprox.asm 203 | Equivalence | 11 | | 0 | 00/812E | newslot equ ozunid_8 - 212 | 1 Uniprox.asm 204 | Code | 11 | | 2 | 00/812E : A0 07 | ldy #7 - 213 | 1 Uniprox.asm 205 | Comment | 11 | | 0 | 00/8130 | * - 214 | 1 Uniprox.asm 206 | Empty | 11 | | 0 | 00/8130 | ozunid_9 - 215 | 1 Uniprox.asm 206 | Equivalence | 11 | | 0 | 00/8130 | again equ ozunid_9 - 216 | 1 Uniprox.asm 207 | Code | 11 | | 2 | 00/8130 : B1 06 | lda ({$0006}),y - 217 | 1 Uniprox.asm 208 | Code | 11 | | 3 | 00/8132 : D9 51 81 | cmp sigtab,y ;One for byte signature - 218 | 1 Uniprox.asm 209 | Code | 11 | | 2 | 00/8135 : F0 07 | beq {ozunid_10} ;Found one signature byte - 219 | 1 Uniprox.asm 210 | Code | 11 | | 2 | 00/8137 : C6 07 | dec {$0007} - 220 | 1 Uniprox.asm 211 | Code | 11 | | 1 | 00/8139 : CA | dex - 221 | 1 Uniprox.asm 212 | Code | 11 | | 2 | 00/813A : D0 F2 | bne {ozunid_8} - 222 | 1 Uniprox.asm 213 | Comment | 11 | | 0 | 00/813C | * - 223 | 1 Uniprox.asm 214 | Comment | 11 | | 0 | 00/813C | * if we get here, no PC find - 224 | 1 Uniprox.asm 215 | Code | 11 | | 1 | 00/813C : 38 | sec - 225 | 1 Uniprox.asm 216 | Code | 11 | | 1 | 00/813D : 60 | rts - 226 | 1 Uniprox.asm 217 | Comment | 11 | | 0 | 00/813E | * - 227 | 1 Uniprox.asm 218 | Comment | 11 | | 0 | 00/813E | * if we get here, no byte find on PC - 228 | 1 Uniprox.asm 219 | Empty | 11 | | 0 | 00/813E | ozunid_10 - 229 | 1 Uniprox.asm 219 | Equivalence | 11 | | 0 | 00/813E | maybe equ ozunid_10 - 230 | 1 Uniprox.asm 220 | Code | 11 | | 1 | 00/813E : 88 | dey - 231 | 1 Uniprox.asm 221 | Code | 11 | | 1 | 00/813F : 88 | dey ;if N=1 then all sig bytes OK - 232 | 1 Uniprox.asm 222 | Code | 11 | | 2 | 00/8140 : 10 EE | bpl {ozunid_9} - 233 | 1 Uniprox.asm 223 | Comment | 11 | | 0 | 00/8142 | * Found PC interface. Set up call address. - 234 | 1 Uniprox.asm 224 | Comment | 11 | | 0 | 00/8142 | * we already have high byte ($CN), we need low byte - 235 | 1 Uniprox.asm 225 | Comment | 11 | | 0 | 00/8142 | * - 236 | 1 Uniprox.asm 226 | Empty | 11 | | 0 | 00/8142 | ozunid_11 - 237 | 1 Uniprox.asm 226 | Equivalence | 11 | | 0 | 00/8142 | foundPC equ ozunid_11 - 238 | 1 Uniprox.asm 227 | Code | 11 | | 2 | 00/8142 : A9 FF | lda #$FF - 239 | 1 Uniprox.asm 228 | Code | 11 | | 2 | 00/8144 : 85 06 | sta {$0006} - 240 | 1 Uniprox.asm 229 | Code | 11 | | 2 | 00/8146 : A0 00 | ldy #0 ;For indirect load - 241 | 1 Uniprox.asm 230 | Code | 11 | | 2 | 00/8148 : B1 06 | lda ({$0006}),y ;Get the byte - 242 | 1 Uniprox.asm 231 | Comment | 11 | | 0 | 00/814A | * - 243 | 1 Uniprox.asm 232 | Comment | 11 | | 0 | 00/814A | * Now the Acc has the low oreder ProDOS entry point. - 244 | 1 Uniprox.asm 233 | Comment | 11 | | 0 | 00/814A | * The PC entry is three locations past this ... - 245 | 1 Uniprox.asm 234 | Comment | 11 | | 0 | 00/814A | * - 246 | 1 Uniprox.asm 235 | Code | 11 | | 1 | 00/814A : 18 | clc - 247 | 1 Uniprox.asm 236 | Code | 11 | | 2 | 00/814B : 69 03 | adc #3 - 248 | 1 Uniprox.asm 237 | Code | 11 | | 2 | 00/814D : 85 06 | sta {$0006} - 249 | 1 Uniprox.asm 238 | Comment | 11 | | 0 | 00/814F | * - 250 | 1 Uniprox.asm 239 | Comment | 11 | | 0 | 00/814F | * Now ZPTempL has PC entry point. - 251 | 1 Uniprox.asm 240 | Comment | 11 | | 0 | 00/814F | * Return with carry clear. - 252 | 1 Uniprox.asm 241 | Comment | 11 | | 0 | 00/814F | * - 253 | 1 Uniprox.asm 242 | Code | 11 | | 1 | 00/814F : 18 | clc - 254 | 1 Uniprox.asm 243 | Code | 11 | | 1 | 00/8150 : 60 | rts - 255 | 1 Uniprox.asm 244 | Comment | 11 | | 0 | 00/8151 | *********************************************************** - 256 | 1 Uniprox.asm 245 | Comment | 11 | | 0 | 00/8151 | * - 257 | 1 Uniprox.asm 246 | Comment | 11 | | 0 | 00/8151 | * There are the PC signature bytes in their relative order. - 258 | 1 Uniprox.asm 247 | Comment | 11 | | 0 | 00/8151 | * The $FF bytes are filler bytes and are not compared. - 259 | 1 Uniprox.asm 248 | Comment | 11 | | 0 | 00/8151 | * - 260 | 1 Uniprox.asm 249 | Data | 11 | | 4 | 00/8151 : FF 20 FF 00 | sigtab dfb $FF,$20,$FF,$00 - 261 | 1 Uniprox.asm 250 | Data | 11 | | 4 | 00/8155 : FF 03 FF 00 | dfb $FF,$03,$FF,$00 - 262 | 1 Uniprox.asm 251 | Comment | 11 | | 0 | 00/8159 | * - 263 | 1 Uniprox.asm 252 | Empty | 11 | | 0 | 00/8159 | ozunid_12 - 264 | 1 Uniprox.asm 252 | Equivalence | 11 | | 0 | 00/8159 | Dispatch equ ozunid_12 - 265 | 1 Uniprox.asm 253 | Code | 11 | | 3 | 00/8159 : 6C 06 00 | jmp ({$0006}) ;Simulate an indirect JSR to PC - 266 | 1 Uniprox.asm 254 | Comment | 11 | | 0 | 00/815C | * - 267 | 1 Uniprox.asm 255 | Comment | 11 | | 0 | 00/815C | *** Status Parameter Set for UNI *** - 268 | 1 Uniprox.asm 256 | Empty | 11 | | 0 | 00/815C | ozunid_13 - 269 | 1 Uniprox.asm 256 | Equivalence | 11 | | 0 | 00/815C | DParms equ ozunid_13 - 270 | 1 Uniprox.asm 257 | Data | 11 | | 1 | 00/815C : 03 | DPParmsCt dfb 3 ;Status calls have three parameters - 271 | 1 Uniprox.asm 258 | Data | 11 | | 1 | 00/815D : 01 | DPUnit dfb 1 - 272 | 1 Uniprox.asm 259 | Data | 11 | | 2 | 00/815E : 7F 81 | DPBuffer dw {ozunid_16} - 273 | 1 Uniprox.asm 260 | Data | 11 | | 1 | 00/8160 : 05 | DPStatCode dfb {5} - 274 | 1 Uniprox.asm 261 | Comment | 11 | | 0 | 00/8161 | * - 275 | 1 Uniprox.asm 262 | Comment | 11 | | 0 | 00/8161 | * - 276 | 1 Uniprox.asm 263 | Comment | 11 | | 0 | 00/8161 | *** Status Parameter Set for DIB *** - 277 | 1 Uniprox.asm 264 | Empty | 11 | | 0 | 00/8161 | ozunid_14 - 278 | 1 Uniprox.asm 264 | Equivalence | 11 | | 0 | 00/8161 | DParmsDIB equ ozunid_14 - 279 | 1 Uniprox.asm 265 | Data | 11 | | 1 | 00/8161 : 03 | DPParmsCt2 dfb 3 ;Status calls have three parameters - 280 | 1 Uniprox.asm 266 | Data | 11 | | 1 | 00/8162 : 01 | DPUnit2 dfb 1 - 281 | 1 Uniprox.asm 267 | Data | 11 | | 2 | 00/8163 : 66 81 | DPBuffer2 dw {ozunid_15} - 282 | 1 Uniprox.asm 268 | Data | 11 | | 1 | 00/8165 : 03 | DPStatCode2 dfb {3} - 283 | 1 Uniprox.asm 269 | Comment | 11 | | 0 | 00/8166 | * - 284 | 1 Uniprox.asm 270 | Comment | 11 | | 0 | 00/8166 | * - 285 | 1 Uniprox.asm 271 | Comment | 11 | | 0 | 00/8166 | *** Status List DIB *** - 286 | 1 Uniprox.asm 272 | Empty | 11 | | 0 | 00/8166 | ozunid_15 - 287 | 1 Uniprox.asm 272 | Equivalence | 11 | | 0 | 00/8166 | DIB equ ozunid_15 - 288 | 1 Uniprox.asm 273 | Data | 11 | | 1 | 00/8166 : 00 | DIBStatByte1 dfb 0 - 289 | 1 Uniprox.asm 274 | Data | 11 | | 3 | 00/8167 : 00 00 00 | DIBDevSize dfb 0,0,0 - 290 | 1 Uniprox.asm 275 | Data | 11 | | 1 | 00/816A : 00 | DIBNameLen dfb 0 - 291 | 1 Uniprox.asm 276 | Data | 11 | | 16 | 00/816B : 00 00 00 00 | DIBName ds 16,0 - | | | | | | 00 00 00 00 | - | | | | | | 00 00 00 00 | - | | | | | | 00 00 00 00 | - 292 | 1 Uniprox.asm 277 | Data | 11 | | 1 | 00/817B : 00 | DIBType dfb 0 - 293 | 1 Uniprox.asm 278 | Data | 11 | | 1 | 00/817C : 00 | DIBSubType dfb 0 - 294 | 1 Uniprox.asm 279 | Data | 11 | | 2 | 00/817D : 00 00 | DIBVersion dw 0 - 295 | 1 Uniprox.asm 280 | Comment | 11 | | 0 | 00/817F | * - 296 | 1 Uniprox.asm 281 | Comment | 11 | | 0 | 00/817F | *** Status List UNI *** - 297 | 1 Uniprox.asm 282 | Empty | 11 | | 0 | 00/817F | ozunid_16 - 298 | 1 Uniprox.asm 282 | Equivalence | 11 | | 0 | 00/817F | UNI equ ozunid_16 - 299 | 1 Uniprox.asm 283 | Data | 11 | | 1 | 00/817F : 00 | dfb 0 - 300 | 1 Uniprox.asm 284 | Data | 11 | | 1 | 00/8180 : 00 | UNIError dfb 0 - 301 | 1 Uniprox.asm 285 | Data | 11 | | 1 | 00/8181 : 00 | UNIRetries dfb 0 - 302 | 1 Uniprox.asm 286 | Data | 11 | | 1 | 00/8182 : 00 | UNIAcc_reg dfb 0 - 303 | 1 Uniprox.asm 287 | Data | 11 | | 1 | 00/8183 : 00 | UNIX_reg dfb 0 - 304 | 1 Uniprox.asm 288 | Data | 11 | | 1 | 00/8184 : 00 | UNIY_reg dfb 0 - 305 | 1 Uniprox.asm 289 | Data | 11 | | 1 | 00/8185 : 00 | UNIP_val dfb 0 - 306 | 1 Uniprox.asm 290 | Data | 11 | | 1 | 00/8186 : 00 | HHH dfb 0 - 307 | 1 Uniprox.asm 291 | Comment | 11 | | 0 | 00/8187 | * - 308 | 1 Uniprox.asm 292 | Comment | 11 | | 0 | 00/8187 | *** Set Address *** - 309 | 1 Uniprox.asm 293 | Empty | 11 | | 0 | 00/8187 | ozunid_17 - 310 | 1 Uniprox.asm 293 | Equivalence | 11 | | 0 | 00/8187 | SET_ADD equ ozunid_17 - 311 | 1 Uniprox.asm 294 | Data | 11 | | 1 | 00/8187 : 03 | dfb 3 - 312 | 1 Uniprox.asm 295 | Data | 11 | | 1 | 00/8188 : 01 | dfb 1 - 313 | 1 Uniprox.asm 296 | Data | 11 | | 2 | 00/8189 : A5 81 | dw {ozunid_23} - 314 | 1 Uniprox.asm 297 | Data | 11 | | 1 | 00/818B : 06 | dfb {6} - 315 | 1 Uniprox.asm 298 | Comment | 11 | | 0 | 00/818C | * - 316 | 1 Uniprox.asm 299 | Comment | 11 | | 0 | 00/818C | *** Download *** - 317 | 1 Uniprox.asm 300 | Empty | 11 | | 0 | 00/818C | ozunid_18 - 318 | 1 Uniprox.asm 300 | Equivalence | 11 | | 0 | 00/818C | DOWNLOAD equ ozunid_18 - 319 | 1 Uniprox.asm 301 | Data | 11 | | 1 | 00/818C : 03 | dfb 3 - 320 | 1 Uniprox.asm 302 | Data | 11 | | 1 | 00/818D : 01 | dfb 1 - 321 | 1 Uniprox.asm 303 | Data | 11 | | 2 | 00/818E : A9 81 | dw {ozunid_24} - 322 | 1 Uniprox.asm 304 | Data | 11 | | 1 | 00/8190 : 07 | dfb {7} - 323 | 1 Uniprox.asm 305 | Comment | 11 | | 0 | 00/8191 | * - 324 | 1 Uniprox.asm 306 | Comment | 11 | | 0 | 00/8191 | *** Execute *** - 325 | 1 Uniprox.asm 307 | Empty | 11 | | 0 | 00/8191 | ozunid_19 - 326 | 1 Uniprox.asm 307 | Equivalence | 11 | | 0 | 00/8191 | EXE equ ozunid_19 - 327 | 1 Uniprox.asm 308 | Data | 11 | | 1 | 00/8191 : 03 | dfb 3 - 328 | 1 Uniprox.asm 309 | Data | 11 | | 1 | 00/8192 : 01 | dfb 1 - 329 | 1 Uniprox.asm 310 | Data | 11 | | 2 | 00/8193 : 9D 81 | dw {ozunid_22} - 330 | 1 Uniprox.asm 311 | Data | 11 | | 1 | 00/8195 : 05 | dfb {5} - 331 | 1 Uniprox.asm 312 | Comment | 11 | | 0 | 00/8196 | *** Eject *** - 332 | 1 Uniprox.asm 313 | Empty | 11 | | 0 | 00/8196 | ozunid_20 - 333 | 1 Uniprox.asm 313 | Equivalence | 11 | | 0 | 00/8196 | E_JECT equ ozunid_20 - 334 | 1 Uniprox.asm 314 | Data | 11 | | 1 | 00/8196 : 03 | dfb 3 - 335 | 1 Uniprox.asm 315 | Data | 11 | | 1 | 00/8197 : 01 | dfb 1 - 336 | 1 Uniprox.asm 316 | Data | 11 | | 2 | 00/8198 : 9B 81 | dw {ozunid_21} - 337 | 1 Uniprox.asm 317 | Data | 11 | | 1 | 00/819A : 04 | dfb {4} - 338 | 1 Uniprox.asm 318 | Comment | 11 | | 0 | 00/819B | * - 339 | 1 Uniprox.asm 319 | Comment | 11 | | 0 | 00/819B | ******** CONTROL LISTS ******** - 340 | 1 Uniprox.asm 320 | Comment | 11 | | 0 | 00/819B | * - 341 | 1 Uniprox.asm 321 | Comment | 11 | | 0 | 00/819B | * - 342 | 1 Uniprox.asm 322 | Comment | 11 | | 0 | 00/819B | *** Eject *** - 343 | 1 Uniprox.asm 323 | Empty | 11 | | 0 | 00/819B | ozunid_21 - 344 | 1 Uniprox.asm 323 | Equivalence | 11 | | 0 | 00/819B | CNTL_LIST1 equ ozunid_21 - 345 | 1 Uniprox.asm 324 | Data | 11 | | 2 | 00/819B : 00 00 | dw $0000 - 346 | 1 Uniprox.asm 325 | Comment | 11 | | 0 | 00/819D | * - 347 | 1 Uniprox.asm 326 | Comment | 11 | | 0 | 00/819D | *** Execute *** - 348 | 1 Uniprox.asm 327 | Empty | 11 | | 0 | 00/819D | ozunid_22 - 349 | 1 Uniprox.asm 327 | Equivalence | 11 | | 0 | 00/819D | CNTL_LIST2 equ ozunid_22 - 350 | 1 Uniprox.asm 328 | Data | 11 | | 1 | 00/819D : 06 | Clow_byte dfb $06 - 351 | 1 Uniprox.asm 329 | Data | 11 | | 1 | 00/819E : 00 | Chigh_byte dfb $00 - 352 | 1 Uniprox.asm 330 | Data | 11 | | 1 | 00/819F : 00 | AccValue dfb $00 - 353 | 1 Uniprox.asm 331 | Data | 11 | | 1 | 00/81A0 : 00 | X_reg dfb $00 ;($80E3) Lo Byte start $00 (Unidisk) - 354 | 1 Uniprox.asm 332 | Data | 11 | | 1 | 00/81A1 : DF | Y_reg dfb $DF ;($80E4) Hi Byte One more before start $E0 - $FF-->$00 for zero page (Unidisk) - 355 | 1 Uniprox.asm 333 | Data | 11 | | 1 | 00/81A2 : 00 | ProStatus dfb $00 - 356 | 1 Uniprox.asm 334 | Data | 11 | | 1 | 00/81A3 : 05 | LowPC_reg dfb $05 - 357 | 1 Uniprox.asm 335 | Data | 11 | | 1 | 00/81A4 : 05 | HighPC_reg dfb $05 - 358 | 1 Uniprox.asm 336 | Comment | 11 | | 0 | 00/81A5 | * - 359 | 1 Uniprox.asm 337 | Comment | 11 | | 0 | 00/81A5 | *** Set Address *** - 360 | 1 Uniprox.asm 338 | Empty | 11 | | 0 | 00/81A5 | ozunid_23 - 361 | 1 Uniprox.asm 338 | Equivalence | 11 | | 0 | 00/81A5 | CNTL_LIST3 equ ozunid_23 - 362 | 1 Uniprox.asm 339 | Data | 11 | | 1 | 00/81A5 : 02 | CountL_byte dfb $02 - 363 | 1 Uniprox.asm 340 | Data | 11 | | 1 | 00/81A6 : 00 | CountH_byte dfb $00 - 364 | 1 Uniprox.asm 341 | Data | 11 | | 1 | 00/81A7 : 05 | LByte_Addr dfb $05 - 365 | 1 Uniprox.asm 342 | Data | 11 | | 1 | 00/81A8 : 05 | HByte_Addr dfb $05 - 366 | 1 Uniprox.asm 343 | Comment | 11 | | 0 | 00/81A9 | * - 367 | 1 Uniprox.asm 344 | Comment | 11 | | 0 | 00/81A9 | *** Download *** - 368 | 1 Uniprox.asm 345 | Empty | 11 | | 0 | 00/81A9 | ozunid_24 - 369 | 1 Uniprox.asm 345 | Equivalence | 11 | | 0 | 00/81A9 | CNTL_LIST4 equ ozunid_24 - 370 | 1 Uniprox.asm 346 | Data | 11 | | 1 | 00/81A9 : 0B | LenghtL_byte dfb $0B - 371 | 1 Uniprox.asm 347 | Data | 11 | | 1 | 00/81AA : 00 | LenghtH_byte dfb $00 - 372 | 1 Uniprox.asm 348 | Comment | 11 | | 0 | 00/81AB | * - 373 | 1 Uniprox.asm 349 | Comment | 11 | | 0 | 00/81AB | *** Start UNIDISK Program *** - 374 | 1 Uniprox.asm 350 | Comment | 11 | | 0 | 00/81AB | ** Temporaney save in UNIDISK "Free zero page space" the address point stored in UNIDISK X, Y registers** - 375 | 1 Uniprox.asm 351 | Code | 11 | | 2 | 00/81AB : 86 C0 | stx $00C0 - 376 | 1 Uniprox.asm 352 | Code | 11 | | 2 | 00/81AD : 84 C1 | sty $00C1 - 377 | 1 Uniprox.asm 353 | Comment | 11 | | 0 | 00/81AF | ** Store in UNIDISK Accumulator the value of the UniDISK location that is store in $00C0 plus $00C1 - 378 | 1 Uniprox.asm 354 | Code | 11 | | 2 | 00/81AF : A0 00 | ldy #0 - 379 | 1 Uniprox.asm 355 | Code | 11 | | 2 | 00/81B1 : B1 C0 | lda ($00C0),y - 380 | 1 Uniprox.asm 356 | Comment | 11 | | 0 | 00/81B3 | ** Restore the value of Y Unidisk register - 381 | 1 Uniprox.asm 357 | Code | 11 | | 2 | 00/81B3 : A4 C1 | ldy $00C1 - 382 | 1 Uniprox.asm 358 | Code | 11 | | 1 | 00/81B5 : 60 | rts -------+-----------------------+-------------+----+---------+------+-----------------------+------------------------------------------------------------------- diff --git a/AppleII/Memory dump/Uniproz b/AppleII/Memory dump/Uniproz deleted file mode 100644 index a6a6dd1c9dbc2b89968827a4aa280a26f1e58a90..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 249 zcmY%BY1ojuQlXVw;a~&H#Rd?0tzprBi8W6ePV_u!c+tky_ZTdC8$>c3Y1m-C_DqAq zt-ou}g2{7W@;r!C==;0waRX3x0mDSDH?a*D4jp*L4K(LWM#F`*3<--E_Et1}U{iSe z_r-;;34ZIi))ytvuiKIBKDQXTiI7Kw6ZN=-^g}zXTt~fW9+9ce6mRB z=n#0f@;^|VVI!MFCUYyBM8bcC{|x_`|1;#UF)%ZpY+z-80%pb+4Q$MeZyMN{86PyT bvH^wvGqAEU0Wmj2+kuvYKr;?3IhX(dCs}Pk diff --git a/AppleII/Memory dump/Uniproz_Output.txt b/AppleII/Memory dump/Uniproz_Output.txt deleted file mode 100644 index e9c86e2..0000000 --- a/AppleII/Memory dump/Uniproz_Output.txt +++ /dev/null @@ -1,270 +0,0 @@ -------+-----------------------+-------------+----+---------+------+-----------------------+------------------------------------------------------------------- - Line | # File Line | Line Type | MX | Reloc | Size | Address Object Code | Source Code -------+-----------------------+-------------+----+---------+------+-----------------------+------------------------------------------------------------------- - 1 | 1 Uniproz.asm 1 | Comment | 11 | | 0 | 00/8000 | * @com.wudsn.ide.asm.hardware=APPLE2 - 2 | 1 Uniproz.asm 2 | Comment | 11 | | 0 | 00/8000 | * Protocol Converter Call - 3 | 1 Uniproz.asm 3 | Directive | 11 | | 0 | 00/8000 | XC - 4 | 1 Uniproz.asm 4 | Equivalence | 11 | | 0 | 00/8000 | ZPTempL equ $0006 ;Temporary zero page storage - 5 | 1 Uniproz.asm 5 | Equivalence | 11 | | 0 | 00/8000 | ZPTempH equ $0007 - 6 | 1 Uniproz.asm 6 | Comment | 11 | | 0 | 00/8000 | *** Pointers *** - 7 | 1 Uniproz.asm 7 | Equivalence | 11 | | 0 | 00/8000 | LowMain equ $000A - 8 | 1 Uniproz.asm 8 | Equivalence | 11 | | 0 | 00/8000 | HiMain equ $000B - 9 | 1 Uniproz.asm 9 | Comment | 11 | | 0 | 00/8000 | *** Monitor routines *** - 10 | 1 Uniproz.asm 10 | Equivalence | 11 | | 0 | 00/8000 | COut equ $FDED ;Console output ASCII - 11 | 1 Uniproz.asm 11 | Equivalence | 11 | | 0 | 00/8000 | CROut equ $FD8E ;Carriage return - 12 | 1 Uniproz.asm 12 | Equivalence | 11 | | 0 | 00/8000 | PRbyte equ $FDDA ;Print byte in hex - 13 | 1 Uniproz.asm 13 | Comment | 11 | | 0 | 00/8000 | ** Command Code ** - 14 | 1 Uniproz.asm 14 | Equivalence | 11 | | 0 | 00/8000 | StatusCmd equ 0 - 15 | 1 Uniproz.asm 15 | Comment | 11 | | 0 | 00/8000 | ** Status Code ** - 16 | 1 Uniproz.asm 16 | Equivalence | 11 | | 0 | 00/8000 | StatusDIB equ 3 - 17 | 1 Uniproz.asm 17 | Equivalence | 11 | | 0 | 00/8000 | StatusUNI equ 5 - 18 | 1 Uniproz.asm 18 | Comment | 11 | | 0 | 00/8000 | * - 19 | 1 Uniproz.asm 19 | Equivalence | 11 | | 0 | 00/8000 | ControlCmd equ 4 - 20 | 1 Uniproz.asm 20 | Comment | 11 | | 0 | 00/8000 | ** Control Codes ** - 21 | 1 Uniproz.asm 21 | Equivalence | 11 | | 0 | 00/8000 | Run equ 5 - 22 | 1 Uniproz.asm 22 | Equivalence | 11 | | 0 | 00/8000 | SetDWLoad equ 6 - 23 | 1 Uniproz.asm 23 | Equivalence | 11 | | 0 | 00/8000 | DWLoad equ 7 - 24 | 1 Uniproz.asm 24 | Comment | 11 | | 0 | 00/8000 | * - 25 | 1 Uniproz.asm 25 | Directive | 11 | | 0 | 00/8000 | org $8000 - 26 | 1 Uniproz.asm 26 | Comment | 11 | | 0 | 00/8000 | * - 27 | 1 Uniproz.asm 27 | Comment | 11 | | 0 | 00/8000 | * Find a Protocol Converter in one of the slots. - 28 | 1 Uniproz.asm 28 | Comment | 11 | | 0 | 00/8000 | * - 29 | 1 Uniproz.asm 29 | Code | 11 | | 3 | 00/8000 : 20 8C 80 | jsr {ozunid_4} - 30 | 1 Uniproz.asm 30 | Code | 11 | | 2 | 00/8003 : B0 65 | bcs {ozunid_1} - 31 | 1 Uniproz.asm 31 | Comment | 11 | | 0 | 00/8005 | * - 32 | 1 Uniproz.asm 32 | Comment | 11 | | 0 | 00/8005 | *** Set HiMain Memory Pointers *** - 33 | 1 Uniproz.asm 33 | Code | 11 | | 2 | 00/8005 : A9 20 | lda #$20 - 34 | 1 Uniproz.asm 34 | Code | 11 | | 2 | 00/8007 : 85 0B | sta {$000B} - 35 | 1 Uniproz.asm 35 | Comment | 11 | | 0 | 00/8009 | *** Set Address *** - 36 | 1 Uniproz.asm 36 | Code | 11 | | 3 | 00/8009 : 20 C1 80 | jsr {ozunid_9} - 37 | 1 Uniproz.asm 37 | Data | 11 | | 1 | 00/800C : 04 | dfb {4} - 38 | 1 Uniproz.asm 38 | Data | 11 | | 2 | 00/800D : D1 80 | dw {ozunid_12} - 39 | 1 Uniproz.asm 39 | Comment | 11 | | 0 | 00/800F | *** Download *** - 40 | 1 Uniproz.asm 40 | Code | 11 | | 3 | 00/800F : 20 C1 80 | jsr {ozunid_9} - 41 | 1 Uniproz.asm 41 | Data | 11 | | 1 | 00/8012 : 04 | dfb {4} - 42 | 1 Uniproz.asm 42 | Data | 11 | | 2 | 00/8013 : D6 80 | dw {ozunid_13} - 43 | 1 Uniproz.asm 43 | Comment | 11 | | 0 | 00/8015 | *** Set and Reset LoMain Memory Counter *** - 44 | 1 Uniproz.asm 44 | Code | 11 | | 2 | 00/8015 : A2 FF | RESET ldx #$FF ;One more before start - 45 | 1 Uniproz.asm 45 | Code | 11 | | 1 | 00/8017 : 18 | clc - 46 | 1 Uniproz.asm 46 | Code | 11 | | 3 | 00/8018 : AC E4 80 | ldy Y_reg - 47 | 1 Uniproz.asm 47 | Code | 11 | | 1 | 00/801B : C8 | iny - 48 | 1 Uniproz.asm 48 | Code | 11 | | 3 | 00/801C : 8C E4 80 | sty Y_reg - 49 | 1 Uniproz.asm 49 | Comment | 11 | | 0 | 00/801F | *** Execute *** - 50 | 1 Uniproz.asm 50 | Code | 11 | | 1 | 00/801F : E8 | EXEC inx - 51 | 1 Uniproz.asm 51 | Code | 11 | | 2 | 00/8020 : 86 0A | stx {$000A} - 52 | 1 Uniproz.asm 52 | Code | 11 | | 3 | 00/8022 : 8E E3 80 | stx X_reg - 53 | 1 Uniproz.asm 53 | Code | 11 | | 3 | 00/8025 : 20 C1 80 | jsr {ozunid_9} - 54 | 1 Uniproz.asm 54 | Data | 11 | | 1 | 00/8028 : 04 | dfb {4} - 55 | 1 Uniproz.asm 55 | Data | 11 | | 2 | 00/8029 : DB 80 | dw {ozunid_14} - 56 | 1 Uniproz.asm 56 | Code | 11 | | 3 | 00/802B : 20 C1 80 | READ jsr {ozunid_9} - 57 | 1 Uniproz.asm 57 | Data | 11 | | 1 | 00/802E : 00 | dfb {0} - 58 | 1 Uniproz.asm 58 | Data | 11 | | 2 | 00/802F : C4 80 | dw {ozunid_10} - 59 | 1 Uniproz.asm 59 | Code | 11 | | 2 | 00/8031 : B0 37 | bcs {ozunid_1} - 60 | 1 Uniproz.asm 60 | Comment | 11 | | 0 | 00/8033 | * - 61 | 1 Uniproz.asm 61 | Comment | 11 | | 0 | 00/8033 | *** Accumulator *** - 62 | 1 Uniproz.asm 62 | Code | 11 | | 3 | 00/8033 : AD CC 80 | lda UNIAcc_reg - 63 | 1 Uniproz.asm 63 | Code | 11 | | 3 | 00/8036 : 20 DA FD | jsr {$FDDA} - 64 | 1 Uniproz.asm 64 | Comment | 11 | | 0 | 00/8039 | *** X Register *** - 65 | 1 Uniproz.asm 65 | Code | 11 | | 3 | 00/8039 : AD CD 80 | lda UNIX_reg - 66 | 1 Uniproz.asm 66 | Code | 11 | | 3 | 00/803C : 20 DA FD | jsr {$FDDA} - 67 | 1 Uniproz.asm 67 | Comment | 11 | | 0 | 00/803F | *** Y Register *** - 68 | 1 Uniproz.asm 68 | Code | 11 | | 3 | 00/803F : AD CE 80 | lda UNIY_reg - 69 | 1 Uniproz.asm 69 | Code | 11 | | 3 | 00/8042 : 20 DA FD | jsr {$FDDA} - 70 | 1 Uniproz.asm 70 | Comment | 11 | | 0 | 00/8045 | *** Prrocess Status *** - 71 | 1 Uniproz.asm 71 | Code | 11 | | 3 | 00/8045 : AD CF 80 | lda UNIP_val - 72 | 1 Uniproz.asm 72 | Code | 11 | | 3 | 00/8048 : 20 DA FD | jsr {$FDDA} - 73 | 1 Uniproz.asm 73 | Code | 11 | | 3 | 00/804B : 20 8E FD | jsr {$FD8E} - 74 | 1 Uniproz.asm 74 | Comment | 11 | | 0 | 00/804E | **** Store in //c Main Memory **** - 75 | 1 Uniproz.asm 75 | Code | 11 | | 3 | 00/804E : AE E3 80 | ldx X_reg - 76 | 1 Uniproz.asm 76 | Code | 11 | | 3 | 00/8051 : AD CC 80 | lda UNIAcc_reg ;#$FB Test - 77 | 1 Uniproz.asm 77 | Code | 11 | | 2 | 00/8054 : A0 00 | ldy #0 - 78 | 1 Uniproz.asm 78 | Code | 11 | | 2 | 00/8056 : 91 0A | sta ({$000A}),y - 79 | 1 Uniproz.asm 79 | Code | 11 | | 3 | 00/8058 : EC 5D 80 | cpx UNIL_End - 80 | 1 Uniproz.asm 80 | Code | 11 | | 2 | 00/805B : D0 C2 | bne EXEC - 81 | 1 Uniproz.asm 81 | Data | 11 | | 1 | 00/805D : C0 | UNIL_End dfb $C0 ;$FF - 82 | 1 Uniproz.asm 82 | Comment | 11 | | 0 | 00/805E | *** Increment HiMain *** - 83 | 1 Uniproz.asm 83 | Code | 11 | | 2 | 00/805E : E6 0B | inc {$000B} - 84 | 1 Uniproz.asm 84 | Code | 11 | | 3 | 00/8060 : AC E4 80 | ldy Y_reg - 85 | 1 Uniproz.asm 85 | Code | 11 | | 3 | 00/8063 : CC 68 80 | cpy UNIH_End - 86 | 1 Uniproz.asm 86 | Code | 11 | | 2 | 00/8066 : D0 AD | bne RESET - 87 | 1 Uniproz.asm 87 | Data | 11 | | 1 | 00/8068 : 00 | UNIH_End dfb $00 ;$FF - 88 | 1 Uniproz.asm 88 | Comment | 11 | | 0 | 00/8069 | * - 89 | 1 Uniproz.asm 89 | Code | 11 | | 1 | 00/8069 : 60 | rts - 90 | 1 Uniproz.asm 90 | Comment | 11 | | 0 | 00/806A | * - 91 | 1 Uniproz.asm 91 | Empty | 11 | | 0 | 00/806A | ozunid_1 - 92 | 1 Uniproz.asm 91 | Equivalence | 11 | | 0 | 00/806A | Error equ ozunid_1 - 93 | 1 Uniproz.asm 92 | Comment | 11 | | 0 | 00/806A | * - 94 | 1 Uniproz.asm 93 | Comment | 11 | | 0 | 00/806A | * There's either no PC around, or there was no give message - 95 | 1 Uniproz.asm 94 | Comment | 11 | | 0 | 00/806A | * - 96 | 1 Uniproz.asm 95 | Code | 11 | | 2 | 00/806A : A2 00 | ldx #0 - 97 | 1 Uniproz.asm 96 | Empty | 11 | | 0 | 00/806C | ozunid_2 - 98 | 1 Uniproz.asm 96 | Equivalence | 11 | | 0 | 00/806C | err1 equ ozunid_2 - 99 | 1 Uniproz.asm 97 | Code | 11 | | 3 | 00/806C : BD 78 80 | lda Message,x - 100 | 1 Uniproz.asm 98 | Code | 11 | | 2 | 00/806F : F0 06 | beq {ozunid_3} - 101 | 1 Uniproz.asm 99 | Code | 11 | | 3 | 00/8071 : 20 ED FD | jsr {$FDED} - 102 | 1 Uniproz.asm 100 | Code | 11 | | 1 | 00/8074 : E8 | inx - 103 | 1 Uniproz.asm 101 | Code | 11 | | 2 | 00/8075 : D0 F5 | bne {ozunid_2} - 104 | 1 Uniproz.asm 102 | Comment | 11 | | 0 | 00/8077 | * - 105 | 1 Uniproz.asm 103 | Empty | 11 | | 0 | 00/8077 | ozunid_3 - 106 | 1 Uniproz.asm 103 | Equivalence | 11 | | 0 | 00/8077 | errout equ ozunid_3 - 107 | 1 Uniproz.asm 104 | Code | 11 | | 1 | 00/8077 : 60 | rts - 108 | 1 Uniproz.asm 105 | Comment | 11 | | 0 | 00/8078 | * - 109 | 1 Uniproz.asm 106 | Data | 11 | | 18 | 00/8078 : 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 | - 110 | 1 Uniproz.asm 107 | Data | 11 | | 2 | 00/808A : 8D 00 | dfb $8D,0 - 111 | 1 Uniproz.asm 108 | Comment | 11 | | 0 | 00/808C | * - 112 | 1 Uniproz.asm 109 | Empty | 11 | | 0 | 00/808C | ozunid_4 - 113 | 1 Uniproz.asm 109 | Equivalence | 11 | | 0 | 00/808C | FindPC equ ozunid_4 - 114 | 1 Uniproz.asm 110 | Comment | 11 | | 0 | 00/808C | * - 115 | 1 Uniproz.asm 111 | Comment | 11 | | 0 | 00/808C | * Search slot 7 to slot 1 looking for signature bytes - 116 | 1 Uniproz.asm 112 | Comment | 11 | | 0 | 00/808C | * - 117 | 1 Uniproz.asm 113 | Code | 11 | | 2 | 00/808C : A2 07 | ldx #7 ;Do for seven slots - 118 | 1 Uniproz.asm 114 | Code | 11 | | 2 | 00/808E : A9 C7 | lda #$C7 - 119 | 1 Uniproz.asm 115 | Code | 11 | | 2 | 00/8090 : 85 07 | sta {$0007} - 120 | 1 Uniproz.asm 116 | Code | 11 | | 2 | 00/8092 : A9 00 | lda #$00 - 121 | 1 Uniproz.asm 117 | Code | 11 | | 2 | 00/8094 : 85 06 | sta {$0006} - 122 | 1 Uniproz.asm 118 | Comment | 11 | | 0 | 00/8096 | * - 123 | 1 Uniproz.asm 119 | Empty | 11 | | 0 | 00/8096 | ozunid_5 - 124 | 1 Uniproz.asm 119 | Equivalence | 11 | | 0 | 00/8096 | newslot equ ozunid_5 - 125 | 1 Uniproz.asm 120 | Code | 11 | | 2 | 00/8096 : A0 07 | ldy #7 - 126 | 1 Uniproz.asm 121 | Comment | 11 | | 0 | 00/8098 | * - 127 | 1 Uniproz.asm 122 | Empty | 11 | | 0 | 00/8098 | ozunid_6 - 128 | 1 Uniproz.asm 122 | Equivalence | 11 | | 0 | 00/8098 | again equ ozunid_6 - 129 | 1 Uniproz.asm 123 | Code | 11 | | 2 | 00/8098 : B1 06 | lda ({$0006}),y - 130 | 1 Uniproz.asm 124 | Code | 11 | | 3 | 00/809A : D9 B9 80 | cmp sigtab,y ;One for byte signature - 131 | 1 Uniproz.asm 125 | Code | 11 | | 2 | 00/809D : F0 07 | beq {ozunid_7} ;Found one signature byte - 132 | 1 Uniproz.asm 126 | Code | 11 | | 2 | 00/809F : C6 07 | dec {$0007} - 133 | 1 Uniproz.asm 127 | Code | 11 | | 1 | 00/80A1 : CA | dex - 134 | 1 Uniproz.asm 128 | Code | 11 | | 2 | 00/80A2 : D0 F2 | bne {ozunid_5} - 135 | 1 Uniproz.asm 129 | Comment | 11 | | 0 | 00/80A4 | * - 136 | 1 Uniproz.asm 130 | Comment | 11 | | 0 | 00/80A4 | * if we get here, no PC find - 137 | 1 Uniproz.asm 131 | Code | 11 | | 1 | 00/80A4 : 38 | sec - 138 | 1 Uniproz.asm 132 | Code | 11 | | 1 | 00/80A5 : 60 | rts - 139 | 1 Uniproz.asm 133 | Comment | 11 | | 0 | 00/80A6 | * - 140 | 1 Uniproz.asm 134 | Comment | 11 | | 0 | 00/80A6 | * if we get here, no byte find on PC - 141 | 1 Uniproz.asm 135 | Empty | 11 | | 0 | 00/80A6 | ozunid_7 - 142 | 1 Uniproz.asm 135 | Equivalence | 11 | | 0 | 00/80A6 | maybe equ ozunid_7 - 143 | 1 Uniproz.asm 136 | Code | 11 | | 1 | 00/80A6 : 88 | dey - 144 | 1 Uniproz.asm 137 | Code | 11 | | 1 | 00/80A7 : 88 | dey ;if N=1 then all sig bytes OK - 145 | 1 Uniproz.asm 138 | Code | 11 | | 2 | 00/80A8 : 10 EE | bpl {ozunid_6} - 146 | 1 Uniproz.asm 139 | Comment | 11 | | 0 | 00/80AA | * Found PC interface. Set up call address. - 147 | 1 Uniproz.asm 140 | Comment | 11 | | 0 | 00/80AA | * we already have high byte ($CN), we need low byte - 148 | 1 Uniproz.asm 141 | Comment | 11 | | 0 | 00/80AA | * - 149 | 1 Uniproz.asm 142 | Empty | 11 | | 0 | 00/80AA | ozunid_8 - 150 | 1 Uniproz.asm 142 | Equivalence | 11 | | 0 | 00/80AA | foundPC equ ozunid_8 - 151 | 1 Uniproz.asm 143 | Code | 11 | | 2 | 00/80AA : A9 FF | lda #$FF - 152 | 1 Uniproz.asm 144 | Code | 11 | | 2 | 00/80AC : 85 06 | sta {$0006} - 153 | 1 Uniproz.asm 145 | Code | 11 | | 2 | 00/80AE : A0 00 | ldy #0 ;For indirect load - 154 | 1 Uniproz.asm 146 | Code | 11 | | 2 | 00/80B0 : B1 06 | lda ({$0006}),y ;Get the byte - 155 | 1 Uniproz.asm 147 | Comment | 11 | | 0 | 00/80B2 | * - 156 | 1 Uniproz.asm 148 | Comment | 11 | | 0 | 00/80B2 | * Now the Acc has the low oreder ProDOS entry point. - 157 | 1 Uniproz.asm 149 | Comment | 11 | | 0 | 00/80B2 | * The PC entry is three locations past this ... - 158 | 1 Uniproz.asm 150 | Comment | 11 | | 0 | 00/80B2 | * - 159 | 1 Uniproz.asm 151 | Code | 11 | | 1 | 00/80B2 : 18 | clc - 160 | 1 Uniproz.asm 152 | Code | 11 | | 2 | 00/80B3 : 69 03 | adc #3 - 161 | 1 Uniproz.asm 153 | Code | 11 | | 2 | 00/80B5 : 85 06 | sta {$0006} - 162 | 1 Uniproz.asm 154 | Comment | 11 | | 0 | 00/80B7 | * - 163 | 1 Uniproz.asm 155 | Comment | 11 | | 0 | 00/80B7 | * Now ZPTempL has PC entry point. - 164 | 1 Uniproz.asm 156 | Comment | 11 | | 0 | 00/80B7 | * Return with carry clear. - 165 | 1 Uniproz.asm 157 | Comment | 11 | | 0 | 00/80B7 | * - 166 | 1 Uniproz.asm 158 | Code | 11 | | 1 | 00/80B7 : 18 | clc - 167 | 1 Uniproz.asm 159 | Code | 11 | | 1 | 00/80B8 : 60 | rts - 168 | 1 Uniproz.asm 160 | Comment | 11 | | 0 | 00/80B9 | * - 169 | 1 Uniproz.asm 161 | Comment | 11 | | 0 | 00/80B9 | * There are the PC signature bytes in their relative order. - 170 | 1 Uniproz.asm 162 | Comment | 11 | | 0 | 00/80B9 | * The $FF bytes are filler bytes and are not compared. - 171 | 1 Uniproz.asm 163 | Comment | 11 | | 0 | 00/80B9 | * - 172 | 1 Uniproz.asm 164 | Data | 11 | | 4 | 00/80B9 : FF 20 FF 00 | sigtab dfb $FF,$20,$FF,$00 - 173 | 1 Uniproz.asm 165 | Data | 11 | | 4 | 00/80BD : FF 03 FF 00 | dfb $FF,$03,$FF,$00 - 174 | 1 Uniproz.asm 166 | Comment | 11 | | 0 | 00/80C1 | * - 175 | 1 Uniproz.asm 167 | Empty | 11 | | 0 | 00/80C1 | ozunid_9 - 176 | 1 Uniproz.asm 167 | Equivalence | 11 | | 0 | 00/80C1 | Dispatch equ ozunid_9 - 177 | 1 Uniproz.asm 168 | Code | 11 | | 3 | 00/80C1 : 6C 06 00 | jmp ({$0006}) ;Simulate an indirect JSR to PC - 178 | 1 Uniproz.asm 169 | Comment | 11 | | 0 | 00/80C4 | *** Status Parameter Set *** - 179 | 1 Uniproz.asm 170 | Empty | 11 | | 0 | 00/80C4 | ozunid_10 - 180 | 1 Uniproz.asm 170 | Equivalence | 11 | | 0 | 00/80C4 | DParms equ ozunid_10 - 181 | 1 Uniproz.asm 171 | Data | 11 | | 1 | 00/80C4 : 03 | DPParmsCt dfb 3 ;Status calls have three parameters - 182 | 1 Uniproz.asm 172 | Data | 11 | | 1 | 00/80C5 : 01 | DPUnit dfb 1 - 183 | 1 Uniproz.asm 173 | Data | 11 | | 2 | 00/80C6 : C9 80 | DPBuffer dw {ozunid_11} - 184 | 1 Uniproz.asm 174 | Data | 11 | | 1 | 00/80C8 : 05 | DPStatCode dfb {5} - 185 | 1 Uniproz.asm 175 | Comment | 11 | | 0 | 00/80C9 | * - 186 | 1 Uniproz.asm 176 | Comment | 11 | | 0 | 00/80C9 | * - 187 | 1 Uniproz.asm 177 | Comment | 11 | | 0 | 00/80C9 | *** Status List UNI *** - 188 | 1 Uniproz.asm 178 | Empty | 11 | | 0 | 00/80C9 | ozunid_11 - 189 | 1 Uniproz.asm 178 | Equivalence | 11 | | 0 | 00/80C9 | UNI equ ozunid_11 - 190 | 1 Uniproz.asm 179 | Data | 11 | | 1 | 00/80C9 : 00 | dfb 0 - 191 | 1 Uniproz.asm 180 | Data | 11 | | 1 | 00/80CA : 00 | UNIError dfb 0 - 192 | 1 Uniproz.asm 181 | Data | 11 | | 1 | 00/80CB : 00 | UNIRetries dfb 0 - 193 | 1 Uniproz.asm 182 | Data | 11 | | 1 | 00/80CC : 00 | UNIAcc_reg dfb 0 - 194 | 1 Uniproz.asm 183 | Data | 11 | | 1 | 00/80CD : 00 | UNIX_reg dfb 0 - 195 | 1 Uniproz.asm 184 | Data | 11 | | 1 | 00/80CE : 00 | UNIY_reg dfb 0 - 196 | 1 Uniproz.asm 185 | Data | 11 | | 1 | 00/80CF : 00 | UNIP_val dfb 0 - 197 | 1 Uniproz.asm 186 | Data | 11 | | 1 | 00/80D0 : 00 | HHH dfb 0 - 198 | 1 Uniproz.asm 187 | Comment | 11 | | 0 | 00/80D1 | * - 199 | 1 Uniproz.asm 188 | Comment | 11 | | 0 | 00/80D1 | *** Set Address *** - 200 | 1 Uniproz.asm 189 | Empty | 11 | | 0 | 00/80D1 | ozunid_12 - 201 | 1 Uniproz.asm 189 | Equivalence | 11 | | 0 | 00/80D1 | SET_ADD equ ozunid_12 - 202 | 1 Uniproz.asm 190 | Data | 11 | | 1 | 00/80D1 : 03 | dfb 3 - 203 | 1 Uniproz.asm 191 | Data | 11 | | 1 | 00/80D2 : 01 | dfb 1 - 204 | 1 Uniproz.asm 192 | Data | 11 | | 2 | 00/80D3 : E8 80 | dw {ozunid_16} - 205 | 1 Uniproz.asm 193 | Data | 11 | | 1 | 00/80D5 : 06 | dfb {6} - 206 | 1 Uniproz.asm 194 | Comment | 11 | | 0 | 00/80D6 | * - 207 | 1 Uniproz.asm 195 | Comment | 11 | | 0 | 00/80D6 | *** Download *** - 208 | 1 Uniproz.asm 196 | Empty | 11 | | 0 | 00/80D6 | ozunid_13 - 209 | 1 Uniproz.asm 196 | Equivalence | 11 | | 0 | 00/80D6 | DOWNLOAD equ ozunid_13 - 210 | 1 Uniproz.asm 197 | Data | 11 | | 1 | 00/80D6 : 03 | dfb 3 - 211 | 1 Uniproz.asm 198 | Data | 11 | | 1 | 00/80D7 : 01 | dfb 1 - 212 | 1 Uniproz.asm 199 | Data | 11 | | 2 | 00/80D8 : EC 80 | dw {ozunid_17} - 213 | 1 Uniproz.asm 200 | Data | 11 | | 1 | 00/80DA : 07 | dfb {7} - 214 | 1 Uniproz.asm 201 | Comment | 11 | | 0 | 00/80DB | * - 215 | 1 Uniproz.asm 202 | Comment | 11 | | 0 | 00/80DB | *** Execute *** - 216 | 1 Uniproz.asm 203 | Empty | 11 | | 0 | 00/80DB | ozunid_14 - 217 | 1 Uniproz.asm 203 | Equivalence | 11 | | 0 | 00/80DB | EXE equ ozunid_14 - 218 | 1 Uniproz.asm 204 | Data | 11 | | 1 | 00/80DB : 03 | dfb 3 - 219 | 1 Uniproz.asm 205 | Data | 11 | | 1 | 00/80DC : 01 | dfb 1 - 220 | 1 Uniproz.asm 206 | Data | 11 | | 2 | 00/80DD : E0 80 | dw {ozunid_15} - 221 | 1 Uniproz.asm 207 | Data | 11 | | 1 | 00/80DF : 05 | dfb {5} - 222 | 1 Uniproz.asm 208 | Comment | 11 | | 0 | 00/80E0 | * - 223 | 1 Uniproz.asm 209 | Comment | 11 | | 0 | 00/80E0 | * - 224 | 1 Uniproz.asm 210 | Comment | 11 | | 0 | 00/80E0 | ******** CONTROL LISTS ******** - 225 | 1 Uniproz.asm 211 | Comment | 11 | | 0 | 00/80E0 | * - 226 | 1 Uniproz.asm 212 | Comment | 11 | | 0 | 00/80E0 | * - 227 | 1 Uniproz.asm 213 | Comment | 11 | | 0 | 00/80E0 | *** Execute *** - 228 | 1 Uniproz.asm 214 | Empty | 11 | | 0 | 00/80E0 | ozunid_15 - 229 | 1 Uniproz.asm 214 | Equivalence | 11 | | 0 | 00/80E0 | CNTL_LIST2 equ ozunid_15 - 230 | 1 Uniproz.asm 215 | Data | 11 | | 1 | 00/80E0 : 06 | Clow_byte dfb $06 - 231 | 1 Uniproz.asm 216 | Data | 11 | | 1 | 00/80E1 : 00 | Chigh_byte dfb $00 - 232 | 1 Uniproz.asm 217 | Data | 11 | | 1 | 00/80E2 : 00 | AccValue dfb $00 - 233 | 1 Uniproz.asm 218 | Data | 11 | | 1 | 00/80E3 : 00 | X_reg dfb $00 ;($80E3) - 234 | 1 Uniproz.asm 219 | Data | 11 | | 1 | 00/80E4 : FF | Y_reg dfb $FF ;($80E4) One more before start - 235 | 1 Uniproz.asm 220 | Data | 11 | | 1 | 00/80E5 : 00 | ProStatus dfb $00 - 236 | 1 Uniproz.asm 221 | Data | 11 | | 1 | 00/80E6 : 05 | LowPC_reg dfb $05 - 237 | 1 Uniproz.asm 222 | Data | 11 | | 1 | 00/80E7 : 05 | HighPC_reg dfb $05 - 238 | 1 Uniproz.asm 223 | Comment | 11 | | 0 | 00/80E8 | * - 239 | 1 Uniproz.asm 224 | Comment | 11 | | 0 | 00/80E8 | *** Set Address *** - 240 | 1 Uniproz.asm 225 | Empty | 11 | | 0 | 00/80E8 | ozunid_16 - 241 | 1 Uniproz.asm 225 | Equivalence | 11 | | 0 | 00/80E8 | CNTL_LIST3 equ ozunid_16 - 242 | 1 Uniproz.asm 226 | Data | 11 | | 1 | 00/80E8 : 02 | CountL_byte dfb $02 - 243 | 1 Uniproz.asm 227 | Data | 11 | | 1 | 00/80E9 : 00 | CountH_byte dfb $00 - 244 | 1 Uniproz.asm 228 | Data | 11 | | 1 | 00/80EA : 05 | LByte_Addr dfb $05 - 245 | 1 Uniproz.asm 229 | Data | 11 | | 1 | 00/80EB : 05 | HByte_Addr dfb $05 - 246 | 1 Uniproz.asm 230 | Comment | 11 | | 0 | 00/80EC | * - 247 | 1 Uniproz.asm 231 | Comment | 11 | | 0 | 00/80EC | *** Download *** - 248 | 1 Uniproz.asm 232 | Empty | 11 | | 0 | 00/80EC | ozunid_17 - 249 | 1 Uniproz.asm 232 | Equivalence | 11 | | 0 | 00/80EC | CNTL_LIST4 equ ozunid_17 - 250 | 1 Uniproz.asm 233 | Data | 11 | | 1 | 00/80EC : 0B | LenghtL_byte dfb $0B - 251 | 1 Uniproz.asm 234 | Data | 11 | | 1 | 00/80ED : 00 | LenghtH_byte dfb $00 - 252 | 1 Uniproz.asm 235 | Comment | 11 | | 0 | 00/80EE | * - 253 | 1 Uniproz.asm 236 | Comment | 11 | | 0 | 00/80EE | *** Start UNIDISK Program *** - 254 | 1 Uniproz.asm 237 | Comment | 11 | | 0 | 00/80EE | ** Temporaney save in UNIDISK "Free zero page space" the address point stored in UNIDISK X, Y registers** - 255 | 1 Uniproz.asm 238 | Code | 11 | | 2 | 00/80EE : 86 C0 | stx $00C0 - 256 | 1 Uniproz.asm 239 | Code | 11 | | 2 | 00/80F0 : 84 C1 | sty $00C1 - 257 | 1 Uniproz.asm 240 | Comment | 11 | | 0 | 00/80F2 | ** Store in UNIDISK Accumulator the value of the UniDISK location that is store in $00C0 plus $00C1 - 258 | 1 Uniproz.asm 241 | Code | 11 | | 2 | 00/80F2 : A0 00 | ldy #0 - 259 | 1 Uniproz.asm 242 | Code | 11 | | 2 | 00/80F4 : B1 C0 | lda ($00C0),y - 260 | 1 Uniproz.asm 243 | Comment | 11 | | 0 | 00/80F6 | ** Restore the value of Y Unidisk register - 261 | 1 Uniproz.asm 244 | Code | 11 | | 2 | 00/80F6 : A4 C1 | ldy $00C1 - 262 | 1 Uniproz.asm 245 | Code | 11 | | 1 | 00/80F8 : 60 | rts -------+-----------------------+-------------+----+---------+------+-----------------------+------------------------------------------------------------------- diff --git a/AppleII/N integer adc 2 Byte/TestN b/AppleII/N integer adc 2 Byte/TestN deleted file mode 100644 index e511c2a..0000000 --- a/AppleII/N integer adc 2 Byte/TestN +++ /dev/null @@ -1,2 +0,0 @@ -HĭIťąŅ -:¥ŅL+:ée…eŅĥÅL` \ No newline at end of file diff --git a/AppleII/N integer adc 2 Byte/TestN_Output.txt b/AppleII/N integer adc 2 Byte/TestN_Output.txt deleted file mode 100644 index 13e91db..0000000 --- a/AppleII/N integer adc 2 Byte/TestN_Output.txt +++ /dev/null @@ -1,75 +0,0 @@ -------+---------------------+-------------+----+---------+------+-----------------------+------------------------------------------------------------------- - Line | # File Line | Line Type | MX | Reloc | Size | Address Object Code | Source Code -------+---------------------+-------------+----+---------+------+-----------------------+------------------------------------------------------------------- - 1 | 1 TestN.asm 1 | Comment | 11 | | 0 | 00/8000 | * @com.wudsn.ide.asm.hardware=APPLE2 - 2 | 1 TestN.asm 2 | Comment | 11 | | 0 | 00/8000 | *** Start UNIDISK Program *** - 3 | 1 TestN.asm 3 | Comment | 11 | | 0 | 00/8000 | ** Two byte adc ** - 4 | 1 TestN.asm 4 | Directive | 11 | | 0 | 00/8000 | org $300 - 5 | 1 TestN.asm 5 | Equivalence | 11 | | 0 | 00/0300 | RSLTU equ $C0 - 6 | 1 TestN.asm 6 | Equivalence | 11 | | 0 | 00/0300 | NDEC equ $C2 - 7 | 1 TestN.asm 7 | Equivalence | 11 | | 0 | 00/0300 | N equ $C4 - 8 | 1 TestN.asm 8 | Empty | 11 | | 0 | 00/0300 | - 9 | 1 TestN.asm 9 | Comment | 11 | | 0 | 00/0300 | ** Save the N number ** - 10 | 1 TestN.asm 10 | Code | 11 | | 3 | 00/0300 : AD 48 03 | lda N1U - 11 | 1 TestN.asm 11 | Code | 11 | | 2 | 00/0303 : 85 C4 | sta {$C4} - 12 | 1 TestN.asm 12 | Code | 11 | | 3 | 00/0305 : AD 49 03 | lda N1U+1 - 13 | 1 TestN.asm 13 | Code | 11 | | 2 | 00/0308 : 85 C5 | sta {$C4}+1 - 14 | 1 TestN.asm 14 | Comment | 11 | | 0 | 00/030A | ** Set RSLTU=N ** - 15 | 1 TestN.asm 15 | Code | 11 | | 2 | 00/030A : A5 C4 | lda {$C4} - 16 | 1 TestN.asm 16 | Code | 11 | | 2 | 00/030C : 85 C0 | sta {$C0} ; N Lo - 17 | 1 TestN.asm 17 | Code | 11 | | 2 | 00/030E : A5 C5 | lda {$C4}+1 - 18 | 1 TestN.asm 18 | Code | 11 | | 2 | 00/0310 : 85 C1 | sta {$C0}+1 ; N Hi - 19 | 1 TestN.asm 19 | Empty | 11 | | 0 | 00/0312 | - 20 | 1 TestN.asm 20 | Code | 11 | | 2 | 00/0312 : A5 C4 | LOOP lda {$C4} - 21 | 1 TestN.asm 21 | Empty | 11 | | 0 | 00/0314 | - 22 | 1 TestN.asm 22 | Code | 11 | | 2 | 00/0314 : F0 0A | beq HI ; If NLo =0 dec NHi - 23 | 1 TestN.asm 23 | Empty | 11 | | 0 | 00/0316 | - 24 | 1 TestN.asm 24 | Comment | 11 | | 0 | 00/0316 | ** Set NDEC=N-1 Lo ** - 25 | 1 TestN.asm 25 | Code | 11 | | 1 | 00/0316 : 3A | dec A - 26 | 1 TestN.asm 26 | Code | 11 | | 2 | 00/0317 : 85 C2 | sta {$C2} ; N-1 Lo - 27 | 1 TestN.asm 27 | Comment | 11 | | 0 | 00/0319 | ** Set NDEC=N Hi ** - 28 | 1 TestN.asm 28 | Code | 11 | | 2 | 00/0319 : A5 C5 | lda {$C4}+1 - 29 | 1 TestN.asm 29 | Code | 11 | | 2 | 00/031B : 85 C3 | sta {$C2}+1 ; NHi = NDEC Hi - 30 | 1 TestN.asm 30 | Empty | 11 | | 0 | 00/031D | - 31 | 1 TestN.asm 31 | Code | 11 | | 3 | 00/031D : 4C 2B 03 | jmp ENTRY - 32 | 1 TestN.asm 32 | Empty | 11 | | 0 | 00/0320 | - 33 | 1 TestN.asm 33 | Comment | 11 | | 0 | 00/0320 | ** Set NDEC=N-1 Hi ** - 34 | 1 TestN.asm 34 | Code | 11 | | 2 | 00/0320 : A5 C5 | HI lda {$C4}+1 - 35 | 1 TestN.asm 35 | Empty | 11 | | 0 | 00/0322 | - 36 | 1 TestN.asm 36 | Code | 11 | | 2 | 00/0322 : F0 1F | beq DONE ; If also NHi =0 done - 37 | 1 TestN.asm 37 | Empty | 11 | | 0 | 00/0324 | - 38 | 1 TestN.asm 38 | Code | 11 | | 1 | 00/0324 : 3A | dec A - 39 | 1 TestN.asm 39 | Code | 11 | | 2 | 00/0325 : 85 C3 | sta {$C2}+1 ; N-1 Hi - 40 | 1 TestN.asm 40 | Empty | 11 | | 0 | 00/0327 | - 41 | 1 TestN.asm 41 | Code | 11 | | 2 | 00/0327 : A9 FF | lda #$FF - 42 | 1 TestN.asm 42 | Code | 11 | | 2 | 00/0329 : 85 C2 | sta {$C2} ; N-1 Lo = FF Set NDEC to FF - 43 | 1 TestN.asm 43 | Empty | 11 | | 0 | 00/032B | - 44 | 1 TestN.asm 44 | Code | 11 | | 1 | 00/032B : 18 | ENTRY clc - 45 | 1 TestN.asm 45 | Empty | 11 | | 0 | 00/032C | - 46 | 1 TestN.asm 46 | Code | 11 | | 2 | 00/032C : A5 C0 | lda {$C0} ; Lo Byte - 47 | 1 TestN.asm 47 | Code | 11 | | 2 | 00/032E : 65 C2 | adc {$C2} ; N+(N-1) - 48 | 1 TestN.asm 48 | Code | 11 | | 2 | 00/0330 : 85 C0 | sta {$C0} - 49 | 1 TestN.asm 49 | Empty | 11 | | 0 | 00/0332 | - 50 | 1 TestN.asm 50 | Code | 11 | | 2 | 00/0332 : A5 C1 | lda {$C0}+1 ; Hi Byte - 51 | 1 TestN.asm 51 | Code | 11 | | 2 | 00/0334 : 65 C3 | adc {$C2}+1 ; N+(N-1) - 52 | 1 TestN.asm 52 | Code | 11 | | 2 | 00/0336 : 85 C1 | sta {$C0}+1 - 53 | 1 TestN.asm 53 | Empty | 11 | | 0 | 00/0338 | - 54 | 1 TestN.asm 54 | Comment | 11 | | 0 | 00/0338 | ** Update N=NDEC ** - 55 | 1 TestN.asm 55 | Code | 11 | | 2 | 00/0338 : A5 C2 | lda {$C2} - 56 | 1 TestN.asm 56 | Code | 11 | | 2 | 00/033A : 85 C4 | sta {$C4} - 57 | 1 TestN.asm 57 | Code | 11 | | 2 | 00/033C : A5 C3 | lda {$C2}+1 - 58 | 1 TestN.asm 58 | Code | 11 | | 2 | 00/033E : 85 C5 | sta {$C4}+1 - 59 | 1 TestN.asm 59 | Empty | 11 | | 0 | 00/0340 | - 60 | 1 TestN.asm 60 | Code | 11 | | 3 | 00/0340 : 4C 12 03 | jmp LOOP - 61 | 1 TestN.asm 61 | Empty | 11 | | 0 | 00/0343 | - 62 | 1 TestN.asm 62 | Comment | 11 | | 0 | 00/0343 | ** Output Data ** - 63 | 1 TestN.asm 63 | Code | 11 | | 2 | 00/0343 : A6 C0 | DONE ldx {$C0} - 64 | 1 TestN.asm 64 | Code | 11 | | 2 | 00/0345 : A4 C1 | ldy {$C0}+1 - 65 | 1 TestN.asm 65 | Empty | 11 | | 0 | 00/0347 | - 66 | 1 TestN.asm 66 | Code | 11 | | 1 | 00/0347 : 60 | rts - 67 | 1 TestN.asm 67 | Empty | 11 | | 0 | 00/0348 | - 68 | 1 TestN.asm 68 | Empty | 11 | | 0 | 00/0348 | - 69 | 1 TestN.asm 69 | Comment | 11 | | 0 | 00/0348 | ** Input Dynamic Data append in the end of Unidisk routine ** - 70 | 1 TestN.asm 70 | Data | 11 | | 1 | 00/0348 : FF | N1U dfb $FF - 71 | 1 TestN.asm 71 | Data | 11 | | 1 | 00/0349 : FF | dfb $FF -------+---------------------+-------------+----+---------+------+-----------------------+------------------------------------------------------------------- diff --git a/AppleII/N integer adc 2 Byte/Unidrive3 b/AppleII/N integer adc 2 Byte/Unidrive3 deleted file mode 100644 index 887902855b929e6e5e954f1b2c53fd668b96ae8e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 275 zcmXX_rnr!1OTk9a#SvCmOu$Bh zuulV4Y5fBmWf3f8oDH7ha5xW+(l~CaOKd!0%?8yT>JVObuoCL?_hbH}dwq4%R{c}u z#6jomu-ys3tOqMYvk|Ng>(#?z`&ctv;W&wJkv8KHX-kJPnvslv#EqPY_W&#TD&OYc z`+78Lenr;#FcJPaBjIbSELdjYLICrwk;6Zjm!n|b3?=iX$eH(y4FIu7IbQ Date: Wed, 18 Feb 2015 22:57:38 +0100 Subject: [PATCH 07/12] Del --- AppleII/FP operations/_FileInformation.txt | 2 -- 1 file changed, 2 deletions(-) delete mode 100644 AppleII/FP operations/_FileInformation.txt diff --git a/AppleII/FP operations/_FileInformation.txt b/AppleII/FP operations/_FileInformation.txt deleted file mode 100644 index 175e776..0000000 --- a/AppleII/FP operations/_FileInformation.txt +++ /dev/null @@ -1,2 +0,0 @@ -Unidrive4t=Type(00),AuxType(0000),VersionCreate(70),MinVersion(BE),Access(E3),FolderInfo1(000000000000000000000000000000000000),FolderInfo2(000000000000000000000000000000000000) -Unidrive4=Type(00),AuxType(0000),VersionCreate(70),MinVersion(BE),Access(E3),FolderInfo1(000000000000000000000000000000000000),FolderInfo2(000000000000000000000000000000000000) From d502e4f084546b3a4b0eaa42ea91243d9e802357 Mon Sep 17 00:00:00 2001 From: rigreco Date: Wed, 18 Feb 2015 22:59:24 +0100 Subject: [PATCH 08/12] Del --- AppleII/Integer adc 1 Byte/Unidrive.asm | 311 ------------------------ 1 file changed, 311 deletions(-) delete mode 100644 AppleII/Integer adc 1 Byte/Unidrive.asm diff --git a/AppleII/Integer adc 1 Byte/Unidrive.asm b/AppleII/Integer adc 1 Byte/Unidrive.asm deleted file mode 100644 index f9bfc2f..0000000 --- a/AppleII/Integer adc 1 Byte/Unidrive.asm +++ /dev/null @@ -1,311 +0,0 @@ -* @com.wudsn.ide.asm.hardware=APPLE2 -* Protocol Converter Call - XC -ZPTempL equ $0006 ;Temporary zero page storage -ZPTempH equ $0007 -N1 equ $0A -N2 equ $0B -RSLT equ $0C -*** 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 - - jsr CROut -** Wait keypress to continue ** -* -* jsr KEYIN -* -*** Eject *** - jsr Dispatch - dfb ControlCmd - dw E_JECT -*** 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 the Input Value first ** -EXEC lda #$00 - sta AccValue - lda N1 - sta X_reg - lda N2 - sta Y_reg -** Execute ** - jsr Dispatch - dfb ControlCmd - dw EXE -READ jsr Dispatch - dfb StatusCmd - dw DParms - bcs Error -* -**** Screen Output **** -* -*** Accumulator *** - lda UNIAcc_reg - sta RSLT ; Store the result -* 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 -* - 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 $00 ; Input Value (N1) -Y_reg dfb $00 ; Input Value (N2) -ProStatus dfb $00 -LowPC_reg dfb $05 ; Like ORG -HighPC_reg dfb $05 -* -*** Set Address *** -CNTL_LIST3 equ * -CountL_byte dfb $02 -CountH_byte dfb $00 -LByte_Addr dfb $05 ; Like ORG -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 \ No newline at end of file From ba5d0fe12fa16657a14f0372d7476a5e5fb7efc3 Mon Sep 17 00:00:00 2001 From: rigreco Date: Wed, 18 Feb 2015 23:08:20 +0100 Subject: [PATCH 09/12] Update --- AppleII/N integer adc 2 Byte/TestN.asm | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/AppleII/N integer adc 2 Byte/TestN.asm b/AppleII/N integer adc 2 Byte/TestN.asm index 908e421..9d51021 100644 --- a/AppleII/N integer adc 2 Byte/TestN.asm +++ b/AppleII/N integer adc 2 Byte/TestN.asm @@ -1,3 +1,24 @@ +* +* TestN +* +* This routine is identical replica of Unidisk routin: +* 2 Byte Add of the first N integer numbers calculation. +* For speed test compare between Apple II and Unidisk. +* +* Copyright (C) 2015 Riccardo Greco . +* +* 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 . +* +* * @com.wudsn.ide.asm.hardware=APPLE2 *** Start UNIDISK Program *** ** Two byte adc ** From 457894f5f3eeffd4e48a938d320fda925e9b8192 Mon Sep 17 00:00:00 2001 From: rigreco Date: Wed, 18 Feb 2015 23:14:58 +0100 Subject: [PATCH 10/12] Update --- AppleII/FP operations/.gitignore | 2 + AppleII/FP operations/UniFP.asm | 163 ++++++ AppleII/FP operations/Unidrive4 | Bin 0 -> 567 bytes AppleII/FP operations/Unidrive4t | Bin 0 -> 574 bytes AppleII/FP operations/Unidrive4t.asm | 522 +++++++++++++++++ AppleII/FP operations/Unidrive4t_Output.txt | 549 ++++++++++++++++++ AppleII/FP operations/_FileInformation.txt | 2 + AppleII/Integer adc 1 Byte/Unicalc | Bin 0 -> 353 bytes AppleII/Integer adc 1 Byte/Unicalc_Output.txt | 415 +++++++++++++ AppleII/Integer adc 1 Byte/Unidrive | Bin 0 -> 243 bytes AppleII/Integer adc 1 Byte/Unidrive.asm | 311 ++++++++++ .../Integer adc 1 Byte/Unidrive_Output.txt | 343 +++++++++++ AppleII/Integer adc 2 Byte/Unidrive2 | Bin 0 -> 237 bytes .../Integer adc 2 Byte/Unidrive2_Output.txt | 286 +++++++++ AppleII/Memory dump/Uniprox | Bin 0 -> 438 bytes AppleII/Memory dump/Uniprox_Output.txt | 400 +++++++++++++ AppleII/Memory dump/Uniproz | Bin 0 -> 249 bytes AppleII/Memory dump/Uniproz_Output.txt | 270 +++++++++ AppleII/N integer adc 2 Byte/TestN | 2 + AppleII/N integer adc 2 Byte/TestN_Output.txt | 75 +++ AppleII/N integer adc 2 Byte/Unidrive3 | Bin 0 -> 275 bytes .../N integer adc 2 Byte/Unidrive3_Output.txt | 327 +++++++++++ 22 files changed, 3667 insertions(+) create mode 100644 AppleII/FP operations/.gitignore create mode 100644 AppleII/FP operations/UniFP.asm create mode 100644 AppleII/FP operations/Unidrive4 create mode 100644 AppleII/FP operations/Unidrive4t create mode 100644 AppleII/FP operations/Unidrive4t.asm create mode 100644 AppleII/FP operations/Unidrive4t_Output.txt create mode 100644 AppleII/FP operations/_FileInformation.txt create mode 100644 AppleII/Integer adc 1 Byte/Unicalc create mode 100644 AppleII/Integer adc 1 Byte/Unicalc_Output.txt create mode 100644 AppleII/Integer adc 1 Byte/Unidrive create mode 100644 AppleII/Integer adc 1 Byte/Unidrive.asm create mode 100644 AppleII/Integer adc 1 Byte/Unidrive_Output.txt create mode 100644 AppleII/Integer adc 2 Byte/Unidrive2 create mode 100644 AppleII/Integer adc 2 Byte/Unidrive2_Output.txt create mode 100644 AppleII/Memory dump/Uniprox create mode 100644 AppleII/Memory dump/Uniprox_Output.txt create mode 100644 AppleII/Memory dump/Uniproz create mode 100644 AppleII/Memory dump/Uniproz_Output.txt create mode 100644 AppleII/N integer adc 2 Byte/TestN create mode 100644 AppleII/N integer adc 2 Byte/TestN_Output.txt create mode 100644 AppleII/N integer adc 2 Byte/Unidrive3 create mode 100644 AppleII/N integer adc 2 Byte/Unidrive3_Output.txt diff --git a/AppleII/FP operations/.gitignore b/AppleII/FP operations/.gitignore new file mode 100644 index 0000000..7b87f7c --- /dev/null +++ b/AppleII/FP operations/.gitignore @@ -0,0 +1,2 @@ +/UniFP +/UniFP_Output.txt diff --git a/AppleII/FP operations/UniFP.asm b/AppleII/FP operations/UniFP.asm new file mode 100644 index 0000000..3eea7f6 --- /dev/null +++ b/AppleII/FP operations/UniFP.asm @@ -0,0 +1,163 @@ +* @com.wudsn.ide.asm.hardware=APPLE2 + *********************** + * * + * APPLE-II FLOATING * + * POINT ROUTINES * + * * + * COPYRIGHT 1977 BY * + * APPLE COMPUTER INC. * + * * + * ALL RIGHTS RESERVED * + * * + * S. WOZNIAK * + * * + *********************** +* TITLE "FLOATING POINT ROUTINES for //c memory" +* +SIGN EQU $EB ; $F3 + + ** FP2 4 Bytes ** +X2 EQU $EC ; $F4 +M2 EQU $ED ; $F5 - $7 + + ** FP1 4 Bytes + E extension ** +X1 EQU $FA ; $F8 +M1 EQU $FB ; $F9 - $FB +E EQU $FE ; $FC + +OVLOC EQU $3F5 + + ORG $300 + +ADD CLC ;CLEAR CARRY + LDX #$2 ;INDEX FOR 3-BYTE ADD. +ADD1 LDA M1,X + ADC M2,X ;ADD A BYTE OF MANT2 TO MANT1 + STA M1,X + DEX ;INDEX TO NEXT MORE SIGNIF. BYTE. + BPL ADD1 ;LOOP UNTIL DONE. + RTS ;RETURN +MD1 ASL SIGN ;CLEAR LSB OF SIGN. + JSR ABSWAP ;ABS VAL OF M1, THEN SWAP WITH M2 +ABSWAP BIT M1 ;MANT1 NEGATIVE? + BPL ABSWAP1 ;NO, SWAP WITH MANT2 AND RETURN. + JSR FCOMPL ;YES, COMPLEMENT IT. + INC SIGN ;INCR SIGN, COMPLEMENTING LSB. +ABSWAP1 SEC ;SET CARRY FOR RETURN TO MUL/DIV. +SWAP LDX #$4 ;INDEX FOR 4 BYTE SWAP. +SWAP1 STY E-1,X + LDA X1-1,X ;SWAP A BYTE OF EXP/MANT1 WITH + LDY X2-1,X ;EXP/MANT2 AND LEAVE A COPY OF + STY X1-1,X ;MANT1 IN E (3 BYTES). E+3 USED + STA X2-1,X + DEX ;ADVANCE INDEX TO NEXT BYTE + BNE SWAP1 ;LOOP UNTIL DONE. + RTS ;RETURN +FLOAT LDA #$8E ;INIT EXP1 TO 14, <--------------- int to fp + STA X1 ;THEN NORMALIZE TO FLOAT. +NORM1 LDA M1 ;HIGH-ORDER MANT1 BYTE. + CMP #$C0 ;UPPER TWO BITS UNEQUAL? + BMI RTS1 ;YES, RETURN WITH MANT1 NORMALIZED + DEC X1 ;DECREMENT EXP1. + ASL M1+2 + ROL M1+1 ;SHIFT MANT1 (3 BYTES) LEFT. + ROL M1 +NORM LDA X1 ;EXP1 ZERO? + BNE NORM1 ;NO, CONTINUE NORMALIZING. +RTS1 RTS ;RETURN. +FSUB JSR FCOMPL ;CMPL MANT1,CLEARS CARRY UNLESS 0 <---- sub +SWPALGN JSR ALGNSWP ;RIGHT SHIFT MANT1 OR SWAP WITH +FADD LDA X2 ;<------------------------------------- add + CMP X1 ;COMPARE EXP1 WITH EXP2. + BNE SWPALGN ;IF #,SWAP ADDENDS OR ALIGN MANTS. + JSR ADD ;ADD ALIGNED MANTISSAS. +ADDEND BVC NORM ;NO OVERFLOW, NORMALIZE RESULT. + BVS RTLOG ;OV: SHIFT M1 RIGHT, CARRY INTO SIGN +ALGNSWP BCC SWAP ;SWAP IF CARRY CLEAR, + * ELSE SHIFT RIGHT ARITH. +RTAR LDA M1 ;SIGN OF MANT1 INTO CARRY FOR + ASL ;RIGHT ARITH SHIFT. +RTLOG INC X1 ;INCR X1 TO ADJUST FOR RIGHT SHIFT + BEQ OVFL ;EXP1 OUT OF RANGE. +RTLOG1 LDX #$FA ;INDEX FOR 6:BYTE RIGHT SHIFT. +ROR1 ROR E+3,X + INX ;NEXT BYTE OF SHIFT. + BNE ROR1 ;LOOP UNTIL DONE. + RTS ;RETURN. +FMUL JSR MD1 ;ABS VAL OF MANT1, MANT2 <-------------- mul + ADC X1 ;ADD EXP1 TO EXP2 FOR PRODUCT EXP + JSR MD2 ;CHECK PROD. EXP AND PREP. FOR MUL + CLC ;CLEAR CARRY FOR FIRST BIT. +MUL1 JSR RTLOG1 ;M1 AND E RIGHT (PROD AND MPLIER) + BCC MUL2 ;IF CARRY CLEAR, SKIP PARTIAL PROD + JSR ADD ;ADD MULTIPLICAND TO PRODUCT. +MUL2 DEY ;NEXT MUL ITERATION. + BPL MUL1 ;LOOP UNTIL DONE. +MDEND LSR SIGN ;TEST SIGN LSB. +NORMX BCC NORM ;IF EVEN,NORMALIZE PROD,ELSE COMP +FCOMPL SEC ;SET CARRY FOR SUBTRACT. <--------------- not + LDX #$3 ;INDEX FOR 3 BYTE SUBTRACT. +COMPL1 LDA #$0 ;CLEAR A. + SBC X1,X ;SUBTRACT BYTE OF EXP1. + STA X1,X ;RESTORE IT. + DEX ;NEXT MORE SIGNIFICANT BYTE. + BNE COMPL1 ;LOOP UNTIL DONE. + BEQ ADDEND ;NORMALIZE (OR SHIFT RT IF OVFL). +FDIV JSR MD1 ;TAKE ABS VAL OF MANT1, MANT2. <--------- div + SBC X1 ;SUBTRACT EXP1 FROM EXP2. + JSR MD2 ;SAVE AS QUOTIENT EXP. +DIV1 SEC ;SET CARRY FOR SUBTRACT. + LDX #$2 ;INDEX FOR 3-BYTE SUBTRACTION. +DIV2 LDA M2,X + SBC E,X ;SUBTRACT A BYTE OF E FROM MANT2. + PHA ;SAVE ON STACK. + DEX ;NEXT MORE SIGNIFICANT BYTE. + BPL DIV2 ;LOOP UNTIL DONE. + LDX #$FD ;INDEX FOR 3-BYTE CONDITIONAL MOVE +DIV3 PLA ;PULL BYTE OF DIFFERENCE OFF STACK + BCC DIV4 ;IF M2Ph<9Pr%h}0NuvgplO0}}r2>%dgi%FsCUS?KF6r}yM z5;E+N7{)K5*q1Ww<0ZKM^C>LWgqmr}Xu}>n``8MH1mA>@B<{i#F2SN6Qw6hk+be#^ z*}4OIvMd{6Kaw%^V@l=XrK-L9-G+H=kMqSuS+>IC^vOh2OCO}Gm5YV&D0;scZ2Ft3 xaxRn1=ZkMwDU;h5h}pkq&SD;GG|$(!!d|RrMg$RR`eCA}Nc;%Jd~$YI@DHTe1YQ6D literal 0 HcmV?d00001 diff --git a/AppleII/FP operations/Unidrive4t b/AppleII/FP operations/Unidrive4t new file mode 100644 index 0000000000000000000000000000000000000000..aa10344fd8e8463957079aa3fd4acb11cd968c8a GIT binary patch literal 574 zcmZ9JO=uHA6vtB>?V3x5Cj$cKny`lT&f|pX^5NJlkf0&y!Ye1_kRyRq%{-2p~)RO z@n0#%e0O#Q1_q(vt5NfI|qa}Oq-s?^{BzO+qlK3}F;rpHPYMZdhK{Qd>_3i z1tq_vYDY53VzKh1K$%=WM$ExAa~iM48qK54m9QV{nG!*S+J2a5D-yp#F`pb>7W@Sd CLI +* +* 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 . +* +* 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 . +* +* +* @com.wudsn.ide.asm.hardware=APPLE2 +* +* Protocol Converter Call + XC +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 ;29 +*** Monitor routines *** +COut equ $FDED ;Console output ASCII +CROut equ $FD8E ;Carriage return +** 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 +***************************************************** + +* +* Find a Protocol Converter in one of the slots. +START jsr FindPC + bcs Error +*** Eject *** + jsr Dispatch + dfb ControlCmd + dw E_JECT +*** Set Address *** + jsr Dispatch + dfb ControlCmd + dw SET_ADD +* + jsr EXEC ; Jump the Error routine + rts +********************************************* +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 $8236 ; Absolute addressing + lda N1+1 ;M1 (1) + sta $8237 + lda N1+2 ;M1 (2) + sta $8238 + lda N1+3 ;M1 (3) + sta $8239 + + ** 4 Byte N2 to FP2 ** + lda N2 ;X2 + sta $823A + lda N2+1 ;M2 (1) + sta $823B + lda N2+2 ;M2 (2) + sta $823C + lda N2+3 ;M2 (3) + sta $823D + +*** Download *** + jsr Dispatch + dfb ControlCmd + dw DOWNLOAD +** Set Unidisk Registers ** + lda #00 ;First time + sta UNIP_val +** 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 N1 + lda UNIX_reg + sta N1+1 ; Store the result + lda UNIY_reg + sta N1+2 + +** Second time execute ** + lda #02 ; Second time + sta UNIP_val +** 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 N1+3 +* + 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 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 ; 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 +HighPC_reg dfb $05 +* +*** Set Address *** +CNTL_LIST3 equ * +CountL_byte dfb $02 +CountH_byte dfb $00 +LByte_Addr dfb $00 ; ORG of Unidisk program, set begin program address $0500 +HByte_Addr dfb $05 +* +*** Download *** +CNTL_LIST4 equ * +LenghtL_byte dfb $36 ;<----- Lenght of Unidisk program Lo - Byte 312 byte +LenghtH_byte dfb $01 ;<----- Lenght of Unidisk program Hi Byte +* +**************** Start UNIDISK Program **************** +* + org $0500 ; Start Unidisk program address + +SIGN EQU $C0 ;$EB ; $F3 + + ** FP2 4 Bytes ** +X2 EQU $C1 ;$EC ; $F4 +M2 EQU $C2 ;$ED ; $F5 - $F7 + + ** FP1 4 Bytes + E extension ** +X1 EQU $C5 ;$FA ; $F8 +M1 EQU $C6 ;$FB ; $F9 - $FB +E EQU $C9 ;$FE ; $FC + +OVLOC EQU $C10 ;$3F5 ;Overflow routine is not implemented at now) +* +** Main program ** +* +* CHK if is the second execution * + + * cmp #01 + beq SECOND ;Only to read the rest part of result + +** Input data to Zero Page ** + + ** FP1 ** + lda FP1 + sta X1 + + lda FP1+1 + sta M1 + lda FP1+2 + sta M1+1 + lda FP1+3 + sta M1+2 + + ** FP2 ** + lda FP2 + sta X2 + + lda FP2+1 + sta M2 + lda FP2+2 + sta M2+1 + lda FP2+3 + sta M2+2 + +************************** Target Function *********************** +* Y=N1+N2 * +****************************************************************** +* +** Simple ADD ** + jsr FADD ; Call FP routine + +*** Output Data result FP1 to Unidisk registers First Time first 3 Byte out *** + lda X1 + ldx M1 + ldy M1+1 + + rts +*** Output Data result FP1 to Unidisk registers Second Time latest 1 Byte out *** +SECOND lda M1+2 + + rts +*************************************************** +* +***************** FP Routine ***************** +* + *********************** + * * + * APPLE-II FLOATING * + * POINT ROUTINES * + * * + * COPYRIGHT 1977 BY * + * APPLE COMPUTER INC. * + * * + * ALL RIGHTS RESERVED * + * * + * S. WOZNIAK * + * * + *********************** +* TITLE "FLOATING POINT ROUTINES for Unidisk memory" +* + +* ORG $300 + +ADD CLC ;CLEAR CARRY + LDX #$2 ;INDEX FOR 3-BYTE ADD. +ADD1 LDA M1,X + ADC M2,X ;ADD A BYTE OF MANT2 TO MANT1 + STA M1,X + DEX ;INDEX TO NEXT MORE SIGNIF. BYTE. + BPL ADD1 ;LOOP UNTIL DONE. + RTS ;RETURN +MD1 ASL SIGN ;CLEAR LSB OF SIGN. + JSR ABSWAP ;ABS VAL OF M1, THEN SWAP WITH M2 +ABSWAP BIT M1 ;MANT1 NEGATIVE? + BPL ABSWAP1 ;NO, SWAP WITH MANT2 AND RETURN. + JSR FCOMPL ;YES, COMPLEMENT IT. + INC SIGN ;INCR SIGN, COMPLEMENTING LSB. +ABSWAP1 SEC ;SET CARRY FOR RETURN TO MUL/DIV. +SWAP LDX #$4 ;INDEX FOR 4 BYTE SWAP. +SWAP1 STY E-1,X + LDA X1-1,X ;SWAP A BYTE OF EXP/MANT1 WITH + LDY X2-1,X ;EXP/MANT2 AND LEAVE A COPY OF + STY X1-1,X ;MANT1 IN E (3 BYTES). E+3 USED + STA X2-1,X + DEX ;ADVANCE INDEX TO NEXT BYTE + BNE SWAP1 ;LOOP UNTIL DONE. + RTS ;RETURN +FLOAT LDA #$8E ;INIT EXP1 TO 14, <--------------- int to fp + STA X1 ;THEN NORMALIZE TO FLOAT. +NORM1 LDA M1 ;HIGH-ORDER MANT1 BYTE. + CMP #$C0 ;UPPER TWO BITS UNEQUAL? + BMI RTS1 ;YES, RETURN WITH MANT1 NORMALIZED + DEC X1 ;DECREMENT EXP1. + ASL M1+2 + ROL M1+1 ;SHIFT MANT1 (3 BYTES) LEFT. + ROL M1 +NORM LDA X1 ;EXP1 ZERO? + BNE NORM1 ;NO, CONTINUE NORMALIZING. +RTS1 RTS ;RETURN. +FSUB JSR FCOMPL ;CMPL MANT1,CLEARS CARRY UNLESS 0 <---- sub +SWPALGN JSR ALGNSWP ;RIGHT SHIFT MANT1 OR SWAP WITH +FADD LDA X2 ;<------------------------------------- add + CMP X1 ;COMPARE EXP1 WITH EXP2. + BNE SWPALGN ;IF #,SWAP ADDENDS OR ALIGN MANTS. + JSR ADD ;ADD ALIGNED MANTISSAS. +ADDEND BVC NORM ;NO OVERFLOW, NORMALIZE RESULT. + BVS RTLOG ;OV: SHIFT M1 RIGHT, CARRY INTO SIGN +ALGNSWP BCC SWAP ;SWAP IF CARRY CLEAR, + * ELSE SHIFT RIGHT ARITH. +RTAR LDA M1 ;SIGN OF MANT1 INTO CARRY FOR + ASL ;RIGHT ARITH SHIFT. +RTLOG INC X1 ;INCR X1 TO ADJUST FOR RIGHT SHIFT + BEQ OVFL ;EXP1 OUT OF RANGE. +RTLOG1 LDX #$FA ;INDEX FOR 6:BYTE RIGHT SHIFT. +ROR1 ROR E+3,X + INX ;NEXT BYTE OF SHIFT. + BNE ROR1 ;LOOP UNTIL DONE. + RTS ;RETURN. +FMUL JSR MD1 ;ABS VAL OF MANT1, MANT2 <-------------- mul + ADC X1 ;ADD EXP1 TO EXP2 FOR PRODUCT EXP + JSR MD2 ;CHECK PROD. EXP AND PREP. FOR MUL + CLC ;CLEAR CARRY FOR FIRST BIT. +MUL1 JSR RTLOG1 ;M1 AND E RIGHT (PROD AND MPLIER) + BCC MUL2 ;IF CARRY CLEAR, SKIP PARTIAL PROD + JSR ADD ;ADD MULTIPLICAND TO PRODUCT. +MUL2 DEY ;NEXT MUL ITERATION. + BPL MUL1 ;LOOP UNTIL DONE. +MDEND LSR SIGN ;TEST SIGN LSB. +NORMX BCC NORM ;IF EVEN,NORMALIZE PROD,ELSE COMP +FCOMPL SEC ;SET CARRY FOR SUBTRACT. <--------------- not + LDX #$3 ;INDEX FOR 3 BYTE SUBTRACT. +COMPL1 LDA #$0 ;CLEAR A. + SBC X1,X ;SUBTRACT BYTE OF EXP1. + STA X1,X ;RESTORE IT. + DEX ;NEXT MORE SIGNIFICANT BYTE. + BNE COMPL1 ;LOOP UNTIL DONE. + BEQ ADDEND ;NORMALIZE (OR SHIFT RT IF OVFL). +FDIV JSR MD1 ;TAKE ABS VAL OF MANT1, MANT2. <--------- div + SBC X1 ;SUBTRACT EXP1 FROM EXP2. + JSR MD2 ;SAVE AS QUOTIENT EXP. +DIV1 SEC ;SET CARRY FOR SUBTRACT. + LDX #$2 ;INDEX FOR 3-BYTE SUBTRACTION. +DIV2 LDA M2,X + SBC E,X ;SUBTRACT A BYTE OF E FROM MANT2. + PHA ;SAVE ON STACK. + DEX ;NEXT MORE SIGNIFICANT BYTE. + BPL DIV2 ;LOOP UNTIL DONE. + LDX #$FD ;INDEX FOR 3-BYTE CONDITIONAL MOVE +DIV3 PLA ;PULL BYTE OF DIFFERENCE OFF STACK + BCC DIV4 ;IF M2 + 3 | 1 Unidrive4t.asm 3 | Comment | 11 | | 0 | 00/8000 | * + 4 | 1 Unidrive4t.asm 4 | Comment | 11 | | 0 | 00/8000 | * The target of this project is to use the Unidisk 3.5 drive to perform + 5 | 1 Unidrive4t.asm 5 | Comment | 11 | | 0 | 00/8000 | * specific numerical routines (integers and floating point numbers) + 6 | 1 Unidrive4t.asm 6 | Comment | 11 | | 0 | 00/8000 | * calculation in order to use it as a Apple II co-processor unit. + 7 | 1 Unidrive4t.asm 7 | Comment | 11 | | 0 | 00/8000 | * + 8 | 1 Unidrive4t.asm 8 | Comment | 11 | | 0 | 00/8000 | * Copyright (C) 2015 Riccardo Greco . + 9 | 1 Unidrive4t.asm 9 | Comment | 11 | | 0 | 00/8000 | * + 10 | 1 Unidrive4t.asm 10 | Comment | 11 | | 0 | 00/8000 | * This program is free software: you can redistribute it and/or modify + 11 | 1 Unidrive4t.asm 11 | Comment | 11 | | 0 | 00/8000 | * it under the terms of the GNU General Public License as published by + 12 | 1 Unidrive4t.asm 12 | Comment | 11 | | 0 | 00/8000 | * the Free Software Foundation, either version 3 of the License, or + 13 | 1 Unidrive4t.asm 13 | Comment | 11 | | 0 | 00/8000 | * (at your option) any later version. + 14 | 1 Unidrive4t.asm 14 | Comment | 11 | | 0 | 00/8000 | * This program is distributed in the hope that it will be useful, + 15 | 1 Unidrive4t.asm 15 | Comment | 11 | | 0 | 00/8000 | * but WITHOUT ANY WARRANTY; without even the implied warranty of + 16 | 1 Unidrive4t.asm 16 | Comment | 11 | | 0 | 00/8000 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + 17 | 1 Unidrive4t.asm 17 | Comment | 11 | | 0 | 00/8000 | * GNU General Public License for more details. + 18 | 1 Unidrive4t.asm 18 | Comment | 11 | | 0 | 00/8000 | * You should have received a copy of the GNU General Public License + 19 | 1 Unidrive4t.asm 19 | Comment | 11 | | 0 | 00/8000 | * along with this program. If not, see . + 20 | 1 Unidrive4t.asm 20 | Comment | 11 | | 0 | 00/8000 | * + 21 | 1 Unidrive4t.asm 21 | Comment | 11 | | 0 | 00/8000 | * + 22 | 1 Unidrive4t.asm 22 | Comment | 11 | | 0 | 00/8000 | * @com.wudsn.ide.asm.hardware=APPLE2 + 23 | 1 Unidrive4t.asm 23 | Comment | 11 | | 0 | 00/8000 | * + 24 | 1 Unidrive4t.asm 24 | Comment | 11 | | 0 | 00/8000 | * Protocol Converter Call + 25 | 1 Unidrive4t.asm 25 | Directive | 11 | | 0 | 00/8000 | XC + 26 | 1 Unidrive4t.asm 26 | Equivalence | 11 | | 0 | 00/8000 | ZPTempL equ $0006 ;Temporary zero page storage + 27 | 1 Unidrive4t.asm 27 | Equivalence | 11 | | 0 | 00/8000 | ZPTempH equ $0007 + 28 | 1 Unidrive4t.asm 28 | Comment | 11 | | 0 | 00/8000 | ** Zero page storage ** + 29 | 1 Unidrive4t.asm 29 | Equivalence | 11 | | 0 | 00/8000 | N1 equ $FA ;25 4 Byte FP FA--FD (FP1) + 30 | 1 Unidrive4t.asm 30 | Equivalence | 11 | | 0 | 00/8000 | N2 equ $EC ;27 4 Byte FP EC--EF (FP2) + 31 | 1 Unidrive4t.asm 31 | Comment | 11 | | 0 | 00/8000 | ; RSLT equ $1D ;29 + 32 | 1 Unidrive4t.asm 32 | Comment | 11 | | 0 | 00/8000 | *** Monitor routines *** + 33 | 1 Unidrive4t.asm 33 | Equivalence | 11 | | 0 | 00/8000 | COut equ $FDED ;Console output ASCII + 34 | 1 Unidrive4t.asm 34 | Equivalence | 11 | | 0 | 00/8000 | CROut equ $FD8E ;Carriage return + 35 | 1 Unidrive4t.asm 35 | Comment | 11 | | 0 | 00/8000 | ** Command Code ** + 36 | 1 Unidrive4t.asm 36 | Equivalence | 11 | | 0 | 00/8000 | StatusCmd equ 0 + 37 | 1 Unidrive4t.asm 37 | Comment | 11 | | 0 | 00/8000 | ** Status Code ** + 38 | 1 Unidrive4t.asm 38 | Comment | 11 | | 0 | 00/8000 | * StatusDIB equ 3 + 39 | 1 Unidrive4t.asm 39 | Equivalence | 11 | | 0 | 00/8000 | StatusUNI equ 5 + 40 | 1 Unidrive4t.asm 40 | Comment | 11 | | 0 | 00/8000 | * + 41 | 1 Unidrive4t.asm 41 | Equivalence | 11 | | 0 | 00/8000 | ControlCmd equ 4 + 42 | 1 Unidrive4t.asm 42 | Comment | 11 | | 0 | 00/8000 | ** Control Codes ** + 43 | 1 Unidrive4t.asm 43 | Equivalence | 11 | | 0 | 00/8000 | Eject equ 4 + 44 | 1 Unidrive4t.asm 44 | Equivalence | 11 | | 0 | 00/8000 | Run equ 5 + 45 | 1 Unidrive4t.asm 45 | Equivalence | 11 | | 0 | 00/8000 | SetDWLoad equ 6 + 46 | 1 Unidrive4t.asm 46 | Equivalence | 11 | | 0 | 00/8000 | DWLoad equ 7 + 47 | 1 Unidrive4t.asm 47 | Comment | 11 | | 0 | 00/8000 | * + 48 | 1 Unidrive4t.asm 48 | Directive | 11 | | 0 | 00/8000 | org $8000 + 49 | 1 Unidrive4t.asm 49 | Comment | 11 | | 0 | 00/8000 | ***************************************************** + 50 | 1 Unidrive4t.asm 50 | Empty | 11 | | 0 | 00/8000 | + 51 | 1 Unidrive4t.asm 51 | Comment | 11 | | 0 | 00/8000 | * + 52 | 1 Unidrive4t.asm 52 | Comment | 11 | | 0 | 00/8000 | * Find a Protocol Converter in one of the slots. + 53 | 1 Unidrive4t.asm 53 | Code | 11 | | 3 | 00/8000 : 20 9E 80 | START jsr {ozunid_4} + 54 | 1 Unidrive4t.asm 54 | Code | 11 | | 2 | 00/8003 : B0 10 | bcs {ozunid_1} + 55 | 1 Unidrive4t.asm 55 | Comment | 11 | | 0 | 00/8005 | *** Eject *** + 56 | 1 Unidrive4t.asm 56 | Code | 11 | | 3 | 00/8005 : 20 D3 80 | jsr {ozunid_9} + 57 | 1 Unidrive4t.asm 57 | Data | 11 | | 1 | 00/8008 : 04 | dfb {4} + 58 | 1 Unidrive4t.asm 58 | Data | 11 | | 2 | 00/8009 : F2 80 | dw {ozunid_15} + 59 | 1 Unidrive4t.asm 59 | Comment | 11 | | 0 | 00/800B | *** Set Address *** + 60 | 1 Unidrive4t.asm 60 | Code | 11 | | 3 | 00/800B : 20 D3 80 | jsr {ozunid_9} + 61 | 1 Unidrive4t.asm 61 | Data | 11 | | 1 | 00/800E : 04 | dfb {4} + 62 | 1 Unidrive4t.asm 62 | Data | 11 | | 2 | 00/800F : E3 80 | dw {ozunid_12} + 63 | 1 Unidrive4t.asm 63 | Comment | 11 | | 0 | 00/8011 | * + 64 | 1 Unidrive4t.asm 64 | Code | 11 | | 3 | 00/8011 : 20 37 80 | jsr EXEC ; Jump the Error routine + 65 | 1 Unidrive4t.asm 65 | Code | 11 | | 1 | 00/8014 : 60 | rts + 66 | 1 Unidrive4t.asm 66 | Comment | 11 | | 0 | 00/8015 | ********************************************* + 67 | 1 Unidrive4t.asm 67 | Empty | 11 | | 0 | 00/8015 | ozunid_1 + 68 | 1 Unidrive4t.asm 67 | Equivalence | 11 | | 0 | 00/8015 | Error equ ozunid_1 + 69 | 1 Unidrive4t.asm 68 | Comment | 11 | | 0 | 00/8015 | * + 70 | 1 Unidrive4t.asm 69 | Comment | 11 | | 0 | 00/8015 | * There is either no PC around, or there was no give message + 71 | 1 Unidrive4t.asm 70 | Comment | 11 | | 0 | 00/8015 | * + 72 | 1 Unidrive4t.asm 71 | Code | 11 | | 2 | 00/8015 : A2 00 | ldx #0 + 73 | 1 Unidrive4t.asm 72 | Empty | 11 | | 0 | 00/8017 | ozunid_2 + 74 | 1 Unidrive4t.asm 72 | Equivalence | 11 | | 0 | 00/8017 | err1 equ ozunid_2 + 75 | 1 Unidrive4t.asm 73 | Code | 11 | | 3 | 00/8017 : BD 23 80 | lda Message,x + 76 | 1 Unidrive4t.asm 74 | Code | 11 | | 2 | 00/801A : F0 06 | beq {ozunid_3} + 77 | 1 Unidrive4t.asm 75 | Code | 11 | | 3 | 00/801C : 20 ED FD | jsr {$FDED} + 78 | 1 Unidrive4t.asm 76 | Code | 11 | | 1 | 00/801F : E8 | inx + 79 | 1 Unidrive4t.asm 77 | Code | 11 | | 2 | 00/8020 : D0 F5 | bne {ozunid_2} + 80 | 1 Unidrive4t.asm 78 | Comment | 11 | | 0 | 00/8022 | * + 81 | 1 Unidrive4t.asm 79 | Empty | 11 | | 0 | 00/8022 | ozunid_3 + 82 | 1 Unidrive4t.asm 79 | Equivalence | 11 | | 0 | 00/8022 | errout equ ozunid_3 + 83 | 1 Unidrive4t.asm 80 | Code | 11 | | 1 | 00/8022 : 60 | rts + 84 | 1 Unidrive4t.asm 81 | Comment | 11 | | 0 | 00/8023 | * + 85 | 1 Unidrive4t.asm 82 | Data | 11 | | 18 | 00/8023 : 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 | + 86 | 1 Unidrive4t.asm 83 | Data | 11 | | 2 | 00/8035 : 8D 00 | dfb $8D,0 + 87 | 1 Unidrive4t.asm 84 | Comment | 11 | | 0 | 00/8037 | ********************************************* + 88 | 1 Unidrive4t.asm 85 | Comment | 11 | | 0 | 00/8037 | * + 89 | 1 Unidrive4t.asm 86 | Empty | 11 | | 0 | 00/8037 | + 90 | 1 Unidrive4t.asm 87 | Comment | 11 | | 0 | 00/8037 | ** Set the Input Value first in Dynamic data ** + 91 | 1 Unidrive4t.asm 88 | Comment | 11 | | 0 | 00/8037 | ** 4 Byte N1 to FP1 ** + 92 | 1 Unidrive4t.asm 89 | Code | 11 | | 2 | 00/8037 : A5 FA | EXEC lda {$FA} ;X1 + 93 | 1 Unidrive4t.asm 90 | Code | 11 | | 3 | 00/8039 : 8D 36 82 | sta $8236 ; Absolute addressing + 94 | 1 Unidrive4t.asm 91 | Code | 11 | | 2 | 00/803C : A5 FB | lda {$FA}+1 ;M1 (1) + 95 | 1 Unidrive4t.asm 92 | Code | 11 | | 3 | 00/803E : 8D 37 82 | sta $8237 + 96 | 1 Unidrive4t.asm 93 | Code | 11 | | 2 | 00/8041 : A5 FC | lda {$FA}+2 ;M1 (2) + 97 | 1 Unidrive4t.asm 94 | Code | 11 | | 3 | 00/8043 : 8D 38 82 | sta $8238 + 98 | 1 Unidrive4t.asm 95 | Code | 11 | | 2 | 00/8046 : A5 FD | lda {$FA}+3 ;M1 (3) + 99 | 1 Unidrive4t.asm 96 | Code | 11 | | 3 | 00/8048 : 8D 39 82 | sta $8239 + 100 | 1 Unidrive4t.asm 97 | Empty | 11 | | 0 | 00/804B | + 101 | 1 Unidrive4t.asm 98 | Comment | 11 | | 0 | 00/804B | ** 4 Byte N2 to FP2 ** + 102 | 1 Unidrive4t.asm 99 | Code | 11 | | 2 | 00/804B : A5 EC | lda {$EC} ;X2 + 103 | 1 Unidrive4t.asm 100 | Code | 11 | | 3 | 00/804D : 8D 3A 82 | sta $823A + 104 | 1 Unidrive4t.asm 101 | Code | 11 | | 2 | 00/8050 : A5 ED | lda {$EC}+1 ;M2 (1) + 105 | 1 Unidrive4t.asm 102 | Code | 11 | | 3 | 00/8052 : 8D 3B 82 | sta $823B + 106 | 1 Unidrive4t.asm 103 | Code | 11 | | 2 | 00/8055 : A5 EE | lda {$EC}+2 ;M2 (2) + 107 | 1 Unidrive4t.asm 104 | Code | 11 | | 3 | 00/8057 : 8D 3C 82 | sta $823C + 108 | 1 Unidrive4t.asm 105 | Code | 11 | | 2 | 00/805A : A5 EF | lda {$EC}+3 ;M2 (3) + 109 | 1 Unidrive4t.asm 106 | Code | 11 | | 3 | 00/805C : 8D 3D 82 | sta $823D + 110 | 1 Unidrive4t.asm 107 | Empty | 11 | | 0 | 00/805F | + 111 | 1 Unidrive4t.asm 108 | Comment | 11 | | 0 | 00/805F | *** Download *** + 112 | 1 Unidrive4t.asm 109 | Code | 11 | | 3 | 00/805F : 20 D3 80 | jsr {ozunid_9} + 113 | 1 Unidrive4t.asm 110 | Data | 11 | | 1 | 00/8062 : 04 | dfb {4} + 114 | 1 Unidrive4t.asm 111 | Data | 11 | | 2 | 00/8063 : E8 80 | dw {ozunid_13} + 115 | 1 Unidrive4t.asm 112 | Comment | 11 | | 0 | 00/8065 | ** Set Unidisk Registers ** + 116 | 1 Unidrive4t.asm 113 | Code | 11 | | 2 | 00/8065 : A9 00 | lda #00 ;First time + 117 | 1 Unidrive4t.asm 114 | Code | 11 | | 3 | 00/8067 : 8D E1 80 | sta UNIP_val + 118 | 1 Unidrive4t.asm 115 | Comment | 11 | | 0 | 00/806A | ** Execute ** + 119 | 1 Unidrive4t.asm 116 | Code | 11 | | 3 | 00/806A : 20 D3 80 | jsr {ozunid_9} + 120 | 1 Unidrive4t.asm 117 | Data | 11 | | 1 | 00/806D : 04 | dfb {4} + 121 | 1 Unidrive4t.asm 118 | Data | 11 | | 2 | 00/806E : ED 80 | dw {ozunid_14} + 122 | 1 Unidrive4t.asm 119 | Comment | 11 | | 0 | 00/8070 | ** Read ** + 123 | 1 Unidrive4t.asm 120 | Code | 11 | | 3 | 00/8070 : 20 D3 80 | READ jsr {ozunid_9} + 124 | 1 Unidrive4t.asm 121 | Data | 11 | | 1 | 00/8073 : 00 | dfb {0} + 125 | 1 Unidrive4t.asm 122 | Data | 11 | | 2 | 00/8074 : D6 80 | dw {ozunid_10} + 126 | 1 Unidrive4t.asm 123 | Code | 11 | | 2 | 00/8076 : B0 9D | bcs {ozunid_1} + 127 | 1 Unidrive4t.asm 124 | Comment | 11 | | 0 | 00/8078 | * + 128 | 1 Unidrive4t.asm 125 | Comment | 11 | | 0 | 00/8078 | **** Store Output results in //c **** + 129 | 1 Unidrive4t.asm 126 | Empty | 11 | | 0 | 00/8078 | + 130 | 1 Unidrive4t.asm 127 | Comment | 11 | | 0 | 00/8078 | * First time execute * + 131 | 1 Unidrive4t.asm 128 | Code | 11 | | 3 | 00/8078 : AD DE 80 | lda UNIAcc_reg + 132 | 1 Unidrive4t.asm 129 | Code | 11 | | 2 | 00/807B : 85 FA | sta {$FA} + 133 | 1 Unidrive4t.asm 130 | Code | 11 | | 3 | 00/807D : AD DF 80 | lda UNIX_reg + 134 | 1 Unidrive4t.asm 131 | Code | 11 | | 2 | 00/8080 : 85 FB | sta {$FA}+1 ; Store the result + 135 | 1 Unidrive4t.asm 132 | Code | 11 | | 3 | 00/8082 : AD E0 80 | lda UNIY_reg + 136 | 1 Unidrive4t.asm 133 | Code | 11 | | 2 | 00/8085 : 85 FC | sta {$FA}+2 + 137 | 1 Unidrive4t.asm 134 | Empty | 11 | | 0 | 00/8087 | + 138 | 1 Unidrive4t.asm 135 | Comment | 11 | | 0 | 00/8087 | ** Second time execute ** + 139 | 1 Unidrive4t.asm 136 | Code | 11 | | 2 | 00/8087 : A9 02 | lda #02 ; Second time + 140 | 1 Unidrive4t.asm 137 | Code | 11 | | 3 | 00/8089 : 8D E1 80 | sta UNIP_val + 141 | 1 Unidrive4t.asm 138 | Comment | 11 | | 0 | 00/808C | ** Execute ** + 142 | 1 Unidrive4t.asm 139 | Code | 11 | | 3 | 00/808C : 20 D3 80 | jsr {ozunid_9} + 143 | 1 Unidrive4t.asm 140 | Data | 11 | | 1 | 00/808F : 04 | dfb {4} + 144 | 1 Unidrive4t.asm 141 | Data | 11 | | 2 | 00/8090 : ED 80 | dw {ozunid_14} + 145 | 1 Unidrive4t.asm 142 | Comment | 11 | | 0 | 00/8092 | ** Read ** + 146 | 1 Unidrive4t.asm 143 | Code | 11 | | 3 | 00/8092 : 20 D3 80 | jsr {ozunid_9} + 147 | 1 Unidrive4t.asm 144 | Data | 11 | | 1 | 00/8095 : 00 | dfb {0} + 148 | 1 Unidrive4t.asm 145 | Data | 11 | | 2 | 00/8096 : D6 80 | dw {ozunid_10} + 149 | 1 Unidrive4t.asm 146 | Comment | 11 | | 0 | 00/8098 | * bcs Error + 150 | 1 Unidrive4t.asm 147 | Empty | 11 | | 0 | 00/8098 | + 151 | 1 Unidrive4t.asm 148 | Comment | 11 | | 0 | 00/8098 | * Second time execute only to read the latest Byte of FP1* + 152 | 1 Unidrive4t.asm 149 | Code | 11 | | 3 | 00/8098 : AD DE 80 | lda UNIAcc_reg + 153 | 1 Unidrive4t.asm 150 | Code | 11 | | 2 | 00/809B : 85 FD | sta {$FA}+3 + 154 | 1 Unidrive4t.asm 151 | Comment | 11 | | 0 | 00/809D | * + 155 | 1 Unidrive4t.asm 152 | Code | 11 | | 1 | 00/809D : 60 | rts + 156 | 1 Unidrive4t.asm 153 | Empty | 11 | | 0 | 00/809E | + 157 | 1 Unidrive4t.asm 154 | Comment | 11 | | 0 | 00/809E | ****************************************************** + 158 | 1 Unidrive4t.asm 155 | Empty | 11 | | 0 | 00/809E | ozunid_4 + 159 | 1 Unidrive4t.asm 155 | Equivalence | 11 | | 0 | 00/809E | FindPC equ ozunid_4 + 160 | 1 Unidrive4t.asm 156 | Comment | 11 | | 0 | 00/809E | * + 161 | 1 Unidrive4t.asm 157 | Comment | 11 | | 0 | 00/809E | * Search slot 7 to slot 1 looking for signature bytes + 162 | 1 Unidrive4t.asm 158 | Comment | 11 | | 0 | 00/809E | * + 163 | 1 Unidrive4t.asm 159 | Code | 11 | | 2 | 00/809E : A2 07 | ldx #7 ;Do for seven slots + 164 | 1 Unidrive4t.asm 160 | Code | 11 | | 2 | 00/80A0 : A9 C7 | lda #$C7 + 165 | 1 Unidrive4t.asm 161 | Code | 11 | | 2 | 00/80A2 : 85 07 | sta {$0007} + 166 | 1 Unidrive4t.asm 162 | Code | 11 | | 2 | 00/80A4 : A9 00 | lda #$00 + 167 | 1 Unidrive4t.asm 163 | Code | 11 | | 2 | 00/80A6 : 85 06 | sta {$0006} + 168 | 1 Unidrive4t.asm 164 | Comment | 11 | | 0 | 00/80A8 | * + 169 | 1 Unidrive4t.asm 165 | Empty | 11 | | 0 | 00/80A8 | ozunid_5 + 170 | 1 Unidrive4t.asm 165 | Equivalence | 11 | | 0 | 00/80A8 | newslot equ ozunid_5 + 171 | 1 Unidrive4t.asm 166 | Code | 11 | | 2 | 00/80A8 : A0 07 | ldy #7 + 172 | 1 Unidrive4t.asm 167 | Comment | 11 | | 0 | 00/80AA | * + 173 | 1 Unidrive4t.asm 168 | Empty | 11 | | 0 | 00/80AA | ozunid_6 + 174 | 1 Unidrive4t.asm 168 | Equivalence | 11 | | 0 | 00/80AA | again equ ozunid_6 + 175 | 1 Unidrive4t.asm 169 | Code | 11 | | 2 | 00/80AA : B1 06 | lda ({$0006}),y + 176 | 1 Unidrive4t.asm 170 | Code | 11 | | 3 | 00/80AC : D9 CB 80 | cmp sigtab,y ;One for byte signature + 177 | 1 Unidrive4t.asm 171 | Code | 11 | | 2 | 00/80AF : F0 07 | beq {ozunid_7} ;Found one signature byte + 178 | 1 Unidrive4t.asm 172 | Code | 11 | | 2 | 00/80B1 : C6 07 | dec {$0007} + 179 | 1 Unidrive4t.asm 173 | Code | 11 | | 1 | 00/80B3 : CA | dex + 180 | 1 Unidrive4t.asm 174 | Code | 11 | | 2 | 00/80B4 : D0 F2 | bne {ozunid_5} + 181 | 1 Unidrive4t.asm 175 | Comment | 11 | | 0 | 00/80B6 | * + 182 | 1 Unidrive4t.asm 176 | Comment | 11 | | 0 | 00/80B6 | * if we get here, no PC find + 183 | 1 Unidrive4t.asm 177 | Code | 11 | | 1 | 00/80B6 : 38 | sec + 184 | 1 Unidrive4t.asm 178 | Code | 11 | | 1 | 00/80B7 : 60 | rts + 185 | 1 Unidrive4t.asm 179 | Comment | 11 | | 0 | 00/80B8 | * + 186 | 1 Unidrive4t.asm 180 | Comment | 11 | | 0 | 00/80B8 | * if we get here, no byte find on PC + 187 | 1 Unidrive4t.asm 181 | Empty | 11 | | 0 | 00/80B8 | ozunid_7 + 188 | 1 Unidrive4t.asm 181 | Equivalence | 11 | | 0 | 00/80B8 | maybe equ ozunid_7 + 189 | 1 Unidrive4t.asm 182 | Code | 11 | | 1 | 00/80B8 : 88 | dey + 190 | 1 Unidrive4t.asm 183 | Code | 11 | | 1 | 00/80B9 : 88 | dey ;if N=1 then all sig bytes OK + 191 | 1 Unidrive4t.asm 184 | Code | 11 | | 2 | 00/80BA : 10 EE | bpl {ozunid_6} + 192 | 1 Unidrive4t.asm 185 | Comment | 11 | | 0 | 00/80BC | * Found PC interface. Set up call address. + 193 | 1 Unidrive4t.asm 186 | Comment | 11 | | 0 | 00/80BC | * we already have high byte ($CN), we need low byte + 194 | 1 Unidrive4t.asm 187 | Comment | 11 | | 0 | 00/80BC | * + 195 | 1 Unidrive4t.asm 188 | Empty | 11 | | 0 | 00/80BC | ozunid_8 + 196 | 1 Unidrive4t.asm 188 | Equivalence | 11 | | 0 | 00/80BC | foundPC equ ozunid_8 + 197 | 1 Unidrive4t.asm 189 | Code | 11 | | 2 | 00/80BC : A9 FF | lda #$FF + 198 | 1 Unidrive4t.asm 190 | Code | 11 | | 2 | 00/80BE : 85 06 | sta {$0006} + 199 | 1 Unidrive4t.asm 191 | Code | 11 | | 2 | 00/80C0 : A0 00 | ldy #0 ;For indirect load + 200 | 1 Unidrive4t.asm 192 | Code | 11 | | 2 | 00/80C2 : B1 06 | lda ({$0006}),y ;Get the byte + 201 | 1 Unidrive4t.asm 193 | Comment | 11 | | 0 | 00/80C4 | * + 202 | 1 Unidrive4t.asm 194 | Comment | 11 | | 0 | 00/80C4 | * Now the Acc has the low oreder ProDOS entry point. + 203 | 1 Unidrive4t.asm 195 | Comment | 11 | | 0 | 00/80C4 | * The PC entry is three locations past this ... + 204 | 1 Unidrive4t.asm 196 | Comment | 11 | | 0 | 00/80C4 | * + 205 | 1 Unidrive4t.asm 197 | Code | 11 | | 1 | 00/80C4 : 18 | clc + 206 | 1 Unidrive4t.asm 198 | Code | 11 | | 2 | 00/80C5 : 69 03 | adc #3 + 207 | 1 Unidrive4t.asm 199 | Code | 11 | | 2 | 00/80C7 : 85 06 | sta {$0006} + 208 | 1 Unidrive4t.asm 200 | Comment | 11 | | 0 | 00/80C9 | * + 209 | 1 Unidrive4t.asm 201 | Comment | 11 | | 0 | 00/80C9 | * Now ZPTempL has PC entry point. + 210 | 1 Unidrive4t.asm 202 | Comment | 11 | | 0 | 00/80C9 | * Return with carry clear. + 211 | 1 Unidrive4t.asm 203 | Comment | 11 | | 0 | 00/80C9 | * + 212 | 1 Unidrive4t.asm 204 | Code | 11 | | 1 | 00/80C9 : 18 | clc + 213 | 1 Unidrive4t.asm 205 | Code | 11 | | 1 | 00/80CA : 60 | rts + 214 | 1 Unidrive4t.asm 206 | Comment | 11 | | 0 | 00/80CB | *********************************************************** + 215 | 1 Unidrive4t.asm 207 | Comment | 11 | | 0 | 00/80CB | * + 216 | 1 Unidrive4t.asm 208 | Comment | 11 | | 0 | 00/80CB | * There are the PC signature bytes in their relative order. + 217 | 1 Unidrive4t.asm 209 | Comment | 11 | | 0 | 00/80CB | * The $FF bytes are filler bytes and are not compared. + 218 | 1 Unidrive4t.asm 210 | Comment | 11 | | 0 | 00/80CB | * + 219 | 1 Unidrive4t.asm 211 | Data | 11 | | 4 | 00/80CB : FF 20 FF 00 | sigtab dfb $FF,$20,$FF,$00 + 220 | 1 Unidrive4t.asm 212 | Data | 11 | | 4 | 00/80CF : FF 03 FF 00 | dfb $FF,$03,$FF,$00 + 221 | 1 Unidrive4t.asm 213 | Comment | 11 | | 0 | 00/80D3 | * + 222 | 1 Unidrive4t.asm 214 | Empty | 11 | | 0 | 00/80D3 | ozunid_9 + 223 | 1 Unidrive4t.asm 214 | Equivalence | 11 | | 0 | 00/80D3 | Dispatch equ ozunid_9 + 224 | 1 Unidrive4t.asm 215 | Code | 11 | | 3 | 00/80D3 : 6C 06 00 | jmp ({$0006}) ;Simulate an indirect JSR to PC + 225 | 1 Unidrive4t.asm 216 | Comment | 11 | | 0 | 00/80D6 | * + 226 | 1 Unidrive4t.asm 217 | Comment | 11 | | 0 | 00/80D6 | *** Status Parameter Set for UNI *** + 227 | 1 Unidrive4t.asm 218 | Empty | 11 | | 0 | 00/80D6 | ozunid_10 + 228 | 1 Unidrive4t.asm 218 | Equivalence | 11 | | 0 | 00/80D6 | DParms equ ozunid_10 + 229 | 1 Unidrive4t.asm 219 | Data | 11 | | 1 | 00/80D6 : 03 | DPParmsCt dfb 3 ;Status calls have three parameters + 230 | 1 Unidrive4t.asm 220 | Data | 11 | | 1 | 00/80D7 : 01 | DPUnit dfb 1 + 231 | 1 Unidrive4t.asm 221 | Data | 11 | | 2 | 00/80D8 : DB 80 | DPBuffer dw {ozunid_11} + 232 | 1 Unidrive4t.asm 222 | Data | 11 | | 1 | 00/80DA : 05 | DPStatCode dfb {5} + 233 | 1 Unidrive4t.asm 223 | Comment | 11 | | 0 | 00/80DB | * + 234 | 1 Unidrive4t.asm 224 | Comment | 11 | | 0 | 00/80DB | * + 235 | 1 Unidrive4t.asm 225 | Comment | 11 | | 0 | 00/80DB | * + 236 | 1 Unidrive4t.asm 226 | Comment | 11 | | 0 | 00/80DB | *** Status List UNI *** + 237 | 1 Unidrive4t.asm 227 | Empty | 11 | | 0 | 00/80DB | ozunid_11 + 238 | 1 Unidrive4t.asm 227 | Equivalence | 11 | | 0 | 00/80DB | UNI equ ozunid_11 + 239 | 1 Unidrive4t.asm 228 | Data | 11 | | 1 | 00/80DB : 00 | dfb 0 + 240 | 1 Unidrive4t.asm 229 | Data | 11 | | 1 | 00/80DC : 00 | UNIError dfb 0 + 241 | 1 Unidrive4t.asm 230 | Data | 11 | | 1 | 00/80DD : 00 | UNIRetries dfb 0 + 242 | 1 Unidrive4t.asm 231 | Data | 11 | | 1 | 00/80DE : 00 | UNIAcc_reg dfb 0 + 243 | 1 Unidrive4t.asm 232 | Data | 11 | | 1 | 00/80DF : 00 | UNIX_reg dfb 0 + 244 | 1 Unidrive4t.asm 233 | Data | 11 | | 1 | 00/80E0 : 00 | UNIY_reg dfb 0 + 245 | 1 Unidrive4t.asm 234 | Data | 11 | | 1 | 00/80E1 : 00 | UNIP_val dfb 0 + 246 | 1 Unidrive4t.asm 235 | Data | 11 | | 1 | 00/80E2 : 00 | HHH dfb 0 + 247 | 1 Unidrive4t.asm 236 | Comment | 11 | | 0 | 00/80E3 | * + 248 | 1 Unidrive4t.asm 237 | Comment | 11 | | 0 | 00/80E3 | *** Set Address *** + 249 | 1 Unidrive4t.asm 238 | Empty | 11 | | 0 | 00/80E3 | ozunid_12 + 250 | 1 Unidrive4t.asm 238 | Equivalence | 11 | | 0 | 00/80E3 | SET_ADD equ ozunid_12 + 251 | 1 Unidrive4t.asm 239 | Data | 11 | | 1 | 00/80E3 : 03 | dfb 3 + 252 | 1 Unidrive4t.asm 240 | Data | 11 | | 1 | 00/80E4 : 01 | dfb 1 + 253 | 1 Unidrive4t.asm 241 | Data | 11 | | 2 | 00/80E5 : 01 81 | dw {ozunid_18} + 254 | 1 Unidrive4t.asm 242 | Data | 11 | | 1 | 00/80E7 : 06 | dfb {6} + 255 | 1 Unidrive4t.asm 243 | Comment | 11 | | 0 | 00/80E8 | * + 256 | 1 Unidrive4t.asm 244 | Comment | 11 | | 0 | 00/80E8 | *** Download *** + 257 | 1 Unidrive4t.asm 245 | Empty | 11 | | 0 | 00/80E8 | ozunid_13 + 258 | 1 Unidrive4t.asm 245 | Equivalence | 11 | | 0 | 00/80E8 | DOWNLOAD equ ozunid_13 + 259 | 1 Unidrive4t.asm 246 | Data | 11 | | 1 | 00/80E8 : 03 | dfb 3 + 260 | 1 Unidrive4t.asm 247 | Data | 11 | | 1 | 00/80E9 : 01 | dfb 1 + 261 | 1 Unidrive4t.asm 248 | Data | 11 | | 2 | 00/80EA : 05 81 | dw {ozunid_19} + 262 | 1 Unidrive4t.asm 249 | Data | 11 | | 1 | 00/80EC : 07 | dfb {7} + 263 | 1 Unidrive4t.asm 250 | Comment | 11 | | 0 | 00/80ED | * + 264 | 1 Unidrive4t.asm 251 | Comment | 11 | | 0 | 00/80ED | *** Execute *** + 265 | 1 Unidrive4t.asm 252 | Empty | 11 | | 0 | 00/80ED | ozunid_14 + 266 | 1 Unidrive4t.asm 252 | Equivalence | 11 | | 0 | 00/80ED | EXE equ ozunid_14 + 267 | 1 Unidrive4t.asm 253 | Data | 11 | | 1 | 00/80ED : 03 | dfb 3 + 268 | 1 Unidrive4t.asm 254 | Data | 11 | | 1 | 00/80EE : 01 | dfb 1 + 269 | 1 Unidrive4t.asm 255 | Data | 11 | | 2 | 00/80EF : F9 80 | dw {ozunid_17} + 270 | 1 Unidrive4t.asm 256 | Data | 11 | | 1 | 00/80F1 : 05 | dfb {5} + 271 | 1 Unidrive4t.asm 257 | Comment | 11 | | 0 | 00/80F2 | *** Eject *** + 272 | 1 Unidrive4t.asm 258 | Empty | 11 | | 0 | 00/80F2 | ozunid_15 + 273 | 1 Unidrive4t.asm 258 | Equivalence | 11 | | 0 | 00/80F2 | E_JECT equ ozunid_15 + 274 | 1 Unidrive4t.asm 259 | Data | 11 | | 1 | 00/80F2 : 03 | dfb 3 + 275 | 1 Unidrive4t.asm 260 | Data | 11 | | 1 | 00/80F3 : 01 | dfb 1 + 276 | 1 Unidrive4t.asm 261 | Data | 11 | | 2 | 00/80F4 : F7 80 | dw {ozunid_16} + 277 | 1 Unidrive4t.asm 262 | Data | 11 | | 1 | 00/80F6 : 04 | dfb {4} + 278 | 1 Unidrive4t.asm 263 | Comment | 11 | | 0 | 00/80F7 | * + 279 | 1 Unidrive4t.asm 264 | Comment | 11 | | 0 | 00/80F7 | ******** CONTROL LISTS ******** + 280 | 1 Unidrive4t.asm 265 | Comment | 11 | | 0 | 00/80F7 | * + 281 | 1 Unidrive4t.asm 266 | Comment | 11 | | 0 | 00/80F7 | * + 282 | 1 Unidrive4t.asm 267 | Comment | 11 | | 0 | 00/80F7 | *** Eject *** + 283 | 1 Unidrive4t.asm 268 | Empty | 11 | | 0 | 00/80F7 | ozunid_16 + 284 | 1 Unidrive4t.asm 268 | Equivalence | 11 | | 0 | 00/80F7 | CNTL_LIST1 equ ozunid_16 + 285 | 1 Unidrive4t.asm 269 | Data | 11 | | 2 | 00/80F7 : 00 00 | dw $0000 + 286 | 1 Unidrive4t.asm 270 | Comment | 11 | | 0 | 00/80F9 | * + 287 | 1 Unidrive4t.asm 271 | Comment | 11 | | 0 | 00/80F9 | *** Execute *** + 288 | 1 Unidrive4t.asm 272 | Empty | 11 | | 0 | 00/80F9 | ozunid_17 + 289 | 1 Unidrive4t.asm 272 | Equivalence | 11 | | 0 | 00/80F9 | CNTL_LIST2 equ ozunid_17 + 290 | 1 Unidrive4t.asm 273 | Data | 11 | | 1 | 00/80F9 : 06 | Clow_byte dfb $06 + 291 | 1 Unidrive4t.asm 274 | Data | 11 | | 1 | 00/80FA : 00 | Chigh_byte dfb $00 + 292 | 1 Unidrive4t.asm 275 | Data | 11 | | 1 | 00/80FB : 00 | AccValue dfb $00 ; Init Value Unidisk Accumulator Register + 293 | 1 Unidrive4t.asm 276 | Data | 11 | | 1 | 00/80FC : 00 | X_reg dfb $00 ; Init Value Unidisk X Register + 294 | 1 Unidrive4t.asm 277 | Data | 11 | | 1 | 00/80FD : 00 | Y_reg dfb $00 ; Init Value Unidisk Y Register + 295 | 1 Unidrive4t.asm 278 | Data | 11 | | 1 | 00/80FE : 00 | ProStatus dfb $00 ; Init Value Unidisk Status Register + 296 | 1 Unidrive4t.asm 279 | Data | 11 | | 1 | 00/80FF : 00 | LowPC_reg dfb $00 ; Init Value Unidisk Program Counter $0500 + 297 | 1 Unidrive4t.asm 280 | Data | 11 | | 1 | 00/8100 : 05 | HighPC_reg dfb $05 + 298 | 1 Unidrive4t.asm 281 | Comment | 11 | | 0 | 00/8101 | * + 299 | 1 Unidrive4t.asm 282 | Comment | 11 | | 0 | 00/8101 | *** Set Address *** + 300 | 1 Unidrive4t.asm 283 | Empty | 11 | | 0 | 00/8101 | ozunid_18 + 301 | 1 Unidrive4t.asm 283 | Equivalence | 11 | | 0 | 00/8101 | CNTL_LIST3 equ ozunid_18 + 302 | 1 Unidrive4t.asm 284 | Data | 11 | | 1 | 00/8101 : 02 | CountL_byte dfb $02 + 303 | 1 Unidrive4t.asm 285 | Data | 11 | | 1 | 00/8102 : 00 | CountH_byte dfb $00 + 304 | 1 Unidrive4t.asm 286 | Data | 11 | | 1 | 00/8103 : 00 | LByte_Addr dfb $00 ; ORG of Unidisk program, set begin program address $0500 + 305 | 1 Unidrive4t.asm 287 | Data | 11 | | 1 | 00/8104 : 05 | HByte_Addr dfb $05 + 306 | 1 Unidrive4t.asm 288 | Comment | 11 | | 0 | 00/8105 | * + 307 | 1 Unidrive4t.asm 289 | Comment | 11 | | 0 | 00/8105 | *** Download *** + 308 | 1 Unidrive4t.asm 290 | Empty | 11 | | 0 | 00/8105 | ozunid_19 + 309 | 1 Unidrive4t.asm 290 | Equivalence | 11 | | 0 | 00/8105 | CNTL_LIST4 equ ozunid_19 + 310 | 1 Unidrive4t.asm 291 | Data | 11 | | 1 | 00/8105 : 36 | LenghtL_byte dfb $36 ;<----- Lenght of Unidisk program Lo - Byte 312 byte + 311 | 1 Unidrive4t.asm 292 | Data | 11 | | 1 | 00/8106 : 01 | LenghtH_byte dfb $01 ;<----- Lenght of Unidisk program Hi Byte + 312 | 1 Unidrive4t.asm 293 | Comment | 11 | | 0 | 00/8107 | * + 313 | 1 Unidrive4t.asm 294 | Comment | 11 | | 0 | 00/8107 | **************** Start UNIDISK Program **************** + 314 | 1 Unidrive4t.asm 295 | Comment | 11 | | 0 | 00/8107 | * + 315 | 1 Unidrive4t.asm 296 | Directive | 11 | | 0 | 00/8107 | org $0500 ; Start Unidisk program address + 316 | 1 Unidrive4t.asm 297 | Empty | 11 | | 0 | 00/0500 | + 317 | 1 Unidrive4t.asm 298 | Equivalence | 11 | | 0 | 00/0500 | SIGN EQU $C0 ;$EB ; $F3 + 318 | 1 Unidrive4t.asm 299 | Empty | 11 | | 0 | 00/0500 | + 319 | 1 Unidrive4t.asm 300 | Comment | 11 | | 0 | 00/0500 | ** FP2 4 Bytes ** + 320 | 1 Unidrive4t.asm 301 | Equivalence | 11 | | 0 | 00/0500 | X2 EQU $C1 ;$EC ; $F4 + 321 | 1 Unidrive4t.asm 302 | Equivalence | 11 | | 0 | 00/0500 | M2 EQU $C2 ;$ED ; $F5 - $F7 + 322 | 1 Unidrive4t.asm 303 | Empty | 11 | | 0 | 00/0500 | + 323 | 1 Unidrive4t.asm 304 | Comment | 11 | | 0 | 00/0500 | ** FP1 4 Bytes + E extension ** + 324 | 1 Unidrive4t.asm 305 | Equivalence | 11 | | 0 | 00/0500 | X1 EQU $C5 ;$FA ; $F8 + 325 | 1 Unidrive4t.asm 306 | Equivalence | 11 | | 0 | 00/0500 | M1 EQU $C6 ;$FB ; $F9 - $FB + 326 | 1 Unidrive4t.asm 307 | Equivalence | 11 | | 0 | 00/0500 | E EQU $C9 ;$FE ; $FC + 327 | 1 Unidrive4t.asm 308 | Empty | 11 | | 0 | 00/0500 | + 328 | 1 Unidrive4t.asm 309 | Equivalence | 11 | | 0 | 00/0500 | OVLOC EQU $C10 ;$3F5 ;Overflow routine is not implemented at now) + 329 | 1 Unidrive4t.asm 310 | Comment | 11 | | 0 | 00/0500 | * + 330 | 1 Unidrive4t.asm 311 | Comment | 11 | | 0 | 00/0500 | ** Main program ** + 331 | 1 Unidrive4t.asm 312 | Comment | 11 | | 0 | 00/0500 | * + 332 | 1 Unidrive4t.asm 313 | Comment | 11 | | 0 | 00/0500 | * CHK if is the second execution * + 333 | 1 Unidrive4t.asm 314 | Empty | 11 | | 0 | 00/0500 | + 334 | 1 Unidrive4t.asm 315 | Comment | 11 | | 0 | 00/0500 | * cmp #01 + 335 | 1 Unidrive4t.asm 316 | Code | 11 | | 2 | 00/0500 : F0 32 | beq SECOND ;Only to read the rest part of result + 336 | 1 Unidrive4t.asm 317 | Empty | 11 | | 0 | 00/0502 | + 337 | 1 Unidrive4t.asm 318 | Comment | 11 | | 0 | 00/0502 | ** Input data to Zero Page ** + 338 | 1 Unidrive4t.asm 319 | Empty | 11 | | 0 | 00/0502 | + 339 | 1 Unidrive4t.asm 320 | Comment | 11 | | 0 | 00/0502 | ** FP1 ** + 340 | 1 Unidrive4t.asm 321 | Code | 11 | | 3 | 00/0502 : AD 2F 06 | lda FP1 + 341 | 1 Unidrive4t.asm 322 | Code | 11 | | 2 | 00/0505 : 85 C5 | sta {$C5} + 342 | 1 Unidrive4t.asm 323 | Empty | 11 | | 0 | 00/0507 | + 343 | 1 Unidrive4t.asm 324 | Code | 11 | | 3 | 00/0507 : AD 30 06 | lda FP1+1 + 344 | 1 Unidrive4t.asm 325 | Code | 11 | | 2 | 00/050A : 85 C6 | sta {$C6} + 345 | 1 Unidrive4t.asm 326 | Code | 11 | | 3 | 00/050C : AD 31 06 | lda FP1+2 + 346 | 1 Unidrive4t.asm 327 | Code | 11 | | 2 | 00/050F : 85 C7 | sta {$C6}+1 + 347 | 1 Unidrive4t.asm 328 | Code | 11 | | 3 | 00/0511 : AD 32 06 | lda FP1+3 + 348 | 1 Unidrive4t.asm 329 | Code | 11 | | 2 | 00/0514 : 85 C8 | sta {$C6}+2 + 349 | 1 Unidrive4t.asm 330 | Empty | 11 | | 0 | 00/0516 | + 350 | 1 Unidrive4t.asm 331 | Comment | 11 | | 0 | 00/0516 | ** FP2 ** + 351 | 1 Unidrive4t.asm 332 | Code | 11 | | 3 | 00/0516 : AD 33 06 | lda FP2 + 352 | 1 Unidrive4t.asm 333 | Code | 11 | | 2 | 00/0519 : 85 C1 | sta {$C1} + 353 | 1 Unidrive4t.asm 334 | Empty | 11 | | 0 | 00/051B | + 354 | 1 Unidrive4t.asm 335 | Code | 11 | | 3 | 00/051B : AD 34 06 | lda FP2+1 + 355 | 1 Unidrive4t.asm 336 | Code | 11 | | 2 | 00/051E : 85 C2 | sta {$C2} + 356 | 1 Unidrive4t.asm 337 | Code | 11 | | 3 | 00/0520 : AD 35 06 | lda FP2+2 + 357 | 1 Unidrive4t.asm 338 | Code | 11 | | 2 | 00/0523 : 85 C3 | sta {$C2}+1 + 358 | 1 Unidrive4t.asm 339 | Code | 11 | | 3 | 00/0525 : AD 36 06 | lda FP2+3 + 359 | 1 Unidrive4t.asm 340 | Code | 11 | | 2 | 00/0528 : 85 C4 | sta {$C2}+2 + 360 | 1 Unidrive4t.asm 341 | Empty | 11 | | 0 | 00/052A | + 361 | 1 Unidrive4t.asm 342 | Comment | 11 | | 0 | 00/052A | ************************** Target Function *********************** + 362 | 1 Unidrive4t.asm 343 | Comment | 11 | | 0 | 00/052A | * Y=N1+N2 * + 363 | 1 Unidrive4t.asm 344 | Comment | 11 | | 0 | 00/052A | ****************************************************************** + 364 | 1 Unidrive4t.asm 345 | Comment | 11 | | 0 | 00/052A | * + 365 | 1 Unidrive4t.asm 346 | Comment | 11 | | 0 | 00/052A | ** Simple ADD ** + 366 | 1 Unidrive4t.asm 347 | Code | 11 | | 3 | 00/052A : 20 80 05 | jsr FADD ; Call FP routine + 367 | 1 Unidrive4t.asm 348 | Empty | 11 | | 0 | 00/052D | + 368 | 1 Unidrive4t.asm 349 | Comment | 11 | | 0 | 00/052D | *** Output Data result FP1 to Unidisk registers First Time first 3 Byte out *** + 369 | 1 Unidrive4t.asm 350 | Code | 11 | | 2 | 00/052D : A5 C5 | lda {$C5} + 370 | 1 Unidrive4t.asm 351 | Code | 11 | | 2 | 00/052F : A6 C6 | ldx {$C6} + 371 | 1 Unidrive4t.asm 352 | Code | 11 | | 2 | 00/0531 : A4 C7 | ldy {$C6}+1 + 372 | 1 Unidrive4t.asm 353 | Empty | 11 | | 0 | 00/0533 | + 373 | 1 Unidrive4t.asm 354 | Code | 11 | | 1 | 00/0533 : 60 | rts + 374 | 1 Unidrive4t.asm 355 | Comment | 11 | | 0 | 00/0534 | *** Output Data result FP1 to Unidisk registers Second Time latest 1 Byte out *** + 375 | 1 Unidrive4t.asm 356 | Code | 11 | | 2 | 00/0534 : A5 C8 | SECOND lda {$C6}+2 + 376 | 1 Unidrive4t.asm 357 | Empty | 11 | | 0 | 00/0536 | + 377 | 1 Unidrive4t.asm 358 | Code | 11 | | 1 | 00/0536 : 60 | rts + 378 | 1 Unidrive4t.asm 359 | Comment | 11 | | 0 | 00/0537 | *************************************************** + 379 | 1 Unidrive4t.asm 360 | Comment | 11 | | 0 | 00/0537 | * + 380 | 1 Unidrive4t.asm 361 | Comment | 11 | | 0 | 00/0537 | ***************** FP Routine ***************** + 381 | 1 Unidrive4t.asm 362 | Comment | 11 | | 0 | 00/0537 | * + 382 | 1 Unidrive4t.asm 363 | Comment | 11 | | 0 | 00/0537 | *********************** + 383 | 1 Unidrive4t.asm 364 | Comment | 11 | | 0 | 00/0537 | * * + 384 | 1 Unidrive4t.asm 365 | Comment | 11 | | 0 | 00/0537 | * APPLE-II FLOATING * + 385 | 1 Unidrive4t.asm 366 | Comment | 11 | | 0 | 00/0537 | * POINT ROUTINES * + 386 | 1 Unidrive4t.asm 367 | Comment | 11 | | 0 | 00/0537 | * * + 387 | 1 Unidrive4t.asm 368 | Comment | 11 | | 0 | 00/0537 | * COPYRIGHT 1977 BY * + 388 | 1 Unidrive4t.asm 369 | Comment | 11 | | 0 | 00/0537 | * APPLE COMPUTER INC. * + 389 | 1 Unidrive4t.asm 370 | Comment | 11 | | 0 | 00/0537 | * * + 390 | 1 Unidrive4t.asm 371 | Comment | 11 | | 0 | 00/0537 | * ALL RIGHTS RESERVED * + 391 | 1 Unidrive4t.asm 372 | Comment | 11 | | 0 | 00/0537 | * * + 392 | 1 Unidrive4t.asm 373 | Comment | 11 | | 0 | 00/0537 | * S. WOZNIAK * + 393 | 1 Unidrive4t.asm 374 | Comment | 11 | | 0 | 00/0537 | * * + 394 | 1 Unidrive4t.asm 375 | Comment | 11 | | 0 | 00/0537 | *********************** + 395 | 1 Unidrive4t.asm 376 | Comment | 11 | | 0 | 00/0537 | * TITLE "FLOATING POINT ROUTINES for Unidisk memory" + 396 | 1 Unidrive4t.asm 377 | Comment | 11 | | 0 | 00/0537 | * + 397 | 1 Unidrive4t.asm 378 | Empty | 11 | | 0 | 00/0537 | + 398 | 1 Unidrive4t.asm 379 | Comment | 11 | | 0 | 00/0537 | * ORG $300 + 399 | 1 Unidrive4t.asm 380 | Empty | 11 | | 0 | 00/0537 | + 400 | 1 Unidrive4t.asm 381 | Code | 11 | | 1 | 00/0537 : 18 | ADD CLC ;CLEAR CARRY + 401 | 1 Unidrive4t.asm 382 | Code | 11 | | 2 | 00/0538 : A2 02 | LDX #$2 ;INDEX FOR 3-BYTE ADD. + 402 | 1 Unidrive4t.asm 383 | Code | 11 | | 2 | 00/053A : B5 C6 | ADD1 LDA {$C6},X + 403 | 1 Unidrive4t.asm 384 | Code | 11 | | 2 | 00/053C : 75 C2 | ADC {$C2},X ;ADD A BYTE OF MANT2 TO MANT1 + 404 | 1 Unidrive4t.asm 385 | Code | 11 | | 2 | 00/053E : 95 C6 | STA {$C6},X + 405 | 1 Unidrive4t.asm 386 | Code | 11 | | 1 | 00/0540 : CA | DEX ;INDEX TO NEXT MORE SIGNIF. BYTE. + 406 | 1 Unidrive4t.asm 387 | Code | 11 | | 2 | 00/0541 : 10 F7 | BPL ADD1 ;LOOP UNTIL DONE. + 407 | 1 Unidrive4t.asm 388 | Code | 11 | | 1 | 00/0543 : 60 | RTS ;RETURN + 408 | 1 Unidrive4t.asm 389 | Code | 11 | | 2 | 00/0544 : 06 C0 | MD1 ASL {$C0} ;CLEAR LSB OF SIGN. + 409 | 1 Unidrive4t.asm 390 | Code | 11 | | 3 | 00/0546 : 20 49 05 | JSR ABSWAP ;ABS VAL OF M1, THEN SWAP WITH M2 + 410 | 1 Unidrive4t.asm 391 | Code | 11 | | 2 | 00/0549 : 24 C6 | ABSWAP BIT {$C6} ;MANT1 NEGATIVE? + 411 | 1 Unidrive4t.asm 392 | Code | 11 | | 2 | 00/054B : 10 05 | BPL ABSWAP1 ;NO, SWAP WITH MANT2 AND RETURN. + 412 | 1 Unidrive4t.asm 393 | Code | 11 | | 3 | 00/054D : 20 B6 05 | JSR FCOMPL ;YES, COMPLEMENT IT. + 413 | 1 Unidrive4t.asm 394 | Code | 11 | | 2 | 00/0550 : E6 C0 | INC {$C0} ;INCR SIGN, COMPLEMENTING LSB. + 414 | 1 Unidrive4t.asm 395 | Code | 11 | | 1 | 00/0552 : 38 | ABSWAP1 SEC ;SET CARRY FOR RETURN TO MUL/DIV. + 415 | 1 Unidrive4t.asm 396 | Code | 11 | | 2 | 00/0553 : A2 04 | SWAP LDX #$4 ;INDEX FOR 4 BYTE SWAP. + 416 | 1 Unidrive4t.asm 397 | Code | 11 | | 2 | 00/0555 : 94 C8 | SWAP1 STY {$C9}-1,X + 417 | 1 Unidrive4t.asm 398 | Code | 11 | | 2 | 00/0557 : B5 C4 | LDA {$C5}-1,X ;SWAP A BYTE OF EXP/MANT1 WITH + 418 | 1 Unidrive4t.asm 399 | Code | 11 | | 2 | 00/0559 : B4 C0 | LDY {$C1}-1,X ;EXP/MANT2 AND LEAVE A COPY OF + 419 | 1 Unidrive4t.asm 400 | Code | 11 | | 2 | 00/055B : 94 C4 | STY {$C5}-1,X ;MANT1 IN E (3 BYTES). E+3 USED + 420 | 1 Unidrive4t.asm 401 | Code | 11 | | 2 | 00/055D : 95 C0 | STA {$C1}-1,X + 421 | 1 Unidrive4t.asm 402 | Code | 11 | | 1 | 00/055F : CA | DEX ;ADVANCE INDEX TO NEXT BYTE + 422 | 1 Unidrive4t.asm 403 | Code | 11 | | 2 | 00/0560 : D0 F3 | BNE SWAP1 ;LOOP UNTIL DONE. + 423 | 1 Unidrive4t.asm 404 | Code | 11 | | 1 | 00/0562 : 60 | RTS ;RETURN + 424 | 1 Unidrive4t.asm 405 | Code | 11 | | 2 | 00/0563 : A9 8E | FLOAT LDA #$8E ;INIT EXP1 TO 14, <--------------- int to fp + 425 | 1 Unidrive4t.asm 406 | Code | 11 | | 2 | 00/0565 : 85 C5 | STA {$C5} ;THEN NORMALIZE TO FLOAT. + 426 | 1 Unidrive4t.asm 407 | Code | 11 | | 2 | 00/0567 : A5 C6 | NORM1 LDA {$C6} ;HIGH-ORDER MANT1 BYTE. + 427 | 1 Unidrive4t.asm 408 | Code | 11 | | 2 | 00/0569 : C9 C0 | CMP #$C0 ;UPPER TWO BITS UNEQUAL? + 428 | 1 Unidrive4t.asm 409 | Code | 11 | | 2 | 00/056B : 30 0C | BMI RTS1 ;YES, RETURN WITH MANT1 NORMALIZED + 429 | 1 Unidrive4t.asm 410 | Code | 11 | | 2 | 00/056D : C6 C5 | DEC {$C5} ;DECREMENT EXP1. + 430 | 1 Unidrive4t.asm 411 | Code | 11 | | 2 | 00/056F : 06 C8 | ASL {$C6}+2 + 431 | 1 Unidrive4t.asm 412 | Code | 11 | | 2 | 00/0571 : 26 C7 | ROL {$C6}+1 ;SHIFT MANT1 (3 BYTES) LEFT. + 432 | 1 Unidrive4t.asm 413 | Code | 11 | | 2 | 00/0573 : 26 C6 | ROL {$C6} + 433 | 1 Unidrive4t.asm 414 | Code | 11 | | 2 | 00/0575 : A5 C5 | NORM LDA {$C5} ;EXP1 ZERO? + 434 | 1 Unidrive4t.asm 415 | Code | 11 | | 2 | 00/0577 : D0 EE | BNE NORM1 ;NO, CONTINUE NORMALIZING. + 435 | 1 Unidrive4t.asm 416 | Code | 11 | | 1 | 00/0579 : 60 | RTS1 RTS ;RETURN. + 436 | 1 Unidrive4t.asm 417 | Code | 11 | | 3 | 00/057A : 20 B6 05 | FSUB JSR FCOMPL ;CMPL MANT1,CLEARS CARRY UNLESS 0 <---- sub + 437 | 1 Unidrive4t.asm 418 | Code | 11 | | 3 | 00/057D : 20 8D 05 | SWPALGN JSR ALGNSWP ;RIGHT SHIFT MANT1 OR SWAP WITH + 438 | 1 Unidrive4t.asm 419 | Code | 11 | | 2 | 00/0580 : A5 C1 | FADD LDA {$C1} ;<------------------------------------- add + 439 | 1 Unidrive4t.asm 420 | Code | 11 | | 2 | 00/0582 : C5 C5 | CMP {$C5} ;COMPARE EXP1 WITH EXP2. + 440 | 1 Unidrive4t.asm 421 | Code | 11 | | 2 | 00/0584 : D0 F7 | BNE SWPALGN ;IF #,SWAP ADDENDS OR ALIGN MANTS. + 441 | 1 Unidrive4t.asm 422 | Code | 11 | | 3 | 00/0586 : 20 37 05 | JSR ADD ;ADD ALIGNED MANTISSAS. + 442 | 1 Unidrive4t.asm 423 | Code | 11 | | 2 | 00/0589 : 50 EA | ADDEND BVC NORM ;NO OVERFLOW, NORMALIZE RESULT. + 443 | 1 Unidrive4t.asm 424 | Code | 11 | | 2 | 00/058B : 70 05 | BVS RTLOG ;OV: SHIFT M1 RIGHT, CARRY INTO SIGN + 444 | 1 Unidrive4t.asm 425 | Code | 11 | | 2 | 00/058D : 90 C4 | ALGNSWP BCC SWAP ;SWAP IF CARRY CLEAR, + 445 | 1 Unidrive4t.asm 426 | Comment | 11 | | 0 | 00/058F | * ELSE SHIFT RIGHT ARITH. + 446 | 1 Unidrive4t.asm 427 | Code | 11 | | 2 | 00/058F : A5 C6 | RTAR LDA {$C6} ;SIGN OF MANT1 INTO CARRY FOR + 447 | 1 Unidrive4t.asm 428 | Code | 11 | | 1 | 00/0591 : 0A | ASL ;RIGHT ARITH SHIFT. + 448 | 1 Unidrive4t.asm 429 | Code | 11 | | 2 | 00/0592 : E6 C5 | RTLOG INC {$C5} ;INCR X1 TO ADJUST FOR RIGHT SHIFT + 449 | 1 Unidrive4t.asm 430 | Code | 11 | | 2 | 00/0594 : F0 75 | BEQ OVFL ;EXP1 OUT OF RANGE. + 450 | 1 Unidrive4t.asm 431 | Code | 11 | | 2 | 00/0596 : A2 FA | RTLOG1 LDX #$FA ;INDEX FOR 6:BYTE RIGHT SHIFT. + 451 | 1 Unidrive4t.asm 432 | Code | 11 | | 2 | 00/0598 : 76 CC | ROR1 ROR {$C9}+3,X + 452 | 1 Unidrive4t.asm 433 | Code | 11 | | 1 | 00/059A : E8 | INX ;NEXT BYTE OF SHIFT. + 453 | 1 Unidrive4t.asm 434 | Code | 11 | | 2 | 00/059B : D0 FB | BNE ROR1 ;LOOP UNTIL DONE. + 454 | 1 Unidrive4t.asm 435 | Code | 11 | | 1 | 00/059D : 60 | RTS ;RETURN. + 455 | 1 Unidrive4t.asm 436 | Code | 11 | | 3 | 00/059E : 20 44 05 | FMUL JSR MD1 ;ABS VAL OF MANT1, MANT2 <-------------- mul + 456 | 1 Unidrive4t.asm 437 | Code | 11 | | 2 | 00/05A1 : 65 C5 | ADC {$C5} ;ADD EXP1 TO EXP2 FOR PRODUCT EXP + 457 | 1 Unidrive4t.asm 438 | Code | 11 | | 3 | 00/05A3 : 20 F4 05 | JSR MD2 ;CHECK PROD. EXP AND PREP. FOR MUL + 458 | 1 Unidrive4t.asm 439 | Code | 11 | | 1 | 00/05A6 : 18 | CLC ;CLEAR CARRY FOR FIRST BIT. + 459 | 1 Unidrive4t.asm 440 | Code | 11 | | 3 | 00/05A7 : 20 96 05 | MUL1 JSR RTLOG1 ;M1 AND E RIGHT (PROD AND MPLIER) + 460 | 1 Unidrive4t.asm 441 | Code | 11 | | 2 | 00/05AA : 90 03 | BCC MUL2 ;IF CARRY CLEAR, SKIP PARTIAL PROD + 461 | 1 Unidrive4t.asm 442 | Code | 11 | | 3 | 00/05AC : 20 37 05 | JSR ADD ;ADD MULTIPLICAND TO PRODUCT. + 462 | 1 Unidrive4t.asm 443 | Code | 11 | | 1 | 00/05AF : 88 | MUL2 DEY ;NEXT MUL ITERATION. + 463 | 1 Unidrive4t.asm 444 | Code | 11 | | 2 | 00/05B0 : 10 F5 | BPL MUL1 ;LOOP UNTIL DONE. + 464 | 1 Unidrive4t.asm 445 | Code | 11 | | 2 | 00/05B2 : 46 C0 | MDEND LSR {$C0} ;TEST SIGN LSB. + 465 | 1 Unidrive4t.asm 446 | Code | 11 | | 2 | 00/05B4 : 90 BF | NORMX BCC NORM ;IF EVEN,NORMALIZE PROD,ELSE COMP + 466 | 1 Unidrive4t.asm 447 | Code | 11 | | 1 | 00/05B6 : 38 | FCOMPL SEC ;SET CARRY FOR SUBTRACT. <--------------- not + 467 | 1 Unidrive4t.asm 448 | Code | 11 | | 2 | 00/05B7 : A2 03 | LDX #$3 ;INDEX FOR 3 BYTE SUBTRACT. + 468 | 1 Unidrive4t.asm 449 | Code | 11 | | 2 | 00/05B9 : A9 00 | COMPL1 LDA #$0 ;CLEAR A. + 469 | 1 Unidrive4t.asm 450 | Code | 11 | | 2 | 00/05BB : F5 C5 | SBC {$C5},X ;SUBTRACT BYTE OF EXP1. + 470 | 1 Unidrive4t.asm 451 | Code | 11 | | 2 | 00/05BD : 95 C5 | STA {$C5},X ;RESTORE IT. + 471 | 1 Unidrive4t.asm 452 | Code | 11 | | 1 | 00/05BF : CA | DEX ;NEXT MORE SIGNIFICANT BYTE. + 472 | 1 Unidrive4t.asm 453 | Code | 11 | | 2 | 00/05C0 : D0 F7 | BNE COMPL1 ;LOOP UNTIL DONE. + 473 | 1 Unidrive4t.asm 454 | Code | 11 | | 2 | 00/05C2 : F0 C5 | BEQ ADDEND ;NORMALIZE (OR SHIFT RT IF OVFL). + 474 | 1 Unidrive4t.asm 455 | Code | 11 | | 3 | 00/05C4 : 20 44 05 | FDIV JSR MD1 ;TAKE ABS VAL OF MANT1, MANT2. <--------- div + 475 | 1 Unidrive4t.asm 456 | Code | 11 | | 2 | 00/05C7 : E5 C5 | SBC {$C5} ;SUBTRACT EXP1 FROM EXP2. + 476 | 1 Unidrive4t.asm 457 | Code | 11 | | 3 | 00/05C9 : 20 F4 05 | JSR MD2 ;SAVE AS QUOTIENT EXP. + 477 | 1 Unidrive4t.asm 458 | Code | 11 | | 1 | 00/05CC : 38 | DIV1 SEC ;SET CARRY FOR SUBTRACT. + 478 | 1 Unidrive4t.asm 459 | Code | 11 | | 2 | 00/05CD : A2 02 | LDX #$2 ;INDEX FOR 3-BYTE SUBTRACTION. + 479 | 1 Unidrive4t.asm 460 | Code | 11 | | 2 | 00/05CF : B5 C2 | DIV2 LDA {$C2},X + 480 | 1 Unidrive4t.asm 461 | Code | 11 | | 2 | 00/05D1 : F5 C9 | SBC {$C9},X ;SUBTRACT A BYTE OF E FROM MANT2. + 481 | 1 Unidrive4t.asm 462 | Code | 11 | | 1 | 00/05D3 : 48 | PHA ;SAVE ON STACK. + 482 | 1 Unidrive4t.asm 463 | Code | 11 | | 1 | 00/05D4 : CA | DEX ;NEXT MORE SIGNIFICANT BYTE. + 483 | 1 Unidrive4t.asm 464 | Code | 11 | | 2 | 00/05D5 : 10 F8 | BPL DIV2 ;LOOP UNTIL DONE. + 484 | 1 Unidrive4t.asm 465 | Code | 11 | | 2 | 00/05D7 : A2 FD | LDX #$FD ;INDEX FOR 3-BYTE CONDITIONAL MOVE + 485 | 1 Unidrive4t.asm 466 | Code | 11 | | 1 | 00/05D9 : 68 | DIV3 PLA ;PULL BYTE OF DIFFERENCE OFF STACK + 486 | 1 Unidrive4t.asm 467 | Code | 11 | | 2 | 00/05DA : 90 02 | BCC DIV4 ;IF M2FxE3w2o3S{@eGMnaEeq2(o=8`a&`9aWl-q* z3q*?;_BuCwkl<_p>-y}d00a>V3Xvc>0I29h0=jUdtlOjThcJzy`51!OveIz*)gRNCC)jaSiiyb_E&%)L{qG!NA$L;lf(|Mul5{7cnb%{akAR zW-@}9h6qt3Fq0K1ny`p{|1%#6Z~%nXD8Ghj+Uxb#5k!2|$@*>n~F literal 0 HcmV?d00001 diff --git a/AppleII/Integer adc 1 Byte/Unicalc_Output.txt b/AppleII/Integer adc 1 Byte/Unicalc_Output.txt new file mode 100644 index 0000000..8c9295b --- /dev/null +++ b/AppleII/Integer adc 1 Byte/Unicalc_Output.txt @@ -0,0 +1,415 @@ +------+-----------------------+-------------+----+---------+------+-----------------------+------------------------------------------------------------------- + Line | # File Line | Line Type | MX | Reloc | Size | Address Object Code | Source Code +------+-----------------------+-------------+----+---------+------+-----------------------+------------------------------------------------------------------- + 1 | 1 Unicalc.asm 1 | Comment | 11 | | 0 | 00/8000 | * @com.wudsn.ide.asm.hardware=APPLE2 + 2 | 1 Unicalc.asm 2 | Comment | 11 | | 0 | 00/8000 | * Protocol Converter Call + 3 | 1 Unicalc.asm 3 | Directive | 11 | | 0 | 00/8000 | XC + 4 | 1 Unicalc.asm 4 | Equivalence | 11 | | 0 | 00/8000 | ZPTempL equ $0006 ;Temporary zero page storage + 5 | 1 Unicalc.asm 5 | Equivalence | 11 | | 0 | 00/8000 | ZPTempH equ $0007 + 6 | 1 Unicalc.asm 6 | Comment | 11 | | 0 | 00/8000 | *** Pointers *** + 7 | 1 Unicalc.asm 7 | Equivalence | 11 | | 0 | 00/8000 | LowMain equ $000A + 8 | 1 Unicalc.asm 8 | Equivalence | 11 | | 0 | 00/8000 | HiMain equ $000B + 9 | 1 Unicalc.asm 9 | Comment | 11 | | 0 | 00/8000 | *** Monitor routines *** + 10 | 1 Unicalc.asm 10 | Equivalence | 11 | | 0 | 00/8000 | COut equ $FDED ;Console output ASCII + 11 | 1 Unicalc.asm 11 | Equivalence | 11 | | 0 | 00/8000 | COUT1 equ $FDF0 ;Output to screen + 12 | 1 Unicalc.asm 12 | Equivalence | 11 | | 0 | 00/8000 | CROut equ $FD8E ;Carriage return + 13 | 1 Unicalc.asm 13 | Equivalence | 11 | | 0 | 00/8000 | PRbyte equ $FDDA ;Print byte in hex + 14 | 1 Unicalc.asm 14 | Equivalence | 11 | | 0 | 00/8000 | PRBL2 equ $F94A ;Print many spaces + 15 | 1 Unicalc.asm 15 | Equivalence | 11 | | 0 | 00/8000 | KEYIN equ $FD1B ;Waits for keypress + 16 | 1 Unicalc.asm 16 | Comment | 11 | | 0 | 00/8000 | ** Command Code ** + 17 | 1 Unicalc.asm 17 | Equivalence | 11 | | 0 | 00/8000 | StatusCmd equ 0 + 18 | 1 Unicalc.asm 18 | Comment | 11 | | 0 | 00/8000 | ** Status Code ** + 19 | 1 Unicalc.asm 19 | Equivalence | 11 | | 0 | 00/8000 | StatusDIB equ 3 + 20 | 1 Unicalc.asm 20 | Equivalence | 11 | | 0 | 00/8000 | StatusUNI equ 5 + 21 | 1 Unicalc.asm 21 | Comment | 11 | | 0 | 00/8000 | * + 22 | 1 Unicalc.asm 22 | Equivalence | 11 | | 0 | 00/8000 | ControlCmd equ 4 + 23 | 1 Unicalc.asm 23 | Comment | 11 | | 0 | 00/8000 | ** Control Codes ** + 24 | 1 Unicalc.asm 24 | Equivalence | 11 | | 0 | 00/8000 | Eject equ 4 + 25 | 1 Unicalc.asm 25 | Equivalence | 11 | | 0 | 00/8000 | Run equ 5 + 26 | 1 Unicalc.asm 26 | Equivalence | 11 | | 0 | 00/8000 | SetDWLoad equ 6 + 27 | 1 Unicalc.asm 27 | Equivalence | 11 | | 0 | 00/8000 | DWLoad equ 7 + 28 | 1 Unicalc.asm 28 | Comment | 11 | | 0 | 00/8000 | * + 29 | 1 Unicalc.asm 29 | Directive | 11 | | 0 | 00/8000 | org $8000 + 30 | 1 Unicalc.asm 30 | Comment | 11 | | 0 | 00/8000 | ***************************************************** + 31 | 1 Unicalc.asm 31 | Comment | 11 | | 0 | 00/8000 | * Presentation message ************** + 32 | 1 Unicalc.asm 32 | Comment | 11 | | 0 | 00/8000 | * + 33 | 1 Unicalc.asm 33 | Code | 11 | | 2 | 00/8000 : A2 00 | ldx #0 + 34 | 1 Unicalc.asm 34 | Empty | 11 | | 0 | 00/8002 | ozunid_1 + 35 | 1 Unicalc.asm 34 | Equivalence | 11 | | 0 | 00/8002 | LOOP equ ozunid_1 + 36 | 1 Unicalc.asm 35 | Code | 11 | | 3 | 00/8002 : BD 0D 80 | lda DATA,x + 37 | 1 Unicalc.asm 36 | Code | 11 | | 2 | 00/8005 : F0 27 | beq ME2 + 38 | 1 Unicalc.asm 37 | Code | 11 | | 3 | 00/8007 : 20 ED FD | jsr {$FDED} + 39 | 1 Unicalc.asm 38 | Code | 11 | | 1 | 00/800A : E8 | inx + 40 | 1 Unicalc.asm 39 | Code | 11 | | 2 | 00/800B : D0 F5 | bne {ozunid_1} + 41 | 1 Unicalc.asm 40 | Comment | 11 | | 0 | 00/800D | * + 42 | 1 Unicalc.asm 41 | Data | 11 | | 31 | 00/800D : 55 4E 49 44 | DATA asc 'UNIDISK 3.5 UTILITY BY R. GRECO' + | | | | | | 49 53 4B 20 | + | | | | | | 33 2E 35 20 | + | | | | | | 55 54 49 4C | + | | | | | | 49 54 59 20 | + | | | | | | 42 59 20 52 | + | | | | | | 2E 20 47 52 | + | | | | | | 45 43 4F | + 43 | 1 Unicalc.asm 42 | Data | 11 | | 2 | 00/802C : 8D 00 | dfb $8D,0 ; Inverse mode on + 44 | 1 Unicalc.asm 43 | Empty | 11 | | 0 | 00/802E | + 45 | 1 Unicalc.asm 44 | Code | 11 | | 3 | 00/802E : 20 8E FD | ME2 jsr {$FD8E} + 46 | 1 Unicalc.asm 45 | Code | 11 | | 3 | 00/8031 : 20 8E FD | jsr {$FD8E} + 47 | 1 Unicalc.asm 46 | Empty | 11 | | 0 | 00/8034 | + 48 | 1 Unicalc.asm 47 | Code | 11 | | 2 | 00/8034 : A2 00 | ldx #0 + 49 | 1 Unicalc.asm 48 | Empty | 11 | | 0 | 00/8036 | ozunid_2 + 50 | 1 Unicalc.asm 48 | Equivalence | 11 | | 0 | 00/8036 | LOOP2 equ ozunid_2 + 51 | 1 Unicalc.asm 49 | Code | 11 | | 3 | 00/8036 : BD 43 80 | lda DATA2,x + 52 | 1 Unicalc.asm 50 | Code | 11 | | 2 | 00/8039 : F0 18 | beq START + 53 | 1 Unicalc.asm 51 | Code | 11 | | 2 | 00/803B : 09 80 | ora #$80 + 54 | 1 Unicalc.asm 52 | Code | 11 | | 3 | 00/803D : 20 ED FD | jsr {$FDED} + 55 | 1 Unicalc.asm 53 | Code | 11 | | 1 | 00/8040 : E8 | inx + 56 | 1 Unicalc.asm 54 | Code | 11 | | 2 | 00/8041 : D0 F3 | bne {ozunid_2} + 57 | 1 Unicalc.asm 55 | Comment | 11 | | 0 | 00/8043 | * + 58 | 1 Unicalc.asm 56 | Data | 11 | | 14 | 00/8043 : 41 20 20 20 | DATA2 asc 'A X Y P' + | | | | | | 20 58 20 20 | + | | | | | | 59 20 20 20 | + | | | | | | 20 50 | + 59 | 1 Unicalc.asm 57 | Data | 11 | | 2 | 00/8051 : 8D 00 | dfb $8D,0 ; Inverse mode on + 60 | 1 Unicalc.asm 58 | Comment | 11 | | 0 | 00/8053 | ***************************************************** + 61 | 1 Unicalc.asm 59 | Comment | 11 | | 0 | 00/8053 | * + 62 | 1 Unicalc.asm 60 | Comment | 11 | | 0 | 00/8053 | * Find a Protocol Converter in one of the slots. + 63 | 1 Unicalc.asm 61 | Code | 11 | | 3 | 00/8053 : 20 D1 80 | START jsr {ozunid_6} + 64 | 1 Unicalc.asm 62 | Code | 11 | | 2 | 00/8056 : B0 1C | bcs {ozunid_3} + 65 | 1 Unicalc.asm 63 | Comment | 11 | | 0 | 00/8058 | * + 66 | 1 Unicalc.asm 64 | Comment | 11 | | 0 | 00/8058 | * Now make the DIB call to the first guy + 67 | 1 Unicalc.asm 65 | Comment | 11 | | 0 | 00/8058 | * + 68 | 1 Unicalc.asm 66 | Comment | 11 | | 0 | 00/8058 | * jsr Dispatch + 69 | 1 Unicalc.asm 67 | Comment | 11 | | 0 | 00/8058 | * dfb StatusCmd + 70 | 1 Unicalc.asm 68 | Comment | 11 | | 0 | 00/8058 | * dw DParmsDIB + 71 | 1 Unicalc.asm 69 | Comment | 11 | | 0 | 00/8058 | * bcs Error + 72 | 1 Unicalc.asm 70 | Comment | 11 | | 0 | 00/8058 | * + 73 | 1 Unicalc.asm 71 | Comment | 11 | | 0 | 00/8058 | * Got the DIB; now print the name string + 74 | 1 Unicalc.asm 72 | Comment | 11 | | 0 | 00/8058 | * + 75 | 1 Unicalc.asm 73 | Comment | 11 | | 0 | 00/8058 | * ldx #0 + 76 | 1 Unicalc.asm 74 | Comment | 11 | | 0 | 00/8058 | * morechars equ * + 77 | 1 Unicalc.asm 75 | Comment | 11 | | 0 | 00/8058 | * lda DIBName,x + 78 | 1 Unicalc.asm 76 | Comment | 11 | | 0 | 00/8058 | * ora #$80 ;COut wants high Bit set + 79 | 1 Unicalc.asm 77 | Comment | 11 | | 0 | 00/8058 | * jsr COut ; ASCII + 80 | 1 Unicalc.asm 78 | Comment | 11 | | 0 | 00/8058 | * inx + 81 | 1 Unicalc.asm 79 | Comment | 11 | | 0 | 00/8058 | * cpx DIBNameLen + 82 | 1 Unicalc.asm 80 | Comment | 11 | | 0 | 00/8058 | * bne morechars + 83 | 1 Unicalc.asm 81 | Comment | 11 | | 0 | 00/8058 | ************************************* + 84 | 1 Unicalc.asm 82 | Comment | 11 | | 0 | 00/8058 | * ldx #02 ; Set 2 space + 85 | 1 Unicalc.asm 83 | Comment | 11 | | 0 | 00/8058 | * jsr PRBL2 + 86 | 1 Unicalc.asm 84 | Comment | 11 | | 0 | 00/8058 | ** Print Type *********************** + 87 | 1 Unicalc.asm 85 | Comment | 11 | | 0 | 00/8058 | * lda DIBType + 88 | 1 Unicalc.asm 86 | Comment | 11 | | 0 | 00/8058 | * jsr PRbyte ; HEX form + 89 | 1 Unicalc.asm 87 | Comment | 11 | | 0 | 00/8058 | ************************************* + 90 | 1 Unicalc.asm 88 | Comment | 11 | | 0 | 00/8058 | * ldx #02 ; Set 2 space + 91 | 1 Unicalc.asm 89 | Comment | 11 | | 0 | 00/8058 | * jsr PRBL2 + 92 | 1 Unicalc.asm 90 | Comment | 11 | | 0 | 00/8058 | ** Print Firmware version *********** + 93 | 1 Unicalc.asm 91 | Comment | 11 | | 0 | 00/8058 | * ldx #0 + 94 | 1 Unicalc.asm 92 | Comment | 11 | | 0 | 00/8058 | * morechars2 equ * + 95 | 1 Unicalc.asm 93 | Comment | 11 | | 0 | 00/8058 | * lda DIBVersion,x + 96 | 1 Unicalc.asm 94 | Comment | 11 | | 0 | 00/8058 | * jsr PRbyte ; HEX form + 97 | 1 Unicalc.asm 95 | Comment | 11 | | 0 | 00/8058 | * inx + 98 | 1 Unicalc.asm 96 | Comment | 11 | | 0 | 00/8058 | * cpx #$02 ; 2 Byte + 99 | 1 Unicalc.asm 97 | Comment | 11 | | 0 | 00/8058 | * bne morechars2 + 100 | 1 Unicalc.asm 98 | Comment | 11 | | 0 | 00/8058 | * jsr COut + 101 | 1 Unicalc.asm 99 | Comment | 11 | | 0 | 00/8058 | ************************************** + 102 | 1 Unicalc.asm 100 | Code | 11 | | 3 | 00/8058 : 20 8E FD | jsr {$FD8E} + 103 | 1 Unicalc.asm 101 | Comment | 11 | | 0 | 00/805B | ** Wait keypress to continue ** + 104 | 1 Unicalc.asm 102 | Comment | 11 | | 0 | 00/805B | * + 105 | 1 Unicalc.asm 103 | Code | 11 | | 3 | 00/805B : 20 1B FD | jsr {$FD1B} + 106 | 1 Unicalc.asm 104 | Comment | 11 | | 0 | 00/805E | * + 107 | 1 Unicalc.asm 105 | Comment | 11 | | 0 | 00/805E | *** Eject *** + 108 | 1 Unicalc.asm 106 | Code | 11 | | 3 | 00/805E : 20 06 81 | jsr {ozunid_11} + 109 | 1 Unicalc.asm 107 | Data | 11 | | 1 | 00/8061 : 04 | dfb {4} + 110 | 1 Unicalc.asm 108 | Data | 11 | | 2 | 00/8062 : 43 81 | dw {ozunid_19} + 111 | 1 Unicalc.asm 109 | Comment | 11 | | 0 | 00/8064 | *** Set start HiMain Memory Pointers *** + 112 | 1 Unicalc.asm 110 | Comment | 11 | | 0 | 00/8064 | * lda #$20 ; Hi Byte start (//c ram) + 113 | 1 Unicalc.asm 111 | Comment | 11 | | 0 | 00/8064 | * sta HiMain ; HiMain=$20 set + 114 | 1 Unicalc.asm 112 | Comment | 11 | | 0 | 00/8064 | *** Set Address *** + 115 | 1 Unicalc.asm 113 | Code | 11 | | 3 | 00/8064 : 20 06 81 | jsr {ozunid_11} + 116 | 1 Unicalc.asm 114 | Data | 11 | | 1 | 00/8067 : 04 | dfb {4} + 117 | 1 Unicalc.asm 115 | Data | 11 | | 2 | 00/8068 : 34 81 | dw {ozunid_16} + 118 | 1 Unicalc.asm 116 | Comment | 11 | | 0 | 00/806A | *** Download *** + 119 | 1 Unicalc.asm 117 | Code | 11 | | 3 | 00/806A : 20 06 81 | jsr {ozunid_11} + 120 | 1 Unicalc.asm 118 | Data | 11 | | 1 | 00/806D : 04 | dfb {4} + 121 | 1 Unicalc.asm 119 | Data | 11 | | 2 | 00/806E : 39 81 | dw {ozunid_17} + 122 | 1 Unicalc.asm 120 | Comment | 11 | | 0 | 00/8070 | * + 123 | 1 Unicalc.asm 121 | Code | 11 | | 3 | 00/8070 : 20 96 80 | jsr EXEC ; Jump the Error routine + 124 | 1 Unicalc.asm 122 | Code | 11 | | 1 | 00/8073 : 60 | rts + 125 | 1 Unicalc.asm 123 | Comment | 11 | | 0 | 00/8074 | ********************************************* + 126 | 1 Unicalc.asm 124 | Empty | 11 | | 0 | 00/8074 | ozunid_3 + 127 | 1 Unicalc.asm 124 | Equivalence | 11 | | 0 | 00/8074 | Error equ ozunid_3 + 128 | 1 Unicalc.asm 125 | Comment | 11 | | 0 | 00/8074 | * + 129 | 1 Unicalc.asm 126 | Comment | 11 | | 0 | 00/8074 | * There's either no PC around, or there was no give message + 130 | 1 Unicalc.asm 127 | Comment | 11 | | 0 | 00/8074 | * + 131 | 1 Unicalc.asm 128 | Code | 11 | | 2 | 00/8074 : A2 00 | ldx #0 + 132 | 1 Unicalc.asm 129 | Empty | 11 | | 0 | 00/8076 | ozunid_4 + 133 | 1 Unicalc.asm 129 | Equivalence | 11 | | 0 | 00/8076 | err1 equ ozunid_4 + 134 | 1 Unicalc.asm 130 | Code | 11 | | 3 | 00/8076 : BD 82 80 | lda Message,x + 135 | 1 Unicalc.asm 131 | Code | 11 | | 2 | 00/8079 : F0 06 | beq {ozunid_5} + 136 | 1 Unicalc.asm 132 | Code | 11 | | 3 | 00/807B : 20 ED FD | jsr {$FDED} + 137 | 1 Unicalc.asm 133 | Code | 11 | | 1 | 00/807E : E8 | inx + 138 | 1 Unicalc.asm 134 | Code | 11 | | 2 | 00/807F : D0 F5 | bne {ozunid_4} + 139 | 1 Unicalc.asm 135 | Comment | 11 | | 0 | 00/8081 | * + 140 | 1 Unicalc.asm 136 | Empty | 11 | | 0 | 00/8081 | ozunid_5 + 141 | 1 Unicalc.asm 136 | Equivalence | 11 | | 0 | 00/8081 | errout equ ozunid_5 + 142 | 1 Unicalc.asm 137 | Code | 11 | | 1 | 00/8081 : 60 | rts + 143 | 1 Unicalc.asm 138 | Comment | 11 | | 0 | 00/8082 | * + 144 | 1 Unicalc.asm 139 | Data | 11 | | 18 | 00/8082 : 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 | + 145 | 1 Unicalc.asm 140 | Data | 11 | | 2 | 00/8094 : 8D 00 | dfb $8D,0 + 146 | 1 Unicalc.asm 141 | Comment | 11 | | 0 | 00/8096 | ********************************************* + 147 | 1 Unicalc.asm 142 | Empty | 11 | | 0 | 00/8096 | + 148 | 1 Unicalc.asm 143 | Comment | 11 | | 0 | 00/8096 | *** Set and Reset LoMain Memory Counter *** + 149 | 1 Unicalc.asm 144 | Comment | 11 | | 0 | 00/8096 | * RESET ldx #$FF ;Lo Byte start One more before $00 (//c ram) + 150 | 1 Unicalc.asm 145 | Comment | 11 | | 0 | 00/8096 | * clc + 151 | 1 Unicalc.asm 146 | Comment | 11 | | 0 | 00/8096 | * ldy Y_reg ; 1 time $DF --> Y + 152 | 1 Unicalc.asm 147 | Comment | 11 | | 0 | 00/8096 | * iny ; Y+ --> $FF + 153 | 1 Unicalc.asm 148 | Comment | 11 | | 0 | 00/8096 | * sty Y_reg ; Y --> Y_reg Uni=$FF + 154 | 1 Unicalc.asm 149 | Comment | 11 | | 0 | 00/8096 | *** Execute *** + 155 | 1 Unicalc.asm 150 | Comment | 11 | | 0 | 00/8096 | * EXEC inx + 156 | 1 Unicalc.asm 151 | Comment | 11 | | 0 | 00/8096 | * stx LowMain ; 1 time set LowMain=$00 + 157 | 1 Unicalc.asm 152 | Comment | 11 | | 0 | 00/8096 | * stx X_reg + 158 | 1 Unicalc.asm 153 | Code | 11 | | 3 | 00/8096 : 20 06 81 | EXEC jsr {ozunid_11} + 159 | 1 Unicalc.asm 154 | Data | 11 | | 1 | 00/8099 : 04 | dfb {4} + 160 | 1 Unicalc.asm 155 | Data | 11 | | 2 | 00/809A : 3E 81 | dw {ozunid_18} + 161 | 1 Unicalc.asm 156 | Code | 11 | | 3 | 00/809C : 20 06 81 | READ jsr {ozunid_11} + 162 | 1 Unicalc.asm 157 | Data | 11 | | 1 | 00/809F : 00 | dfb {0} + 163 | 1 Unicalc.asm 158 | Data | 11 | | 2 | 00/80A0 : 09 81 | dw {ozunid_12} + 164 | 1 Unicalc.asm 159 | Code | 11 | | 2 | 00/80A2 : B0 D0 | bcs {ozunid_3} + 165 | 1 Unicalc.asm 160 | Comment | 11 | | 0 | 00/80A4 | * + 166 | 1 Unicalc.asm 161 | Comment | 11 | | 0 | 00/80A4 | **** Screen Output **** + 167 | 1 Unicalc.asm 162 | Comment | 11 | | 0 | 00/80A4 | * + 168 | 1 Unicalc.asm 163 | Comment | 11 | | 0 | 00/80A4 | *** Accumulator *** + 169 | 1 Unicalc.asm 164 | Code | 11 | | 3 | 00/80A4 : AD 2F 81 | lda UNIAcc_reg + 170 | 1 Unicalc.asm 165 | Code | 11 | | 3 | 00/80A7 : 20 DA FD | jsr {$FDDA} + 171 | 1 Unicalc.asm 166 | Code | 11 | | 2 | 00/80AA : A2 03 | ldx #03 ; Set 3 space + 172 | 1 Unicalc.asm 167 | Code | 11 | | 3 | 00/80AC : 20 4A F9 | jsr {$F94A} + 173 | 1 Unicalc.asm 168 | Comment | 11 | | 0 | 00/80AF | *** X Register *** + 174 | 1 Unicalc.asm 169 | Code | 11 | | 3 | 00/80AF : AD 30 81 | lda UNIX_reg + 175 | 1 Unicalc.asm 170 | Code | 11 | | 3 | 00/80B2 : 20 DA FD | jsr {$FDDA} + 176 | 1 Unicalc.asm 171 | Code | 11 | | 2 | 00/80B5 : A2 01 | ldx #01 ; Set one space + 177 | 1 Unicalc.asm 172 | Code | 11 | | 3 | 00/80B7 : 20 4A F9 | jsr {$F94A} + 178 | 1 Unicalc.asm 173 | Comment | 11 | | 0 | 00/80BA | *** Y Register *** + 179 | 1 Unicalc.asm 174 | Code | 11 | | 3 | 00/80BA : AD 31 81 | lda UNIY_reg + 180 | 1 Unicalc.asm 175 | Code | 11 | | 3 | 00/80BD : 20 DA FD | jsr {$FDDA} + 181 | 1 Unicalc.asm 176 | Code | 11 | | 2 | 00/80C0 : A2 03 | ldx #03 ; Set one space + 182 | 1 Unicalc.asm 177 | Code | 11 | | 3 | 00/80C2 : 20 4A F9 | jsr {$F94A} + 183 | 1 Unicalc.asm 178 | Comment | 11 | | 0 | 00/80C5 | *** Process Status *** + 184 | 1 Unicalc.asm 179 | Code | 11 | | 3 | 00/80C5 : AD 32 81 | lda UNIP_val + 185 | 1 Unicalc.asm 180 | Code | 11 | | 3 | 00/80C8 : 20 DA FD | jsr {$FDDA} + 186 | 1 Unicalc.asm 181 | Code | 11 | | 2 | 00/80CB : A2 05 | ldx #05 ; Set five space + 187 | 1 Unicalc.asm 182 | Code | 11 | | 3 | 00/80CD : 20 4A F9 | jsr {$F94A} + 188 | 1 Unicalc.asm 183 | Comment | 11 | | 0 | 00/80D0 | ** //c Memory store adress ** + 189 | 1 Unicalc.asm 184 | Comment | 11 | | 0 | 00/80D0 | * lda HiMain + 190 | 1 Unicalc.asm 185 | Comment | 11 | | 0 | 00/80D0 | * jsr PRbyte + 191 | 1 Unicalc.asm 186 | Comment | 11 | | 0 | 00/80D0 | * lda LowMain + 192 | 1 Unicalc.asm 187 | Comment | 11 | | 0 | 00/80D0 | * jsr PRbyte + 193 | 1 Unicalc.asm 188 | Comment | 11 | | 0 | 00/80D0 | * jsr CROut + 194 | 1 Unicalc.asm 189 | Comment | 11 | | 0 | 00/80D0 | **** Store in //c Main Memory **** + 195 | 1 Unicalc.asm 190 | Comment | 11 | | 0 | 00/80D0 | * ldx X_reg + 196 | 1 Unicalc.asm 191 | Comment | 11 | | 0 | 00/80D0 | * lda UNIAcc_reg ;#$FB Test + 197 | 1 Unicalc.asm 192 | Comment | 11 | | 0 | 00/80D0 | * ldy #0 + 198 | 1 Unicalc.asm 193 | Comment | 11 | | 0 | 00/80D0 | * sta (LowMain),y + 199 | 1 Unicalc.asm 194 | Comment | 11 | | 0 | 00/80D0 | * cpx UNIL_End + 200 | 1 Unicalc.asm 195 | Comment | 11 | | 0 | 00/80D0 | * bne EXEC + 201 | 1 Unicalc.asm 196 | Comment | 11 | | 0 | 00/80D0 | * UNIL_End dfb $FF ; Lo Byte stop (Unidisk) - $C0 for zero page + 202 | 1 Unicalc.asm 197 | Comment | 11 | | 0 | 00/80D0 | *** Increment HiMain *** + 203 | 1 Unicalc.asm 198 | Comment | 11 | | 0 | 00/80D0 | * inc HiMain + 204 | 1 Unicalc.asm 199 | Comment | 11 | | 0 | 00/80D0 | * ldy Y_reg + 205 | 1 Unicalc.asm 200 | Comment | 11 | | 0 | 00/80D0 | * cpy UNIH_End + 206 | 1 Unicalc.asm 201 | Comment | 11 | | 0 | 00/80D0 | * bne RESET + 207 | 1 Unicalc.asm 202 | Comment | 11 | | 0 | 00/80D0 | * UNIH_End dfb $FF ; Hi Byte stop (Unidisk) - $00 for zero page + 208 | 1 Unicalc.asm 203 | Comment | 11 | | 0 | 00/80D0 | * + 209 | 1 Unicalc.asm 204 | Code | 11 | | 1 | 00/80D0 : 60 | rts + 210 | 1 Unicalc.asm 205 | Empty | 11 | | 0 | 00/80D1 | + 211 | 1 Unicalc.asm 206 | Comment | 11 | | 0 | 00/80D1 | ****************************************************** + 212 | 1 Unicalc.asm 207 | Empty | 11 | | 0 | 00/80D1 | ozunid_6 + 213 | 1 Unicalc.asm 207 | Equivalence | 11 | | 0 | 00/80D1 | FindPC equ ozunid_6 + 214 | 1 Unicalc.asm 208 | Comment | 11 | | 0 | 00/80D1 | * + 215 | 1 Unicalc.asm 209 | Comment | 11 | | 0 | 00/80D1 | * Search slot 7 to slot 1 looking for signature bytes + 216 | 1 Unicalc.asm 210 | Comment | 11 | | 0 | 00/80D1 | * + 217 | 1 Unicalc.asm 211 | Code | 11 | | 2 | 00/80D1 : A2 07 | ldx #7 ;Do for seven slots + 218 | 1 Unicalc.asm 212 | Code | 11 | | 2 | 00/80D3 : A9 C7 | lda #$C7 + 219 | 1 Unicalc.asm 213 | Code | 11 | | 2 | 00/80D5 : 85 07 | sta {$0007} + 220 | 1 Unicalc.asm 214 | Code | 11 | | 2 | 00/80D7 : A9 00 | lda #$00 + 221 | 1 Unicalc.asm 215 | Code | 11 | | 2 | 00/80D9 : 85 06 | sta {$0006} + 222 | 1 Unicalc.asm 216 | Comment | 11 | | 0 | 00/80DB | * + 223 | 1 Unicalc.asm 217 | Empty | 11 | | 0 | 00/80DB | ozunid_7 + 224 | 1 Unicalc.asm 217 | Equivalence | 11 | | 0 | 00/80DB | newslot equ ozunid_7 + 225 | 1 Unicalc.asm 218 | Code | 11 | | 2 | 00/80DB : A0 07 | ldy #7 + 226 | 1 Unicalc.asm 219 | Comment | 11 | | 0 | 00/80DD | * + 227 | 1 Unicalc.asm 220 | Empty | 11 | | 0 | 00/80DD | ozunid_8 + 228 | 1 Unicalc.asm 220 | Equivalence | 11 | | 0 | 00/80DD | again equ ozunid_8 + 229 | 1 Unicalc.asm 221 | Code | 11 | | 2 | 00/80DD : B1 06 | lda ({$0006}),y + 230 | 1 Unicalc.asm 222 | Code | 11 | | 3 | 00/80DF : D9 FE 80 | cmp sigtab,y ;One for byte signature + 231 | 1 Unicalc.asm 223 | Code | 11 | | 2 | 00/80E2 : F0 07 | beq {ozunid_9} ;Found one signature byte + 232 | 1 Unicalc.asm 224 | Code | 11 | | 2 | 00/80E4 : C6 07 | dec {$0007} + 233 | 1 Unicalc.asm 225 | Code | 11 | | 1 | 00/80E6 : CA | dex + 234 | 1 Unicalc.asm 226 | Code | 11 | | 2 | 00/80E7 : D0 F2 | bne {ozunid_7} + 235 | 1 Unicalc.asm 227 | Comment | 11 | | 0 | 00/80E9 | * + 236 | 1 Unicalc.asm 228 | Comment | 11 | | 0 | 00/80E9 | * if we get here, no PC find + 237 | 1 Unicalc.asm 229 | Code | 11 | | 1 | 00/80E9 : 38 | sec + 238 | 1 Unicalc.asm 230 | Code | 11 | | 1 | 00/80EA : 60 | rts + 239 | 1 Unicalc.asm 231 | Comment | 11 | | 0 | 00/80EB | * + 240 | 1 Unicalc.asm 232 | Comment | 11 | | 0 | 00/80EB | * if we get here, no byte find on PC + 241 | 1 Unicalc.asm 233 | Empty | 11 | | 0 | 00/80EB | ozunid_9 + 242 | 1 Unicalc.asm 233 | Equivalence | 11 | | 0 | 00/80EB | maybe equ ozunid_9 + 243 | 1 Unicalc.asm 234 | Code | 11 | | 1 | 00/80EB : 88 | dey + 244 | 1 Unicalc.asm 235 | Code | 11 | | 1 | 00/80EC : 88 | dey ;if N=1 then all sig bytes OK + 245 | 1 Unicalc.asm 236 | Code | 11 | | 2 | 00/80ED : 10 EE | bpl {ozunid_8} + 246 | 1 Unicalc.asm 237 | Comment | 11 | | 0 | 00/80EF | * Found PC interface. Set up call address. + 247 | 1 Unicalc.asm 238 | Comment | 11 | | 0 | 00/80EF | * we already have high byte ($CN), we need low byte + 248 | 1 Unicalc.asm 239 | Comment | 11 | | 0 | 00/80EF | * + 249 | 1 Unicalc.asm 240 | Empty | 11 | | 0 | 00/80EF | ozunid_10 + 250 | 1 Unicalc.asm 240 | Equivalence | 11 | | 0 | 00/80EF | foundPC equ ozunid_10 + 251 | 1 Unicalc.asm 241 | Code | 11 | | 2 | 00/80EF : A9 FF | lda #$FF + 252 | 1 Unicalc.asm 242 | Code | 11 | | 2 | 00/80F1 : 85 06 | sta {$0006} + 253 | 1 Unicalc.asm 243 | Code | 11 | | 2 | 00/80F3 : A0 00 | ldy #0 ;For indirect load + 254 | 1 Unicalc.asm 244 | Code | 11 | | 2 | 00/80F5 : B1 06 | lda ({$0006}),y ;Get the byte + 255 | 1 Unicalc.asm 245 | Comment | 11 | | 0 | 00/80F7 | * + 256 | 1 Unicalc.asm 246 | Comment | 11 | | 0 | 00/80F7 | * Now the Acc has the low oreder ProDOS entry point. + 257 | 1 Unicalc.asm 247 | Comment | 11 | | 0 | 00/80F7 | * The PC entry is three locations past this ... + 258 | 1 Unicalc.asm 248 | Comment | 11 | | 0 | 00/80F7 | * + 259 | 1 Unicalc.asm 249 | Code | 11 | | 1 | 00/80F7 : 18 | clc + 260 | 1 Unicalc.asm 250 | Code | 11 | | 2 | 00/80F8 : 69 03 | adc #3 + 261 | 1 Unicalc.asm 251 | Code | 11 | | 2 | 00/80FA : 85 06 | sta {$0006} + 262 | 1 Unicalc.asm 252 | Comment | 11 | | 0 | 00/80FC | * + 263 | 1 Unicalc.asm 253 | Comment | 11 | | 0 | 00/80FC | * Now ZPTempL has PC entry point. + 264 | 1 Unicalc.asm 254 | Comment | 11 | | 0 | 00/80FC | * Return with carry clear. + 265 | 1 Unicalc.asm 255 | Comment | 11 | | 0 | 00/80FC | * + 266 | 1 Unicalc.asm 256 | Code | 11 | | 1 | 00/80FC : 18 | clc + 267 | 1 Unicalc.asm 257 | Code | 11 | | 1 | 00/80FD : 60 | rts + 268 | 1 Unicalc.asm 258 | Comment | 11 | | 0 | 00/80FE | *********************************************************** + 269 | 1 Unicalc.asm 259 | Comment | 11 | | 0 | 00/80FE | * + 270 | 1 Unicalc.asm 260 | Comment | 11 | | 0 | 00/80FE | * There are the PC signature bytes in their relative order. + 271 | 1 Unicalc.asm 261 | Comment | 11 | | 0 | 00/80FE | * The $FF bytes are filler bytes and are not compared. + 272 | 1 Unicalc.asm 262 | Comment | 11 | | 0 | 00/80FE | * + 273 | 1 Unicalc.asm 263 | Data | 11 | | 4 | 00/80FE : FF 20 FF 00 | sigtab dfb $FF,$20,$FF,$00 + 274 | 1 Unicalc.asm 264 | Data | 11 | | 4 | 00/8102 : FF 03 FF 00 | dfb $FF,$03,$FF,$00 + 275 | 1 Unicalc.asm 265 | Comment | 11 | | 0 | 00/8106 | * + 276 | 1 Unicalc.asm 266 | Empty | 11 | | 0 | 00/8106 | ozunid_11 + 277 | 1 Unicalc.asm 266 | Equivalence | 11 | | 0 | 00/8106 | Dispatch equ ozunid_11 + 278 | 1 Unicalc.asm 267 | Code | 11 | | 3 | 00/8106 : 6C 06 00 | jmp ({$0006}) ;Simulate an indirect JSR to PC + 279 | 1 Unicalc.asm 268 | Comment | 11 | | 0 | 00/8109 | * + 280 | 1 Unicalc.asm 269 | Comment | 11 | | 0 | 00/8109 | *** Status Parameter Set for UNI *** + 281 | 1 Unicalc.asm 270 | Empty | 11 | | 0 | 00/8109 | ozunid_12 + 282 | 1 Unicalc.asm 270 | Equivalence | 11 | | 0 | 00/8109 | DParms equ ozunid_12 + 283 | 1 Unicalc.asm 271 | Data | 11 | | 1 | 00/8109 : 03 | DPParmsCt dfb 3 ;Status calls have three parameters + 284 | 1 Unicalc.asm 272 | Data | 11 | | 1 | 00/810A : 01 | DPUnit dfb 1 + 285 | 1 Unicalc.asm 273 | Data | 11 | | 2 | 00/810B : 2C 81 | DPBuffer dw {ozunid_15} + 286 | 1 Unicalc.asm 274 | Data | 11 | | 1 | 00/810D : 05 | DPStatCode dfb {5} + 287 | 1 Unicalc.asm 275 | Comment | 11 | | 0 | 00/810E | * + 288 | 1 Unicalc.asm 276 | Comment | 11 | | 0 | 00/810E | * + 289 | 1 Unicalc.asm 277 | Comment | 11 | | 0 | 00/810E | *** Status Parameter Set for DIB *** + 290 | 1 Unicalc.asm 278 | Empty | 11 | | 0 | 00/810E | ozunid_13 + 291 | 1 Unicalc.asm 278 | Equivalence | 11 | | 0 | 00/810E | DParmsDIB equ ozunid_13 + 292 | 1 Unicalc.asm 279 | Data | 11 | | 1 | 00/810E : 03 | DPParmsCt2 dfb 3 ;Status calls have three parameters + 293 | 1 Unicalc.asm 280 | Data | 11 | | 1 | 00/810F : 01 | DPUnit2 dfb 1 + 294 | 1 Unicalc.asm 281 | Data | 11 | | 2 | 00/8110 : 13 81 | DPBuffer2 dw {ozunid_14} + 295 | 1 Unicalc.asm 282 | Data | 11 | | 1 | 00/8112 : 03 | DPStatCode2 dfb {3} + 296 | 1 Unicalc.asm 283 | Comment | 11 | | 0 | 00/8113 | * + 297 | 1 Unicalc.asm 284 | Comment | 11 | | 0 | 00/8113 | * + 298 | 1 Unicalc.asm 285 | Comment | 11 | | 0 | 00/8113 | *** Status List DIB *** + 299 | 1 Unicalc.asm 286 | Empty | 11 | | 0 | 00/8113 | ozunid_14 + 300 | 1 Unicalc.asm 286 | Equivalence | 11 | | 0 | 00/8113 | DIB equ ozunid_14 + 301 | 1 Unicalc.asm 287 | Data | 11 | | 1 | 00/8113 : 00 | DIBStatByte1 dfb 0 + 302 | 1 Unicalc.asm 288 | Data | 11 | | 3 | 00/8114 : 00 00 00 | DIBDevSize dfb 0,0,0 + 303 | 1 Unicalc.asm 289 | Data | 11 | | 1 | 00/8117 : 00 | DIBNameLen dfb 0 + 304 | 1 Unicalc.asm 290 | Data | 11 | | 16 | 00/8118 : 00 00 00 00 | DIBName ds 16,0 + | | | | | | 00 00 00 00 | + | | | | | | 00 00 00 00 | + | | | | | | 00 00 00 00 | + 305 | 1 Unicalc.asm 291 | Data | 11 | | 1 | 00/8128 : 00 | DIBType dfb 0 + 306 | 1 Unicalc.asm 292 | Data | 11 | | 1 | 00/8129 : 00 | DIBSubType dfb 0 + 307 | 1 Unicalc.asm 293 | Data | 11 | | 2 | 00/812A : 00 00 | DIBVersion dw 0 + 308 | 1 Unicalc.asm 294 | Comment | 11 | | 0 | 00/812C | * + 309 | 1 Unicalc.asm 295 | Comment | 11 | | 0 | 00/812C | *** Status List UNI *** + 310 | 1 Unicalc.asm 296 | Empty | 11 | | 0 | 00/812C | ozunid_15 + 311 | 1 Unicalc.asm 296 | Equivalence | 11 | | 0 | 00/812C | UNI equ ozunid_15 + 312 | 1 Unicalc.asm 297 | Data | 11 | | 1 | 00/812C : 00 | dfb 0 + 313 | 1 Unicalc.asm 298 | Data | 11 | | 1 | 00/812D : 00 | UNIError dfb 0 + 314 | 1 Unicalc.asm 299 | Data | 11 | | 1 | 00/812E : 00 | UNIRetries dfb 0 + 315 | 1 Unicalc.asm 300 | Data | 11 | | 1 | 00/812F : 00 | UNIAcc_reg dfb 0 + 316 | 1 Unicalc.asm 301 | Data | 11 | | 1 | 00/8130 : 00 | UNIX_reg dfb 0 + 317 | 1 Unicalc.asm 302 | Data | 11 | | 1 | 00/8131 : 00 | UNIY_reg dfb 0 + 318 | 1 Unicalc.asm 303 | Data | 11 | | 1 | 00/8132 : 00 | UNIP_val dfb 0 + 319 | 1 Unicalc.asm 304 | Data | 11 | | 1 | 00/8133 : 00 | HHH dfb 0 + 320 | 1 Unicalc.asm 305 | Comment | 11 | | 0 | 00/8134 | * + 321 | 1 Unicalc.asm 306 | Comment | 11 | | 0 | 00/8134 | *** Set Address *** + 322 | 1 Unicalc.asm 307 | Empty | 11 | | 0 | 00/8134 | ozunid_16 + 323 | 1 Unicalc.asm 307 | Equivalence | 11 | | 0 | 00/8134 | SET_ADD equ ozunid_16 + 324 | 1 Unicalc.asm 308 | Data | 11 | | 1 | 00/8134 : 03 | dfb 3 + 325 | 1 Unicalc.asm 309 | Data | 11 | | 1 | 00/8135 : 01 | dfb 1 + 326 | 1 Unicalc.asm 310 | Data | 11 | | 2 | 00/8136 : 52 81 | dw {ozunid_22} + 327 | 1 Unicalc.asm 311 | Data | 11 | | 1 | 00/8138 : 06 | dfb {6} + 328 | 1 Unicalc.asm 312 | Comment | 11 | | 0 | 00/8139 | * + 329 | 1 Unicalc.asm 313 | Comment | 11 | | 0 | 00/8139 | *** Download *** + 330 | 1 Unicalc.asm 314 | Empty | 11 | | 0 | 00/8139 | ozunid_17 + 331 | 1 Unicalc.asm 314 | Equivalence | 11 | | 0 | 00/8139 | DOWNLOAD equ ozunid_17 + 332 | 1 Unicalc.asm 315 | Data | 11 | | 1 | 00/8139 : 03 | dfb 3 + 333 | 1 Unicalc.asm 316 | Data | 11 | | 1 | 00/813A : 01 | dfb 1 + 334 | 1 Unicalc.asm 317 | Data | 11 | | 2 | 00/813B : 56 81 | dw {ozunid_23} + 335 | 1 Unicalc.asm 318 | Data | 11 | | 1 | 00/813D : 07 | dfb {7} + 336 | 1 Unicalc.asm 319 | Comment | 11 | | 0 | 00/813E | * + 337 | 1 Unicalc.asm 320 | Comment | 11 | | 0 | 00/813E | *** Execute *** + 338 | 1 Unicalc.asm 321 | Empty | 11 | | 0 | 00/813E | ozunid_18 + 339 | 1 Unicalc.asm 321 | Equivalence | 11 | | 0 | 00/813E | EXE equ ozunid_18 + 340 | 1 Unicalc.asm 322 | Data | 11 | | 1 | 00/813E : 03 | dfb 3 + 341 | 1 Unicalc.asm 323 | Data | 11 | | 1 | 00/813F : 01 | dfb 1 + 342 | 1 Unicalc.asm 324 | Data | 11 | | 2 | 00/8140 : 4A 81 | dw {ozunid_21} + 343 | 1 Unicalc.asm 325 | Data | 11 | | 1 | 00/8142 : 05 | dfb {5} + 344 | 1 Unicalc.asm 326 | Comment | 11 | | 0 | 00/8143 | *** Eject *** + 345 | 1 Unicalc.asm 327 | Empty | 11 | | 0 | 00/8143 | ozunid_19 + 346 | 1 Unicalc.asm 327 | Equivalence | 11 | | 0 | 00/8143 | E_JECT equ ozunid_19 + 347 | 1 Unicalc.asm 328 | Data | 11 | | 1 | 00/8143 : 03 | dfb 3 + 348 | 1 Unicalc.asm 329 | Data | 11 | | 1 | 00/8144 : 01 | dfb 1 + 349 | 1 Unicalc.asm 330 | Data | 11 | | 2 | 00/8145 : 48 81 | dw {ozunid_20} + 350 | 1 Unicalc.asm 331 | Data | 11 | | 1 | 00/8147 : 04 | dfb {4} + 351 | 1 Unicalc.asm 332 | Comment | 11 | | 0 | 00/8148 | * + 352 | 1 Unicalc.asm 333 | Comment | 11 | | 0 | 00/8148 | ******** CONTROL LISTS ******** + 353 | 1 Unicalc.asm 334 | Comment | 11 | | 0 | 00/8148 | * + 354 | 1 Unicalc.asm 335 | Comment | 11 | | 0 | 00/8148 | * + 355 | 1 Unicalc.asm 336 | Comment | 11 | | 0 | 00/8148 | *** Eject *** + 356 | 1 Unicalc.asm 337 | Empty | 11 | | 0 | 00/8148 | ozunid_20 + 357 | 1 Unicalc.asm 337 | Equivalence | 11 | | 0 | 00/8148 | CNTL_LIST1 equ ozunid_20 + 358 | 1 Unicalc.asm 338 | Data | 11 | | 2 | 00/8148 : 00 00 | dw $0000 + 359 | 1 Unicalc.asm 339 | Comment | 11 | | 0 | 00/814A | * + 360 | 1 Unicalc.asm 340 | Comment | 11 | | 0 | 00/814A | *** Execute *** + 361 | 1 Unicalc.asm 341 | Empty | 11 | | 0 | 00/814A | ozunid_21 + 362 | 1 Unicalc.asm 341 | Equivalence | 11 | | 0 | 00/814A | CNTL_LIST2 equ ozunid_21 + 363 | 1 Unicalc.asm 342 | Data | 11 | | 1 | 00/814A : 06 | Clow_byte dfb $06 + 364 | 1 Unicalc.asm 343 | Data | 11 | | 1 | 00/814B : 00 | Chigh_byte dfb $00 + 365 | 1 Unicalc.asm 344 | Data | 11 | | 1 | 00/814C : 00 | AccValue dfb $00 ; Input Value + 366 | 1 Unicalc.asm 345 | Data | 11 | | 1 | 00/814D : 0A | X_reg dfb $0A ; Input Value (N1) + 367 | 1 Unicalc.asm 346 | Data | 11 | | 1 | 00/814E : 01 | Y_reg dfb $01 ; Input Value (N2) + 368 | 1 Unicalc.asm 347 | Data | 11 | | 1 | 00/814F : 00 | ProStatus dfb $00 + 369 | 1 Unicalc.asm 348 | Data | 11 | | 1 | 00/8150 : 05 | LowPC_reg dfb $05 + 370 | 1 Unicalc.asm 349 | Data | 11 | | 1 | 00/8151 : 05 | HighPC_reg dfb $05 + 371 | 1 Unicalc.asm 350 | Comment | 11 | | 0 | 00/8152 | * + 372 | 1 Unicalc.asm 351 | Comment | 11 | | 0 | 00/8152 | *** Set Address *** + 373 | 1 Unicalc.asm 352 | Empty | 11 | | 0 | 00/8152 | ozunid_22 + 374 | 1 Unicalc.asm 352 | Equivalence | 11 | | 0 | 00/8152 | CNTL_LIST3 equ ozunid_22 + 375 | 1 Unicalc.asm 353 | Data | 11 | | 1 | 00/8152 : 02 | CountL_byte dfb $02 + 376 | 1 Unicalc.asm 354 | Data | 11 | | 1 | 00/8153 : 00 | CountH_byte dfb $00 + 377 | 1 Unicalc.asm 355 | Data | 11 | | 1 | 00/8154 : 05 | LByte_Addr dfb $05 + 378 | 1 Unicalc.asm 356 | Data | 11 | | 1 | 00/8155 : 05 | HByte_Addr dfb $05 + 379 | 1 Unicalc.asm 357 | Comment | 11 | | 0 | 00/8156 | * + 380 | 1 Unicalc.asm 358 | Comment | 11 | | 0 | 00/8156 | *** Download *** + 381 | 1 Unicalc.asm 359 | Empty | 11 | | 0 | 00/8156 | ozunid_23 + 382 | 1 Unicalc.asm 359 | Equivalence | 11 | | 0 | 00/8156 | CNTL_LIST4 equ ozunid_23 + 383 | 1 Unicalc.asm 360 | Data | 11 | | 1 | 00/8156 : 09 | LenghtL_byte dfb $09 ;<----- Lenght of Unidisk program Lo Byte + 384 | 1 Unicalc.asm 361 | Data | 11 | | 1 | 00/8157 : 00 | LenghtH_byte dfb $00 ;<----- Lenght of Unidisk program Hi Byte + 385 | 1 Unicalc.asm 362 | Comment | 11 | | 0 | 00/8158 | * + 386 | 1 Unicalc.asm 363 | Comment | 11 | | 0 | 00/8158 | *** Start UNIDISK Program *** + 387 | 1 Unicalc.asm 364 | Empty | 11 | | 0 | 00/8158 | + 388 | 1 Unicalc.asm 365 | Code | 11 | | 2 | 00/8158 : 86 C0 | stx $C0 + 389 | 1 Unicalc.asm 366 | Code | 11 | | 2 | 00/815A : 84 C1 | sty $C1 + 390 | 1 Unicalc.asm 367 | Empty | 11 | | 0 | 00/815C | + 391 | 1 Unicalc.asm 368 | Code | 11 | | 2 | 00/815C : A5 C0 | lda $C0 + 392 | 1 Unicalc.asm 369 | Code | 11 | | 2 | 00/815E : 65 C1 | adc $C1 + 393 | 1 Unicalc.asm 370 | Empty | 11 | | 0 | 00/8160 | + 394 | 1 Unicalc.asm 371 | Code | 11 | | 1 | 00/8160 : 60 | rts +------+-----------------------+-------------+----+---------+------+-----------------------+------------------------------------------------------------------- diff --git a/AppleII/Integer adc 1 Byte/Unidrive b/AppleII/Integer adc 1 Byte/Unidrive new file mode 100644 index 0000000000000000000000000000000000000000..11be6a795d4b47ad37006529b9fdcf31c4ea7b2d GIT binary patch literal 243 zcmY#LZrC8H(DzqiMgz;$1`v4+OrCB~aA-(a#IRSV;RBn(+rKX^d`eCp3IuKgNFQ!Y7M_jt+r$EB^z<88)&>WHPt1NhJJN_|Nd4`9DJr8v`@rz6Mri z#-$C+41@qPnfurM&Nfwi%+GBL2Sax%0XXgRp_KHCH?T550W;&-1~z8Kiw*3|j7J+-nHdi^urM&Nfn`})nHX4Er5GgEO0(w5vbG*r TE5n*A$J%;u*?}bo6F^D;edJXX literal 0 HcmV?d00001 diff --git a/AppleII/Integer adc 2 Byte/Unidrive2_Output.txt b/AppleII/Integer adc 2 Byte/Unidrive2_Output.txt new file mode 100644 index 0000000..181d603 --- /dev/null +++ b/AppleII/Integer adc 2 Byte/Unidrive2_Output.txt @@ -0,0 +1,286 @@ +------+-------------------------+-------------+----+---------+------+-----------------------+------------------------------------------------------------------- + Line | # File Line | Line Type | MX | Reloc | Size | Address Object Code | Source Code +------+-------------------------+-------------+----+---------+------+-----------------------+------------------------------------------------------------------- + 1 | 1 Unidrive2.asm 1 | Comment | 11 | | 0 | 00/8000 | * @com.wudsn.ide.asm.hardware=APPLE2 + 2 | 1 Unidrive2.asm 2 | Comment | 11 | | 0 | 00/8000 | * Protocol Converter Call + 3 | 1 Unidrive2.asm 3 | Directive | 11 | | 0 | 00/8000 | XC + 4 | 1 Unidrive2.asm 4 | Equivalence | 11 | | 0 | 00/8000 | ZPTempL equ $0006 ;Temporary zero page storage + 5 | 1 Unidrive2.asm 5 | Equivalence | 11 | | 0 | 00/8000 | ZPTempH equ $0007 + 6 | 1 Unidrive2.asm 6 | Comment | 11 | | 0 | 00/8000 | ** Zero page storage ** + 7 | 1 Unidrive2.asm 7 | Equivalence | 11 | | 0 | 00/8000 | N1 equ $19 ;25 + 8 | 1 Unidrive2.asm 8 | Equivalence | 11 | | 0 | 00/8000 | N2 equ $1B ;27 + 9 | 1 Unidrive2.asm 9 | Equivalence | 11 | | 0 | 00/8000 | RSLT equ $1D ;29 + 10 | 1 Unidrive2.asm 10 | Comment | 11 | | 0 | 00/8000 | *** Monitor routines *** + 11 | 1 Unidrive2.asm 11 | Equivalence | 11 | | 0 | 00/8000 | COut equ $FDED ;Console output ASCII + 12 | 1 Unidrive2.asm 12 | Equivalence | 11 | | 0 | 00/8000 | CROut equ $FD8E ;Carriage return + 13 | 1 Unidrive2.asm 13 | Comment | 11 | | 0 | 00/8000 | ** Command Code ** + 14 | 1 Unidrive2.asm 14 | Equivalence | 11 | | 0 | 00/8000 | StatusCmd equ 0 + 15 | 1 Unidrive2.asm 15 | Comment | 11 | | 0 | 00/8000 | ** Status Code ** + 16 | 1 Unidrive2.asm 16 | Comment | 11 | | 0 | 00/8000 | * StatusDIB equ 3 + 17 | 1 Unidrive2.asm 17 | Equivalence | 11 | | 0 | 00/8000 | StatusUNI equ 5 + 18 | 1 Unidrive2.asm 18 | Comment | 11 | | 0 | 00/8000 | * + 19 | 1 Unidrive2.asm 19 | Equivalence | 11 | | 0 | 00/8000 | ControlCmd equ 4 + 20 | 1 Unidrive2.asm 20 | Comment | 11 | | 0 | 00/8000 | ** Control Codes ** + 21 | 1 Unidrive2.asm 21 | Equivalence | 11 | | 0 | 00/8000 | Eject equ 4 + 22 | 1 Unidrive2.asm 22 | Equivalence | 11 | | 0 | 00/8000 | Run equ 5 + 23 | 1 Unidrive2.asm 23 | Equivalence | 11 | | 0 | 00/8000 | SetDWLoad equ 6 + 24 | 1 Unidrive2.asm 24 | Equivalence | 11 | | 0 | 00/8000 | DWLoad equ 7 + 25 | 1 Unidrive2.asm 25 | Comment | 11 | | 0 | 00/8000 | * + 26 | 1 Unidrive2.asm 26 | Directive | 11 | | 0 | 00/8000 | org $8000 + 27 | 1 Unidrive2.asm 27 | Comment | 11 | | 0 | 00/8000 | ***************************************************** + 28 | 1 Unidrive2.asm 28 | Empty | 11 | | 0 | 00/8000 | + 29 | 1 Unidrive2.asm 29 | Comment | 11 | | 0 | 00/8000 | * + 30 | 1 Unidrive2.asm 30 | Comment | 11 | | 0 | 00/8000 | * Find a Protocol Converter in one of the slots. + 31 | 1 Unidrive2.asm 31 | Code | 11 | | 3 | 00/8000 : 20 6A 80 | START jsr {ozunid_4} + 32 | 1 Unidrive2.asm 32 | Code | 11 | | 2 | 00/8003 : B0 10 | bcs {ozunid_1} + 33 | 1 Unidrive2.asm 33 | Comment | 11 | | 0 | 00/8005 | *** Eject *** + 34 | 1 Unidrive2.asm 34 | Code | 11 | | 3 | 00/8005 : 20 9F 80 | jsr {ozunid_9} + 35 | 1 Unidrive2.asm 35 | Data | 11 | | 1 | 00/8008 : 04 | dfb {4} + 36 | 1 Unidrive2.asm 36 | Data | 11 | | 2 | 00/8009 : BE 80 | dw {ozunid_15} + 37 | 1 Unidrive2.asm 37 | Comment | 11 | | 0 | 00/800B | *** Set Address *** + 38 | 1 Unidrive2.asm 38 | Code | 11 | | 3 | 00/800B : 20 9F 80 | jsr {ozunid_9} + 39 | 1 Unidrive2.asm 39 | Data | 11 | | 1 | 00/800E : 04 | dfb {4} + 40 | 1 Unidrive2.asm 40 | Data | 11 | | 2 | 00/800F : AF 80 | dw {ozunid_12} + 41 | 1 Unidrive2.asm 41 | Comment | 11 | | 0 | 00/8011 | * + 42 | 1 Unidrive2.asm 42 | Code | 11 | | 3 | 00/8011 : 20 37 80 | jsr EXEC ; Jump the Error routine + 43 | 1 Unidrive2.asm 43 | Code | 11 | | 1 | 00/8014 : 60 | rts + 44 | 1 Unidrive2.asm 44 | Comment | 11 | | 0 | 00/8015 | ********************************************* + 45 | 1 Unidrive2.asm 45 | Empty | 11 | | 0 | 00/8015 | ozunid_1 + 46 | 1 Unidrive2.asm 45 | Equivalence | 11 | | 0 | 00/8015 | Error equ ozunid_1 + 47 | 1 Unidrive2.asm 46 | Comment | 11 | | 0 | 00/8015 | * + 48 | 1 Unidrive2.asm 47 | Comment | 11 | | 0 | 00/8015 | * There's either no PC around, or there was no give message + 49 | 1 Unidrive2.asm 48 | Comment | 11 | | 0 | 00/8015 | * + 50 | 1 Unidrive2.asm 49 | Code | 11 | | 2 | 00/8015 : A2 00 | ldx #0 + 51 | 1 Unidrive2.asm 50 | Empty | 11 | | 0 | 00/8017 | ozunid_2 + 52 | 1 Unidrive2.asm 50 | Equivalence | 11 | | 0 | 00/8017 | err1 equ ozunid_2 + 53 | 1 Unidrive2.asm 51 | Code | 11 | | 3 | 00/8017 : BD 23 80 | lda Message,x + 54 | 1 Unidrive2.asm 52 | Code | 11 | | 2 | 00/801A : F0 06 | beq {ozunid_3} + 55 | 1 Unidrive2.asm 53 | Code | 11 | | 3 | 00/801C : 20 ED FD | jsr {$FDED} + 56 | 1 Unidrive2.asm 54 | Code | 11 | | 1 | 00/801F : E8 | inx + 57 | 1 Unidrive2.asm 55 | Code | 11 | | 2 | 00/8020 : D0 F5 | bne {ozunid_2} + 58 | 1 Unidrive2.asm 56 | Comment | 11 | | 0 | 00/8022 | * + 59 | 1 Unidrive2.asm 57 | Empty | 11 | | 0 | 00/8022 | ozunid_3 + 60 | 1 Unidrive2.asm 57 | Equivalence | 11 | | 0 | 00/8022 | errout equ ozunid_3 + 61 | 1 Unidrive2.asm 58 | Code | 11 | | 1 | 00/8022 : 60 | rts + 62 | 1 Unidrive2.asm 59 | Comment | 11 | | 0 | 00/8023 | * + 63 | 1 Unidrive2.asm 60 | Data | 11 | | 18 | 00/8023 : 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 | + 64 | 1 Unidrive2.asm 61 | Data | 11 | | 2 | 00/8035 : 8D 00 | dfb $8D,0 + 65 | 1 Unidrive2.asm 62 | Comment | 11 | | 0 | 00/8037 | ********************************************* + 66 | 1 Unidrive2.asm 63 | Comment | 11 | | 0 | 00/8037 | * + 67 | 1 Unidrive2.asm 64 | Comment | 11 | | 0 | 00/8037 | ** Set the Input Value first ** + 68 | 1 Unidrive2.asm 65 | Code | 11 | | 2 | 00/8037 : A5 19 | EXEC lda {$19} + 69 | 1 Unidrive2.asm 66 | Code | 11 | | 3 | 00/8039 : 8D E9 80 | sta $80E9 ; Absolute addressing + 70 | 1 Unidrive2.asm 67 | Code | 11 | | 2 | 00/803C : A5 1A | lda {$19}+1 + 71 | 1 Unidrive2.asm 68 | Code | 11 | | 3 | 00/803E : 8D EA 80 | sta $80EA + 72 | 1 Unidrive2.asm 69 | Empty | 11 | | 0 | 00/8041 | + 73 | 1 Unidrive2.asm 70 | Code | 11 | | 2 | 00/8041 : A5 1B | lda {$1B} + 74 | 1 Unidrive2.asm 71 | Code | 11 | | 3 | 00/8043 : 8D EB 80 | sta $80EB + 75 | 1 Unidrive2.asm 72 | Code | 11 | | 2 | 00/8046 : A5 1C | lda {$1B}+1 + 76 | 1 Unidrive2.asm 73 | Code | 11 | | 3 | 00/8048 : 8D EC 80 | sta $80EC + 77 | 1 Unidrive2.asm 74 | Comment | 11 | | 0 | 00/804B | *** Download *** + 78 | 1 Unidrive2.asm 75 | Code | 11 | | 3 | 00/804B : 20 9F 80 | jsr {ozunid_9} + 79 | 1 Unidrive2.asm 76 | Data | 11 | | 1 | 00/804E : 04 | dfb {4} + 80 | 1 Unidrive2.asm 77 | Data | 11 | | 2 | 00/804F : B4 80 | dw {ozunid_13} + 81 | 1 Unidrive2.asm 78 | Comment | 11 | | 0 | 00/8051 | ** Execute ** + 82 | 1 Unidrive2.asm 79 | Code | 11 | | 3 | 00/8051 : 20 9F 80 | jsr {ozunid_9} + 83 | 1 Unidrive2.asm 80 | Data | 11 | | 1 | 00/8054 : 04 | dfb {4} + 84 | 1 Unidrive2.asm 81 | Data | 11 | | 2 | 00/8055 : B9 80 | dw {ozunid_14} + 85 | 1 Unidrive2.asm 82 | Code | 11 | | 3 | 00/8057 : 20 9F 80 | READ jsr {ozunid_9} + 86 | 1 Unidrive2.asm 83 | Data | 11 | | 1 | 00/805A : 00 | dfb {0} + 87 | 1 Unidrive2.asm 84 | Data | 11 | | 2 | 00/805B : A2 80 | dw {ozunid_10} + 88 | 1 Unidrive2.asm 85 | Code | 11 | | 2 | 00/805D : B0 B6 | bcs {ozunid_1} + 89 | 1 Unidrive2.asm 86 | Comment | 11 | | 0 | 00/805F | * + 90 | 1 Unidrive2.asm 87 | Comment | 11 | | 0 | 00/805F | **** Store Output results in //c **** + 91 | 1 Unidrive2.asm 88 | Comment | 11 | | 0 | 00/805F | * + 92 | 1 Unidrive2.asm 89 | Code | 11 | | 3 | 00/805F : AD AB 80 | lda UNIX_reg + 93 | 1 Unidrive2.asm 90 | Code | 11 | | 2 | 00/8062 : 85 1D | sta {$1D} ; Store the result + 94 | 1 Unidrive2.asm 91 | Code | 11 | | 3 | 00/8064 : AD AC 80 | lda UNIY_reg + 95 | 1 Unidrive2.asm 92 | Code | 11 | | 2 | 00/8067 : 85 1E | sta {$1D}+1 + 96 | 1 Unidrive2.asm 93 | Comment | 11 | | 0 | 00/8069 | * + 97 | 1 Unidrive2.asm 94 | Code | 11 | | 1 | 00/8069 : 60 | rts + 98 | 1 Unidrive2.asm 95 | Empty | 11 | | 0 | 00/806A | + 99 | 1 Unidrive2.asm 96 | Comment | 11 | | 0 | 00/806A | ****************************************************** + 100 | 1 Unidrive2.asm 97 | Empty | 11 | | 0 | 00/806A | ozunid_4 + 101 | 1 Unidrive2.asm 97 | Equivalence | 11 | | 0 | 00/806A | FindPC equ ozunid_4 + 102 | 1 Unidrive2.asm 98 | Comment | 11 | | 0 | 00/806A | * + 103 | 1 Unidrive2.asm 99 | Comment | 11 | | 0 | 00/806A | * Search slot 7 to slot 1 looking for signature bytes + 104 | 1 Unidrive2.asm 100 | Comment | 11 | | 0 | 00/806A | * + 105 | 1 Unidrive2.asm 101 | Code | 11 | | 2 | 00/806A : A2 07 | ldx #7 ;Do for seven slots + 106 | 1 Unidrive2.asm 102 | Code | 11 | | 2 | 00/806C : A9 C7 | lda #$C7 + 107 | 1 Unidrive2.asm 103 | Code | 11 | | 2 | 00/806E : 85 07 | sta {$0007} + 108 | 1 Unidrive2.asm 104 | Code | 11 | | 2 | 00/8070 : A9 00 | lda #$00 + 109 | 1 Unidrive2.asm 105 | Code | 11 | | 2 | 00/8072 : 85 06 | sta {$0006} + 110 | 1 Unidrive2.asm 106 | Comment | 11 | | 0 | 00/8074 | * + 111 | 1 Unidrive2.asm 107 | Empty | 11 | | 0 | 00/8074 | ozunid_5 + 112 | 1 Unidrive2.asm 107 | Equivalence | 11 | | 0 | 00/8074 | newslot equ ozunid_5 + 113 | 1 Unidrive2.asm 108 | Code | 11 | | 2 | 00/8074 : A0 07 | ldy #7 + 114 | 1 Unidrive2.asm 109 | Comment | 11 | | 0 | 00/8076 | * + 115 | 1 Unidrive2.asm 110 | Empty | 11 | | 0 | 00/8076 | ozunid_6 + 116 | 1 Unidrive2.asm 110 | Equivalence | 11 | | 0 | 00/8076 | again equ ozunid_6 + 117 | 1 Unidrive2.asm 111 | Code | 11 | | 2 | 00/8076 : B1 06 | lda ({$0006}),y + 118 | 1 Unidrive2.asm 112 | Code | 11 | | 3 | 00/8078 : D9 97 80 | cmp sigtab,y ;One for byte signature + 119 | 1 Unidrive2.asm 113 | Code | 11 | | 2 | 00/807B : F0 07 | beq {ozunid_7} ;Found one signature byte + 120 | 1 Unidrive2.asm 114 | Code | 11 | | 2 | 00/807D : C6 07 | dec {$0007} + 121 | 1 Unidrive2.asm 115 | Code | 11 | | 1 | 00/807F : CA | dex + 122 | 1 Unidrive2.asm 116 | Code | 11 | | 2 | 00/8080 : D0 F2 | bne {ozunid_5} + 123 | 1 Unidrive2.asm 117 | Comment | 11 | | 0 | 00/8082 | * + 124 | 1 Unidrive2.asm 118 | Comment | 11 | | 0 | 00/8082 | * if we get here, no PC find + 125 | 1 Unidrive2.asm 119 | Code | 11 | | 1 | 00/8082 : 38 | sec + 126 | 1 Unidrive2.asm 120 | Code | 11 | | 1 | 00/8083 : 60 | rts + 127 | 1 Unidrive2.asm 121 | Comment | 11 | | 0 | 00/8084 | * + 128 | 1 Unidrive2.asm 122 | Comment | 11 | | 0 | 00/8084 | * if we get here, no byte find on PC + 129 | 1 Unidrive2.asm 123 | Empty | 11 | | 0 | 00/8084 | ozunid_7 + 130 | 1 Unidrive2.asm 123 | Equivalence | 11 | | 0 | 00/8084 | maybe equ ozunid_7 + 131 | 1 Unidrive2.asm 124 | Code | 11 | | 1 | 00/8084 : 88 | dey + 132 | 1 Unidrive2.asm 125 | Code | 11 | | 1 | 00/8085 : 88 | dey ;if N=1 then all sig bytes OK + 133 | 1 Unidrive2.asm 126 | Code | 11 | | 2 | 00/8086 : 10 EE | bpl {ozunid_6} + 134 | 1 Unidrive2.asm 127 | Comment | 11 | | 0 | 00/8088 | * Found PC interface. Set up call address. + 135 | 1 Unidrive2.asm 128 | Comment | 11 | | 0 | 00/8088 | * we already have high byte ($CN), we need low byte + 136 | 1 Unidrive2.asm 129 | Comment | 11 | | 0 | 00/8088 | * + 137 | 1 Unidrive2.asm 130 | Empty | 11 | | 0 | 00/8088 | ozunid_8 + 138 | 1 Unidrive2.asm 130 | Equivalence | 11 | | 0 | 00/8088 | foundPC equ ozunid_8 + 139 | 1 Unidrive2.asm 131 | Code | 11 | | 2 | 00/8088 : A9 FF | lda #$FF + 140 | 1 Unidrive2.asm 132 | Code | 11 | | 2 | 00/808A : 85 06 | sta {$0006} + 141 | 1 Unidrive2.asm 133 | Code | 11 | | 2 | 00/808C : A0 00 | ldy #0 ;For indirect load + 142 | 1 Unidrive2.asm 134 | Code | 11 | | 2 | 00/808E : B1 06 | lda ({$0006}),y ;Get the byte + 143 | 1 Unidrive2.asm 135 | Comment | 11 | | 0 | 00/8090 | * + 144 | 1 Unidrive2.asm 136 | Comment | 11 | | 0 | 00/8090 | * Now the Acc has the low oreder ProDOS entry point. + 145 | 1 Unidrive2.asm 137 | Comment | 11 | | 0 | 00/8090 | * The PC entry is three locations past this ... + 146 | 1 Unidrive2.asm 138 | Comment | 11 | | 0 | 00/8090 | * + 147 | 1 Unidrive2.asm 139 | Code | 11 | | 1 | 00/8090 : 18 | clc + 148 | 1 Unidrive2.asm 140 | Code | 11 | | 2 | 00/8091 : 69 03 | adc #3 + 149 | 1 Unidrive2.asm 141 | Code | 11 | | 2 | 00/8093 : 85 06 | sta {$0006} + 150 | 1 Unidrive2.asm 142 | Comment | 11 | | 0 | 00/8095 | * + 151 | 1 Unidrive2.asm 143 | Comment | 11 | | 0 | 00/8095 | * Now ZPTempL has PC entry point. + 152 | 1 Unidrive2.asm 144 | Comment | 11 | | 0 | 00/8095 | * Return with carry clear. + 153 | 1 Unidrive2.asm 145 | Comment | 11 | | 0 | 00/8095 | * + 154 | 1 Unidrive2.asm 146 | Code | 11 | | 1 | 00/8095 : 18 | clc + 155 | 1 Unidrive2.asm 147 | Code | 11 | | 1 | 00/8096 : 60 | rts + 156 | 1 Unidrive2.asm 148 | Comment | 11 | | 0 | 00/8097 | *********************************************************** + 157 | 1 Unidrive2.asm 149 | Comment | 11 | | 0 | 00/8097 | * + 158 | 1 Unidrive2.asm 150 | Comment | 11 | | 0 | 00/8097 | * There are the PC signature bytes in their relative order. + 159 | 1 Unidrive2.asm 151 | Comment | 11 | | 0 | 00/8097 | * The $FF bytes are filler bytes and are not compared. + 160 | 1 Unidrive2.asm 152 | Comment | 11 | | 0 | 00/8097 | * + 161 | 1 Unidrive2.asm 153 | Data | 11 | | 4 | 00/8097 : FF 20 FF 00 | sigtab dfb $FF,$20,$FF,$00 + 162 | 1 Unidrive2.asm 154 | Data | 11 | | 4 | 00/809B : FF 03 FF 00 | dfb $FF,$03,$FF,$00 + 163 | 1 Unidrive2.asm 155 | Comment | 11 | | 0 | 00/809F | * + 164 | 1 Unidrive2.asm 156 | Empty | 11 | | 0 | 00/809F | ozunid_9 + 165 | 1 Unidrive2.asm 156 | Equivalence | 11 | | 0 | 00/809F | Dispatch equ ozunid_9 + 166 | 1 Unidrive2.asm 157 | Code | 11 | | 3 | 00/809F : 6C 06 00 | jmp ({$0006}) ;Simulate an indirect JSR to PC + 167 | 1 Unidrive2.asm 158 | Comment | 11 | | 0 | 00/80A2 | * + 168 | 1 Unidrive2.asm 159 | Comment | 11 | | 0 | 00/80A2 | *** Status Parameter Set for UNI *** + 169 | 1 Unidrive2.asm 160 | Empty | 11 | | 0 | 00/80A2 | ozunid_10 + 170 | 1 Unidrive2.asm 160 | Equivalence | 11 | | 0 | 00/80A2 | DParms equ ozunid_10 + 171 | 1 Unidrive2.asm 161 | Data | 11 | | 1 | 00/80A2 : 03 | DPParmsCt dfb 3 ;Status calls have three parameters + 172 | 1 Unidrive2.asm 162 | Data | 11 | | 1 | 00/80A3 : 01 | DPUnit dfb 1 + 173 | 1 Unidrive2.asm 163 | Data | 11 | | 2 | 00/80A4 : A7 80 | DPBuffer dw {ozunid_11} + 174 | 1 Unidrive2.asm 164 | Data | 11 | | 1 | 00/80A6 : 05 | DPStatCode dfb {5} + 175 | 1 Unidrive2.asm 165 | Comment | 11 | | 0 | 00/80A7 | * + 176 | 1 Unidrive2.asm 166 | Comment | 11 | | 0 | 00/80A7 | * + 177 | 1 Unidrive2.asm 167 | Comment | 11 | | 0 | 00/80A7 | * + 178 | 1 Unidrive2.asm 168 | Comment | 11 | | 0 | 00/80A7 | *** Status List UNI *** + 179 | 1 Unidrive2.asm 169 | Empty | 11 | | 0 | 00/80A7 | ozunid_11 + 180 | 1 Unidrive2.asm 169 | Equivalence | 11 | | 0 | 00/80A7 | UNI equ ozunid_11 + 181 | 1 Unidrive2.asm 170 | Data | 11 | | 1 | 00/80A7 : 00 | dfb 0 + 182 | 1 Unidrive2.asm 171 | Data | 11 | | 1 | 00/80A8 : 00 | UNIError dfb 0 + 183 | 1 Unidrive2.asm 172 | Data | 11 | | 1 | 00/80A9 : 00 | UNIRetries dfb 0 + 184 | 1 Unidrive2.asm 173 | Data | 11 | | 1 | 00/80AA : 00 | UNIAcc_reg dfb 0 + 185 | 1 Unidrive2.asm 174 | Data | 11 | | 1 | 00/80AB : 00 | UNIX_reg dfb 0 + 186 | 1 Unidrive2.asm 175 | Data | 11 | | 1 | 00/80AC : 00 | UNIY_reg dfb 0 + 187 | 1 Unidrive2.asm 176 | Data | 11 | | 1 | 00/80AD : 00 | UNIP_val dfb 0 + 188 | 1 Unidrive2.asm 177 | Data | 11 | | 1 | 00/80AE : 00 | HHH dfb 0 + 189 | 1 Unidrive2.asm 178 | Comment | 11 | | 0 | 00/80AF | * + 190 | 1 Unidrive2.asm 179 | Comment | 11 | | 0 | 00/80AF | *** Set Address *** + 191 | 1 Unidrive2.asm 180 | Empty | 11 | | 0 | 00/80AF | ozunid_12 + 192 | 1 Unidrive2.asm 180 | Equivalence | 11 | | 0 | 00/80AF | SET_ADD equ ozunid_12 + 193 | 1 Unidrive2.asm 181 | Data | 11 | | 1 | 00/80AF : 03 | dfb 3 + 194 | 1 Unidrive2.asm 182 | Data | 11 | | 1 | 00/80B0 : 01 | dfb 1 + 195 | 1 Unidrive2.asm 183 | Data | 11 | | 2 | 00/80B1 : CD 80 | dw {ozunid_18} + 196 | 1 Unidrive2.asm 184 | Data | 11 | | 1 | 00/80B3 : 06 | dfb {6} + 197 | 1 Unidrive2.asm 185 | Comment | 11 | | 0 | 00/80B4 | * + 198 | 1 Unidrive2.asm 186 | Comment | 11 | | 0 | 00/80B4 | *** Download *** + 199 | 1 Unidrive2.asm 187 | Empty | 11 | | 0 | 00/80B4 | ozunid_13 + 200 | 1 Unidrive2.asm 187 | Equivalence | 11 | | 0 | 00/80B4 | DOWNLOAD equ ozunid_13 + 201 | 1 Unidrive2.asm 188 | Data | 11 | | 1 | 00/80B4 : 03 | dfb 3 + 202 | 1 Unidrive2.asm 189 | Data | 11 | | 1 | 00/80B5 : 01 | dfb 1 + 203 | 1 Unidrive2.asm 190 | Data | 11 | | 2 | 00/80B6 : D1 80 | dw {ozunid_19} + 204 | 1 Unidrive2.asm 191 | Data | 11 | | 1 | 00/80B8 : 07 | dfb {7} + 205 | 1 Unidrive2.asm 192 | Comment | 11 | | 0 | 00/80B9 | * + 206 | 1 Unidrive2.asm 193 | Comment | 11 | | 0 | 00/80B9 | *** Execute *** + 207 | 1 Unidrive2.asm 194 | Empty | 11 | | 0 | 00/80B9 | ozunid_14 + 208 | 1 Unidrive2.asm 194 | Equivalence | 11 | | 0 | 00/80B9 | EXE equ ozunid_14 + 209 | 1 Unidrive2.asm 195 | Data | 11 | | 1 | 00/80B9 : 03 | dfb 3 + 210 | 1 Unidrive2.asm 196 | Data | 11 | | 1 | 00/80BA : 01 | dfb 1 + 211 | 1 Unidrive2.asm 197 | Data | 11 | | 2 | 00/80BB : C5 80 | dw {ozunid_17} + 212 | 1 Unidrive2.asm 198 | Data | 11 | | 1 | 00/80BD : 05 | dfb {5} + 213 | 1 Unidrive2.asm 199 | Comment | 11 | | 0 | 00/80BE | *** Eject *** + 214 | 1 Unidrive2.asm 200 | Empty | 11 | | 0 | 00/80BE | ozunid_15 + 215 | 1 Unidrive2.asm 200 | Equivalence | 11 | | 0 | 00/80BE | E_JECT equ ozunid_15 + 216 | 1 Unidrive2.asm 201 | Data | 11 | | 1 | 00/80BE : 03 | dfb 3 + 217 | 1 Unidrive2.asm 202 | Data | 11 | | 1 | 00/80BF : 01 | dfb 1 + 218 | 1 Unidrive2.asm 203 | Data | 11 | | 2 | 00/80C0 : C3 80 | dw {ozunid_16} + 219 | 1 Unidrive2.asm 204 | Data | 11 | | 1 | 00/80C2 : 04 | dfb {4} + 220 | 1 Unidrive2.asm 205 | Comment | 11 | | 0 | 00/80C3 | * + 221 | 1 Unidrive2.asm 206 | Comment | 11 | | 0 | 00/80C3 | ******** CONTROL LISTS ******** + 222 | 1 Unidrive2.asm 207 | Comment | 11 | | 0 | 00/80C3 | * + 223 | 1 Unidrive2.asm 208 | Comment | 11 | | 0 | 00/80C3 | * + 224 | 1 Unidrive2.asm 209 | Comment | 11 | | 0 | 00/80C3 | *** Eject *** + 225 | 1 Unidrive2.asm 210 | Empty | 11 | | 0 | 00/80C3 | ozunid_16 + 226 | 1 Unidrive2.asm 210 | Equivalence | 11 | | 0 | 00/80C3 | CNTL_LIST1 equ ozunid_16 + 227 | 1 Unidrive2.asm 211 | Data | 11 | | 2 | 00/80C3 : 00 00 | dw $0000 + 228 | 1 Unidrive2.asm 212 | Comment | 11 | | 0 | 00/80C5 | * + 229 | 1 Unidrive2.asm 213 | Comment | 11 | | 0 | 00/80C5 | *** Execute *** + 230 | 1 Unidrive2.asm 214 | Empty | 11 | | 0 | 00/80C5 | ozunid_17 + 231 | 1 Unidrive2.asm 214 | Equivalence | 11 | | 0 | 00/80C5 | CNTL_LIST2 equ ozunid_17 + 232 | 1 Unidrive2.asm 215 | Data | 11 | | 1 | 00/80C5 : 06 | Clow_byte dfb $06 + 233 | 1 Unidrive2.asm 216 | Data | 11 | | 1 | 00/80C6 : 00 | Chigh_byte dfb $00 + 234 | 1 Unidrive2.asm 217 | Data | 11 | | 1 | 00/80C7 : 00 | AccValue dfb $00 ; Input Value + 235 | 1 Unidrive2.asm 218 | Data | 11 | | 1 | 00/80C8 : 00 | X_reg dfb $00 ; Input Value (N1) + 236 | 1 Unidrive2.asm 219 | Data | 11 | | 1 | 00/80C9 : 00 | Y_reg dfb $00 ; Input Value (N2) + 237 | 1 Unidrive2.asm 220 | Data | 11 | | 1 | 00/80CA : 00 | ProStatus dfb $00 ; Input Value + 238 | 1 Unidrive2.asm 221 | Data | 11 | | 1 | 00/80CB : 05 | LowPC_reg dfb $05 ; Like ORG + 239 | 1 Unidrive2.asm 222 | Data | 11 | | 1 | 00/80CC : 05 | HighPC_reg dfb $05 + 240 | 1 Unidrive2.asm 223 | Comment | 11 | | 0 | 00/80CD | * + 241 | 1 Unidrive2.asm 224 | Comment | 11 | | 0 | 00/80CD | *** Set Address *** + 242 | 1 Unidrive2.asm 225 | Empty | 11 | | 0 | 00/80CD | ozunid_18 + 243 | 1 Unidrive2.asm 225 | Equivalence | 11 | | 0 | 00/80CD | CNTL_LIST3 equ ozunid_18 + 244 | 1 Unidrive2.asm 226 | Data | 11 | | 1 | 00/80CD : 02 | CountL_byte dfb $02 + 245 | 1 Unidrive2.asm 227 | Data | 11 | | 1 | 00/80CE : 00 | CountH_byte dfb $00 + 246 | 1 Unidrive2.asm 228 | Data | 11 | | 1 | 00/80CF : 05 | LByte_Addr dfb $05 ; Like ORG + 247 | 1 Unidrive2.asm 229 | Data | 11 | | 1 | 00/80D0 : 05 | HByte_Addr dfb $05 + 248 | 1 Unidrive2.asm 230 | Comment | 11 | | 0 | 00/80D1 | * + 249 | 1 Unidrive2.asm 231 | Comment | 11 | | 0 | 00/80D1 | *** Download *** + 250 | 1 Unidrive2.asm 232 | Empty | 11 | | 0 | 00/80D1 | ozunid_19 + 251 | 1 Unidrive2.asm 232 | Equivalence | 11 | | 0 | 00/80D1 | CNTL_LIST4 equ ozunid_19 + 252 | 1 Unidrive2.asm 233 | Data | 11 | | 1 | 00/80D1 : 1A | LenghtL_byte dfb $1A ;<----- Lenght of Unidisk program Lo Byte + 253 | 1 Unidrive2.asm 234 | Data | 11 | | 1 | 00/80D2 : 00 | LenghtH_byte dfb $00 ;<----- Lenght of Unidisk program Hi Byte + 254 | 1 Unidrive2.asm 235 | Comment | 11 | | 0 | 00/80D3 | * + 255 | 1 Unidrive2.asm 236 | Comment | 11 | | 0 | 00/80D3 | *** Start UNIDISK Program *** + 256 | 1 Unidrive2.asm 237 | Comment | 11 | | 0 | 00/80D3 | ** Two byte adc ** + 257 | 1 Unidrive2.asm 238 | Directive | 11 | | 0 | 00/80D3 | org $0505 + 258 | 1 Unidrive2.asm 239 | Equivalence | 11 | | 0 | 00/0505 | RSLTU equ $C0 + 259 | 1 Unidrive2.asm 240 | Empty | 11 | | 0 | 00/0505 | + 260 | 1 Unidrive2.asm 241 | Code | 11 | | 1 | 00/0505 : 18 | clc + 261 | 1 Unidrive2.asm 242 | Empty | 11 | | 0 | 00/0506 | + 262 | 1 Unidrive2.asm 243 | Code | 11 | | 3 | 00/0506 : AD 1B 05 | lda N1U ; Lo Byte + 263 | 1 Unidrive2.asm 244 | Code | 11 | | 3 | 00/0509 : 6D 1D 05 | adc N2U + 264 | 1 Unidrive2.asm 245 | Code | 11 | | 2 | 00/050C : 85 C0 | sta {$C0} + 265 | 1 Unidrive2.asm 246 | Empty | 11 | | 0 | 00/050E | + 266 | 1 Unidrive2.asm 247 | Code | 11 | | 3 | 00/050E : AD 1C 05 | lda N1U+1 ; Hi Byte + 267 | 1 Unidrive2.asm 248 | Code | 11 | | 3 | 00/0511 : 6D 1E 05 | adc N2U+1 + 268 | 1 Unidrive2.asm 249 | Code | 11 | | 2 | 00/0514 : 85 C1 | sta {$C0}+1 + 269 | 1 Unidrive2.asm 250 | Comment | 11 | | 0 | 00/0516 | ** Output Data ** + 270 | 1 Unidrive2.asm 251 | Code | 11 | | 2 | 00/0516 : A6 C0 | ldx {$C0} + 271 | 1 Unidrive2.asm 252 | Code | 11 | | 2 | 00/0518 : A4 C1 | ldy {$C0}+1 + 272 | 1 Unidrive2.asm 253 | Empty | 11 | | 0 | 00/051A | + 273 | 1 Unidrive2.asm 254 | Code | 11 | | 1 | 00/051A : 60 | rts + 274 | 1 Unidrive2.asm 255 | Comment | 11 | | 0 | 00/051B | ** Input Dynamic Data append in the end of Unidisk routine ** + 275 | 1 Unidrive2.asm 256 | Data | 11 | | 1 | 00/051B : 00 | N1U dfb $00 + 276 | 1 Unidrive2.asm 257 | Data | 11 | | 1 | 00/051C : 00 | dfb $00 + 277 | 1 Unidrive2.asm 258 | Data | 11 | | 1 | 00/051D : 00 | N2U dfb $00 + 278 | 1 Unidrive2.asm 259 | Data | 11 | | 1 | 00/051E : 00 | dfb $00 +------+-------------------------+-------------+----+---------+------+-----------------------+------------------------------------------------------------------- diff --git a/AppleII/Memory dump/Uniprox b/AppleII/Memory dump/Uniprox new file mode 100644 index 0000000000000000000000000000000000000000..a6c1d4323f5293e0727eb01df45d6b767e5d998a GIT binary patch literal 438 zcmaiuJxc>Y5QgWnxjoDw*cq@{M6gREg0)GIQ%N)*LcrqE2!8wn5pOgXQzU_a*obgB zOmSc&Y3u??qaqg9YNM5;h!O%REW)`P?Ok?zwyvczY&pXcA-0l;hT|n*bJ)nT@<`kaLKYiI8(RA~VTb{}J#+`QkF9>!50Sl& z#*){M#Hai2bBDa^kDd_&{1@mjQx)nAMJyt_GjxvFMxXwA(qnP95oYlO<02B>(!$Xa z*k16aijT!AcJqOLt%V%3 zpc3d!qw9DdDqrwCi|)Cn+lupGDh`;`QkwK-6Z^`&^5hPd^g?0k%kg*~nl!jeOd8ZZ z=7C2%IG{kJW0Z-sg9QFNM5-Yrl7kA7t^{<6egMj`H;`o?e=6kLxei~{zV7Hh#+

Y + 141 | 1 Uniprox.asm 135 | Code | 11 | | 1 | 00/80BC : C8 | iny ; Y+ --> $FF + 142 | 1 Uniprox.asm 136 | Code | 11 | | 3 | 00/80BD : 8C A1 81 | sty Y_reg ; Y --> Y_reg Uni=$FF + 143 | 1 Uniprox.asm 137 | Comment | 11 | | 0 | 00/80C0 | *** Execute *** + 144 | 1 Uniprox.asm 138 | Code | 11 | | 1 | 00/80C0 : E8 | EXEC inx + 145 | 1 Uniprox.asm 139 | Code | 11 | | 2 | 00/80C1 : 86 0A | stx {$000A} ; 1 time set LowMain=$00 + 146 | 1 Uniprox.asm 140 | Code | 11 | | 3 | 00/80C3 : 8E A0 81 | stx X_reg + 147 | 1 Uniprox.asm 141 | Code | 11 | | 3 | 00/80C6 : 20 59 81 | jsr {ozunid_12} + 148 | 1 Uniprox.asm 142 | Data | 11 | | 1 | 00/80C9 : 04 | dfb {4} + 149 | 1 Uniprox.asm 143 | Data | 11 | | 2 | 00/80CA : 91 81 | dw {ozunid_19} + 150 | 1 Uniprox.asm 144 | Code | 11 | | 3 | 00/80CC : 20 59 81 | READ jsr {ozunid_12} + 151 | 1 Uniprox.asm 145 | Data | 11 | | 1 | 00/80CF : 00 | dfb {0} + 152 | 1 Uniprox.asm 146 | Data | 11 | | 2 | 00/80D0 : 5C 81 | dw {ozunid_13} + 153 | 1 Uniprox.asm 147 | Code | 11 | | 2 | 00/80D2 : B0 C0 | bcs {ozunid_4} + 154 | 1 Uniprox.asm 148 | Comment | 11 | | 0 | 00/80D4 | * + 155 | 1 Uniprox.asm 149 | Comment | 11 | | 0 | 00/80D4 | **** Screen Output **** + 156 | 1 Uniprox.asm 150 | Comment | 11 | | 0 | 00/80D4 | * + 157 | 1 Uniprox.asm 151 | Comment | 11 | | 0 | 00/80D4 | *** Accumulator *** + 158 | 1 Uniprox.asm 152 | Code | 11 | | 3 | 00/80D4 : AD 82 81 | lda UNIAcc_reg + 159 | 1 Uniprox.asm 153 | Code | 11 | | 3 | 00/80D7 : 20 ED FD | jsr {$FDED} ; Out the ASCII value + 160 | 1 Uniprox.asm 154 | Code | 11 | | 2 | 00/80DA : A2 03 | ldx #03 ; Set 3 space + 161 | 1 Uniprox.asm 155 | Code | 11 | | 3 | 00/80DC : 20 4A F9 | jsr {$F94A} + 162 | 1 Uniprox.asm 156 | Comment | 11 | | 0 | 00/80DF | *** Y Register *** + 163 | 1 Uniprox.asm 157 | Code | 11 | | 3 | 00/80DF : AD 84 81 | lda UNIY_reg + 164 | 1 Uniprox.asm 158 | Code | 11 | | 3 | 00/80E2 : 20 DA FD | jsr {$FDDA} + 165 | 1 Uniprox.asm 159 | Comment | 11 | | 0 | 00/80E5 | *** X Register *** + 166 | 1 Uniprox.asm 160 | Code | 11 | | 3 | 00/80E5 : AD 83 81 | lda UNIX_reg + 167 | 1 Uniprox.asm 161 | Code | 11 | | 3 | 00/80E8 : 20 DA FD | jsr {$FDDA} + 168 | 1 Uniprox.asm 162 | Code | 11 | | 2 | 00/80EB : A2 01 | ldx #01 ; Set one space + 169 | 1 Uniprox.asm 163 | Code | 11 | | 3 | 00/80ED : 20 4A F9 | jsr {$F94A} + 170 | 1 Uniprox.asm 164 | Comment | 11 | | 0 | 00/80F0 | *** Process Status *** + 171 | 1 Uniprox.asm 165 | Code | 11 | | 3 | 00/80F0 : AD 85 81 | lda UNIP_val + 172 | 1 Uniprox.asm 166 | Code | 11 | | 3 | 00/80F3 : 20 DA FD | jsr {$FDDA} + 173 | 1 Uniprox.asm 167 | Code | 11 | | 2 | 00/80F6 : A2 05 | ldx #05 ; Set five space + 174 | 1 Uniprox.asm 168 | Code | 11 | | 3 | 00/80F8 : 20 4A F9 | jsr {$F94A} + 175 | 1 Uniprox.asm 169 | Comment | 11 | | 0 | 00/80FB | ** //c Memory store adress ** + 176 | 1 Uniprox.asm 170 | Code | 11 | | 2 | 00/80FB : A5 0B | lda {$000B} + 177 | 1 Uniprox.asm 171 | Code | 11 | | 3 | 00/80FD : 20 DA FD | jsr {$FDDA} + 178 | 1 Uniprox.asm 172 | Code | 11 | | 2 | 00/8100 : A5 0A | lda {$000A} + 179 | 1 Uniprox.asm 173 | Code | 11 | | 3 | 00/8102 : 20 DA FD | jsr {$FDDA} + 180 | 1 Uniprox.asm 174 | Code | 11 | | 3 | 00/8105 : 20 8E FD | jsr {$FD8E} + 181 | 1 Uniprox.asm 175 | Comment | 11 | | 0 | 00/8108 | **** Store in //c Main Memory **** + 182 | 1 Uniprox.asm 176 | Code | 11 | | 3 | 00/8108 : AE A0 81 | ldx X_reg + 183 | 1 Uniprox.asm 177 | Code | 11 | | 3 | 00/810B : AD 82 81 | lda UNIAcc_reg ;#$FB Test + 184 | 1 Uniprox.asm 178 | Code | 11 | | 2 | 00/810E : A0 00 | ldy #0 + 185 | 1 Uniprox.asm 179 | Code | 11 | | 2 | 00/8110 : 91 0A | sta ({$000A}),y + 186 | 1 Uniprox.asm 180 | Code | 11 | | 3 | 00/8112 : EC 17 81 | cpx UNIL_End + 187 | 1 Uniprox.asm 181 | Code | 11 | | 2 | 00/8115 : D0 A9 | bne EXEC + 188 | 1 Uniprox.asm 182 | Data | 11 | | 1 | 00/8117 : FF | UNIL_End dfb $FF ; Lo Byte stop (Unidisk) - $C0 for zero page + 189 | 1 Uniprox.asm 183 | Comment | 11 | | 0 | 00/8118 | *** Increment HiMain *** + 190 | 1 Uniprox.asm 184 | Code | 11 | | 2 | 00/8118 : E6 0B | inc {$000B} + 191 | 1 Uniprox.asm 185 | Code | 11 | | 3 | 00/811A : AC A1 81 | ldy Y_reg + 192 | 1 Uniprox.asm 186 | Code | 11 | | 3 | 00/811D : CC 22 81 | cpy UNIH_End + 193 | 1 Uniprox.asm 187 | Code | 11 | | 2 | 00/8120 : D0 94 | bne RESET + 194 | 1 Uniprox.asm 188 | Data | 11 | | 1 | 00/8122 : FF | UNIH_End dfb $FF ; Hi Byte stop (Unidisk) - $00 for zero page + 195 | 1 Uniprox.asm 189 | Comment | 11 | | 0 | 00/8123 | * + 196 | 1 Uniprox.asm 190 | Code | 11 | | 1 | 00/8123 : 60 | rts + 197 | 1 Uniprox.asm 191 | Empty | 11 | | 0 | 00/8124 | + 198 | 1 Uniprox.asm 192 | Comment | 11 | | 0 | 00/8124 | ****************************************************** + 199 | 1 Uniprox.asm 193 | Empty | 11 | | 0 | 00/8124 | ozunid_7 + 200 | 1 Uniprox.asm 193 | Equivalence | 11 | | 0 | 00/8124 | FindPC equ ozunid_7 + 201 | 1 Uniprox.asm 194 | Comment | 11 | | 0 | 00/8124 | * + 202 | 1 Uniprox.asm 195 | Comment | 11 | | 0 | 00/8124 | * Search slot 7 to slot 1 looking for signature bytes + 203 | 1 Uniprox.asm 196 | Comment | 11 | | 0 | 00/8124 | * + 204 | 1 Uniprox.asm 197 | Code | 11 | | 2 | 00/8124 : A2 07 | ldx #7 ;Do for seven slots + 205 | 1 Uniprox.asm 198 | Code | 11 | | 2 | 00/8126 : A9 C7 | lda #$C7 + 206 | 1 Uniprox.asm 199 | Code | 11 | | 2 | 00/8128 : 85 07 | sta {$0007} + 207 | 1 Uniprox.asm 200 | Code | 11 | | 2 | 00/812A : A9 00 | lda #$00 + 208 | 1 Uniprox.asm 201 | Code | 11 | | 2 | 00/812C : 85 06 | sta {$0006} + 209 | 1 Uniprox.asm 202 | Comment | 11 | | 0 | 00/812E | * + 210 | 1 Uniprox.asm 203 | Empty | 11 | | 0 | 00/812E | ozunid_8 + 211 | 1 Uniprox.asm 203 | Equivalence | 11 | | 0 | 00/812E | newslot equ ozunid_8 + 212 | 1 Uniprox.asm 204 | Code | 11 | | 2 | 00/812E : A0 07 | ldy #7 + 213 | 1 Uniprox.asm 205 | Comment | 11 | | 0 | 00/8130 | * + 214 | 1 Uniprox.asm 206 | Empty | 11 | | 0 | 00/8130 | ozunid_9 + 215 | 1 Uniprox.asm 206 | Equivalence | 11 | | 0 | 00/8130 | again equ ozunid_9 + 216 | 1 Uniprox.asm 207 | Code | 11 | | 2 | 00/8130 : B1 06 | lda ({$0006}),y + 217 | 1 Uniprox.asm 208 | Code | 11 | | 3 | 00/8132 : D9 51 81 | cmp sigtab,y ;One for byte signature + 218 | 1 Uniprox.asm 209 | Code | 11 | | 2 | 00/8135 : F0 07 | beq {ozunid_10} ;Found one signature byte + 219 | 1 Uniprox.asm 210 | Code | 11 | | 2 | 00/8137 : C6 07 | dec {$0007} + 220 | 1 Uniprox.asm 211 | Code | 11 | | 1 | 00/8139 : CA | dex + 221 | 1 Uniprox.asm 212 | Code | 11 | | 2 | 00/813A : D0 F2 | bne {ozunid_8} + 222 | 1 Uniprox.asm 213 | Comment | 11 | | 0 | 00/813C | * + 223 | 1 Uniprox.asm 214 | Comment | 11 | | 0 | 00/813C | * if we get here, no PC find + 224 | 1 Uniprox.asm 215 | Code | 11 | | 1 | 00/813C : 38 | sec + 225 | 1 Uniprox.asm 216 | Code | 11 | | 1 | 00/813D : 60 | rts + 226 | 1 Uniprox.asm 217 | Comment | 11 | | 0 | 00/813E | * + 227 | 1 Uniprox.asm 218 | Comment | 11 | | 0 | 00/813E | * if we get here, no byte find on PC + 228 | 1 Uniprox.asm 219 | Empty | 11 | | 0 | 00/813E | ozunid_10 + 229 | 1 Uniprox.asm 219 | Equivalence | 11 | | 0 | 00/813E | maybe equ ozunid_10 + 230 | 1 Uniprox.asm 220 | Code | 11 | | 1 | 00/813E : 88 | dey + 231 | 1 Uniprox.asm 221 | Code | 11 | | 1 | 00/813F : 88 | dey ;if N=1 then all sig bytes OK + 232 | 1 Uniprox.asm 222 | Code | 11 | | 2 | 00/8140 : 10 EE | bpl {ozunid_9} + 233 | 1 Uniprox.asm 223 | Comment | 11 | | 0 | 00/8142 | * Found PC interface. Set up call address. + 234 | 1 Uniprox.asm 224 | Comment | 11 | | 0 | 00/8142 | * we already have high byte ($CN), we need low byte + 235 | 1 Uniprox.asm 225 | Comment | 11 | | 0 | 00/8142 | * + 236 | 1 Uniprox.asm 226 | Empty | 11 | | 0 | 00/8142 | ozunid_11 + 237 | 1 Uniprox.asm 226 | Equivalence | 11 | | 0 | 00/8142 | foundPC equ ozunid_11 + 238 | 1 Uniprox.asm 227 | Code | 11 | | 2 | 00/8142 : A9 FF | lda #$FF + 239 | 1 Uniprox.asm 228 | Code | 11 | | 2 | 00/8144 : 85 06 | sta {$0006} + 240 | 1 Uniprox.asm 229 | Code | 11 | | 2 | 00/8146 : A0 00 | ldy #0 ;For indirect load + 241 | 1 Uniprox.asm 230 | Code | 11 | | 2 | 00/8148 : B1 06 | lda ({$0006}),y ;Get the byte + 242 | 1 Uniprox.asm 231 | Comment | 11 | | 0 | 00/814A | * + 243 | 1 Uniprox.asm 232 | Comment | 11 | | 0 | 00/814A | * Now the Acc has the low oreder ProDOS entry point. + 244 | 1 Uniprox.asm 233 | Comment | 11 | | 0 | 00/814A | * The PC entry is three locations past this ... + 245 | 1 Uniprox.asm 234 | Comment | 11 | | 0 | 00/814A | * + 246 | 1 Uniprox.asm 235 | Code | 11 | | 1 | 00/814A : 18 | clc + 247 | 1 Uniprox.asm 236 | Code | 11 | | 2 | 00/814B : 69 03 | adc #3 + 248 | 1 Uniprox.asm 237 | Code | 11 | | 2 | 00/814D : 85 06 | sta {$0006} + 249 | 1 Uniprox.asm 238 | Comment | 11 | | 0 | 00/814F | * + 250 | 1 Uniprox.asm 239 | Comment | 11 | | 0 | 00/814F | * Now ZPTempL has PC entry point. + 251 | 1 Uniprox.asm 240 | Comment | 11 | | 0 | 00/814F | * Return with carry clear. + 252 | 1 Uniprox.asm 241 | Comment | 11 | | 0 | 00/814F | * + 253 | 1 Uniprox.asm 242 | Code | 11 | | 1 | 00/814F : 18 | clc + 254 | 1 Uniprox.asm 243 | Code | 11 | | 1 | 00/8150 : 60 | rts + 255 | 1 Uniprox.asm 244 | Comment | 11 | | 0 | 00/8151 | *********************************************************** + 256 | 1 Uniprox.asm 245 | Comment | 11 | | 0 | 00/8151 | * + 257 | 1 Uniprox.asm 246 | Comment | 11 | | 0 | 00/8151 | * There are the PC signature bytes in their relative order. + 258 | 1 Uniprox.asm 247 | Comment | 11 | | 0 | 00/8151 | * The $FF bytes are filler bytes and are not compared. + 259 | 1 Uniprox.asm 248 | Comment | 11 | | 0 | 00/8151 | * + 260 | 1 Uniprox.asm 249 | Data | 11 | | 4 | 00/8151 : FF 20 FF 00 | sigtab dfb $FF,$20,$FF,$00 + 261 | 1 Uniprox.asm 250 | Data | 11 | | 4 | 00/8155 : FF 03 FF 00 | dfb $FF,$03,$FF,$00 + 262 | 1 Uniprox.asm 251 | Comment | 11 | | 0 | 00/8159 | * + 263 | 1 Uniprox.asm 252 | Empty | 11 | | 0 | 00/8159 | ozunid_12 + 264 | 1 Uniprox.asm 252 | Equivalence | 11 | | 0 | 00/8159 | Dispatch equ ozunid_12 + 265 | 1 Uniprox.asm 253 | Code | 11 | | 3 | 00/8159 : 6C 06 00 | jmp ({$0006}) ;Simulate an indirect JSR to PC + 266 | 1 Uniprox.asm 254 | Comment | 11 | | 0 | 00/815C | * + 267 | 1 Uniprox.asm 255 | Comment | 11 | | 0 | 00/815C | *** Status Parameter Set for UNI *** + 268 | 1 Uniprox.asm 256 | Empty | 11 | | 0 | 00/815C | ozunid_13 + 269 | 1 Uniprox.asm 256 | Equivalence | 11 | | 0 | 00/815C | DParms equ ozunid_13 + 270 | 1 Uniprox.asm 257 | Data | 11 | | 1 | 00/815C : 03 | DPParmsCt dfb 3 ;Status calls have three parameters + 271 | 1 Uniprox.asm 258 | Data | 11 | | 1 | 00/815D : 01 | DPUnit dfb 1 + 272 | 1 Uniprox.asm 259 | Data | 11 | | 2 | 00/815E : 7F 81 | DPBuffer dw {ozunid_16} + 273 | 1 Uniprox.asm 260 | Data | 11 | | 1 | 00/8160 : 05 | DPStatCode dfb {5} + 274 | 1 Uniprox.asm 261 | Comment | 11 | | 0 | 00/8161 | * + 275 | 1 Uniprox.asm 262 | Comment | 11 | | 0 | 00/8161 | * + 276 | 1 Uniprox.asm 263 | Comment | 11 | | 0 | 00/8161 | *** Status Parameter Set for DIB *** + 277 | 1 Uniprox.asm 264 | Empty | 11 | | 0 | 00/8161 | ozunid_14 + 278 | 1 Uniprox.asm 264 | Equivalence | 11 | | 0 | 00/8161 | DParmsDIB equ ozunid_14 + 279 | 1 Uniprox.asm 265 | Data | 11 | | 1 | 00/8161 : 03 | DPParmsCt2 dfb 3 ;Status calls have three parameters + 280 | 1 Uniprox.asm 266 | Data | 11 | | 1 | 00/8162 : 01 | DPUnit2 dfb 1 + 281 | 1 Uniprox.asm 267 | Data | 11 | | 2 | 00/8163 : 66 81 | DPBuffer2 dw {ozunid_15} + 282 | 1 Uniprox.asm 268 | Data | 11 | | 1 | 00/8165 : 03 | DPStatCode2 dfb {3} + 283 | 1 Uniprox.asm 269 | Comment | 11 | | 0 | 00/8166 | * + 284 | 1 Uniprox.asm 270 | Comment | 11 | | 0 | 00/8166 | * + 285 | 1 Uniprox.asm 271 | Comment | 11 | | 0 | 00/8166 | *** Status List DIB *** + 286 | 1 Uniprox.asm 272 | Empty | 11 | | 0 | 00/8166 | ozunid_15 + 287 | 1 Uniprox.asm 272 | Equivalence | 11 | | 0 | 00/8166 | DIB equ ozunid_15 + 288 | 1 Uniprox.asm 273 | Data | 11 | | 1 | 00/8166 : 00 | DIBStatByte1 dfb 0 + 289 | 1 Uniprox.asm 274 | Data | 11 | | 3 | 00/8167 : 00 00 00 | DIBDevSize dfb 0,0,0 + 290 | 1 Uniprox.asm 275 | Data | 11 | | 1 | 00/816A : 00 | DIBNameLen dfb 0 + 291 | 1 Uniprox.asm 276 | Data | 11 | | 16 | 00/816B : 00 00 00 00 | DIBName ds 16,0 + | | | | | | 00 00 00 00 | + | | | | | | 00 00 00 00 | + | | | | | | 00 00 00 00 | + 292 | 1 Uniprox.asm 277 | Data | 11 | | 1 | 00/817B : 00 | DIBType dfb 0 + 293 | 1 Uniprox.asm 278 | Data | 11 | | 1 | 00/817C : 00 | DIBSubType dfb 0 + 294 | 1 Uniprox.asm 279 | Data | 11 | | 2 | 00/817D : 00 00 | DIBVersion dw 0 + 295 | 1 Uniprox.asm 280 | Comment | 11 | | 0 | 00/817F | * + 296 | 1 Uniprox.asm 281 | Comment | 11 | | 0 | 00/817F | *** Status List UNI *** + 297 | 1 Uniprox.asm 282 | Empty | 11 | | 0 | 00/817F | ozunid_16 + 298 | 1 Uniprox.asm 282 | Equivalence | 11 | | 0 | 00/817F | UNI equ ozunid_16 + 299 | 1 Uniprox.asm 283 | Data | 11 | | 1 | 00/817F : 00 | dfb 0 + 300 | 1 Uniprox.asm 284 | Data | 11 | | 1 | 00/8180 : 00 | UNIError dfb 0 + 301 | 1 Uniprox.asm 285 | Data | 11 | | 1 | 00/8181 : 00 | UNIRetries dfb 0 + 302 | 1 Uniprox.asm 286 | Data | 11 | | 1 | 00/8182 : 00 | UNIAcc_reg dfb 0 + 303 | 1 Uniprox.asm 287 | Data | 11 | | 1 | 00/8183 : 00 | UNIX_reg dfb 0 + 304 | 1 Uniprox.asm 288 | Data | 11 | | 1 | 00/8184 : 00 | UNIY_reg dfb 0 + 305 | 1 Uniprox.asm 289 | Data | 11 | | 1 | 00/8185 : 00 | UNIP_val dfb 0 + 306 | 1 Uniprox.asm 290 | Data | 11 | | 1 | 00/8186 : 00 | HHH dfb 0 + 307 | 1 Uniprox.asm 291 | Comment | 11 | | 0 | 00/8187 | * + 308 | 1 Uniprox.asm 292 | Comment | 11 | | 0 | 00/8187 | *** Set Address *** + 309 | 1 Uniprox.asm 293 | Empty | 11 | | 0 | 00/8187 | ozunid_17 + 310 | 1 Uniprox.asm 293 | Equivalence | 11 | | 0 | 00/8187 | SET_ADD equ ozunid_17 + 311 | 1 Uniprox.asm 294 | Data | 11 | | 1 | 00/8187 : 03 | dfb 3 + 312 | 1 Uniprox.asm 295 | Data | 11 | | 1 | 00/8188 : 01 | dfb 1 + 313 | 1 Uniprox.asm 296 | Data | 11 | | 2 | 00/8189 : A5 81 | dw {ozunid_23} + 314 | 1 Uniprox.asm 297 | Data | 11 | | 1 | 00/818B : 06 | dfb {6} + 315 | 1 Uniprox.asm 298 | Comment | 11 | | 0 | 00/818C | * + 316 | 1 Uniprox.asm 299 | Comment | 11 | | 0 | 00/818C | *** Download *** + 317 | 1 Uniprox.asm 300 | Empty | 11 | | 0 | 00/818C | ozunid_18 + 318 | 1 Uniprox.asm 300 | Equivalence | 11 | | 0 | 00/818C | DOWNLOAD equ ozunid_18 + 319 | 1 Uniprox.asm 301 | Data | 11 | | 1 | 00/818C : 03 | dfb 3 + 320 | 1 Uniprox.asm 302 | Data | 11 | | 1 | 00/818D : 01 | dfb 1 + 321 | 1 Uniprox.asm 303 | Data | 11 | | 2 | 00/818E : A9 81 | dw {ozunid_24} + 322 | 1 Uniprox.asm 304 | Data | 11 | | 1 | 00/8190 : 07 | dfb {7} + 323 | 1 Uniprox.asm 305 | Comment | 11 | | 0 | 00/8191 | * + 324 | 1 Uniprox.asm 306 | Comment | 11 | | 0 | 00/8191 | *** Execute *** + 325 | 1 Uniprox.asm 307 | Empty | 11 | | 0 | 00/8191 | ozunid_19 + 326 | 1 Uniprox.asm 307 | Equivalence | 11 | | 0 | 00/8191 | EXE equ ozunid_19 + 327 | 1 Uniprox.asm 308 | Data | 11 | | 1 | 00/8191 : 03 | dfb 3 + 328 | 1 Uniprox.asm 309 | Data | 11 | | 1 | 00/8192 : 01 | dfb 1 + 329 | 1 Uniprox.asm 310 | Data | 11 | | 2 | 00/8193 : 9D 81 | dw {ozunid_22} + 330 | 1 Uniprox.asm 311 | Data | 11 | | 1 | 00/8195 : 05 | dfb {5} + 331 | 1 Uniprox.asm 312 | Comment | 11 | | 0 | 00/8196 | *** Eject *** + 332 | 1 Uniprox.asm 313 | Empty | 11 | | 0 | 00/8196 | ozunid_20 + 333 | 1 Uniprox.asm 313 | Equivalence | 11 | | 0 | 00/8196 | E_JECT equ ozunid_20 + 334 | 1 Uniprox.asm 314 | Data | 11 | | 1 | 00/8196 : 03 | dfb 3 + 335 | 1 Uniprox.asm 315 | Data | 11 | | 1 | 00/8197 : 01 | dfb 1 + 336 | 1 Uniprox.asm 316 | Data | 11 | | 2 | 00/8198 : 9B 81 | dw {ozunid_21} + 337 | 1 Uniprox.asm 317 | Data | 11 | | 1 | 00/819A : 04 | dfb {4} + 338 | 1 Uniprox.asm 318 | Comment | 11 | | 0 | 00/819B | * + 339 | 1 Uniprox.asm 319 | Comment | 11 | | 0 | 00/819B | ******** CONTROL LISTS ******** + 340 | 1 Uniprox.asm 320 | Comment | 11 | | 0 | 00/819B | * + 341 | 1 Uniprox.asm 321 | Comment | 11 | | 0 | 00/819B | * + 342 | 1 Uniprox.asm 322 | Comment | 11 | | 0 | 00/819B | *** Eject *** + 343 | 1 Uniprox.asm 323 | Empty | 11 | | 0 | 00/819B | ozunid_21 + 344 | 1 Uniprox.asm 323 | Equivalence | 11 | | 0 | 00/819B | CNTL_LIST1 equ ozunid_21 + 345 | 1 Uniprox.asm 324 | Data | 11 | | 2 | 00/819B : 00 00 | dw $0000 + 346 | 1 Uniprox.asm 325 | Comment | 11 | | 0 | 00/819D | * + 347 | 1 Uniprox.asm 326 | Comment | 11 | | 0 | 00/819D | *** Execute *** + 348 | 1 Uniprox.asm 327 | Empty | 11 | | 0 | 00/819D | ozunid_22 + 349 | 1 Uniprox.asm 327 | Equivalence | 11 | | 0 | 00/819D | CNTL_LIST2 equ ozunid_22 + 350 | 1 Uniprox.asm 328 | Data | 11 | | 1 | 00/819D : 06 | Clow_byte dfb $06 + 351 | 1 Uniprox.asm 329 | Data | 11 | | 1 | 00/819E : 00 | Chigh_byte dfb $00 + 352 | 1 Uniprox.asm 330 | Data | 11 | | 1 | 00/819F : 00 | AccValue dfb $00 + 353 | 1 Uniprox.asm 331 | Data | 11 | | 1 | 00/81A0 : 00 | X_reg dfb $00 ;($80E3) Lo Byte start $00 (Unidisk) + 354 | 1 Uniprox.asm 332 | Data | 11 | | 1 | 00/81A1 : DF | Y_reg dfb $DF ;($80E4) Hi Byte One more before start $E0 - $FF-->$00 for zero page (Unidisk) + 355 | 1 Uniprox.asm 333 | Data | 11 | | 1 | 00/81A2 : 00 | ProStatus dfb $00 + 356 | 1 Uniprox.asm 334 | Data | 11 | | 1 | 00/81A3 : 05 | LowPC_reg dfb $05 + 357 | 1 Uniprox.asm 335 | Data | 11 | | 1 | 00/81A4 : 05 | HighPC_reg dfb $05 + 358 | 1 Uniprox.asm 336 | Comment | 11 | | 0 | 00/81A5 | * + 359 | 1 Uniprox.asm 337 | Comment | 11 | | 0 | 00/81A5 | *** Set Address *** + 360 | 1 Uniprox.asm 338 | Empty | 11 | | 0 | 00/81A5 | ozunid_23 + 361 | 1 Uniprox.asm 338 | Equivalence | 11 | | 0 | 00/81A5 | CNTL_LIST3 equ ozunid_23 + 362 | 1 Uniprox.asm 339 | Data | 11 | | 1 | 00/81A5 : 02 | CountL_byte dfb $02 + 363 | 1 Uniprox.asm 340 | Data | 11 | | 1 | 00/81A6 : 00 | CountH_byte dfb $00 + 364 | 1 Uniprox.asm 341 | Data | 11 | | 1 | 00/81A7 : 05 | LByte_Addr dfb $05 + 365 | 1 Uniprox.asm 342 | Data | 11 | | 1 | 00/81A8 : 05 | HByte_Addr dfb $05 + 366 | 1 Uniprox.asm 343 | Comment | 11 | | 0 | 00/81A9 | * + 367 | 1 Uniprox.asm 344 | Comment | 11 | | 0 | 00/81A9 | *** Download *** + 368 | 1 Uniprox.asm 345 | Empty | 11 | | 0 | 00/81A9 | ozunid_24 + 369 | 1 Uniprox.asm 345 | Equivalence | 11 | | 0 | 00/81A9 | CNTL_LIST4 equ ozunid_24 + 370 | 1 Uniprox.asm 346 | Data | 11 | | 1 | 00/81A9 : 0B | LenghtL_byte dfb $0B + 371 | 1 Uniprox.asm 347 | Data | 11 | | 1 | 00/81AA : 00 | LenghtH_byte dfb $00 + 372 | 1 Uniprox.asm 348 | Comment | 11 | | 0 | 00/81AB | * + 373 | 1 Uniprox.asm 349 | Comment | 11 | | 0 | 00/81AB | *** Start UNIDISK Program *** + 374 | 1 Uniprox.asm 350 | Comment | 11 | | 0 | 00/81AB | ** Temporaney save in UNIDISK "Free zero page space" the address point stored in UNIDISK X, Y registers** + 375 | 1 Uniprox.asm 351 | Code | 11 | | 2 | 00/81AB : 86 C0 | stx $00C0 + 376 | 1 Uniprox.asm 352 | Code | 11 | | 2 | 00/81AD : 84 C1 | sty $00C1 + 377 | 1 Uniprox.asm 353 | Comment | 11 | | 0 | 00/81AF | ** Store in UNIDISK Accumulator the value of the UniDISK location that is store in $00C0 plus $00C1 + 378 | 1 Uniprox.asm 354 | Code | 11 | | 2 | 00/81AF : A0 00 | ldy #0 + 379 | 1 Uniprox.asm 355 | Code | 11 | | 2 | 00/81B1 : B1 C0 | lda ($00C0),y + 380 | 1 Uniprox.asm 356 | Comment | 11 | | 0 | 00/81B3 | ** Restore the value of Y Unidisk register + 381 | 1 Uniprox.asm 357 | Code | 11 | | 2 | 00/81B3 : A4 C1 | ldy $00C1 + 382 | 1 Uniprox.asm 358 | Code | 11 | | 1 | 00/81B5 : 60 | rts +------+-----------------------+-------------+----+---------+------+-----------------------+------------------------------------------------------------------- diff --git a/AppleII/Memory dump/Uniproz b/AppleII/Memory dump/Uniproz new file mode 100644 index 0000000000000000000000000000000000000000..a6a6dd1c9dbc2b89968827a4aa280a26f1e58a90 GIT binary patch literal 249 zcmY%BY1ojuQlXVw;a~&H#Rd?0tzprBi8W6ePV_u!c+tky_ZTdC8$>c3Y1m-C_DqAq zt-ou}g2{7W@;r!C==;0waRX3x0mDSDH?a*D4jp*L4K(LWM#F`*3<--E_Et1}U{iSe z_r-;;34ZIi))ytvuiKIBKDQXTiI7Kw6ZN=-^g}zXTt~fW9+9ce6mRB z=n#0f@;^|VVI!MFCUYyBM8bcC{|x_`|1;#UF)%ZpY+z-80%pb+4Q$MeZyMN{86PyT bvH^wvGqAEU0Wmj2+kuvYKr;?3IhX(dCs}Pk literal 0 HcmV?d00001 diff --git a/AppleII/Memory dump/Uniproz_Output.txt b/AppleII/Memory dump/Uniproz_Output.txt new file mode 100644 index 0000000..e9c86e2 --- /dev/null +++ b/AppleII/Memory dump/Uniproz_Output.txt @@ -0,0 +1,270 @@ +------+-----------------------+-------------+----+---------+------+-----------------------+------------------------------------------------------------------- + Line | # File Line | Line Type | MX | Reloc | Size | Address Object Code | Source Code +------+-----------------------+-------------+----+---------+------+-----------------------+------------------------------------------------------------------- + 1 | 1 Uniproz.asm 1 | Comment | 11 | | 0 | 00/8000 | * @com.wudsn.ide.asm.hardware=APPLE2 + 2 | 1 Uniproz.asm 2 | Comment | 11 | | 0 | 00/8000 | * Protocol Converter Call + 3 | 1 Uniproz.asm 3 | Directive | 11 | | 0 | 00/8000 | XC + 4 | 1 Uniproz.asm 4 | Equivalence | 11 | | 0 | 00/8000 | ZPTempL equ $0006 ;Temporary zero page storage + 5 | 1 Uniproz.asm 5 | Equivalence | 11 | | 0 | 00/8000 | ZPTempH equ $0007 + 6 | 1 Uniproz.asm 6 | Comment | 11 | | 0 | 00/8000 | *** Pointers *** + 7 | 1 Uniproz.asm 7 | Equivalence | 11 | | 0 | 00/8000 | LowMain equ $000A + 8 | 1 Uniproz.asm 8 | Equivalence | 11 | | 0 | 00/8000 | HiMain equ $000B + 9 | 1 Uniproz.asm 9 | Comment | 11 | | 0 | 00/8000 | *** Monitor routines *** + 10 | 1 Uniproz.asm 10 | Equivalence | 11 | | 0 | 00/8000 | COut equ $FDED ;Console output ASCII + 11 | 1 Uniproz.asm 11 | Equivalence | 11 | | 0 | 00/8000 | CROut equ $FD8E ;Carriage return + 12 | 1 Uniproz.asm 12 | Equivalence | 11 | | 0 | 00/8000 | PRbyte equ $FDDA ;Print byte in hex + 13 | 1 Uniproz.asm 13 | Comment | 11 | | 0 | 00/8000 | ** Command Code ** + 14 | 1 Uniproz.asm 14 | Equivalence | 11 | | 0 | 00/8000 | StatusCmd equ 0 + 15 | 1 Uniproz.asm 15 | Comment | 11 | | 0 | 00/8000 | ** Status Code ** + 16 | 1 Uniproz.asm 16 | Equivalence | 11 | | 0 | 00/8000 | StatusDIB equ 3 + 17 | 1 Uniproz.asm 17 | Equivalence | 11 | | 0 | 00/8000 | StatusUNI equ 5 + 18 | 1 Uniproz.asm 18 | Comment | 11 | | 0 | 00/8000 | * + 19 | 1 Uniproz.asm 19 | Equivalence | 11 | | 0 | 00/8000 | ControlCmd equ 4 + 20 | 1 Uniproz.asm 20 | Comment | 11 | | 0 | 00/8000 | ** Control Codes ** + 21 | 1 Uniproz.asm 21 | Equivalence | 11 | | 0 | 00/8000 | Run equ 5 + 22 | 1 Uniproz.asm 22 | Equivalence | 11 | | 0 | 00/8000 | SetDWLoad equ 6 + 23 | 1 Uniproz.asm 23 | Equivalence | 11 | | 0 | 00/8000 | DWLoad equ 7 + 24 | 1 Uniproz.asm 24 | Comment | 11 | | 0 | 00/8000 | * + 25 | 1 Uniproz.asm 25 | Directive | 11 | | 0 | 00/8000 | org $8000 + 26 | 1 Uniproz.asm 26 | Comment | 11 | | 0 | 00/8000 | * + 27 | 1 Uniproz.asm 27 | Comment | 11 | | 0 | 00/8000 | * Find a Protocol Converter in one of the slots. + 28 | 1 Uniproz.asm 28 | Comment | 11 | | 0 | 00/8000 | * + 29 | 1 Uniproz.asm 29 | Code | 11 | | 3 | 00/8000 : 20 8C 80 | jsr {ozunid_4} + 30 | 1 Uniproz.asm 30 | Code | 11 | | 2 | 00/8003 : B0 65 | bcs {ozunid_1} + 31 | 1 Uniproz.asm 31 | Comment | 11 | | 0 | 00/8005 | * + 32 | 1 Uniproz.asm 32 | Comment | 11 | | 0 | 00/8005 | *** Set HiMain Memory Pointers *** + 33 | 1 Uniproz.asm 33 | Code | 11 | | 2 | 00/8005 : A9 20 | lda #$20 + 34 | 1 Uniproz.asm 34 | Code | 11 | | 2 | 00/8007 : 85 0B | sta {$000B} + 35 | 1 Uniproz.asm 35 | Comment | 11 | | 0 | 00/8009 | *** Set Address *** + 36 | 1 Uniproz.asm 36 | Code | 11 | | 3 | 00/8009 : 20 C1 80 | jsr {ozunid_9} + 37 | 1 Uniproz.asm 37 | Data | 11 | | 1 | 00/800C : 04 | dfb {4} + 38 | 1 Uniproz.asm 38 | Data | 11 | | 2 | 00/800D : D1 80 | dw {ozunid_12} + 39 | 1 Uniproz.asm 39 | Comment | 11 | | 0 | 00/800F | *** Download *** + 40 | 1 Uniproz.asm 40 | Code | 11 | | 3 | 00/800F : 20 C1 80 | jsr {ozunid_9} + 41 | 1 Uniproz.asm 41 | Data | 11 | | 1 | 00/8012 : 04 | dfb {4} + 42 | 1 Uniproz.asm 42 | Data | 11 | | 2 | 00/8013 : D6 80 | dw {ozunid_13} + 43 | 1 Uniproz.asm 43 | Comment | 11 | | 0 | 00/8015 | *** Set and Reset LoMain Memory Counter *** + 44 | 1 Uniproz.asm 44 | Code | 11 | | 2 | 00/8015 : A2 FF | RESET ldx #$FF ;One more before start + 45 | 1 Uniproz.asm 45 | Code | 11 | | 1 | 00/8017 : 18 | clc + 46 | 1 Uniproz.asm 46 | Code | 11 | | 3 | 00/8018 : AC E4 80 | ldy Y_reg + 47 | 1 Uniproz.asm 47 | Code | 11 | | 1 | 00/801B : C8 | iny + 48 | 1 Uniproz.asm 48 | Code | 11 | | 3 | 00/801C : 8C E4 80 | sty Y_reg + 49 | 1 Uniproz.asm 49 | Comment | 11 | | 0 | 00/801F | *** Execute *** + 50 | 1 Uniproz.asm 50 | Code | 11 | | 1 | 00/801F : E8 | EXEC inx + 51 | 1 Uniproz.asm 51 | Code | 11 | | 2 | 00/8020 : 86 0A | stx {$000A} + 52 | 1 Uniproz.asm 52 | Code | 11 | | 3 | 00/8022 : 8E E3 80 | stx X_reg + 53 | 1 Uniproz.asm 53 | Code | 11 | | 3 | 00/8025 : 20 C1 80 | jsr {ozunid_9} + 54 | 1 Uniproz.asm 54 | Data | 11 | | 1 | 00/8028 : 04 | dfb {4} + 55 | 1 Uniproz.asm 55 | Data | 11 | | 2 | 00/8029 : DB 80 | dw {ozunid_14} + 56 | 1 Uniproz.asm 56 | Code | 11 | | 3 | 00/802B : 20 C1 80 | READ jsr {ozunid_9} + 57 | 1 Uniproz.asm 57 | Data | 11 | | 1 | 00/802E : 00 | dfb {0} + 58 | 1 Uniproz.asm 58 | Data | 11 | | 2 | 00/802F : C4 80 | dw {ozunid_10} + 59 | 1 Uniproz.asm 59 | Code | 11 | | 2 | 00/8031 : B0 37 | bcs {ozunid_1} + 60 | 1 Uniproz.asm 60 | Comment | 11 | | 0 | 00/8033 | * + 61 | 1 Uniproz.asm 61 | Comment | 11 | | 0 | 00/8033 | *** Accumulator *** + 62 | 1 Uniproz.asm 62 | Code | 11 | | 3 | 00/8033 : AD CC 80 | lda UNIAcc_reg + 63 | 1 Uniproz.asm 63 | Code | 11 | | 3 | 00/8036 : 20 DA FD | jsr {$FDDA} + 64 | 1 Uniproz.asm 64 | Comment | 11 | | 0 | 00/8039 | *** X Register *** + 65 | 1 Uniproz.asm 65 | Code | 11 | | 3 | 00/8039 : AD CD 80 | lda UNIX_reg + 66 | 1 Uniproz.asm 66 | Code | 11 | | 3 | 00/803C : 20 DA FD | jsr {$FDDA} + 67 | 1 Uniproz.asm 67 | Comment | 11 | | 0 | 00/803F | *** Y Register *** + 68 | 1 Uniproz.asm 68 | Code | 11 | | 3 | 00/803F : AD CE 80 | lda UNIY_reg + 69 | 1 Uniproz.asm 69 | Code | 11 | | 3 | 00/8042 : 20 DA FD | jsr {$FDDA} + 70 | 1 Uniproz.asm 70 | Comment | 11 | | 0 | 00/8045 | *** Prrocess Status *** + 71 | 1 Uniproz.asm 71 | Code | 11 | | 3 | 00/8045 : AD CF 80 | lda UNIP_val + 72 | 1 Uniproz.asm 72 | Code | 11 | | 3 | 00/8048 : 20 DA FD | jsr {$FDDA} + 73 | 1 Uniproz.asm 73 | Code | 11 | | 3 | 00/804B : 20 8E FD | jsr {$FD8E} + 74 | 1 Uniproz.asm 74 | Comment | 11 | | 0 | 00/804E | **** Store in //c Main Memory **** + 75 | 1 Uniproz.asm 75 | Code | 11 | | 3 | 00/804E : AE E3 80 | ldx X_reg + 76 | 1 Uniproz.asm 76 | Code | 11 | | 3 | 00/8051 : AD CC 80 | lda UNIAcc_reg ;#$FB Test + 77 | 1 Uniproz.asm 77 | Code | 11 | | 2 | 00/8054 : A0 00 | ldy #0 + 78 | 1 Uniproz.asm 78 | Code | 11 | | 2 | 00/8056 : 91 0A | sta ({$000A}),y + 79 | 1 Uniproz.asm 79 | Code | 11 | | 3 | 00/8058 : EC 5D 80 | cpx UNIL_End + 80 | 1 Uniproz.asm 80 | Code | 11 | | 2 | 00/805B : D0 C2 | bne EXEC + 81 | 1 Uniproz.asm 81 | Data | 11 | | 1 | 00/805D : C0 | UNIL_End dfb $C0 ;$FF + 82 | 1 Uniproz.asm 82 | Comment | 11 | | 0 | 00/805E | *** Increment HiMain *** + 83 | 1 Uniproz.asm 83 | Code | 11 | | 2 | 00/805E : E6 0B | inc {$000B} + 84 | 1 Uniproz.asm 84 | Code | 11 | | 3 | 00/8060 : AC E4 80 | ldy Y_reg + 85 | 1 Uniproz.asm 85 | Code | 11 | | 3 | 00/8063 : CC 68 80 | cpy UNIH_End + 86 | 1 Uniproz.asm 86 | Code | 11 | | 2 | 00/8066 : D0 AD | bne RESET + 87 | 1 Uniproz.asm 87 | Data | 11 | | 1 | 00/8068 : 00 | UNIH_End dfb $00 ;$FF + 88 | 1 Uniproz.asm 88 | Comment | 11 | | 0 | 00/8069 | * + 89 | 1 Uniproz.asm 89 | Code | 11 | | 1 | 00/8069 : 60 | rts + 90 | 1 Uniproz.asm 90 | Comment | 11 | | 0 | 00/806A | * + 91 | 1 Uniproz.asm 91 | Empty | 11 | | 0 | 00/806A | ozunid_1 + 92 | 1 Uniproz.asm 91 | Equivalence | 11 | | 0 | 00/806A | Error equ ozunid_1 + 93 | 1 Uniproz.asm 92 | Comment | 11 | | 0 | 00/806A | * + 94 | 1 Uniproz.asm 93 | Comment | 11 | | 0 | 00/806A | * There's either no PC around, or there was no give message + 95 | 1 Uniproz.asm 94 | Comment | 11 | | 0 | 00/806A | * + 96 | 1 Uniproz.asm 95 | Code | 11 | | 2 | 00/806A : A2 00 | ldx #0 + 97 | 1 Uniproz.asm 96 | Empty | 11 | | 0 | 00/806C | ozunid_2 + 98 | 1 Uniproz.asm 96 | Equivalence | 11 | | 0 | 00/806C | err1 equ ozunid_2 + 99 | 1 Uniproz.asm 97 | Code | 11 | | 3 | 00/806C : BD 78 80 | lda Message,x + 100 | 1 Uniproz.asm 98 | Code | 11 | | 2 | 00/806F : F0 06 | beq {ozunid_3} + 101 | 1 Uniproz.asm 99 | Code | 11 | | 3 | 00/8071 : 20 ED FD | jsr {$FDED} + 102 | 1 Uniproz.asm 100 | Code | 11 | | 1 | 00/8074 : E8 | inx + 103 | 1 Uniproz.asm 101 | Code | 11 | | 2 | 00/8075 : D0 F5 | bne {ozunid_2} + 104 | 1 Uniproz.asm 102 | Comment | 11 | | 0 | 00/8077 | * + 105 | 1 Uniproz.asm 103 | Empty | 11 | | 0 | 00/8077 | ozunid_3 + 106 | 1 Uniproz.asm 103 | Equivalence | 11 | | 0 | 00/8077 | errout equ ozunid_3 + 107 | 1 Uniproz.asm 104 | Code | 11 | | 1 | 00/8077 : 60 | rts + 108 | 1 Uniproz.asm 105 | Comment | 11 | | 0 | 00/8078 | * + 109 | 1 Uniproz.asm 106 | Data | 11 | | 18 | 00/8078 : 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 | + 110 | 1 Uniproz.asm 107 | Data | 11 | | 2 | 00/808A : 8D 00 | dfb $8D,0 + 111 | 1 Uniproz.asm 108 | Comment | 11 | | 0 | 00/808C | * + 112 | 1 Uniproz.asm 109 | Empty | 11 | | 0 | 00/808C | ozunid_4 + 113 | 1 Uniproz.asm 109 | Equivalence | 11 | | 0 | 00/808C | FindPC equ ozunid_4 + 114 | 1 Uniproz.asm 110 | Comment | 11 | | 0 | 00/808C | * + 115 | 1 Uniproz.asm 111 | Comment | 11 | | 0 | 00/808C | * Search slot 7 to slot 1 looking for signature bytes + 116 | 1 Uniproz.asm 112 | Comment | 11 | | 0 | 00/808C | * + 117 | 1 Uniproz.asm 113 | Code | 11 | | 2 | 00/808C : A2 07 | ldx #7 ;Do for seven slots + 118 | 1 Uniproz.asm 114 | Code | 11 | | 2 | 00/808E : A9 C7 | lda #$C7 + 119 | 1 Uniproz.asm 115 | Code | 11 | | 2 | 00/8090 : 85 07 | sta {$0007} + 120 | 1 Uniproz.asm 116 | Code | 11 | | 2 | 00/8092 : A9 00 | lda #$00 + 121 | 1 Uniproz.asm 117 | Code | 11 | | 2 | 00/8094 : 85 06 | sta {$0006} + 122 | 1 Uniproz.asm 118 | Comment | 11 | | 0 | 00/8096 | * + 123 | 1 Uniproz.asm 119 | Empty | 11 | | 0 | 00/8096 | ozunid_5 + 124 | 1 Uniproz.asm 119 | Equivalence | 11 | | 0 | 00/8096 | newslot equ ozunid_5 + 125 | 1 Uniproz.asm 120 | Code | 11 | | 2 | 00/8096 : A0 07 | ldy #7 + 126 | 1 Uniproz.asm 121 | Comment | 11 | | 0 | 00/8098 | * + 127 | 1 Uniproz.asm 122 | Empty | 11 | | 0 | 00/8098 | ozunid_6 + 128 | 1 Uniproz.asm 122 | Equivalence | 11 | | 0 | 00/8098 | again equ ozunid_6 + 129 | 1 Uniproz.asm 123 | Code | 11 | | 2 | 00/8098 : B1 06 | lda ({$0006}),y + 130 | 1 Uniproz.asm 124 | Code | 11 | | 3 | 00/809A : D9 B9 80 | cmp sigtab,y ;One for byte signature + 131 | 1 Uniproz.asm 125 | Code | 11 | | 2 | 00/809D : F0 07 | beq {ozunid_7} ;Found one signature byte + 132 | 1 Uniproz.asm 126 | Code | 11 | | 2 | 00/809F : C6 07 | dec {$0007} + 133 | 1 Uniproz.asm 127 | Code | 11 | | 1 | 00/80A1 : CA | dex + 134 | 1 Uniproz.asm 128 | Code | 11 | | 2 | 00/80A2 : D0 F2 | bne {ozunid_5} + 135 | 1 Uniproz.asm 129 | Comment | 11 | | 0 | 00/80A4 | * + 136 | 1 Uniproz.asm 130 | Comment | 11 | | 0 | 00/80A4 | * if we get here, no PC find + 137 | 1 Uniproz.asm 131 | Code | 11 | | 1 | 00/80A4 : 38 | sec + 138 | 1 Uniproz.asm 132 | Code | 11 | | 1 | 00/80A5 : 60 | rts + 139 | 1 Uniproz.asm 133 | Comment | 11 | | 0 | 00/80A6 | * + 140 | 1 Uniproz.asm 134 | Comment | 11 | | 0 | 00/80A6 | * if we get here, no byte find on PC + 141 | 1 Uniproz.asm 135 | Empty | 11 | | 0 | 00/80A6 | ozunid_7 + 142 | 1 Uniproz.asm 135 | Equivalence | 11 | | 0 | 00/80A6 | maybe equ ozunid_7 + 143 | 1 Uniproz.asm 136 | Code | 11 | | 1 | 00/80A6 : 88 | dey + 144 | 1 Uniproz.asm 137 | Code | 11 | | 1 | 00/80A7 : 88 | dey ;if N=1 then all sig bytes OK + 145 | 1 Uniproz.asm 138 | Code | 11 | | 2 | 00/80A8 : 10 EE | bpl {ozunid_6} + 146 | 1 Uniproz.asm 139 | Comment | 11 | | 0 | 00/80AA | * Found PC interface. Set up call address. + 147 | 1 Uniproz.asm 140 | Comment | 11 | | 0 | 00/80AA | * we already have high byte ($CN), we need low byte + 148 | 1 Uniproz.asm 141 | Comment | 11 | | 0 | 00/80AA | * + 149 | 1 Uniproz.asm 142 | Empty | 11 | | 0 | 00/80AA | ozunid_8 + 150 | 1 Uniproz.asm 142 | Equivalence | 11 | | 0 | 00/80AA | foundPC equ ozunid_8 + 151 | 1 Uniproz.asm 143 | Code | 11 | | 2 | 00/80AA : A9 FF | lda #$FF + 152 | 1 Uniproz.asm 144 | Code | 11 | | 2 | 00/80AC : 85 06 | sta {$0006} + 153 | 1 Uniproz.asm 145 | Code | 11 | | 2 | 00/80AE : A0 00 | ldy #0 ;For indirect load + 154 | 1 Uniproz.asm 146 | Code | 11 | | 2 | 00/80B0 : B1 06 | lda ({$0006}),y ;Get the byte + 155 | 1 Uniproz.asm 147 | Comment | 11 | | 0 | 00/80B2 | * + 156 | 1 Uniproz.asm 148 | Comment | 11 | | 0 | 00/80B2 | * Now the Acc has the low oreder ProDOS entry point. + 157 | 1 Uniproz.asm 149 | Comment | 11 | | 0 | 00/80B2 | * The PC entry is three locations past this ... + 158 | 1 Uniproz.asm 150 | Comment | 11 | | 0 | 00/80B2 | * + 159 | 1 Uniproz.asm 151 | Code | 11 | | 1 | 00/80B2 : 18 | clc + 160 | 1 Uniproz.asm 152 | Code | 11 | | 2 | 00/80B3 : 69 03 | adc #3 + 161 | 1 Uniproz.asm 153 | Code | 11 | | 2 | 00/80B5 : 85 06 | sta {$0006} + 162 | 1 Uniproz.asm 154 | Comment | 11 | | 0 | 00/80B7 | * + 163 | 1 Uniproz.asm 155 | Comment | 11 | | 0 | 00/80B7 | * Now ZPTempL has PC entry point. + 164 | 1 Uniproz.asm 156 | Comment | 11 | | 0 | 00/80B7 | * Return with carry clear. + 165 | 1 Uniproz.asm 157 | Comment | 11 | | 0 | 00/80B7 | * + 166 | 1 Uniproz.asm 158 | Code | 11 | | 1 | 00/80B7 : 18 | clc + 167 | 1 Uniproz.asm 159 | Code | 11 | | 1 | 00/80B8 : 60 | rts + 168 | 1 Uniproz.asm 160 | Comment | 11 | | 0 | 00/80B9 | * + 169 | 1 Uniproz.asm 161 | Comment | 11 | | 0 | 00/80B9 | * There are the PC signature bytes in their relative order. + 170 | 1 Uniproz.asm 162 | Comment | 11 | | 0 | 00/80B9 | * The $FF bytes are filler bytes and are not compared. + 171 | 1 Uniproz.asm 163 | Comment | 11 | | 0 | 00/80B9 | * + 172 | 1 Uniproz.asm 164 | Data | 11 | | 4 | 00/80B9 : FF 20 FF 00 | sigtab dfb $FF,$20,$FF,$00 + 173 | 1 Uniproz.asm 165 | Data | 11 | | 4 | 00/80BD : FF 03 FF 00 | dfb $FF,$03,$FF,$00 + 174 | 1 Uniproz.asm 166 | Comment | 11 | | 0 | 00/80C1 | * + 175 | 1 Uniproz.asm 167 | Empty | 11 | | 0 | 00/80C1 | ozunid_9 + 176 | 1 Uniproz.asm 167 | Equivalence | 11 | | 0 | 00/80C1 | Dispatch equ ozunid_9 + 177 | 1 Uniproz.asm 168 | Code | 11 | | 3 | 00/80C1 : 6C 06 00 | jmp ({$0006}) ;Simulate an indirect JSR to PC + 178 | 1 Uniproz.asm 169 | Comment | 11 | | 0 | 00/80C4 | *** Status Parameter Set *** + 179 | 1 Uniproz.asm 170 | Empty | 11 | | 0 | 00/80C4 | ozunid_10 + 180 | 1 Uniproz.asm 170 | Equivalence | 11 | | 0 | 00/80C4 | DParms equ ozunid_10 + 181 | 1 Uniproz.asm 171 | Data | 11 | | 1 | 00/80C4 : 03 | DPParmsCt dfb 3 ;Status calls have three parameters + 182 | 1 Uniproz.asm 172 | Data | 11 | | 1 | 00/80C5 : 01 | DPUnit dfb 1 + 183 | 1 Uniproz.asm 173 | Data | 11 | | 2 | 00/80C6 : C9 80 | DPBuffer dw {ozunid_11} + 184 | 1 Uniproz.asm 174 | Data | 11 | | 1 | 00/80C8 : 05 | DPStatCode dfb {5} + 185 | 1 Uniproz.asm 175 | Comment | 11 | | 0 | 00/80C9 | * + 186 | 1 Uniproz.asm 176 | Comment | 11 | | 0 | 00/80C9 | * + 187 | 1 Uniproz.asm 177 | Comment | 11 | | 0 | 00/80C9 | *** Status List UNI *** + 188 | 1 Uniproz.asm 178 | Empty | 11 | | 0 | 00/80C9 | ozunid_11 + 189 | 1 Uniproz.asm 178 | Equivalence | 11 | | 0 | 00/80C9 | UNI equ ozunid_11 + 190 | 1 Uniproz.asm 179 | Data | 11 | | 1 | 00/80C9 : 00 | dfb 0 + 191 | 1 Uniproz.asm 180 | Data | 11 | | 1 | 00/80CA : 00 | UNIError dfb 0 + 192 | 1 Uniproz.asm 181 | Data | 11 | | 1 | 00/80CB : 00 | UNIRetries dfb 0 + 193 | 1 Uniproz.asm 182 | Data | 11 | | 1 | 00/80CC : 00 | UNIAcc_reg dfb 0 + 194 | 1 Uniproz.asm 183 | Data | 11 | | 1 | 00/80CD : 00 | UNIX_reg dfb 0 + 195 | 1 Uniproz.asm 184 | Data | 11 | | 1 | 00/80CE : 00 | UNIY_reg dfb 0 + 196 | 1 Uniproz.asm 185 | Data | 11 | | 1 | 00/80CF : 00 | UNIP_val dfb 0 + 197 | 1 Uniproz.asm 186 | Data | 11 | | 1 | 00/80D0 : 00 | HHH dfb 0 + 198 | 1 Uniproz.asm 187 | Comment | 11 | | 0 | 00/80D1 | * + 199 | 1 Uniproz.asm 188 | Comment | 11 | | 0 | 00/80D1 | *** Set Address *** + 200 | 1 Uniproz.asm 189 | Empty | 11 | | 0 | 00/80D1 | ozunid_12 + 201 | 1 Uniproz.asm 189 | Equivalence | 11 | | 0 | 00/80D1 | SET_ADD equ ozunid_12 + 202 | 1 Uniproz.asm 190 | Data | 11 | | 1 | 00/80D1 : 03 | dfb 3 + 203 | 1 Uniproz.asm 191 | Data | 11 | | 1 | 00/80D2 : 01 | dfb 1 + 204 | 1 Uniproz.asm 192 | Data | 11 | | 2 | 00/80D3 : E8 80 | dw {ozunid_16} + 205 | 1 Uniproz.asm 193 | Data | 11 | | 1 | 00/80D5 : 06 | dfb {6} + 206 | 1 Uniproz.asm 194 | Comment | 11 | | 0 | 00/80D6 | * + 207 | 1 Uniproz.asm 195 | Comment | 11 | | 0 | 00/80D6 | *** Download *** + 208 | 1 Uniproz.asm 196 | Empty | 11 | | 0 | 00/80D6 | ozunid_13 + 209 | 1 Uniproz.asm 196 | Equivalence | 11 | | 0 | 00/80D6 | DOWNLOAD equ ozunid_13 + 210 | 1 Uniproz.asm 197 | Data | 11 | | 1 | 00/80D6 : 03 | dfb 3 + 211 | 1 Uniproz.asm 198 | Data | 11 | | 1 | 00/80D7 : 01 | dfb 1 + 212 | 1 Uniproz.asm 199 | Data | 11 | | 2 | 00/80D8 : EC 80 | dw {ozunid_17} + 213 | 1 Uniproz.asm 200 | Data | 11 | | 1 | 00/80DA : 07 | dfb {7} + 214 | 1 Uniproz.asm 201 | Comment | 11 | | 0 | 00/80DB | * + 215 | 1 Uniproz.asm 202 | Comment | 11 | | 0 | 00/80DB | *** Execute *** + 216 | 1 Uniproz.asm 203 | Empty | 11 | | 0 | 00/80DB | ozunid_14 + 217 | 1 Uniproz.asm 203 | Equivalence | 11 | | 0 | 00/80DB | EXE equ ozunid_14 + 218 | 1 Uniproz.asm 204 | Data | 11 | | 1 | 00/80DB : 03 | dfb 3 + 219 | 1 Uniproz.asm 205 | Data | 11 | | 1 | 00/80DC : 01 | dfb 1 + 220 | 1 Uniproz.asm 206 | Data | 11 | | 2 | 00/80DD : E0 80 | dw {ozunid_15} + 221 | 1 Uniproz.asm 207 | Data | 11 | | 1 | 00/80DF : 05 | dfb {5} + 222 | 1 Uniproz.asm 208 | Comment | 11 | | 0 | 00/80E0 | * + 223 | 1 Uniproz.asm 209 | Comment | 11 | | 0 | 00/80E0 | * + 224 | 1 Uniproz.asm 210 | Comment | 11 | | 0 | 00/80E0 | ******** CONTROL LISTS ******** + 225 | 1 Uniproz.asm 211 | Comment | 11 | | 0 | 00/80E0 | * + 226 | 1 Uniproz.asm 212 | Comment | 11 | | 0 | 00/80E0 | * + 227 | 1 Uniproz.asm 213 | Comment | 11 | | 0 | 00/80E0 | *** Execute *** + 228 | 1 Uniproz.asm 214 | Empty | 11 | | 0 | 00/80E0 | ozunid_15 + 229 | 1 Uniproz.asm 214 | Equivalence | 11 | | 0 | 00/80E0 | CNTL_LIST2 equ ozunid_15 + 230 | 1 Uniproz.asm 215 | Data | 11 | | 1 | 00/80E0 : 06 | Clow_byte dfb $06 + 231 | 1 Uniproz.asm 216 | Data | 11 | | 1 | 00/80E1 : 00 | Chigh_byte dfb $00 + 232 | 1 Uniproz.asm 217 | Data | 11 | | 1 | 00/80E2 : 00 | AccValue dfb $00 + 233 | 1 Uniproz.asm 218 | Data | 11 | | 1 | 00/80E3 : 00 | X_reg dfb $00 ;($80E3) + 234 | 1 Uniproz.asm 219 | Data | 11 | | 1 | 00/80E4 : FF | Y_reg dfb $FF ;($80E4) One more before start + 235 | 1 Uniproz.asm 220 | Data | 11 | | 1 | 00/80E5 : 00 | ProStatus dfb $00 + 236 | 1 Uniproz.asm 221 | Data | 11 | | 1 | 00/80E6 : 05 | LowPC_reg dfb $05 + 237 | 1 Uniproz.asm 222 | Data | 11 | | 1 | 00/80E7 : 05 | HighPC_reg dfb $05 + 238 | 1 Uniproz.asm 223 | Comment | 11 | | 0 | 00/80E8 | * + 239 | 1 Uniproz.asm 224 | Comment | 11 | | 0 | 00/80E8 | *** Set Address *** + 240 | 1 Uniproz.asm 225 | Empty | 11 | | 0 | 00/80E8 | ozunid_16 + 241 | 1 Uniproz.asm 225 | Equivalence | 11 | | 0 | 00/80E8 | CNTL_LIST3 equ ozunid_16 + 242 | 1 Uniproz.asm 226 | Data | 11 | | 1 | 00/80E8 : 02 | CountL_byte dfb $02 + 243 | 1 Uniproz.asm 227 | Data | 11 | | 1 | 00/80E9 : 00 | CountH_byte dfb $00 + 244 | 1 Uniproz.asm 228 | Data | 11 | | 1 | 00/80EA : 05 | LByte_Addr dfb $05 + 245 | 1 Uniproz.asm 229 | Data | 11 | | 1 | 00/80EB : 05 | HByte_Addr dfb $05 + 246 | 1 Uniproz.asm 230 | Comment | 11 | | 0 | 00/80EC | * + 247 | 1 Uniproz.asm 231 | Comment | 11 | | 0 | 00/80EC | *** Download *** + 248 | 1 Uniproz.asm 232 | Empty | 11 | | 0 | 00/80EC | ozunid_17 + 249 | 1 Uniproz.asm 232 | Equivalence | 11 | | 0 | 00/80EC | CNTL_LIST4 equ ozunid_17 + 250 | 1 Uniproz.asm 233 | Data | 11 | | 1 | 00/80EC : 0B | LenghtL_byte dfb $0B + 251 | 1 Uniproz.asm 234 | Data | 11 | | 1 | 00/80ED : 00 | LenghtH_byte dfb $00 + 252 | 1 Uniproz.asm 235 | Comment | 11 | | 0 | 00/80EE | * + 253 | 1 Uniproz.asm 236 | Comment | 11 | | 0 | 00/80EE | *** Start UNIDISK Program *** + 254 | 1 Uniproz.asm 237 | Comment | 11 | | 0 | 00/80EE | ** Temporaney save in UNIDISK "Free zero page space" the address point stored in UNIDISK X, Y registers** + 255 | 1 Uniproz.asm 238 | Code | 11 | | 2 | 00/80EE : 86 C0 | stx $00C0 + 256 | 1 Uniproz.asm 239 | Code | 11 | | 2 | 00/80F0 : 84 C1 | sty $00C1 + 257 | 1 Uniproz.asm 240 | Comment | 11 | | 0 | 00/80F2 | ** Store in UNIDISK Accumulator the value of the UniDISK location that is store in $00C0 plus $00C1 + 258 | 1 Uniproz.asm 241 | Code | 11 | | 2 | 00/80F2 : A0 00 | ldy #0 + 259 | 1 Uniproz.asm 242 | Code | 11 | | 2 | 00/80F4 : B1 C0 | lda ($00C0),y + 260 | 1 Uniproz.asm 243 | Comment | 11 | | 0 | 00/80F6 | ** Restore the value of Y Unidisk register + 261 | 1 Uniproz.asm 244 | Code | 11 | | 2 | 00/80F6 : A4 C1 | ldy $00C1 + 262 | 1 Uniproz.asm 245 | Code | 11 | | 1 | 00/80F8 : 60 | rts +------+-----------------------+-------------+----+---------+------+-----------------------+------------------------------------------------------------------- diff --git a/AppleII/N integer adc 2 Byte/TestN b/AppleII/N integer adc 2 Byte/TestN new file mode 100644 index 0000000..e511c2a --- /dev/null +++ b/AppleII/N integer adc 2 Byte/TestN @@ -0,0 +1,2 @@ +HĭIťąŅ +:¥ŅL+:ée…eŅĥÅL` \ No newline at end of file diff --git a/AppleII/N integer adc 2 Byte/TestN_Output.txt b/AppleII/N integer adc 2 Byte/TestN_Output.txt new file mode 100644 index 0000000..13e91db --- /dev/null +++ b/AppleII/N integer adc 2 Byte/TestN_Output.txt @@ -0,0 +1,75 @@ +------+---------------------+-------------+----+---------+------+-----------------------+------------------------------------------------------------------- + Line | # File Line | Line Type | MX | Reloc | Size | Address Object Code | Source Code +------+---------------------+-------------+----+---------+------+-----------------------+------------------------------------------------------------------- + 1 | 1 TestN.asm 1 | Comment | 11 | | 0 | 00/8000 | * @com.wudsn.ide.asm.hardware=APPLE2 + 2 | 1 TestN.asm 2 | Comment | 11 | | 0 | 00/8000 | *** Start UNIDISK Program *** + 3 | 1 TestN.asm 3 | Comment | 11 | | 0 | 00/8000 | ** Two byte adc ** + 4 | 1 TestN.asm 4 | Directive | 11 | | 0 | 00/8000 | org $300 + 5 | 1 TestN.asm 5 | Equivalence | 11 | | 0 | 00/0300 | RSLTU equ $C0 + 6 | 1 TestN.asm 6 | Equivalence | 11 | | 0 | 00/0300 | NDEC equ $C2 + 7 | 1 TestN.asm 7 | Equivalence | 11 | | 0 | 00/0300 | N equ $C4 + 8 | 1 TestN.asm 8 | Empty | 11 | | 0 | 00/0300 | + 9 | 1 TestN.asm 9 | Comment | 11 | | 0 | 00/0300 | ** Save the N number ** + 10 | 1 TestN.asm 10 | Code | 11 | | 3 | 00/0300 : AD 48 03 | lda N1U + 11 | 1 TestN.asm 11 | Code | 11 | | 2 | 00/0303 : 85 C4 | sta {$C4} + 12 | 1 TestN.asm 12 | Code | 11 | | 3 | 00/0305 : AD 49 03 | lda N1U+1 + 13 | 1 TestN.asm 13 | Code | 11 | | 2 | 00/0308 : 85 C5 | sta {$C4}+1 + 14 | 1 TestN.asm 14 | Comment | 11 | | 0 | 00/030A | ** Set RSLTU=N ** + 15 | 1 TestN.asm 15 | Code | 11 | | 2 | 00/030A : A5 C4 | lda {$C4} + 16 | 1 TestN.asm 16 | Code | 11 | | 2 | 00/030C : 85 C0 | sta {$C0} ; N Lo + 17 | 1 TestN.asm 17 | Code | 11 | | 2 | 00/030E : A5 C5 | lda {$C4}+1 + 18 | 1 TestN.asm 18 | Code | 11 | | 2 | 00/0310 : 85 C1 | sta {$C0}+1 ; N Hi + 19 | 1 TestN.asm 19 | Empty | 11 | | 0 | 00/0312 | + 20 | 1 TestN.asm 20 | Code | 11 | | 2 | 00/0312 : A5 C4 | LOOP lda {$C4} + 21 | 1 TestN.asm 21 | Empty | 11 | | 0 | 00/0314 | + 22 | 1 TestN.asm 22 | Code | 11 | | 2 | 00/0314 : F0 0A | beq HI ; If NLo =0 dec NHi + 23 | 1 TestN.asm 23 | Empty | 11 | | 0 | 00/0316 | + 24 | 1 TestN.asm 24 | Comment | 11 | | 0 | 00/0316 | ** Set NDEC=N-1 Lo ** + 25 | 1 TestN.asm 25 | Code | 11 | | 1 | 00/0316 : 3A | dec A + 26 | 1 TestN.asm 26 | Code | 11 | | 2 | 00/0317 : 85 C2 | sta {$C2} ; N-1 Lo + 27 | 1 TestN.asm 27 | Comment | 11 | | 0 | 00/0319 | ** Set NDEC=N Hi ** + 28 | 1 TestN.asm 28 | Code | 11 | | 2 | 00/0319 : A5 C5 | lda {$C4}+1 + 29 | 1 TestN.asm 29 | Code | 11 | | 2 | 00/031B : 85 C3 | sta {$C2}+1 ; NHi = NDEC Hi + 30 | 1 TestN.asm 30 | Empty | 11 | | 0 | 00/031D | + 31 | 1 TestN.asm 31 | Code | 11 | | 3 | 00/031D : 4C 2B 03 | jmp ENTRY + 32 | 1 TestN.asm 32 | Empty | 11 | | 0 | 00/0320 | + 33 | 1 TestN.asm 33 | Comment | 11 | | 0 | 00/0320 | ** Set NDEC=N-1 Hi ** + 34 | 1 TestN.asm 34 | Code | 11 | | 2 | 00/0320 : A5 C5 | HI lda {$C4}+1 + 35 | 1 TestN.asm 35 | Empty | 11 | | 0 | 00/0322 | + 36 | 1 TestN.asm 36 | Code | 11 | | 2 | 00/0322 : F0 1F | beq DONE ; If also NHi =0 done + 37 | 1 TestN.asm 37 | Empty | 11 | | 0 | 00/0324 | + 38 | 1 TestN.asm 38 | Code | 11 | | 1 | 00/0324 : 3A | dec A + 39 | 1 TestN.asm 39 | Code | 11 | | 2 | 00/0325 : 85 C3 | sta {$C2}+1 ; N-1 Hi + 40 | 1 TestN.asm 40 | Empty | 11 | | 0 | 00/0327 | + 41 | 1 TestN.asm 41 | Code | 11 | | 2 | 00/0327 : A9 FF | lda #$FF + 42 | 1 TestN.asm 42 | Code | 11 | | 2 | 00/0329 : 85 C2 | sta {$C2} ; N-1 Lo = FF Set NDEC to FF + 43 | 1 TestN.asm 43 | Empty | 11 | | 0 | 00/032B | + 44 | 1 TestN.asm 44 | Code | 11 | | 1 | 00/032B : 18 | ENTRY clc + 45 | 1 TestN.asm 45 | Empty | 11 | | 0 | 00/032C | + 46 | 1 TestN.asm 46 | Code | 11 | | 2 | 00/032C : A5 C0 | lda {$C0} ; Lo Byte + 47 | 1 TestN.asm 47 | Code | 11 | | 2 | 00/032E : 65 C2 | adc {$C2} ; N+(N-1) + 48 | 1 TestN.asm 48 | Code | 11 | | 2 | 00/0330 : 85 C0 | sta {$C0} + 49 | 1 TestN.asm 49 | Empty | 11 | | 0 | 00/0332 | + 50 | 1 TestN.asm 50 | Code | 11 | | 2 | 00/0332 : A5 C1 | lda {$C0}+1 ; Hi Byte + 51 | 1 TestN.asm 51 | Code | 11 | | 2 | 00/0334 : 65 C3 | adc {$C2}+1 ; N+(N-1) + 52 | 1 TestN.asm 52 | Code | 11 | | 2 | 00/0336 : 85 C1 | sta {$C0}+1 + 53 | 1 TestN.asm 53 | Empty | 11 | | 0 | 00/0338 | + 54 | 1 TestN.asm 54 | Comment | 11 | | 0 | 00/0338 | ** Update N=NDEC ** + 55 | 1 TestN.asm 55 | Code | 11 | | 2 | 00/0338 : A5 C2 | lda {$C2} + 56 | 1 TestN.asm 56 | Code | 11 | | 2 | 00/033A : 85 C4 | sta {$C4} + 57 | 1 TestN.asm 57 | Code | 11 | | 2 | 00/033C : A5 C3 | lda {$C2}+1 + 58 | 1 TestN.asm 58 | Code | 11 | | 2 | 00/033E : 85 C5 | sta {$C4}+1 + 59 | 1 TestN.asm 59 | Empty | 11 | | 0 | 00/0340 | + 60 | 1 TestN.asm 60 | Code | 11 | | 3 | 00/0340 : 4C 12 03 | jmp LOOP + 61 | 1 TestN.asm 61 | Empty | 11 | | 0 | 00/0343 | + 62 | 1 TestN.asm 62 | Comment | 11 | | 0 | 00/0343 | ** Output Data ** + 63 | 1 TestN.asm 63 | Code | 11 | | 2 | 00/0343 : A6 C0 | DONE ldx {$C0} + 64 | 1 TestN.asm 64 | Code | 11 | | 2 | 00/0345 : A4 C1 | ldy {$C0}+1 + 65 | 1 TestN.asm 65 | Empty | 11 | | 0 | 00/0347 | + 66 | 1 TestN.asm 66 | Code | 11 | | 1 | 00/0347 : 60 | rts + 67 | 1 TestN.asm 67 | Empty | 11 | | 0 | 00/0348 | + 68 | 1 TestN.asm 68 | Empty | 11 | | 0 | 00/0348 | + 69 | 1 TestN.asm 69 | Comment | 11 | | 0 | 00/0348 | ** Input Dynamic Data append in the end of Unidisk routine ** + 70 | 1 TestN.asm 70 | Data | 11 | | 1 | 00/0348 : FF | N1U dfb $FF + 71 | 1 TestN.asm 71 | Data | 11 | | 1 | 00/0349 : FF | dfb $FF +------+---------------------+-------------+----+---------+------+-----------------------+------------------------------------------------------------------- diff --git a/AppleII/N integer adc 2 Byte/Unidrive3 b/AppleII/N integer adc 2 Byte/Unidrive3 new file mode 100644 index 0000000000000000000000000000000000000000..887902855b929e6e5e954f1b2c53fd668b96ae8e GIT binary patch literal 275 zcmXX_rnr!1OTk9a#SvCmOu$Bh zuulV4Y5fBmWf3f8oDH7ha5xW+(l~CaOKd!0%?8yT>JVObuoCL?_hbH}dwq4%R{c}u z#6jomu-ys3tOqMYvk|Ng>(#?z`&ctv;W&wJkv8KHX-kJPnvslv#EqPY_W&#TD&OYc z`+78Lenr;#FcJPaBjIbSELdjYLICrwk;6Zjm!n|b3?=iX$eH(y4FIu7IbQ Date: Wed, 18 Feb 2015 23:41:36 +0100 Subject: [PATCH 11/12] Del --- AppleII/FP converter/BtoFAC | Bin 35 -> 0 bytes AppleII/FP converter/FACtoB | 2 - AppleII/FP operations/.gitignore | 2 - AppleII/FP operations/UniFP_Output.txt | 167 +++++++++++++++++++++ AppleII/FP operations/Unidrive4 | Bin 567 -> 0 bytes AppleII/FP operations/Unidrive4t | Bin 574 -> 0 bytes AppleII/FP operations/_FileInformation.txt | 2 - AppleII/Integer adc 1 Byte/Unicalc | Bin 353 -> 0 bytes AppleII/Integer adc 1 Byte/Unidrive | Bin 243 -> 0 bytes AppleII/Integer adc 2 Byte/Unidrive2 | Bin 237 -> 0 bytes AppleII/Memory dump/Uniprox | Bin 438 -> 0 bytes AppleII/Memory dump/Uniproz | Bin 249 -> 0 bytes AppleII/N integer adc 2 Byte/TestN | 2 - AppleII/N integer adc 2 Byte/Unidrive3 | Bin 275 -> 0 bytes 14 files changed, 167 insertions(+), 8 deletions(-) delete mode 100644 AppleII/FP converter/BtoFAC delete mode 100644 AppleII/FP converter/FACtoB delete mode 100644 AppleII/FP operations/.gitignore create mode 100644 AppleII/FP operations/UniFP_Output.txt delete mode 100644 AppleII/FP operations/Unidrive4 delete mode 100644 AppleII/FP operations/Unidrive4t delete mode 100644 AppleII/FP operations/_FileInformation.txt delete mode 100644 AppleII/Integer adc 1 Byte/Unicalc delete mode 100644 AppleII/Integer adc 1 Byte/Unidrive delete mode 100644 AppleII/Integer adc 2 Byte/Unidrive2 delete mode 100644 AppleII/Memory dump/Uniprox delete mode 100644 AppleII/Memory dump/Uniproz delete mode 100644 AppleII/N integer adc 2 Byte/TestN delete mode 100644 AppleII/N integer adc 2 Byte/Unidrive3 diff --git a/AppleII/FP converter/BtoFAC b/AppleII/FP converter/BtoFAC deleted file mode 100644 index 4b50e7f20e584f6fa157dd222b81092791335b4b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35 rcmY$`cTXYx?$Wtdt-qGe^K9^H{k?R4>z}0yTK@v^zoiRXUo!vzYv&aF diff --git a/AppleII/FP converter/FACtoB b/AppleII/FP converter/FACtoB deleted file mode 100644 index 4cf2217..0000000 --- a/AppleII/FP converter/FACtoB +++ /dev/null @@ -1,2 +0,0 @@ - -I ߪ +` \ No newline at end of file diff --git a/AppleII/FP operations/.gitignore b/AppleII/FP operations/.gitignore deleted file mode 100644 index 7b87f7c..0000000 --- a/AppleII/FP operations/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -/UniFP -/UniFP_Output.txt diff --git a/AppleII/FP operations/UniFP_Output.txt b/AppleII/FP operations/UniFP_Output.txt new file mode 100644 index 0000000..e2d7a5f --- /dev/null +++ b/AppleII/FP operations/UniFP_Output.txt @@ -0,0 +1,167 @@ +------+---------------------+-------------+----+---------+------+-----------------------+------------------------------------------------------------------- + Line | # File Line | Line Type | MX | Reloc | Size | Address Object Code | Source Code +------+---------------------+-------------+----+---------+------+-----------------------+------------------------------------------------------------------- + 1 | 1 UniFP.asm 1 | Comment | 11 | | 0 | 00/8000 | * @com.wudsn.ide.asm.hardware=APPLE2 + 2 | 1 UniFP.asm 2 | Comment | 11 | | 0 | 00/8000 | *********************** + 3 | 1 UniFP.asm 3 | Comment | 11 | | 0 | 00/8000 | * * + 4 | 1 UniFP.asm 4 | Comment | 11 | | 0 | 00/8000 | * APPLE-II FLOATING * + 5 | 1 UniFP.asm 5 | Comment | 11 | | 0 | 00/8000 | * POINT ROUTINES * + 6 | 1 UniFP.asm 6 | Comment | 11 | | 0 | 00/8000 | * * + 7 | 1 UniFP.asm 7 | Comment | 11 | | 0 | 00/8000 | * COPYRIGHT 1977 BY * + 8 | 1 UniFP.asm 8 | Comment | 11 | | 0 | 00/8000 | * APPLE COMPUTER INC. * + 9 | 1 UniFP.asm 9 | Comment | 11 | | 0 | 00/8000 | * * + 10 | 1 UniFP.asm 10 | Comment | 11 | | 0 | 00/8000 | * ALL RIGHTS RESERVED * + 11 | 1 UniFP.asm 11 | Comment | 11 | | 0 | 00/8000 | * * + 12 | 1 UniFP.asm 12 | Comment | 11 | | 0 | 00/8000 | * S. WOZNIAK * + 13 | 1 UniFP.asm 13 | Comment | 11 | | 0 | 00/8000 | * * + 14 | 1 UniFP.asm 14 | Comment | 11 | | 0 | 00/8000 | *********************** + 15 | 1 UniFP.asm 15 | Comment | 11 | | 0 | 00/8000 | * TITLE "FLOATING POINT ROUTINES for //c memory" + 16 | 1 UniFP.asm 16 | Comment | 11 | | 0 | 00/8000 | * + 17 | 1 UniFP.asm 17 | Equivalence | 11 | | 0 | 00/8000 | SIGN EQU $EB ; $F3 + 18 | 1 UniFP.asm 18 | Empty | 11 | | 0 | 00/8000 | + 19 | 1 UniFP.asm 19 | Comment | 11 | | 0 | 00/8000 | ** FP2 4 Bytes ** + 20 | 1 UniFP.asm 20 | Equivalence | 11 | | 0 | 00/8000 | X2 EQU $EC ; $F4 + 21 | 1 UniFP.asm 21 | Equivalence | 11 | | 0 | 00/8000 | M2 EQU $ED ; $F5 - $7 + 22 | 1 UniFP.asm 22 | Empty | 11 | | 0 | 00/8000 | + 23 | 1 UniFP.asm 23 | Comment | 11 | | 0 | 00/8000 | ** FP1 4 Bytes + E extension ** + 24 | 1 UniFP.asm 24 | Equivalence | 11 | | 0 | 00/8000 | X1 EQU $FA ; $F8 + 25 | 1 UniFP.asm 25 | Equivalence | 11 | | 0 | 00/8000 | M1 EQU $FB ; $F9 - $FB + 26 | 1 UniFP.asm 26 | Equivalence | 11 | | 0 | 00/8000 | E EQU $FE ; $FC + 27 | 1 UniFP.asm 27 | Empty | 11 | | 0 | 00/8000 | + 28 | 1 UniFP.asm 28 | Equivalence | 11 | | 0 | 00/8000 | OVLOC EQU $3F5 + 29 | 1 UniFP.asm 29 | Empty | 11 | | 0 | 00/8000 | + 30 | 1 UniFP.asm 30 | Directive | 11 | | 0 | 00/8000 | ORG $300 + 31 | 1 UniFP.asm 31 | Empty | 11 | | 0 | 00/0300 | + 32 | 1 UniFP.asm 32 | Code | 11 | | 1 | 00/0300 : 18 | ADD CLC ;CLEAR CARRY + 33 | 1 UniFP.asm 33 | Code | 11 | | 2 | 00/0301 : A2 02 | LDX #$2 ;INDEX FOR 3-BYTE ADD. + 34 | 1 UniFP.asm 34 | Code | 11 | | 2 | 00/0303 : B5 FB | ADD1 LDA {$FB},X + 35 | 1 UniFP.asm 35 | Code | 11 | | 2 | 00/0305 : 75 ED | ADC {$ED},X ;ADD A BYTE OF MANT2 TO MANT1 + 36 | 1 UniFP.asm 36 | Code | 11 | | 2 | 00/0307 : 95 FB | STA {$FB},X + 37 | 1 UniFP.asm 37 | Code | 11 | | 1 | 00/0309 : CA | DEX ;INDEX TO NEXT MORE SIGNIF. BYTE. + 38 | 1 UniFP.asm 38 | Code | 11 | | 2 | 00/030A : 10 F7 | BPL ADD1 ;LOOP UNTIL DONE. + 39 | 1 UniFP.asm 39 | Code | 11 | | 1 | 00/030C : 60 | RTS ;RETURN + 40 | 1 UniFP.asm 40 | Code | 11 | | 2 | 00/030D : 06 EB | MD1 ASL {$EB} ;CLEAR LSB OF SIGN. + 41 | 1 UniFP.asm 41 | Code | 11 | | 3 | 00/030F : 20 12 03 | JSR ABSWAP ;ABS VAL OF M1, THEN SWAP WITH M2 + 42 | 1 UniFP.asm 42 | Code | 11 | | 2 | 00/0312 : 24 FB | ABSWAP BIT {$FB} ;MANT1 NEGATIVE? + 43 | 1 UniFP.asm 43 | Code | 11 | | 2 | 00/0314 : 10 05 | BPL ABSWAP1 ;NO, SWAP WITH MANT2 AND RETURN. + 44 | 1 UniFP.asm 44 | Code | 11 | | 3 | 00/0316 : 20 7F 03 | JSR FCOMPL ;YES, COMPLEMENT IT. + 45 | 1 UniFP.asm 45 | Code | 11 | | 2 | 00/0319 : E6 EB | INC {$EB} ;INCR SIGN, COMPLEMENTING LSB. + 46 | 1 UniFP.asm 46 | Code | 11 | | 1 | 00/031B : 38 | ABSWAP1 SEC ;SET CARRY FOR RETURN TO MUL/DIV. + 47 | 1 UniFP.asm 47 | Code | 11 | | 2 | 00/031C : A2 04 | SWAP LDX #$4 ;INDEX FOR 4 BYTE SWAP. + 48 | 1 UniFP.asm 48 | Code | 11 | | 2 | 00/031E : 94 FD | SWAP1 STY {$FE}-1,X + 49 | 1 UniFP.asm 49 | Code | 11 | | 2 | 00/0320 : B5 F9 | LDA {$FA}-1,X ;SWAP A BYTE OF EXP/MANT1 WITH + 50 | 1 UniFP.asm 50 | Code | 11 | | 2 | 00/0322 : B4 EB | LDY {$EC}-1,X ;EXP/MANT2 AND LEAVE A COPY OF + 51 | 1 UniFP.asm 51 | Code | 11 | | 2 | 00/0324 : 94 F9 | STY {$FA}-1,X ;MANT1 IN E (3 BYTES). E+3 USED + 52 | 1 UniFP.asm 52 | Code | 11 | | 2 | 00/0326 : 95 EB | STA {$EC}-1,X + 53 | 1 UniFP.asm 53 | Code | 11 | | 1 | 00/0328 : CA | DEX ;ADVANCE INDEX TO NEXT BYTE + 54 | 1 UniFP.asm 54 | Code | 11 | | 2 | 00/0329 : D0 F3 | BNE SWAP1 ;LOOP UNTIL DONE. + 55 | 1 UniFP.asm 55 | Code | 11 | | 1 | 00/032B : 60 | RTS ;RETURN + 56 | 1 UniFP.asm 56 | Code | 11 | | 2 | 00/032C : A9 8E | FLOAT LDA #$8E ;INIT EXP1 TO 14, <--------------- int to fp + 57 | 1 UniFP.asm 57 | Code | 11 | | 2 | 00/032E : 85 FA | STA {$FA} ;THEN NORMALIZE TO FLOAT. + 58 | 1 UniFP.asm 58 | Code | 11 | | 2 | 00/0330 : A5 FB | NORM1 LDA {$FB} ;HIGH-ORDER MANT1 BYTE. + 59 | 1 UniFP.asm 59 | Code | 11 | | 2 | 00/0332 : C9 C0 | CMP #$C0 ;UPPER TWO BITS UNEQUAL? + 60 | 1 UniFP.asm 60 | Code | 11 | | 2 | 00/0334 : 30 0C | BMI RTS1 ;YES, RETURN WITH MANT1 NORMALIZED + 61 | 1 UniFP.asm 61 | Code | 11 | | 2 | 00/0336 : C6 FA | DEC {$FA} ;DECREMENT EXP1. + 62 | 1 UniFP.asm 62 | Code | 11 | | 2 | 00/0338 : 06 FD | ASL {$FB}+2 + 63 | 1 UniFP.asm 63 | Code | 11 | | 2 | 00/033A : 26 FC | ROL {$FB}+1 ;SHIFT MANT1 (3 BYTES) LEFT. + 64 | 1 UniFP.asm 64 | Code | 11 | | 2 | 00/033C : 26 FB | ROL {$FB} + 65 | 1 UniFP.asm 65 | Code | 11 | | 2 | 00/033E : A5 FA | NORM LDA {$FA} ;EXP1 ZERO? + 66 | 1 UniFP.asm 66 | Code | 11 | | 2 | 00/0340 : D0 EE | BNE NORM1 ;NO, CONTINUE NORMALIZING. + 67 | 1 UniFP.asm 67 | Code | 11 | | 1 | 00/0342 : 60 | RTS1 RTS ;RETURN. + 68 | 1 UniFP.asm 68 | Code | 11 | | 3 | 00/0343 : 20 7F 03 | FSUB JSR FCOMPL ;CMPL MANT1,CLEARS CARRY UNLESS 0 <---- sub + 69 | 1 UniFP.asm 69 | Code | 11 | | 3 | 00/0346 : 20 56 03 | SWPALGN JSR ALGNSWP ;RIGHT SHIFT MANT1 OR SWAP WITH + 70 | 1 UniFP.asm 70 | Code | 11 | | 2 | 00/0349 : A5 EC | FADD LDA {$EC} ;<------------------------------------- add + 71 | 1 UniFP.asm 71 | Code | 11 | | 2 | 00/034B : C5 FA | CMP {$FA} ;COMPARE EXP1 WITH EXP2. + 72 | 1 UniFP.asm 72 | Code | 11 | | 2 | 00/034D : D0 F7 | BNE SWPALGN ;IF #,SWAP ADDENDS OR ALIGN MANTS. + 73 | 1 UniFP.asm 73 | Code | 11 | | 3 | 00/034F : 20 00 03 | JSR ADD ;ADD ALIGNED MANTISSAS. + 74 | 1 UniFP.asm 74 | Code | 11 | | 2 | 00/0352 : 50 EA | ADDEND BVC NORM ;NO OVERFLOW, NORMALIZE RESULT. + 75 | 1 UniFP.asm 75 | Code | 11 | | 2 | 00/0354 : 70 05 | BVS RTLOG ;OV: SHIFT M1 RIGHT, CARRY INTO SIGN + 76 | 1 UniFP.asm 76 | Code | 11 | | 2 | 00/0356 : 90 C4 | ALGNSWP BCC SWAP ;SWAP IF CARRY CLEAR, + 77 | 1 UniFP.asm 77 | Comment | 11 | | 0 | 00/0358 | * ELSE SHIFT RIGHT ARITH. + 78 | 1 UniFP.asm 78 | Code | 11 | | 2 | 00/0358 : A5 FB | RTAR LDA {$FB} ;SIGN OF MANT1 INTO CARRY FOR + 79 | 1 UniFP.asm 79 | Code | 11 | | 1 | 00/035A : 0A | ASL ;RIGHT ARITH SHIFT. + 80 | 1 UniFP.asm 80 | Code | 11 | | 2 | 00/035B : E6 FA | RTLOG INC {$FA} ;INCR X1 TO ADJUST FOR RIGHT SHIFT + 81 | 1 UniFP.asm 81 | Code | 11 | | 2 | 00/035D : F0 75 | BEQ OVFL ;EXP1 OUT OF RANGE. + 82 | 1 UniFP.asm 82 | Code | 11 | | 2 | 00/035F : A2 FA | RTLOG1 LDX #$FA ;INDEX FOR 6:BYTE RIGHT SHIFT. + 83 | 1 UniFP.asm 83 | Code | 11 | | 2 | 00/0361 : 76 01 | ROR1 ROR {$FE}+3,X + 84 | 1 UniFP.asm 84 | Code | 11 | | 1 | 00/0363 : E8 | INX ;NEXT BYTE OF SHIFT. + 85 | 1 UniFP.asm 85 | Code | 11 | | 2 | 00/0364 : D0 FB | BNE ROR1 ;LOOP UNTIL DONE. + 86 | 1 UniFP.asm 86 | Code | 11 | | 1 | 00/0366 : 60 | RTS ;RETURN. + 87 | 1 UniFP.asm 87 | Code | 11 | | 3 | 00/0367 : 20 0D 03 | FMUL JSR MD1 ;ABS VAL OF MANT1, MANT2 <-------------- mul + 88 | 1 UniFP.asm 88 | Code | 11 | | 2 | 00/036A : 65 FA | ADC {$FA} ;ADD EXP1 TO EXP2 FOR PRODUCT EXP + 89 | 1 UniFP.asm 89 | Code | 11 | | 3 | 00/036C : 20 BD 03 | JSR MD2 ;CHECK PROD. EXP AND PREP. FOR MUL + 90 | 1 UniFP.asm 90 | Code | 11 | | 1 | 00/036F : 18 | CLC ;CLEAR CARRY FOR FIRST BIT. + 91 | 1 UniFP.asm 91 | Code | 11 | | 3 | 00/0370 : 20 5F 03 | MUL1 JSR RTLOG1 ;M1 AND E RIGHT (PROD AND MPLIER) + 92 | 1 UniFP.asm 92 | Code | 11 | | 2 | 00/0373 : 90 03 | BCC MUL2 ;IF CARRY CLEAR, SKIP PARTIAL PROD + 93 | 1 UniFP.asm 93 | Code | 11 | | 3 | 00/0375 : 20 00 03 | JSR ADD ;ADD MULTIPLICAND TO PRODUCT. + 94 | 1 UniFP.asm 94 | Code | 11 | | 1 | 00/0378 : 88 | MUL2 DEY ;NEXT MUL ITERATION. + 95 | 1 UniFP.asm 95 | Code | 11 | | 2 | 00/0379 : 10 F5 | BPL MUL1 ;LOOP UNTIL DONE. + 96 | 1 UniFP.asm 96 | Code | 11 | | 2 | 00/037B : 46 EB | MDEND LSR {$EB} ;TEST SIGN LSB. + 97 | 1 UniFP.asm 97 | Code | 11 | | 2 | 00/037D : 90 BF | NORMX BCC NORM ;IF EVEN,NORMALIZE PROD,ELSE COMP + 98 | 1 UniFP.asm 98 | Code | 11 | | 1 | 00/037F : 38 | FCOMPL SEC ;SET CARRY FOR SUBTRACT. <--------------- not + 99 | 1 UniFP.asm 99 | Code | 11 | | 2 | 00/0380 : A2 03 | LDX #$3 ;INDEX FOR 3 BYTE SUBTRACT. + 100 | 1 UniFP.asm 100 | Code | 11 | | 2 | 00/0382 : A9 00 | COMPL1 LDA #$0 ;CLEAR A. + 101 | 1 UniFP.asm 101 | Code | 11 | | 2 | 00/0384 : F5 FA | SBC {$FA},X ;SUBTRACT BYTE OF EXP1. + 102 | 1 UniFP.asm 102 | Code | 11 | | 2 | 00/0386 : 95 FA | STA {$FA},X ;RESTORE IT. + 103 | 1 UniFP.asm 103 | Code | 11 | | 1 | 00/0388 : CA | DEX ;NEXT MORE SIGNIFICANT BYTE. + 104 | 1 UniFP.asm 104 | Code | 11 | | 2 | 00/0389 : D0 F7 | BNE COMPL1 ;LOOP UNTIL DONE. + 105 | 1 UniFP.asm 105 | Code | 11 | | 2 | 00/038B : F0 C5 | BEQ ADDEND ;NORMALIZE (OR SHIFT RT IF OVFL). + 106 | 1 UniFP.asm 106 | Code | 11 | | 3 | 00/038D : 20 0D 03 | FDIV JSR MD1 ;TAKE ABS VAL OF MANT1, MANT2. <--------- div + 107 | 1 UniFP.asm 107 | Code | 11 | | 2 | 00/0390 : E5 FA | SBC {$FA} ;SUBTRACT EXP1 FROM EXP2. + 108 | 1 UniFP.asm 108 | Code | 11 | | 3 | 00/0392 : 20 BD 03 | JSR MD2 ;SAVE AS QUOTIENT EXP. + 109 | 1 UniFP.asm 109 | Code | 11 | | 1 | 00/0395 : 38 | DIV1 SEC ;SET CARRY FOR SUBTRACT. + 110 | 1 UniFP.asm 110 | Code | 11 | | 2 | 00/0396 : A2 02 | LDX #$2 ;INDEX FOR 3-BYTE SUBTRACTION. + 111 | 1 UniFP.asm 111 | Code | 11 | | 2 | 00/0398 : B5 ED | DIV2 LDA {$ED},X + 112 | 1 UniFP.asm 112 | Code | 11 | | 2 | 00/039A : F5 FE | SBC {$FE},X ;SUBTRACT A BYTE OF E FROM MANT2. + 113 | 1 UniFP.asm 113 | Code | 11 | | 1 | 00/039C : 48 | PHA ;SAVE ON STACK. + 114 | 1 UniFP.asm 114 | Code | 11 | | 1 | 00/039D : CA | DEX ;NEXT MORE SIGNIFICANT BYTE. + 115 | 1 UniFP.asm 115 | Code | 11 | | 2 | 00/039E : 10 F8 | BPL DIV2 ;LOOP UNTIL DONE. + 116 | 1 UniFP.asm 116 | Code | 11 | | 2 | 00/03A0 : A2 FD | LDX #$FD ;INDEX FOR 3-BYTE CONDITIONAL MOVE + 117 | 1 UniFP.asm 117 | Code | 11 | | 1 | 00/03A2 : 68 | DIV3 PLA ;PULL BYTE OF DIFFERENCE OFF STACK + 118 | 1 UniFP.asm 118 | Code | 11 | | 2 | 00/03A3 : 90 02 | BCC DIV4 ;IF M2Ph<9Pr%h}0NuvgplO0}}r2>%dgi%FsCUS?KF6r}yM z5;E+N7{)K5*q1Ww<0ZKM^C>LWgqmr}Xu}>n``8MH1mA>@B<{i#F2SN6Qw6hk+be#^ z*}4OIvMd{6Kaw%^V@l=XrK-L9-G+H=kMqSuS+>IC^vOh2OCO}Gm5YV&D0;scZ2Ft3 xaxRn1=ZkMwDU;h5h}pkq&SD;GG|$(!!d|RrMg$RR`eCA}Nc;%Jd~$YI@DHTe1YQ6D diff --git a/AppleII/FP operations/Unidrive4t b/AppleII/FP operations/Unidrive4t deleted file mode 100644 index aa10344fd8e8463957079aa3fd4acb11cd968c8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 574 zcmZ9JO=uHA6vtB>?V3x5Cj$cKny`lT&f|pX^5NJlkf0&y!Ye1_kRyRq%{-2p~)RO z@n0#%e0O#Q1_q(vt5NfI|qa}Oq-s?^{BzO+qlK3}F;rpHPYMZdhK{Qd>_3i z1tq_vYDY53VzKh1K$%=WM$ExAa~iM48qK54m9QV{nG!*S+J2a5D-yp#F`pb>7W@Sd CLIFxE3w2o3S{@eGMnaEeq2(o=8`a&`9aWl-q* z3q*?;_BuCwkl<_p>-y}d00a>V3Xvc>0I29h0=jUdtlOjThcJzy`51!OveIz*)gRNCC)jaSiiyb_E&%)L{qG!NA$L;lf(|Mul5{7cnb%{akAR zW-@}9h6qt3Fq0K1ny`p{|1%#6Z~%nXD8Ghj+Uxb#5k!2|$@*>n~F diff --git a/AppleII/Integer adc 1 Byte/Unidrive b/AppleII/Integer adc 1 Byte/Unidrive deleted file mode 100644 index 11be6a795d4b47ad37006529b9fdcf31c4ea7b2d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 243 zcmY#LZrC8H(DzqiMgz;$1`v4+OrCB~aA-(a#IRSV;RBn(+rKX^d`eCp3IuKgNFQ!Y7M_jt+r$EB^z<88)&>WHPt1NhJJN_|Nd4`9DJr8v`@rz6Mri z#-$C+41@qPnfurM&Nfwi%+GBL2Sax%0XXgRp_KHCH?T550W;&-1~z8Kiw*3|j7J+-nHdi^urM&Nfn`})nHX4Er5GgEO0(w5vbG*r TE5n*A$J%;u*?}bo6F^D;edJXX diff --git a/AppleII/Memory dump/Uniprox b/AppleII/Memory dump/Uniprox deleted file mode 100644 index a6c1d4323f5293e0727eb01df45d6b767e5d998a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 438 zcmaiuJxc>Y5QgWnxjoDw*cq@{M6gREg0)GIQ%N)*LcrqE2!8wn5pOgXQzU_a*obgB zOmSc&Y3u??qaqg9YNM5;h!O%REW)`P?Ok?zwyvczY&pXcA-0l;hT|n*bJ)nT@<`kaLKYiI8(RA~VTb{}J#+`QkF9>!50Sl& z#*){M#Hai2bBDa^kDd_&{1@mjQx)nAMJyt_GjxvFMxXwA(qnP95oYlO<02B>(!$Xa z*k16aijT!AcJqOLt%V%3 zpc3d!qw9DdDqrwCi|)Cn+lupGDh`;`QkwK-6Z^`&^5hPd^g?0k%kg*~nl!jeOd8ZZ z=7C2%IG{kJW0Z-sg9QFNM5-Yrl7kA7t^{<6egMj`H;`o?e=6kLxei~{zV7Hh#+

c3Y1m-C_DqAq zt-ou}g2{7W@;r!C==;0waRX3x0mDSDH?a*D4jp*L4K(LWM#F`*3<--E_Et1}U{iSe z_r-;;34ZIi))ytvuiKIBKDQXTiI7Kw6ZN=-^g}zXTt~fW9+9ce6mRB z=n#0f@;^|VVI!MFCUYyBM8bcC{|x_`|1;#UF)%ZpY+z-80%pb+4Q$MeZyMN{86PyT bvH^wvGqAEU0Wmj2+kuvYKr;?3IhX(dCs}Pk diff --git a/AppleII/N integer adc 2 Byte/TestN b/AppleII/N integer adc 2 Byte/TestN deleted file mode 100644 index e511c2a..0000000 --- a/AppleII/N integer adc 2 Byte/TestN +++ /dev/null @@ -1,2 +0,0 @@ -HĭIťąŅ -:¥ŅL+:ée…eŅĥÅL` \ No newline at end of file diff --git a/AppleII/N integer adc 2 Byte/Unidrive3 b/AppleII/N integer adc 2 Byte/Unidrive3 deleted file mode 100644 index 887902855b929e6e5e954f1b2c53fd668b96ae8e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 275 zcmXX_rnr!1OTk9a#SvCmOu$Bh zuulV4Y5fBmWf3f8oDH7ha5xW+(l~CaOKd!0%?8yT>JVObuoCL?_hbH}dwq4%R{c}u z#6jomu-ys3tOqMYvk|Ng>(#?z`&ctv;W&wJkv8KHX-kJPnvslv#EqPY_W&#TD&OYc z`+78Lenr;#FcJPaBjIbSELdjYLICrwk;6Zjm!n|b3?=iX$eH(y4FIu7IbQ Date: Fri, 27 Feb 2015 10:15:59 +0100 Subject: [PATCH 12/12] Adding Basic files. --- AppleII/Integer adc 1 Byte/UNIFUN.BAS | 7 +++++++ AppleII/Integer adc 2 Byte/UNIFUN2.BAS | 9 +++++++++ AppleII/Memory dump/UNIPROX.BAS | 4 ++++ AppleII/N integer adc 2 Byte/UNIFUN3.BAS | 7 +++++++ 4 files changed, 27 insertions(+) create mode 100644 AppleII/Integer adc 1 Byte/UNIFUN.BAS create mode 100644 AppleII/Integer adc 2 Byte/UNIFUN2.BAS create mode 100644 AppleII/Memory dump/UNIPROX.BAS create mode 100644 AppleII/N integer adc 2 Byte/UNIFUN3.BAS diff --git a/AppleII/Integer adc 1 Byte/UNIFUN.BAS b/AppleII/Integer adc 1 Byte/UNIFUN.BAS new file mode 100644 index 0000000..289a32f --- /dev/null +++ b/AppleII/Integer adc 1 Byte/UNIFUN.BAS @@ -0,0 +1,7 @@ + 10 HOME + 20 PRINT CHR$ (4);"BLOAD UNIDRIVE" + 25 INPUT "N1,N2? ";N1,N2 + 30 POKE 10,N1 + 35 POKE 11,N2 + 40 CALL 32768 + 50 PRINT : PRINT "RESULT IS "; PEEK (12) \ No newline at end of file diff --git a/AppleII/Integer adc 2 Byte/UNIFUN2.BAS b/AppleII/Integer adc 2 Byte/UNIFUN2.BAS new file mode 100644 index 0000000..36e823f --- /dev/null +++ b/AppleII/Integer adc 2 Byte/UNIFUN2.BAS @@ -0,0 +1,9 @@ + 10 HOME + 20 PRINT CHR$ (4);"BLOAD UNIDRIVE2" + 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) \ No newline at end of file diff --git a/AppleII/Memory dump/UNIPROX.BAS b/AppleII/Memory dump/UNIPROX.BAS new file mode 100644 index 0000000..6926a01 --- /dev/null +++ b/AppleII/Memory dump/UNIPROX.BAS @@ -0,0 +1,4 @@ +10 HOME + 20 PRINT CHR$ (4);"BLOAD UNIPROX" + 30 CALL 32768 + 40 PRINT CHR$ (4);"BSAVE UNIROM,A$2000,L$1FFF" \ No newline at end of file diff --git a/AppleII/N integer adc 2 Byte/UNIFUN3.BAS b/AppleII/N integer adc 2 Byte/UNIFUN3.BAS new file mode 100644 index 0000000..ed4dd8a --- /dev/null +++ b/AppleII/N integer adc 2 Byte/UNIFUN3.BAS @@ -0,0 +1,7 @@ + 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) \ No newline at end of file