RS232GUI
;****************************************************************************** ;****************************RS232 COM V0.9********************************** ;***************************BY HENRIK STOLPE*********************************** ;****************************************************************************** execbase = 4 GetMsg = -372 Wait = -318 ReplyMsg = -378 DrawBorder = -108 PrintLText = -216 OpenWorkBench = -210 Read = -42 Open = -30 Mode_old = 1005 Mode_new = 1006 OpenLib = -408 CloseLib = -414 incdir "dh0:assembler/include/" include exec/exec_lib.i include intuition/intuition.i include intuition/intuition_lib.i s: bsr makegad bsr openall bsr interface bsr initserial bsr again ;set to again to debug rts openall: moveq #100,d4 moveq #INTUITION_REV,d0 lea int_name(pc),a1 CALLEXEC OpenLibrary tst.l d0 beq exit_false move.l d0,_IntuitionBase move.l _IntuitionBase,a6 jsr OpenWorkBench(a6) openwin: lea windowdef,a0 CALLINT OpenWindow move.l d0,MyWindow opendos: move.l execbase,a6 lea dosname,a1 moveq #0,d0 jsr OpenLib(a6) move.l d0,dosbase openfile: move.l dosbase,a6 move.l filename,d1 move.l #1006,d2 jsr Open(a6) move.l d0,filehd rts filehd: dc.l 0 filename: dc.b 'dh0:testfile0',0 dosname: dc.l 'dos.library',0,0 dosbase: dc.l 0 interface: bsr lines bsr textpr rts lines: lea box,a1 move #14,d0 move #14,d1 bsr drawit rts drawit: move.l _IntuitionBase,a6 move.l MyWindow,a0 move.l 50(a0),a0 jsr DrawBorder(a6) rts textpr: lea text,a1 move #14,d0 move #80,d1 bsr printit rts printit: move.l _IntuitionBase,a6 move.l MyWindow,a0 move.l 50(a0),a0 jsr PrintLText(a6) rts loop: move.l MyWindow(pc),a0 move.l wd_UserPort(a0),a0 moveq #0,d1 move.b MP_SIGBIT(a0),d1 moveq #0,d0 bset d1,d0 move.l execbase,a6 CALLEXEC Wait move.l #0,d4 bsr again again: move.l MyWindow,a0 move.l wd_UserPort(a0),a0 move.l execbase,a6 jsr GetMsg(a6) move.l d0,a1 moveq.l #0,d6 moveq #0,d7 move.l $14(a1),d6 ;IDCPM Class move.l $1c(a1),a2 ;Adress move 38(a2),d7 ;gadget Id in Adress *; jsr ReplyMsg(a6) ;disable to debug cmp.l #$200,d6 beq slut *; cmp #1,d7 *; beq load cmp #2,d7 beq sndascii *; cmp #3,d7 *; bne filter bne again ;set to again to debug rts ;routines initserial: lea data,a3 moveq #0,d3 move.l #dataend-data,d3 ;calculate lenght clr.l d5 moveq #0,d2 move.l #$fff,d2 rts waitbuf: cmp #0,d2 dbeq d2,waitbuf sndascii: move.b (a3)+,d5 move.b d5,$dff030 ;wr bufferand start transmitting cmp #0,d3 move.l #$fff,d2 dbeq d3,waitbuf bsr initserial bsr again rts data: dc.b 'this is a very boring text',0 dataend: makegad: lea gad1,a4 move.l #gad2,(a4)+ move.w #25,(a4)+ move.w #20,(a4)+ move.w #80,(a4)+ move.w #9,(a4)+ move.w #%00000000,(a4)+ move.w #3,(a4)+ move.w #1,(a4)+ move.l #bord,(a4)+ move.l #0,(a4)+ move.l #gad1text,(a4)+ move.l #1,(a4)+ move.l #1,(a4)+ move.w #1,(a4)+ move.l #0,(a4) rts slut: closewin: move.l MyWindow(pc),a0 CALLINT CloseWindow closeint move.l _IntuitionBase(pc),a1 CALLEXEC CloseLibrary closedos: move.l dosbase,a1 move.l execbase,a6 jsr CloseLib(a6) exit_false moveq #0,d4 move.l d4,d0 rts ;structures _IntuitionBase dc.l 0 MyWindow dc.l 0 INTUITION_REV equ 31 v1.1 int_name INTNAME windowdef: dc.w 300 dc.w 15 dc.w 300 dc.w 100 dc.b 2 dc.b 1 dc.l $220 dc.l $200320e dc.l gad1 dc.l 0 dc.l windowname screenhd: dc.l 0 dc.l 0 dc.w 230 dc.w 100 dc.w 320 dc.w 200 dc.w 1 windowname: dc.b 'SERIAL INTERFACE HANDLER',0 even windowhd: dc.l 0 even gad1: blk.w 22 gad1text: dc.b 3,0 dc.b 1 even dc.w 22,1 dc.l 0 dc.l gd1txt dc.l 0 gd1txt: dc.b "LDA",0 even gad2: dc.l gad3 dc.w 25,40 dc.w 80,9 dc.w %00000000 dc.w $3 ;relverify/gadgimmediate,($100 = toggleselect) dc.w 1 dc.l bord dc.l 0 dc.l gad2text dc.l 0 dc.l 0 dc.w 2 dc.l 0 gad2text: dc.b 3,0 dc.b 1 even dc.w 22,1 dc.l 0 dc.l gd2txt dc.l 0 gd2txt: dc.b "SND",0 even gad3: dc.l 0 dc.w 25,60 dc.w 80,9 dc.w %00000000 dc.w $3 ;relverify/gadgimmediate,($100 = toggleselect) dc.w 1 dc.l bord dc.l 0 dc.l gad3text dc.l 0 dc.l 0 dc.w 3 dc.l 0 gad3text: dc.b 3,0 dc.b 1 even dc.w 16,1 dc.l 0 dc.l gd3txt dc.l 0 gd3txt: dc.b "RCV",0 even bord: dc.w 0,0 dc.b 1,3 dc.b 0 dc.b 5 dc.l cords dc.l border2 border2: dc.w 0,0 dc.b 2,3 dc.b 0 dc.b 3 dc.l cords2 dc.l 0 cords: dc.w -2,-2 dc.w 80,-2 dc.w 80,11 dc.w -2,11 dc.w -2,-2 cords2: dc.w 80,-2 dc.w -2,-2 dc.w -2,11 box: dc.w 0,0 dc.b 1,3 dc.b 0 dc.b 5 dc.l boxcords dc.l box2 box2: dc.w 0,0 dc.b 2,3 dc.b 0 dc.b 3 dc.l box2cords dc.l 0 boxcords: dc.w 0,0 dc.w 100,0 dc.w 100,61 dc.w 0,61 dc.w 0,0 box2cords: dc.w 100,0 dc.w 0,0 dc.w 0,61 text: dc.b 1,0 dc.b 1 even dc.w 0,0 dc.l 0 dc.l txt dc.l text2 txt: dc.b "By Henrik Stolpe",0 even text2: dc.b 1,0 dc.b 1 even dc.w 0,8 dc.l 0 dc.l txt2 dc.l 0 txt2: dc.b "100% assembler!",0