My 6502 chip runs & stops

For discussing the 65xx hardware itself or electronics projects.
folorunsoa
Posts: 15
Joined: 11 Oct 2005

Post by folorunsoa »

Dear Forum Members,

I have downloaded both the TASS and the sunshine softwares on my Windows XP platform but they did not work.

My question now is: Will it work on Windows 98 or which other operating software will they work best? Iam tempted to look for and instal plain MSDOS. Please, confirm for me on which platform will they work.

Thank you.
folorunsoa
User avatar
8BIT
Posts: 1787
Joined: 30 Aug 2002
Location: Sacramento, CA
Contact:

Post by 8BIT »

I've run TASS on win95, win98, Win2000, and XP without trouble.

I'm not sure why you cannot. What kind of error does XP report?
leeeeee
In Memoriam
Posts: 347
Joined: 30 Aug 2002
Location: UK
Contact:

Post by leeeeee »

folorunsoa wrote:
I have downloaded both the TASS and the sunshine softwares on my Windows XP platform but they did not work.
I downloaded and tried the Sunshine software as it's later than mine and it doesn't seem work at all.

Email me and I'll send you the earlier version that I know at least works on Win98.

Lee.
User avatar
BitWise
In Memoriam
Posts: 996
Joined: 02 Mar 2004
Location: Berkshire, UK
Contact:

Post by BitWise »

Service pack 2 killed off support for 16 bit DOS apps under XP. Quite a few of my old command line favorites bit the dust.

Frank updated his assemblers to Win32 recently but I haven't tried them out myself yet (too busy working on my own Java based relocating macro assembler).

http://www.kingswood-consulting.co.uk/assemblers/
Andrew Jacobs
6502 & PIC Stuff - http://www.obelisk.me.uk/
Cross-Platform 6502/65C02/65816 Macro Assembler - http://www.obelisk.me.uk/dev65/
Open Source Projects - https://github.com/andrew-jacobs
folorunsoa
Posts: 15
Joined: 11 Oct 2005

Request for Sunshine Software for 60/80 Universal Programme

Post by folorunsoa »

Dear Leeeeee,

Thank you for your assistance. You should please send your own version of the sunshine software by attachment to my address: folorunsoa@yahoo.co.uk

Once again, thank you.
folorunsoa
folorunsoa
Posts: 15
Joined: 11 Oct 2005

Installation & Running of TASS on Windows XP

Post by folorunsoa »

As I complained earlier, the TASS would not run. I could not create a new .asm file. Assuming I want to create a new .asm file; xyz.asm and I type at prompt: tass xyz.asm

The error message:

Assembling file: xyz.asm
***Fatal** Can't locate file xyz.asm
Error Message : 1
Warning Message: None
Passes: 1
Range : None

Even existing .asm file created before using TASM and passed to be OK are usually returned with errors. Please help!
folorunsoa
User avatar
8BIT
Posts: 1787
Joined: 30 Aug 2002
Location: Sacramento, CA
Contact:

Re: Installation & Running of TASS on Windows XP

Post by 8BIT »

folorunsoa wrote:
As I complained earlier, the TASS would not run. I could not create a new .asm file. Assuming I want to create a new .asm file; xyz.asm and I type at prompt: tass xyz.asm

The error message:

Assembling file: xyz.asm
***Fatal** Can't locate file xyz.asm
Error Message : 1
Warning Message: None
Passes: 1
Range : None
Ah, TASS won't create a new file for you. All it does is read an already created assembly file and produces the assembled output. You will need to create your file using any plain-text editor (notepad, wordpad, etc).
Quote:
Even existing .asm file created before using TASM and passed to be OK are usually returned with errors. Please help!
I found that the syntax for TASM and TASS are slightly different. If the program assembled fine using TASM but reports errors with TASS, read the errors and correct the syntax. This is mostly things like single quotes vs. double quotes, and psuedo-ops like .db vs. .byte, etc.

hope that helps...

Daryl
folorunsoa
Posts: 15
Joined: 11 Oct 2005

DOWNLOADED TASS STILL NOT WORKING

Post by folorunsoa »

Dear Forum Members,

Below you find the result of my tass execution. It could still not locate my testpro file even though the file was saved as testpro.asm in the same 6502tassx directory. Hence, I have not been able to make any appreciable progress.

Microsoft(R) Windows 98
(C)Copyright Microsoft Corp 1981-1998.

C:\WINDOWS\Desktop>CD 6502TASSX

