From 457894f5f3eeffd4e48a938d320fda925e9b8192 Mon Sep 17 00:00:00 2001 From: rigreco Date: Wed, 18 Feb 2015 23:14:58 +0100 Subject: [PATCH] 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