Path: utzoo!mnetor!uunet!husc6!purdue!i.cc.purdue.edu!j.cc.purdue.edu!ain From: ain@j.cc.purdue.edu (Patrick White) Newsgroups: comp.binaries.amiga Subject: dasm (part 2 of 2) Message-ID: <6389@j.cc.purdue.edu> Date: 8 Feb 88 23:38:23 GMT Organization: PUCC Land, USA Lines: 517 Keywords: dasm, cross assembler, tested, part 2 of 2. Approved: ain@j.cc.purdue.edu (Pat White) Program Name: dasm (part 2 of 2) Submitted By: dillon%cory.Berkeley.EDU@ucbvax.berkeley.edu (Matt Dillon) Summary: A cross assembler for 6502, 68705, 6803, and HD6303 (extension of 6803) Poster Boy: Pat White (ain@j.cc.purdue.edu) Tested. NOTES: -- Pat White (co-moderator comp.sources/binaries.amiga) UUCP: j.cc.purdue.edu!ain BITNET: PATWHITE@PURCCVM PHONE: (317) 743-8421 U.S. Mail: 320 Brown St. apt. 406, West Lafayette, IN 47906 ======================================== # This is a shell archive. # Remove everything above and including the cut line. # Then run the rest of the file through sh. #----cut here-----cut here-----cut here-----cut here----# #!/bin/sh # shar: Shell Archiver # Run the following text with /bin/sh to create: # example.asm # ftohex.uue # This archive created: Mon Feb 8 13:11:57 1988 # By: Patrick White (PUCC Land, USA) echo shar: extracting example.asm '(7052 characters)' cat << \SHAR_EOF > example.asm ; EXAMPLE.ASM (6502 Microprocessor) ; processor 6502 mac ldax lda [{1}] ldx [{1}]+1 endm mac ldaxi lda #<[{1}] ldx #>[{1}] endm mac stax sta [{1}] stx [{1}]+1 endm mac pushxy txa pha tya pha endm mac popxy pla tay pla tax endm mac inc16 inc {1} bne .1 inc {1}+1 .1 endm STOP1 equ %00000000 ;CxCTL 1 Stop bit STOP2 equ %10000000 ;CxCTL 2 Stop bits (WL5:1.5, WL8&par:1) WL5 equ %01100000 ;CxCTL Wordlength WL6 equ %01000000 WL7 equ %00100000 WL8 equ %00000000 RCS equ %00010000 ;CxCTL 1=Select baud, 0=ext. receiver clk B76800 equ %0000 ;CxCTL Baud rates (1.2288 Mhz clock) B75 equ %0001 B100 equ %0010 B150 equ %0011 B200 equ %0100 B300 equ %0101 B400 equ %0110 B600 equ %0111 B800 equ %1000 B1200 equ %1001 B1600 equ %1010 B2400 equ %1011 B3200 equ %1100 B4800 equ %1101 B6400 equ %1110 B12800 equ %1111 PARODD equ %00100000 ;CxCMD Select Parity PAREVEN equ %01100000 PARMARK equ %10100000 PARSPACE equ %11100000 PAROFF equ %00000000 RECECHO equ %00010000 ;CxCMD Receiver Echo mode TMASK equ %00001100 TDISABLE equ %00000000 ;CxCMD Transmitter modes TDISABLER equ %00001000 ;RTS stays asserted TENABLE equ %00000100 TBREAK equ %00001100 ;send break UA_IRQDSBL equ %00000010 DTRRDY equ %00000001 ;~DTR output is inverted (low) SR_PE equ %00000001 ;CxSTAT Status SR_FE equ %00000010 ;NOTE: writing dummy data causes RESET SR_OVRUN equ %00000100 SR_RDRFULL equ %00001000 SR_TDREMPTY equ %00010000 SR_DCD equ %00100000 SR_DSR equ %01000000 SR_INTPEND equ %10000000 T1_OEPB7 equ %10000000 ;x_ACR T1_FREERUN equ %01000000 ;T1 free running mode T1_ONESHOT equ %00000000 T2_ICPB6 equ %00100000 ;T2 counts pulses on PB6 T2_ONESHOT equ %00000000 ;T2 counts phase2 transitions SRC_OFF equ %00000000 ;shift register control SRC_INT2 equ %00000100 SRC_INPH2 equ %00001000 SRC_INEXT equ %00001100 SRC_OUTFR equ %00010000 ;free running output using T2 SRC_OUTT2 equ %00010100 SRC_OUTPH2 equ %00011000 SRC_OUTEXT equ %00011100 PBLE equ %00000010 ;on CB1 transition (in/out). PALE equ %00000001 ;on CA1 transition (in). data retained ;x_PCR CB2_I_NEG equ %00000000 ;interrupt on neg trans, r/w ORB clears CB2_I_NEGI equ %00100000 ; same, but r/w ORB does not clear int CB2_I_POS equ %01000000 ;interrupt on pos trans, r/w ORB clears CB2_I_POSI equ %01100000 ; same, but r/w ORB does not clear int CB2_O_HSHAK equ %10000000 ;CB2=0 on r/w ORB, CB2=1 on CB1 transition CB2_O_PULSE equ %10100000 ;CB2=0 for one clock after r/w ORB CB2_O_MANLO equ %11000000 ;CB2=0 CB2_O_MANHI equ %11100000 ;CB2=1 CA2_I_NEG equ %00000000 ;interrupt on neg trans, r/w ORA clears CA2_I_NEGI equ %00100000 ; same, but r/w ORA does not clear int CA2_I_POS equ %01000000 ;interrupt on pos trans, r/w ORA clears CA2_I_POSI equ %01100000 ; same, but r/w ORA does not clear int CA2_O_HSHAK equ %10000000 ;CA2=0 on r/w ORA, CA2=1 on CA1 transition CA2_O_PULSE equ %10100000 ;CA2=0 for one clock after r/w ORA CA2_O_MANLO equ %11000000 ;CA2=0 CA2_O_MANHI equ %11100000 ;CA2=1 CB1_THI equ %00010000 CB1_TLO equ %00000000 CA1_THI equ %00000001 CA1_TLO equ %00000000 VIRPEND equ %10000000 ;x_IFR IRENABLE equ %10000000 ;x_IER 1's enable ints 0=no change IRDISABLE equ %00000000 ;x_IER 1's disable ints 0=no change IRT1 equ %01000000 IRT2 equ %00100000 IRCB1 equ %00010000 IRCB2 equ %00001000 IRSR equ %00000100 IRCA1 equ %00000010 IRCA2 equ %00000001 seg.u bss org $0000 ;RAM (see below) org $2000 ;unused org $4000 ;unused org $6000 ;6551 CHANNEL #1 C1DATA ds 1 C1STAT ds 1 C1CMD ds 1 C1CTL ds 1 org $8000 ;6551 CHANNEL #2 C2DATA ds 1 C2STAT ds 1 C2CMD ds 1 C2CTL ds 1 org $A000 ;6522 (HOST COMM) H_ORB ds 1 H_ORAHS ds 1 ;with CA2 handshake H_DDRB ds 1 H_DDRA ds 1 H_T1CL ds 1 ;read clears interrupt flag H_T1CH ds 1 ;write clears interrupt flag H_T1CLL ds 1 H_T1CHL ds 1 ;write clears interrupt flag H_T2CL ds 1 ;read clears interrupt flag H_T2CH ds 1 ;write clears interrupt flag H_SR ds 1 H_ACR ds 1 H_PCR ds 1 H_IFR ds 1 H_IER ds 1 H_ORA ds 1 ;no CA2 handshake org $C000 ;6522 (IO COMM) I_ORB ds 1 I_ORAHS ds 1 ; (same comments apply) I_DDRB ds 1 I_DDRA ds 1 I_T1CL ds 1 I_T1CH ds 1 I_T1CLL ds 1 I_T1CHL ds 1 I_T2CL ds 1 I_T2CH ds 1 I_SR ds 1 I_ACR ds 1 I_PCR ds 1 I_IFR ds 1 I_IER ds 1 I_ORA ds 1 ; -------------------------- ZERO PAGE ------------------- seg.u data org $00 ; -------------------------- NORMAL RAM ------------------- org $0100 RAMEND equ $2000 ; -------------------------- CODE ------------------- seg code org $F000 PROMBEG equ . RESET subroutine sei ;disable interrupts ldx #$FF ;reset stack txs lda #$FF sta H_DDRA sta C1STAT ;reset 6551#1 (garbage data) sta C2STAT ;reset 6551#2 lda #$7F ;disable all 6522 interrupts sta H_IER sta I_IER lda #%00010000 ;76.8 baud, 8 bits, 1 stop sta C1CTL lda #%00000101 ;no parity, enable transmitter & int sta C1CMD lda #$AA ;begin transmision sta C1DATA lda #%00011111 ;9600 baud, 8 bits, 1 stop sta C2CTL lda #%00000101 sta C2CMD lda #$41 sta C2DATA cli ;enable interrupts .1 jsr LOAD jsr SAVE jmp .1 LOAD subroutine ldx #0 .1 txa sta $0500,x inx bne .1 rts SAVE subroutine ldx #0 .2 lda $0500,x sta H_ORA inx bne .2 rts NMI rti subroutine IRQ bit C1STAT bpl .1 pha lda #$AA sta C1DATA lda C1DATA pla rti .1 bit C2STAT bpl .2 pha lda #$41 sta C2DATA lda C2DATA pla .2 rti ; VECTOR ------------------------------------------------ seg vector org $FFFA dc.w NMI dc.w RESET dc.w IRQ PROMEND equ . SHAR_EOF if test 7052 -ne "`wc -c example.asm`" then echo shar: error transmitting example.asm '(should have been 7052 characters)' fi echo shar: extracting ftohex.uue '(11011 characters)' cat << \SHAR_EOF > ftohex.uue begin 644 ftohex M```#\P`````````#``````````(```<(````OP````$```/I```'"$[Z""9. M5?_V.7R``(`"#&T``P`*;"A(>@#@3KH.C%A/2'H`]4ZZ#H)83TAZ`01.N@YX M6$](>``!3KH9"EA/(&T`#"\H``1.N@1$6$\[0/_^#&T``?_^;0@,;0`#__YO M"DAZ`0=.N@%>6$](>@$>(&T`#"\H``A.N@;84$\K0/_Z2JW_^F8*2'H!!$ZZ M`3A83R!M``Q*J``,9Q1(>@$*(FT`#"\I``Q.N@:H4$]@!D'L@0@@""M`__9* MK?_V9@I(>@#H3KH!`%A/+RW_]B\M__HP+?_^2,`O`$ZZ`1I/[P`,+RW_^DZZ M%!I83R\M__9.NA006$].74YU1E1/2$58(&9O2!-871T:&5W($1I;&QO;BP@06QL(%)I9VAT``!3KH76EA/3EU.=0H` M3E7^]$)M__X,;0`#``IL#B\M``Q.N@(06$\[0/_^#&T``@`*9A0O+0`,3KH! M^EA/<@`R`"M!__A@1"\M``Q.N@/(6$\K0/[T2'@``D*G+RT`#$ZZ`SI/[P`, M+RT`#$ZZ`ZA83Y"M_O0K0/_X0J``Z3KH1X%!/+RT`$'``,"W__"\`3KH!?%!/+RT`$'``,"W_ M_N"(+P!.N@%H4$\O+0`0<``P+?_^P+P```#_+P!.N@%04$\O+0`02'@`,$ZZ M$9103R\M`!!(>``P3KH1AE!/<``P+?_^X(AR`#(M__["O````/_0@70`-"W_ M_-""&T#^]T)M_O1@+C`M_O1![?[X$C```-,M_O``-3KH0_%!/+RT`$$AX``I.NA#N4$]P`#`M__R1K?_X M,"W__-%M__Y@`/ZR#&T``@`*9BHO+0`,84I83SM`__X@;0`,""@``P`,9A@O M+0`,83)83W(`,@`K0?_X8`)@!&``_GI(>@`0+RT`$$ZZ`^Q03TY=3G4Z,#`P M,#`P,#%&1@T*`$Y5__XO+0`(3KH"*EA/.T#__B\M``A.N@(<6$_A@-%M__XP M+?_^3EU.=4Y5```O+0`,<``0+0`+Z(A![(`$<@`2,`@`+P%.NA`T4$\O+0`, M<``0+0`+P+P````/0>R`!'(`$C`(`"\!3KH0$E!/3EU.=4Y5``!(YPP@)&T` M"'@`>@`,$@`@9@12BF#V#!(`+68$4HIZ`0P2`#!M)@P2`#EN("!*4HH0$$B` M2,`B!..!T($D!.>"T((H`)B\````,*H5G!B`$1(!@`B`$3-\$,$Y=3G5. M50``+PHD;0`(2A)G*"\M``P@2E**$!!(@$C`+P!.N@]`4$^PO/____]F"'#_ M)%].74YU8-1P`&#T3E7__$CG#"`D;0`(0JW__&`V*BT`#&`H+RT`%$ZZ`098 M3R@`L+S_____9@P@+?_\3-\$,$Y=3G4@2E**$(13A4J%9M12K?_\("W__+"M M`!!MP"`M__Q@V$Y5__Q(YP@@)&T`"`BJ``,`#`@J``(`#&<<2'C__R\*3KH/ MY%!/2H!G"G#_3-\$$$Y=3G5@&`RM`````0`09@Y*DF<*("H`!)"2D:T`#$*J M``1"DB\M`!`O+0`,$"H`#4B`2,`O`$ZZ!=)/[P`,2H!L!'#_8+9P`&"R3E7_ M_"\*)&T`"$AX``%"IQ`J``U(@$C`+P!.N@6D3^\`#"M`__P(*@`"``QG#"`2 MD*H`"-&M__Q@#DJ29PH@*@`$D)*1K?_\("W__"1?3EU.=4Y5```O"B1M``@@ M4K'J``1E#"\*81I83R1?3EU.=2!24I(0$$B`2,#`O````/]@Z$Y5``!(YP@P M)&T`"!`J``S`/``89PIP_TS?#!!.74YU"*H``@`,2JH`"&8(+PI.NA`"6$\0 M*@`,2(!(P`@```=G-D'L@/(F2!`K``Q(@$C`P+P```"$L+P```"$9@Q(>/__ M+PM.N@ZD4$_7_````!9![(*JM\AET#`J`!!(P"\`+RH`"!(J``U(@4C!+P%. MN@:B3^\`#"@`2H!N%$J$9@1P"&`"@`.3KH(&$_O``Q.74YU3E4``"\L@JXO M+0`(3KH,,%!/3EU.=6%P0^R"KD7L@JZUR68.,CP`$VL(=``BPE')__PI3X*Z M+'@`!"E.@KY(YX"`""X`!`$I9Q!+^@`(3J[_XF`&0J?S7TYS0_H`($ZN_F@I M0(+"9@PN/``#@`=.KO^48`1.N@`:4$].=61O`/M M2'H`+$ZZ$5Q03R!L@L8A0``,+RR"UB\L@MI.NO8X4$]"ITZZ#W!83R1?3EU. M=2H`3E4``$CG##`D;0`0(&T`""`H`*SE@"@`($0@*``0Y8`F0!`32(!(P-"M M``Q4@"E`@MY"IR\L@MY.NA%L4$\I0(+B9@A,WPPP3EU.=1`32(!(P"\`($M2 MB"\(+RR"XDZZ`5I/[P`,2'H!4!`32(!(P-"L@N(O`$ZZ!$!03R\M``PO"B\L M@N).N@/<3^\`#$*L@MHF;(+B)$L0$TB`2,`J`+"\````(&<@NKP````)9QBZ MO`````QG$+J\````#6<(NKP````*9@12BV#,#!,`(&T``(P,$P`B9C)2BR!+ M4HL0$$B`2,`J`&<@($I2BA"%NKP````B9A`,$P`B9@12BV`&0BK__V`"8-)@ M1"!+4HL0$$B`2,`J`&@`F;(+B8!H@!>6`(&R"UB&+ M"``O"TZZ"+!83U*`U\!2A;JL@MIMX"`%Y8`@;(+60K`(`&``_HX@`$SO`P`` M!"`((B\`#&`"$-E7R?_\9P9206`"0AA1R?_\3G5.50``2.<,("@M``A.N@T> M<@8@!$ZZ#LXD0-7L@L9*A&T.,"R"JDC`N(!L!$J29A(I?`````*"MG#_3-\$ M,$Y=3G4@+0`04X`O`"\M``PO$DZZ#RA/[P`,*@"PO/____]F#$ZZ#M`I0(*V M`!@$'(&(`1.N@XN2K,(`&<24H0P+(*J M2,"X@&WF>@9@``#0""T``0`.9S1(>/__+PI.N@YH4$\L`&@".+P9.N@XJ3^\`#$AX__]"IR\& M3KH.`$_O``Q@*B`M``S`O```!0"PO```!0!F&"\&3KH-<%A/>@0I18*V3^\`#"`$8+YD;W,N;&EB0```$Y5``!(YPP@*"T` M"$ZZ"RIR!B`$3KH,VB1`U>R"QDJ$;0XP+(*J2,"X@&P$2I)F$BE\`````H*V M``*3KH%6EA/8.Q.50``2.<.,"1M``A"ITAZ M`(Y.N@S*4$\I0(+Z9@A,WPQP3EU.=2!M``PB:``D+RD`!$ZZ#/I83R@`9U)( M>@!M($0O*``V3KH,S%!/)D!*@&@`X3KH+KE!/)4``H"\$3KH,F%A/+RR"^DZZ"_Q8 M3T*L@OI@@&EC;VXN;&EB0!724Y$3U<`*@!.50``2.<(("1M`!`,K0`` M``0`%&8((&T`""@08!1*K0`,;P@@;0`(*!!@!B!M``@H$$*M`!1*K0`,;!)$ MK0`,2H1L"D2$*WP````!`!0B+0`,(`1.N@/20>R`7E.*%+`(`"(M``P@!$ZZ M`\HH`&;>2JT`%&<&4XH4O``M(`I,WP003EU.=4Y5_Q1(YP@P)&T`""9M``Q" MK?_X*VT`$/_\($M2BQ`02(!(P"@`9P`#,+B\````)68``PI"+?\B*WP````! M__0K?````"#_\"M\```G$/_L($M2BQ`02(!(P"@`L+P````M9A!"K?_T($M2 MBQ`02(!(P"@`N+P````P9A0K?````##_\"!+4HL0$$B`2,`H`+B\````*F8: M(&W__%BM__PK4/_H($M2BQ`02(!(P"@`8#1"K?_H8")R"B`M_^A.N@G`T(20 MO````#`K0/_H($M2BQ`02(!(P"@`0>R`<0@P``)(`&;2N+P````N9F(@2U*+ M$!!(@$C`*`"PO````"IF&B!M__Q8K?_\*U#_["!+4HL0$$B`2,`H`&`T0JW_ M[&`B<@H@+?_L3KH)5M"$D+P````P*T#_["!+4HL0$$B`2,`H`$'L@'$(,``" M2`!FTBM\````!/_DN+P```!L9A8@2U*+$!!(@$C`*``K?`````3_Y&`4N+P` M``!H9@P@2U*+$!!(@$C`*``@!&!^*WP````(_^!@'"M\````"O_@8!(K?``` M`!#_X&`(*WS____V_^`O+?_D2&W_(B\M_^`O+?_\3KK]M$_O`!`K0/_<("W_ MY-&M__Q@6B!M__Q8K?_\*U#_W"\M_]Q.N@(<6$\K0/_D8$H@;?_\6*W__"@0 M0>W_(2M(_]P0A&`HD+P```!C9^)3@&>4D+P````+9P#_;EF`9[15@&<`_VY7 M@&<`_W)@S$'M_R*1[?_<*TC_Y"`M_^2PK?_L;P8K;?_L_^1*K?_T9W`@;?_< M#!``+6<*(FW_W`P1`"MF-`RM````,/_P9BI3K?_H(&W_W%*M_]P0$$B`2,`O M`$Z26$^PO/____]F"G#_3-\,$$Y=3G5@&"\M__!.DEA/L+S_____9@1P_V#B M4JW_^"`M_^A3K?_HL*W_Y&[:0JW_X&`D(&W_W%*M_]P0$$B`2,`O`$Z26$^P MO/____]F!'#_8*I2K?_@(&W_W$H09PH@+?_@L*W_[&W*("W_X-&M__A*K?_T M9BI@&DAX`"!.DEA/L+S_____9@9P_V``_W!2K?_X("W_Z%.M_^BPK?_D;MA@ M&"\$3I)83["\_____V8&/__+RT`#$ZZ`/Y03R@?3EU.=6#X M3E4``"\*)&T`#"!2L>H`!&4:("T`","\````_R\`+PI.N@#04$\D7TY=3G4@ M4E*2$"T`"Q"`2(!(P,"\````_V#D3E4``"\*0>R`\B1(($K5_````!8O"&$0 M6$]![(*JM``!2&W__Q`J``U( M@$C`+P!.N@(R3^\`#+"\`````6:8("T`#&``_V`DJ@`(,"H`$$C`T*H`""5` M``0(Z@`"``P@4E*2$"T`#Q"`2(!(P,"\````_V``_S!.50``+PI![(#R)$A* M*@`,9QC5_````!9![(*JM`0`3KH`PEA/*T#__&88-7P``0`0(`K0O`````XE0``()%]. M74YU-7P$```0".H``0`,)6W__``($"H`#4B`2,`O`$ZZ`-Y83TJ`9P8`*@"` M``Q@S$Y5``!(YP`P)&R"LF`4)E(@*@`$4(`O`"\*3KH$?%!/)$L@"F;H0JR" MLDS?#`!.74YU3E4``"\*0?K_QBE(@NI"IR`M``A0@"\`3KH$*E!/)$!*@&8( M<``D7TY=3G4DK(*R)6T`"``$*4J"LB`*4(!@YDY5```O+0`(8;983TY=3G5. M50``2.<`,)?+)&R"LF`.(&T`"%&(LR"QDJM``AM$C`L@JI(P"(M``BR@&P$2I)F$"E\`````H*V+RR"XDZZ`9903R`L@MI2@.6`+P`O+(+63KH!@E!/8`Y.N@%R+RR"TDZZ M`9Y83R`M__PN;(*Z3G4H'TY=3G5.50``2.<.("@M``AR!B`$3KH`1"1`U>R" MQDJ$;0XP+(*J2,"X@&P$2I)F$BE\`````H*V