C:\WINDOWS\Desktop\6502tassx>TASS TESTPRO.ASM
6502 Turbo Assembler Shareware Version Copyright (c) 1997 Taboo Productions
This program HASN'T BEEN REGISTERED for use in commercial purposes!

Assembling file: TESTPRO.ASM
**Fatal** Can't locate file: TESTPRO.ASM
Error messages: 1
Warning messages: None
Passes: 1
Range: None
Remaining memory: 482k

C:\WINDOWS\Desktop\6502tassx>

Could you help with what I must have done wrong to warrant the above result. I am hereby attaching the testpro.asm file for you to run on your system.

Thank you once again.
folorunsoa


;T-Junction TRAFFIC SIGNALLISATION

CODE1=$F800 ;LIGHTING SEQUENCE
CODE2=$F810 ;LIGHTING SEQUENCE
TIME =$F820 ;TIMING SEQUENCE
DDRA =$A003 ;DATA DIRECTION REG.A
DDRB =$A002 ;DATA DIRECTION REG.B
I/O PA=$A001 ;O/P PORT A
I/O PB=$A002 ;O/P PORT B
T1CL =$A005 ;T1 COUNTER LOW
T1CH =$A006 ;T1 COUNTER HIGH
IFR =$A00D ;INTERRUPT FLAG REG.
MEM1 =$0100 ;TEMPORARY MEMORY
MEM2 =$0101 ;TEMPORARY MEMORY
MEM3 =$0102 ;TEMPORARY MEMORY

.ORG $F800
.BYTE $92,$51,$30,$30,$28,$25,$26,$26,$6E

.ORG $F810
.BYTE $12,$12,$96,$99,$95,$B3,$43,$22,$12

.ORG $F820
.BYTE $0F,$05,$03,$0B,$05,$03,$09,$05,$03

.ORG $F000
START:
L1 LDX #$08 ;LOAD REG.X WITH SEQUENCE VALUE
L2 LDA $F800,X ;LOAD ACC. WITH CODE1 INDEX X
STA PA ;STORE IN I/O PORT PA
LDA $F810,X ;LOAD ACC. WITH CODE2 INDEX X
STA PB ;STORE IN I/O PORT PB
JSR TIMER ;CALL DELAY
DEX ;DECREMENT REG.X
BPL L2 ;IF PLUS REPEAT
JMP L1 ;BEGIN AGAIN

;TIMER SUBROUTINE

TIMER: LDA $F820,X ;LOAD ACC. WITH TIMING INDEX X
STA MEM1 ;STORE IN TEMPORARY MEMORY 1
JSR INTERVAL ;CALL 1.00-SEC INTERVAL
L3 DEC MEM1 ;DECREMENT MEMORY 1
BPL L3 ;IF PLUS REPEAT
RTS ;RETURN FROM SUBROUTINE

;1.00-SEC INTERVAL SUBROUTINE

INTVL LDY #$14 ;LOAD REG. Y WITH 20
L4 LDA #$50 ;INITIALISE VIA TIMER
STA T1CL ;COUNTER LOW & HIGH
LDA #$C3 ;TO OBTAIN A VALUE
STA T1CH ;OF 0.05 SEC.
LDA IFR ;CHECK FOR END
AND #$20 ;OF COUNT
DEY ;DECREMENT REG. Y TO COUNTDOWN
BNE L4 ;IF NOT REPEAT
RTS ;RETURN FROM SUBROUTINE

.ORG $FFFC ;RESET VECTOR
.BYTE $00,$F0

.END
folorunsoa
User avatar
8BIT
Posts: 1787
Joined: 30 Aug 2002
Location: Sacramento, CA
Contact:

Post by 8BIT »

I was able to run TASS on your program on Windows XP (SP2).

I placed it in a folder named 6502TASSX on my desktop.

It does have several syntax errors but I did not get the "cannot find file" error. Some ideas:

try keeping your directories and file names to the DOS 8.3 convention.
Make sure your file is not marked as read only.
Add a PATH statement that includes your working directory.

Let us know if any of those help!

Daryl
User avatar
8BIT
Posts: 1787
Joined: 30 Aug 2002
Location: Sacramento, CA
Contact:

Post by 8BIT »

I made some more tests and I do believe you are having some long file name conflicts with Tass. Make sure the directories and file names are all DOS 8.3 compatible.

I took the liberty of editing your code to correct the syntax for TASS.

This assembles without errors:

Code: Select all

;T-Junction TRAFFIC SIGNALLISATION 

