; ; Copyright (c) 1995 Paul Campbell ; All Rights Reserved ; THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF Paul Campbell ; The copyright notice above does not evidence any ; actual or intended publication of such source code. ; NL = 0xd LF = 0xa BS = 8 DEL = 0x7f CHIP_ID = 0x59 xr4 = 0x04 ;; r4 xr6 = 0x06 ;; r6 ;; ;; Interrupt vectors ;; . = 0x0000 ljmp reset ljmp reset nop nop nop nop nop ljmp reset nop nop nop nop nop ljmp reset nop nop nop nop nop ljmp reset nop nop nop nop nop ljmp reset nop nop nop nop nop ljmp reset nop nop nop nop nop ljmp reset nop nop nop nop nop ljmp reset nop nop nop nop nop ljmp reset nop nop nop nop nop ljmp reset nop nop nop nop nop ljmp reset nop nop nop nop nop ljmp reset nop nop nop nop nop ljmp reset nop nop nop nop nop ljmp reset nop nop nop nop nop reset: ; ; set up the serial port ; mov p3, #0 ; mov rcap2h, #0xff ; 9600 baud ; mov rcap2l, #0xd9 ; mov t2mod, #0x00 ; mov t2con, #0x14 ; set up for baud rate generator (xmit only) mov ie, #0x00 mov pcon, #0x00 ; ; set up sp ; mov sp, #0x70 ; ??? ;; ;; start of main program ;; ;; p1 is input ;; ;; p1.0 low is launch ;; p1.1 low is dump ;; p1.2 high is arm ;; p1.3 low is 30 sec wait ;; p1.4 low is 35 sec wait ;; p1.5 low is 40 sec wait ;; p1.6 low is 60 sec wait 'till dump (else 120) ;; p1.7 low is not autodump ;; ;; p3 is output ;; ;; p3.0 - load (yellow) ;; p3.1 - armed (red) ;; p3.2 - fire ;; p3.3 - dump (red/yellow) ;; p3.4 - red (if used) ;; p3.5 - red (if used) ;; ajmp start sload: setb p3.0 setb p3.4 acall start_time L2: acall time jnb p1.1, sdump jnb p1.2, start cjne r5, #30, L35 jnb p1.3, sarmed ajmp L2 L35: cjne r5, #35, L40 jnb p1.4, sarmed ajmp L2 L40: cjne r5, #40, L45 jnb p1.5, sarmed ajmp L2 L45: cjne r5, #45, L2 ajmp sarmed sarmed: clr p3.0 setb p3.1 clr p3.4 setb p3.5 acall start_time L3: acall time jnb p1.1, sdump jnb p1.2, start jnb p1.0, slaunch cjne r5, #60, L120 jb p1.6, L3 jb p1.7, sautodump ajmp start L120: cjne r5, #120, L3 jb p1.7, sautodump ajmp start start: mov p3, #0 L0: jnb p1.1, sdump jnb p1.2, start jnb p1.0, sload ajmp L0 sdump: mov p3, #0 setb p3.3 setb p3.5 setb p3.4 L1: jb p1.1, start ajmp L1 slaunch:clr p3.1 setb p3.2 clr p3.5 acall start_time L9: acall time ; assert it for 3 secs jnb p1.2, start jnb p1.1, sdump cjne r5, #3, L9 L9a: jnb p1.2, start ; and untill the lco lifts jnb p1.1, sdump ; their finger jnb p1.0, L9a clr p3.2 acall start_time L10: acall time ; now wait 30 secs jnb p1.1, sdump cjne r5, #60, L10 ajmp start sautodump: clr p3.1 setb p3.3 setb p3.4 setb p3.5 acall start_time L4: acall time jnb p1.2, start jnb p1.1, sdump cjne r5, #30, L4 ajmp start time: jb tcon.7, tout ret tout: inc r6 ;; every 1/100th sec cjne r6, #100, stime mov r6, #0 ;; every sec inc r5 ajmp stime start_time: ;; clear sec counter mov r5, #0 mov r6, #0 stime: mov tcon, #0 ;; start timer for 1/100 sec mov tmod, #0x10 mov th1, #(65536 - 10000)>>8 mov tl1, #(65536 - 10000)&0xff setb tcon.6 ret