CODE1=$F800 ;LIGHTING SEQUENCE 
CODE2=$F810 ;LIGHTING SEQUENCE 
TIME =$F820 ;TIMING SEQUENCE 
DDRA =$A003 ;DATA DIRECTION REG.A 
DDRB =$A002 ;DATA DIRECTION REG.B 
IOPA =$A001 ;O/P PORT A 
IOPB =$A002 ;O/P PORT B 
T1CL =$A005 ;T1 COUNTER LOW 
T1CH =$A006 ;T1 COUNTER HIGH 
IFR  =$A00D ;INTERRUPT FLAG REG. 
MEM1 =$0100 ;TEMPORARY MEMORY 
MEM2 =$0101 ;TEMPORARY MEMORY 
MEM3 =$0102 ;TEMPORARY MEMORY 

 *= $F000 
START 
L1 LDX #$08 ;LOAD REG.X WITH SEQUENCE VALUE 
L2 LDA $F800,X ;LOAD ACC. WITH CODE1 INDEX X 
 STA IOPA ;STORE IN I/O PORT PA 
 LDA $F810,X ;LOAD ACC. WITH CODE2 INDEX X 
 STA IOPB ;STORE IN I/O PORT PB 
 JSR TIMER ;CALL DELAY 
 DEX ;DECREMENT REG.X 
 BPL L2 ;IF PLUS REPEAT 
 JMP L1 ;BEGIN AGAIN 

;TIMER SUBROUTINE 

TIMER LDA $F820,X ;LOAD ACC. WITH TIMING INDEX X 
 STA MEM1 ;STORE IN TEMPORARY MEMORY 1 
 JSR INTVL ;CALL 1.00-SEC INTERVAL 
L3 DEC MEM1 ;DECREMENT MEMORY 1 
 BPL L3 ;IF PLUS REPEAT 
 RTS ;RETURN FROM SUBROUTINE 

;1.00-SEC INTERVAL SUBROUTINE 

INTVL LDY #$14 ;LOAD REG. Y WITH 20 
L4 LDA #$50 ;INITIALISE VIA TIMER 
 STA T1CL ;COUNTER LOW & HIGH 
 LDA #$C3 ;TO OBTAIN A VALUE 
 STA T1CH ;OF 0.05 SEC. 
 LDA IFR ;CHECK FOR END 
 AND #$20 ;OF COUNT 
 DEY ;DECREMENT REG. Y TO COUNTDOWN 
 BNE L4 ;IF NOT REPEAT 
 RTS ;RETURN FROM SUBROUTINE 

 *= $F800 
 .BYTE $92,$51,$30,$30,$28,$25,$26,$26,$6E 

 *= $F810 
 .BYTE $12,$12,$96,$99,$95,$B3,$43,$22,$12 

 *= $F820 
 .BYTE $0F,$05,$03,$0B,$05,$03,$09,$05,$03 

 *= $FFFC ;RESET VECTOR 
 .BYTE $00,$F0 

Here is the assembly listing:

Code: Select all


6502/65C02 Turbo Assembler listing file of "testpro.asm"
done on Mon May 08 13:03:59 2006

.f000                              start

.f000  a2 08      ldx #$08         L1 LDX #$08 ;LOAD REG.X WITH SEQUENCE VALUE 
.f002  bd 00 f8   lda $f800,x      L2 LDA $F800,X ;LOAD ACC. WITH CODE1 INDEX X 
.f005  8d 01 a0   sta $a001         STA IOPA ;STORE IN I/O PORT PA 
.f008  bd 10 f8   lda $f810,x       LDA $F810,X ;LOAD ACC. WITH CODE2 INDEX X 
.f00b  8d 02 a0   sta $a002         STA IOPB ;STORE IN I/O PORT PB 
.f00e  20 17 f0   jsr $f017         JSR TIMER ;CALL DELAY 
.f011  ca         dex               DEX ;DECREMENT REG.X 
.f012  10 ee      bpl $f002         BPL L2 ;IF PLUS REPEAT 
.f014  4c 00 f0   jmp $f000         JMP L1 ;BEGIN AGAIN 
.f017  bd 20 f8   lda $f820,x      TIMER LDA $F820,X ;LOAD ACC. WITH TIMING INDEX X 
.f01a  8d 00 01   sta $0100         STA MEM1 ;STORE IN TEMPORARY MEMORY 1 
.f01d  20 26 f0   jsr $f026         JSR INTVL ;CALL 1.00-SEC INTERVAL 
.f020  ce 00 01   dec $0100        L3 DEC MEM1 ;DECREMENT MEMORY 1 
.f023  10 fb      bpl $f020         BPL L3 ;IF PLUS REPEAT 
.f025  60         rts               RTS ;RETURN FROM SUBROUTINE 
.f026  a0 14      ldy #$14         INTVL LDY #$14 ;LOAD REG. Y WITH 20 
.f028  a9 50      lda #$50         L4 LDA #$50 ;INITIALISE VIA TIMER 
.f02a  8d 05 a0   sta $a005         STA T1CL ;COUNTER LOW & HIGH 
.f02d  a9 c3      lda #$c3          LDA #$C3 ;TO OBTAIN A VALUE 
.f02f  8d 06 a0   sta $a006         STA T1CH ;OF 0.05 SEC. 
.f032  ad 0d a0   lda $a00d         LDA IFR ;CHECK FOR END 
.f035  29 20      and #$20          AND #$20 ;OF COUNT 
.f037  88         dey               DEY ;DECREMENT REG. Y TO COUNTDOWN 
.f038  d0 ee      bne $f028         BNE L4 ;IF NOT REPEAT 
.f03a  60         rts               RTS ;RETURN FROM SUBROUTINE 

>f800  92 51 30 30 28 25 26 26 6e   .BYTE $92,$51,$30,$30,$28,$25,$26,$26,$6E 

>f810  12 12 96 99 95 b3 43 22 12   .BYTE $12,$12,$96,$99,$95,$B3,$43,$22,$12 

>f820  0f 05 03 0b 05 03 09 05 03   .BYTE $0F,$05,$03,$0B,$05,$03,$09,$05,$03 

>fffc  00 f0                        .BYTE $00,$F0 

--- end of code ---
Daryl
folorunsoa
Posts: 15
Joined: 11 Oct 2005

MY TASS NOW WORKS

Post by folorunsoa »

Thank you Daryl. It works now. I was able to assemble without any error. But how do I get my assembled listings (file) and possibility of converting to an object file too. I have also taken a good note of the slight differences in syntax between tasm and tass.
Once again thank you.
folorunsoa
User avatar
8BIT
Posts: 1787
Joined: 30 Aug 2002
Location: Sacramento, CA
Contact:

Post by 8BIT »

Glad to hear you got it going!!!!

Once you have a successful assembly, TASS will generate an object file. Since it was created with the C-64 in mind, the object file's suffix will be .O64

This file is the binary object file with the 2 byte starting address in the first two positions.

Code: Select all

00 F0 A2 08 ...
...where 00 is the low start address byte, F0 is the high start address byte, and A2 is the LDX # opcode (from your sample code).

If you need only the object code without the start address, use a HEX editor to remove the first two bytes. There a several free HEX editors available online.

Daryl
folorunsoa
Posts: 15
Joined: 11 Oct 2005

ONLY OBJ FILE CREATED

Post by folorunsoa »

On successful assembly, both obj. and list files should be created. However, my TASS created only the obj. file named Testprox.O64 (Note the capital 'T' to differentiate it from the source file with small 't'). When I tried to open the obj file with wordpad, it displayd trash. I later downloaded XVI32 hex editor which I tried to use to open the file. But the system displayed: 'error opening Testprox.O64'. Surprisingly, no list file was created when the source file was assembled. I read that the list file should be testprox.L64, but it was not created. Please help!!
folorunsoa
User avatar
8BIT
Posts: 1787
Joined: 30 Aug 2002
Location: Sacramento, CA
Contact:

Post by 8BIT »

You need to use the /L flag to get the list file.

TASS /L
  • source file.


    I'm not sure why you couldn't open the object file. My EEPROM programmer software lets me view and edit the output files so I'm not sure which hex editor to recommend. I used to use LIST.COM back in the old DOS days. It could not edit files, only view them.

    Daryl
User avatar
GARTHWILSON
Forum Moderator
Posts: 8775
Joined: 30 Aug 2002
Location: Southern California
Contact:

Post by GARTHWILSON »

I'm not familiar with the particular assembler you're talking about, but I might offer a question anyway. Do you need to run a linker to get the hex code ready for an EPROM programmer or something like that? I used the 2500AD assembler years ago, and its .obj output would look like total garbage in a text editor (as any pure machine language would) unless the editor has a hex mode. After running the linker, you'd have the .hex file, which contained 0-F readable digits.
Post Reply