发新帖本帖赏金 10.00元(功能说明)我要提问
1234下一页
返回列表
打印

【8月话题】——扒扒扒,我也曾被编程虐成狗

[复制链接]
11014|67
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 21ic小喇叭 于 2015-8-5 17:36 编辑

大家好,我是21ic小喇叭,但请你们放心,我绝对不是大嘴巴~

但是,但是,但是!女人天生就是爱八卦啦。

先说说我自己~

记得大学那会小编我真的是被编程虐成狗啊~
C、C++、Java、matlab、数据结构、嵌入式……说多了都是泪啊啊啊!

毕业已久,小编我也基本把这些知识给忘了(原谅号称是学屌的我)……

但是!!!那些熬夜编程序的日日夜夜是忘不了的!

那种处理BUG到吐血的心情是深入骨髓的!

那种看着别人早早完成自己却迟迟无望的感觉是欲哭无泪的!

不知道曾经的你是不是也和我一样?

回帖或在任意板块发帖和我们扒一扒,唠一唠吧~


扒扒坐收钱:在本帖直接回复精彩者打赏1~3元!
                   在任意板块发帖精彩者打赏3~10元!


来,我们一起扒扒扒吧!把曾经那些被虐得体无完肤的经历笑着说出来!

精彩回帖,坐等各位大神继续发帖讨论哦!

相关帖子

沙发
tyw| | 2015-8-5 13:12 | 只看该作者
本帖最后由 tyw 于 2015-8-5 13:59 编辑

20年前扒拉过的近万条汇编指令,那是一个赌机类的游戏机主板源程序,用z80编的.近万条,平均每条10个中文,算一哈,俺码了多少个字了拉?哈哈,拖出来晒晒.

疯狂赛车主板源程序 V96.3.27 205页 407K.pdf (406.1 KB)
疯狂赛车主板源程序.rar (50.79 KB)

; ┏━━━━━━━━━━━┓
; ┃┏━━━━━━━━━┓┃
; ┃┃   疯狂赛车主板        ┃┃
; ┃┃      源程序               ┃┃
; ┃┃     V96.3.27             ┃┃
; ┃┗━━━━━━━━━┛┃
; ┗━━━━━━━━━━━┛
        SYMBOLS ON
A3567   EQU     E05CH   ;3567数据地址
ATIMR   EQU     E1ABH   ;翻牌声延时值
ALLWIN  EQU     E600H   ;E600-E602投币总数
ALWIN1  EQU     E604H   ;E604-E606 投币总数-退币总数-中奖数
ALLOST  EQU     E608H   ;E608-E60A退币总数
ALLYB   EQU     E60CH   ;E60C-E60E总押币数
ALLYBD  EQU     E610H   ;                         没有使用
AWIN1   EQU     E620H   ;第1组净利
AYB1    EQU     E623H   ;第1组押币数
ALOST1  EQU     E626H   ;第1组退币数
;AWIN2   EQU     E629H  ;第2组净利
;AYB2    EQU     E62CH  ;第2组押币数
;ALOST2  EQU     E62FH  ;第2组退币数
;AWIN3   EQU     E632H  ;第3组净利
;AYB3    EQU     E635H  ;第3组押币数
;ALOST3  EQU     E638H  ;第3组退币数
;AWIN4   EQU     E63BH  ;第4组净利
;AYB4    EQU     E63EH  ;第4组押币数
;ALOST4  EQU     E641H  ;第4组退币数
;AWIN5   EQU     E644H  ;第5组净利
;AYB5    EQU     E647H  ;第5组押币数
;ALOST5  EQU     E64AH  ;第5组退币数
;AWIN6   EQU     E64DH  ;第6组净利
;AYB6    EQU     E650H  ;第6组押币数
;ALOST6  EQU     E653H  ;第6组退币数
;AWIN7   EQU     E656H  ;第7组净利
;AYB7    EQU     E659H  ;第7组押币数
;ALOST7  EQU     E65CH  ;第7组退币数
;AWIN8   EQU     E65FH  ;第8组净利
;AYB8    EQU     E662H  ;第8组押币数
;ALOST8  EQU     E665H  ;第8组退币数
AWIN    EQU     E0B0H   ;此次押币组的赢利地址
AYB     EQU     E0B2H   ;此次押币组的押币总数地址
ALWI1R  EQU     E086H   ;<1500D净利
BYB     EQU     E089H   ;E089-E08A本次押币数
BAWIN   EQU     E08BH   ;本次押币数赢利数地址
BAYB    EQU     E08DH   ;E08D-E08F本次押币数档的总数地址
CAP     EQU     E00CH   ;CAP头盔押币数
CUP     EQU     E00FH   ;CUP金杯押币数
CUPBUF  EQU     E027H   ;CUP金杯显示缓冲区
CAPBUF  EQU     E024H   ;CAP头盔显示缓冲区
COIN    EQU     E04CH   ;硬币面值数,=1为1元,=5为5元,=10为10元,=50为50元
CSTART  EQU     E051H   ;连续启动键计数器
CTC1D   EQU     E060H   ;循环灯移位计数值
CTC2D   EQU     E061H
CTC3D   EQU     E062H
CTC1    EQU     E065H   ;循环灯延时减法计数值
CTC2    EQU     E066H   ;2倍灯用,LED闪烁用
CTC3    EQU     E067H   ;押币数闪烁用
CTC4    EQU     E068H   ;押币计数器连续工作用
CA      EQU     E170H   ;E170-E173(0:LL,1:LS,2:SL,3:SS)
COAL    EQU     E181H   ;开奖计数器
CANPN   EQU     E16CH   ;可开奖位置个数
DPR     EQU     E0CAH   ;中奖个数
DOLL    EQU     E162H   ;美圆数
DOLL1   EQU     E164H   ;美圆数(25%修正值)
DOLL2   EQU     E166H   ;总美圆数
DOLL3   EQU     E168H   ;总美圆数(10进制)
DSLCM   EQU     E408H   ;为拟开奖类别
DPRI    EQU     E0E6H   ;欲开出的奖金数
ERRDAT  EQU     E064H   ;出错代码值
FAN2    EQU     E028H   ;E028-E02F各押币数备份
FUNDAT  EQU     E038H   ;E038-E03F功能键计数值
FIRPRI  EQU     E680H   ;E680-E687H 第1--8组1奖类别表
HINC1   EQU     E049H   ;延时1分16位计数值
HEXDEC  EQU     E400H   ;E400-E403为10进制数缓冲区
INCDAT  EQU     E059H   ;随机数计数器1(减)
INCDA1  EQU     E05AH   ;随机数计数器2(加)
INCDA2  EQU     E05BH   ;随机数计数器3(加)
INTIS   EQU     E070H   ;INTIS=FFH 中断不处理键盘
JLB     EQU     E050H   ;机率(原来没有注释)
JLAD    EQU     E0AAH   ;上限
JLBD    EQU     E0ACH   ;基限   没有使用
JLCD    EQU     E0AEH   ;正限   没有使用
KAIF    EQU     E04DH   ;=5表示1次,=10表示10次,=50表示50次,
KEY     EQU     E00EH   ;KEY钥匙押币数
KEYBUF  EQU     E026H   ;KEY钥匙显示缓冲区
KAIDAT  EQU     E043H   ;开分键计数值
KAIN    EQU     E052H   ;开分键计数值
KAID    EQU     E053H   ;按开分键的次数
LOALED  EQU     E603H   ;当前跑灯跑灯LED位置
LUN     EQU     E009H   ;轮胎 押币数
LUNBUF  EQU     E021H   ;轮胎 显示缓冲区
LED1    EQU     E054H   ;E054-E057 373A-373D,跑灯LED显缓
LED2    EQU     E0CBH   ;E0CB-E0CDH LOOP 灯数据
LED3    EQU     E0E1H   ;E0E1-E0E2H LAMP 灯数据
LOADM   EQU     E1ACH   ;E1AC-E1B1H DEMO 跑灯位置用
MONEY   EQU     E000H   ;E000-E002投币数
MONBUF  EQU     E018H   ;投币数显示缓冲区
MONDAT  EQU     E040H   ;投币键计数值
MUSDAT  EQU     E05FH   ;3567设定计数值
MUL1    EQU     E0A0H   ;E0A0 8位乘数
MUL2    EQU     E0A1H   ;E0A1 8位被乘数
MULD    EQU     E0A2H   ;E0A2-E0A3 16位乘数积
MULD1   EQU     E0A3H   ;高8位
MIMA    EQU     E0B5H   ;38H口地址数据缓冲区
MUSD    EQU     E05EH   ;3567延时计数值
NSTR    EQU     E0B4H   ;STR有效宽度计数器
NYB     EQU     E088H   ;押币分组数(1-8)
N3812   EQU     E0B6H   ;3812乐曲计数器
NPAOMU  EQU     E0B7H   ;十二半音阶首代码
NUBYB   EQU     E16AH   ;本次押币个数
NDOL    EQU     E174H   ;送美圆倍数
OIL     EQU     E00DH   ;OIL加油站押币数
OILBUF  EQU     E025H   ;OIL加油站显示缓冲区
OF      EQU     E405H   ;E404-E405为无效0改为F区
PRICE   EQU     E005H   ;E005-E006中奖数
PRIBUF  EQU     E01DH   ;中奖数显示缓冲区
PRBF    EQU     E063H   ;E41A-E41B中奖数备份
PR      EQU     E0C0H   ;E0C0-E0C9 中奖位置
PRRND   EQU     E428H   ;E428-E429H  乱数奖金额
QIA     EQU     E00AH   ;千斤顶 押币数
QIABUF  EQU     E022H   ;千斤顶 显示缓冲区
RNDADD  EQU     E700H   ;乱数累加器
RLED1   EQU     E06AH   ;E06A-E06D 32个跑灯LED1,2,3,4组印象区
RA3567  EQU     E06EH   ;A3567印象区
RLED2   EQU     E0CEH   ;E0CE-E0E0H LOOP 灯备份数据
RLED3   EQU     E0E3H   ;E0E3-E0E4H LAMP 灯备份数据
RGB     EQU     E0E4H   ;红绿灯数据
ROUNDN  EQU     E0E5H   ;二个小环灯计数器
RL4     EQU     E160H   ;中奖数/8
RFANBU  EQU     E190H   ;E190-E197H押分数显缓备份
ROW1    EQU     E487H   ;E187-E189H 3个转数
RNDD1   EQU     E48AH   ;=0-3(IS R1 OR R2 OR R3 OR R4)
RNDD2   EQU     E48BH   ;=0-5(CALL RND次数)
ROW2    EQU     E48CH   ;ROW2=E48CH~E48EH,左中右翻牌数缓冲区
R1      EQU     E710H   ;R1-R4 乱数用
R2      EQU     E711H
R3      EQU     E712H
R4      EQU     E713H
SLS     EQU     E04FH   ;=1表示快速比倍,=0表示慢速比倍
SPR     EQU     E003H   ;E003-E004乱数
STEPL   EQU     E007H   ;步数
SPE     EQU     E00BH   ;SPEAKER喇叭押币数
SISPR   EQU     E010H   ;乱数显示标志,=A0H乱数停止跳动
SPRBUF  EQU     E01BH   ;乱数奖显示缓冲区
STEBUF  EQU     E01FH   ;步数显示缓冲区
SPEBUF  EQU     E023H   ;SPEAKER喇叭显示缓冲区
SIGN    EQU     E044H   ;BIT0=1大键 =0小键,BIT1=1比倍赢
                        ;BIT2=1一次结束,
                        ;BIT4=13567在工作,BIT5=1退币键标志
                        ;BIT6=1<-键标志
SIGN1   EQU     E045H   ;BIT0=1超时不按键,
                        ;BIT2=1跑灯
                        ;BIT4=1 LED快速闪烁, BIT5=1中奖灯闪烁
SIGN2   EQU     E046H   ;BIT1=1快速->键
                        ;BIT5=1 押币数闪烁, BIT4=1押币数亮,=0灭
SIGN3   EQU     E047H   ;BIT0=1重复原音乐,BIT1=1中奖后30秒结束
                        ;BIT2=1重复START键,BIT3=1投币计数器连续工作
                        ;BIT4=1中THREE奖,BIT5=1 二个小环灯跑
                        ;BIT7=1开机后没按过START键
SIGN4   EQU     E048H   ;BIT0=1奖分最快速->得分 ,BIT1=1押币后没按START键
                        ;BIT2=1 "咬"分 ,=0 "吐"分
SIGN5   EQU     E011H   ;BIT0=1 错算术题, BIT1=1猜拳平,BIT2=1 猜拳赢
                        ;BIT 3=1 DEMO     BIT 4=1 STR低   BIT 5=0 升调(跑灯)
ST8255  EQU     E058H   ;8255 A口数据初始值
SIGNA   EQU     E090H   ;=11 第1组"咬", =0 第1组"吐"
;SIGNB   EQU     E091H   ;=11 第2组"咬", =0 第2组"吐"
;SIGNC   EQU     E092H   ;=11 第3组"咬", =0 第3组"吐"
;SIGND   EQU     E093H   ;=11 第4组"咬", =0 第4组"吐"
;SIGNE   EQU     E094H   ;=11 第5组"咬", =0 第5组"吐"
;SIGNF   EQU     E095H   ;=11 第6组"咬", =0 第6组"吐"
;SIGNG   EQU     E096H   ;=11 第7组"咬", =0 第7组"吐"
;SIGNH   EQU     E097H   ;=11 第8组"咬", =0 第8组"吐"
STAL    EQU     E180H   ;开奖位置STEP
SFAN    EQU     E410H   ;E410-E41FH,押币数印象区
SORTFAN EQU     E420H   ;E420-E427H,押币数序号首址
SENDSU  EQU     E490H   ;E490H-E494H,待发送数据缓冲区首址
TON     EQU     E008H   ;打气筒押币数
TONBUF  EQU     E020H   ;打气筒显示缓冲区
TJDAT   EQU     E042H   ;退奖键计数值
TBN     EQU     E069H   ;退币7秒计数用
TEMP1   EQU     E071H   ;DEMO ;FANADD用
TEMP2   EQU     E073H   ;E073-E074 数币单位SUBI,JJLL;THREE用
TEMP2A  EQU     E074H   ;E073-E074 SUBI,JJLL,SLCMAX用
TEMP4   EQU     E075H   ;JJLL用
TEMP3   EQU     E076H   ;DIV24用
TEMP5   EQU     E077H   ;E077-E078H BYBSUB用,DEMO中为音效标志
TEMP6   EQU     E079H   ;E079-E07AH BYBSUB用
TEMPX   EQU     E080H
TEMPY   EQU     E082H
TEMPZ   EQU     E084H   ;计算机率用
TE1     EQU     E16DH   ;算开奖时暂存器
TEMPA   EQU     E1A0H   ;24位DIV用
TEMPB   EQU     E1A3H   ;24位DIV用
TEMPC   EQU     E1A6H   ;24位DIV用 (E1A6-E1A9)
TUSIA   EQU     E668H   ;第1组大奖类别(2-9)
;TUSIB   EQU     E669H   ;第2组大奖类别(2-9)
;TUSIC   EQU     E66AH   ;第3组大奖类别(2-9)
;TUSID   EQU     E66BH   ;第4组大奖类别(2-9)
;TUSIE   EQU     E66CH   ;第5组大奖类别(2-9)
;TUSIF   EQU     E66DH   ;第6组大奖类别(2-9)
;TUSIG   EQU     E66EH   ;第7组大奖类别(2-9)
;TUSIH   EQU     E66FH   ;第8组大奖类别(2-9)
TUDBA    EQU     E670H  ;第1组大奖累积数
;TUDBB    EQU     E672H  ;第2组大奖累积数
;TUDBC    EQU     E674H  ;第3组大奖累积数
;TUDBD    EQU     E676H  ;第4组大奖累积数
;TUDBE    EQU     E678H  ;第5组大奖累积数
;TUDBF    EQU     E67AH  ;第6组大奖累积数
;TUDBG    EQU     E67CH  ;第7组大奖累积数
;TUDBH    EQU     E67EH  ;第8组大奖累积数
WILLP   EQU     E0A8H   ;E0A8-E0A9欲开奖的PRICE数
WY      EQU     E04BH   ;(WY)=1表示 1:1  (WY)=5表示 5:1
YBKDAT  EQU     E030H   ;E030-E037押币键计数值
XQDAT   EQU     E041H   ;洗钱键计数值
;******************
;* 开机初始化程序 *
;******************
        ORG 0H
        DI              ;关中断
        LD BC,02FFFH    ;上电复位延时计数器预置数
LA1:    DEC BC          ;延时计数器减一
        LD A,B
        OR C            ;高低字节=0?
        JR NZ,LA1       ;非0转LA1循环
        LD SP,E7FFH     ;设置堆栈为E7FFH~FFFFH
        CALL FIR1       ;8279 8253 8255  计数器初始化
        JP 106H         ;转106H主程序
;****************
;* 中断向量入口 *
;****************
        ORG 38H
        JP INTI         ;转INTI中断处理程序
;**********
;* 主程序 *
;**********
        ORG 106H
        CALL DELAY      ;延时
        CALL DELAY
;*******************
;* 有总清零按钮吗? *
;*******************
AN1:    LD A,E0H        ;"111",设置允许对RAM再次写入
        OUT (61H),A     ;(61H)为8279命令字地址
        LD A,42H        ;"010",设置只读FIFO/传感器"02H"单元内容
        OUT (61H),A     ;"02H"单元内容为DIP4开关值
        IN A,(60H)      ;读取键入数据,60H为8279数据口地址
        AND 30H         ;屏敝出BIT5,BIT4(即AN2,AN1.见图MAIN-2:3B处)
        CP 30H          ;与00110000比较(按键AN1,AN2低有效)
        JR NZ,STARTD    ;没按下,转STARTD游戏开始
        LD BC,0FFFH     ;有按下,则延时
LA2:    DEC BC
        LD A,B
        OR C
        JR NZ,LA2
;***********************
;* 再判有总清零按钮吗? *
;***********************
        LD A,E0H        ;"111",设置允许对RAM再次写入
        OUT (61H),A     ;(61H)为8279命令字地址
        LD A,42H        ;"010",设置只读FIFO/传感器"02H"单元内容
        OUT (61H),A     ;"02H"单元内容为DIP4开关值
        IN A,(60H)      ;读取键入数据,60H为8279数据口地址
        AND 30H         ;屏敝出BIT5,BIT4(即AN2,AN1.见图MAIN-2:3B处)
        CP 30H          ;与00110000比较(按键AN1,AN2低有效)
        JR NZ,STARTD    ;没,转STARTD游戏开始
        CALL CLSALL     ;6116存储器E000H~E6FFH清零,预置投币校验数
;        CALL PLMU1
        JP LIALL        ;全部发光管,白炽灯及数码管交替闪,关机才能退出
;************
;* 开始游戏 *
;************
STARTD: LD A,E0H        ;"111",设置允许对RAM再次写入
        OUT (61H),A     ;(61H)为8279命令字地址
        LD A,42H        ;"010",设置只读FIFO/传感器"02H"单元内容
        OUT (61H),A     ;"02H"单元内容为DIP4开关值
        IN A,(60H)      ;读取键盘数据,有按钮吗?
        BIT 7,A         ;测试BIT7
        JP NZ,SUBI      ;BIT7≠0,进入数币SUBI
        BIT 4,A         ;测试BIT4
        JP NZ,DISP1     ;BIT4≠0,显示总输赢数,净收入,赢输比
START:  CALL CLSME      ;6116游戏部分清零,押币数显示"0",8255通讯初始化
        CALL FIRMAP     ;亮初始灯
        CALL DIP        ;DIP8,DIP4开关设定处理子程式
        CALL MAPLOOP    ;亮二个小环灯
        LD A,(SIGN3)    ;(SIGN3)的BIT7为开机后没按过START键标志
        SET 7,A         ;BIT7←1,开机后没按过START键标志置位
        LD (SIGN3),A    ;(SIGN3)=E047H
                        
STARTC: IM1             ;设置中断方式1
        EI              ;开中断
        LD HL,(PRICE)   ;(PRICE)=E005H~E006H,为中奖数寄存器
        LD A,H          ;检查奖金是否为"0"
        OR L
        JR Z,STARTH     ;奖金为"0",转STARTH检查6116出入表
        LD A,60H        ;奖金不为"0",则(CTC1)←60H
        LD (CTC1),A     ;(CTC1)为循环灯定时减法计数器
PTM:    LD A,(CTC1)     ;取出定时值
        CP 0            ;检查(CTC1)是否为"0"
        JR NZ,PTM       ;定时未到,转PTM等待
        JP LP5UA        ;转LP5UP,将奖金数(PRICE)→移入投币口(MONEY)
;*************************************
;* 检查6116出入表及投币数(MONEY)程式 *
;*************************************
STARTH: CALL SELFCK     ;检查6116出入表
        LD HL,(MONEY)   ;(MONEY)=E000H~E002H,为投币数
        LD A,L
        OR H
        JR NZ,STARTA    ;投币数(MONEY)≠"0",转STARTA继续
        CALL DEMO       ;没钱了则调用DEMO演示程序,有投币数才退出
;***********************************
;* 投币数(MONEY)≠"0",继续游戏程式 *
;***********************************
STARTA: LD A,(SIGN5)    ;投币数(MONEY)≠"0"则清(SIGN5)中的DEMO标志
        RES 3,A         ;(SIGN5)之BIT3为DEMO标志
        LD (SIGN5),A   
         
        CALL CLSD7      ;清押币数闪烁标志
        LD A,0FFH       ;(LED3)为白炽灯LAMP数据寄存器(E0E1H~E0E2H)
        LD (LED3),A     ;点亮8只押币灯
        LD A,40H        ;40H=01000000B,START灯在E0E2H之BIT6
        LD (LED3+1),A   ;点亮START灯
        CALL MAPLAMP    ;调用按钮灯驱动子程式
        CALL MAP8       ;点亮数码管
        CALL MAPLED     ;点亮跑灯
;***************************
;* 产生随机数,开始跑灯程式 *
;***************************
LOOP1:  LD HL,INCDAT    ;INCDAT为随机数计数器1(减),地址为E059H
        DEC (HL)        ;产生随机数1
        INC HL          ;指向随机数计数器2(加),地址为E05AH
        INC (HL)        ;产生随机数2
;************************************
;* 检查(SIGN1)之BIT2,有否超时不按键 *
;************************************
        LD A,(SIGN1)    ;(SIGN1)=E045H,BIT2=1,跑灯
        BIT 2,A         ;测试(SIGN1)之BIT2,在跑灯吗?
        JR Z,LOOP1A     ;BIT2="0",不在跑灯,转LOOP1A继续
;****************
;* 跑灯处理程式 *
;****************
        LD A,(CTC1)     ;正在跑灯,定时到?
        AND A
        JR NZ,LOOP1A    ;跑灯定时未到,转LOOP1A继续
        CALL GOPAO      ;调用跑灯程序
        LD A,(STEPL)    ;(STEPL)=E007H,为跑灯步数计数器
        AND A           ;跑灯步数结束?
        JR NZ,LOOP1A    ;步数(STEPL)≠"0",转LOOP1A继续
        LD A,(SIGN1)    ;清跑灯标志(SIGN1)之BIT2
        RES 2,A
        LD (SIGN1),A
        JP JIPRI        ;转JIPRI计算奖分
LOOP1A: LD A,(SIGN3)    ;(SIGN3)=E047H,BIT5=1,二个小环灯跑
        BIT 5,A         ;测试(SIGN3)之BIT5,二个小环灯跑?
        JR Z,LOOP1P     ;BIT5="0",小环灯不跑,转LOOP1P继续
        LD A,(CTC1)     ;BIT5≠0,小环灯在跑,定时到?
        OR A
        JR NZ,LOOP1P    ;定时未到,转LOOP1P继续
        CALL ROUND      ;调用小环灯程序
;*********************************
;* 检查(SIGN)之BIT5,有否退币键? *
;*********************************
LOOP1P: LD A,(SIGN)     ;(SIGN)=E044H,BIT5=1,退币键标志
        BIT 5,A         ;测试(SIGN)之BIT5,有退币键?
        JP Z,LOOP1Q     ;BIT5="1",有退币键,转LOOP1Q继续
        LD A,(CTC1)     ;BIT5≠0,有退币键,定时到?
        CP 0
        JP NZ,LOOP1Q    ;定时未到,转LOOP1Q继续
        LD A,(TBN)      ;(TBN)=E069H,退币7秒计数器
        DEC A
        JR Z,TBERR      ;退币7秒计数到,转TBERR故障处理
        LD (TBN),A      ;退币7秒计数器计数
        LD A,FFH        ;重置8253定时器
        LD (CTC1),A
        JR LOOP1Q       ;转LOOP1Q继续
;**********************
;* 退票机故障处理程式 *
;**********************
TBERR:  LD A,33H        ;>7秒,退票机有故障
        LD (ERRDAT),A   ;设置退票机故障显示代码"33H"
        LD A,(ST8255)   ;读8255 A口数据初始值
        RES 1,A
        LD (ST8255),A
        OUT (80H),A
        JP MYERR        ;系统故障显示
;**********************************************
;* 将奖金数(PRICE)快速→移入投币口(MONEY)程式 *
;**********************************************
LOOP1Q: LD A,(SIGN2)    ;(SIGN2)=E046H,BIT1=1,快速移分
        BIT 1,A         ;测试(SIGN2)之BIT1,有否快速移分?
        JR Z,LOOP1S     ;BIT1="0",无快速移分,转LOOP1S继续
        CALL DECSPR     ;BIT1≠0,有快速移分,则先做乱数减(WY)
        LD A,(SIGN4)    ;(SIGN4)=E048H,BIT0=1,奖分最快速移分
        BIT 0,A         ;测试(SIGN4)之BIT0,有否最快速移分?
        JP NZ,LP5U1     ;BIT0≠"0",最快速移分,转LP5U1继续
        LD A,(CTC1)     ;BIT5=0,最快速移分,定时到?
        CP 0
        JP NZ,LOOP1S    ;定时未到,转LOOP1S继续
        LD A,(SIGN3)    ;(SIGN3)=E047H,BIT2=1,重复START键
        BIT 2,A         ;BIT2="1",有重复START键
        JP Z,LP5U1      ;BIT2="0",转LP5U1
        LD A,(SIGN4)    ;(SIGN4)=E048H,BIT0=1,奖分最快速得分
        SET 0,A
        LD (SIGN4),A    ;清奖分最快速→移分标志
        JP LP5U1        ;转LP5U1,奖金数快速→移入投币口
LOOP1S: LD A,(SIGN3)    ;(SIGN3)=E047H,BIT1=1,中奖后30秒结束
        BIT 1,A         ;测试(SIGN3)之BIT1
        JR Z,LOOP1T     ;BIT1="0",无中奖后30秒结束,转LOOP1T继续
;*************************************************
;* 测试到(SIGN3)之BIT1=1,中奖后30秒结束处理程式 *
;*************************************************
        BIT 2,A         ;测试(SIGN3)之BIT2,有否重复START键
        JR NZ,LOOP1T    ;BIT2≠"0"重复START键,转LOOP1T继续
        LD HL,(HINC1)   ;延时1分16位计数值
LOP1S1: LD A,H
        CP 18H          ;FFFFH-1800H=E7FFH(即59361D*1ms=60秒)
        JR C,LOOP1T     ;定时未到,转LOOP1T继续
LOP1S2: LD A,(SIGN1)    ;(SIGN1)=E045H,BIT5=1,中奖灯闪烁
        RES 5,A         ;(SIGN1)之BIT5←"0"
        LD (SIGN1),A    ;清中奖灯闪烁标志






使用特权

评论回复

打赏榜单

21ic小喇叭 打赏了 3.00 元 2015-08-05

评论
李冬发 2015-9-11 21:29 回复TA
超级大师 
板凳
菜鸟很懒| | 2015-8-5 14:16 | 只看该作者
大喇叭

使用特权

评论回复
地板
wulana| | 2015-8-5 14:22 | 只看该作者
值得分享啊

使用特权

评论回复
5
han0097| | 2015-8-5 14:23 | 只看该作者
啊哈!

使用特权

评论回复
6
ruogurencheng| | 2015-8-5 14:37 | 只看该作者
tyw 发表于 2015-8-5 13:12
20年前扒拉过的近万条汇编指令,那是一个赌机类的游戏机主板源程序,用z80编的.近万条,平均每条10个中文,算一 ...

哇哇哇哇哇,汇编写的呢,用汇编写程序的都是高手

使用特权

评论回复
7
ruogurencheng| | 2015-8-5 14:41 | 只看该作者
每一个程序员都有一段心酸史
虽然我不是专业的程序员,但是我也被编程虐,确切的说是正在被虐

使用特权

评论回复
8
dirtwillfly| | 2015-8-5 14:45 | 只看该作者
虐虐就习惯了……

使用特权

评论回复
9
han0097| | 2015-8-5 14:45 | 只看该作者
学单片机时写的第一个程序:
ID         EQU    30H
ORG        00H
           MOV    ID,#00H
START:     MOV   R1,#00H
           INC    ID
           MOV    A,ID
     CJNE   A,#05,REL
     MOV    ID,#00H
REL:       CJNE   A,#01H,IS0
           MOV    P2,#7BH
     LCALL  NEXT
     SJMP   START
IS0:       CJNE   A,#02H,IS1
           MOV    P2,#77H
     LCALL  NEXT2
     SJMP   START
IS1:       CJNE   A,#03H,IS2
           MOV    P2,#0CFH
     LCALL  NEXT
     SJMP   START
IS2:       CJNE   A,#04H,IS3
           MOV    P2,#0AFH
     LCALL  NEXT2
IS3:       SJMP   START
NEXT:      MOV   A,R1
           MOV   DPTR,#TABLE1
           MOVC  A,@A+DPTR
        MOV   P0,A
     MOV   A,R1
     MOV   DPTR,#TABLE2
           MOVC  A,@A+DPTR
        MOV   P3,A
        LCALL DELAY1S
        INC   R1
        CJNE  R1,#6,NEXT
     RET
NEXT2:     MOV   A,R1
           MOV   DPTR,#TABLE3
           MOVC  A,@A+DPTR
        MOV   P0,A
     MOV   A,R1
     MOV   DPTR,#TABLE4
           MOVC  A,@A+DPTR
        MOV   P3,A
        LCALL DELAY1S
        INC   R1
        CJNE  R1,#2,NEXT2
     RET
DELAY1S:   MOV R7,#1AH
DL1:       MOV R6,#86H
DL0:       MOV R5,#8EH
           DJNZ R5,$
           DJNZ R6,DL0
           DJNZ R7,DL1
           RET
TABLE1:    DB  7DH,6DH,66H,4FH,5BH,06H
TABLE2:    DB  7FH,0BFH,0DFH,0EFH,0F7H,0FBH
TABLE3:    DB  5BH,06H
TABLE4:    DB  0FDH,0FEH
     END

使用特权

评论回复
10
21ic小喇叭|  楼主 | 2015-8-5 14:49 | 只看该作者
ruogurencheng 发表于 2015-8-5 14:41
每一个程序员都有一段心酸史
虽然我不是专业的程序员,但是我也被编程虐,确切的说是正在被虐[em:yc ...

跟我们分享一下怎么被虐啦;P

使用特权

评论回复
11
大秦正声| | 2015-8-5 15:30 | 只看该作者
上51编程实验的时候用按键输入十六制机器码

使用特权

评论回复
12
songchenping| | 2015-8-5 15:51 | 只看该作者
看到汇编有种想撞墙的感觉。当初在学校就没弄明白。毕业后更是糊涂了。

使用特权

评论回复
13
xm419| | 2015-8-5 16:01 | 只看该作者
tyw 发表于 2015-8-5 13:12
20年前扒拉过的近万条汇编指令,那是一个赌机类的游戏机主板源程序,用z80编的.近万条,平均每条10个中文,算一 ...

艾玛,这是神玛

使用特权

评论回复
14
ruogurencheng| | 2015-8-5 16:04 | 只看该作者
21ic小喇叭 发表于 2015-8-5 14:49
跟我们分享一下怎么被虐啦

看不明白的地方我问同学,直接被吐槽“你长这么丑,还这么笨”虽然知道他是开玩笑的,可是还是觉得有点桑心啊

使用特权

评论回复
评论
通宵敲代码 2015-8-10 20:28 回复TA
长得这么丑,还这么笨! 
15
justtest111| | 2015-8-5 17:03 | 只看该作者
int mian()
{
;
}
不解释

使用特权

评论回复
16
angus118| | 2015-8-5 17:11 | 只看该作者
HELLO   WORLD

使用特权

评论回复
17
ElectronF0| | 2015-8-5 17:27 | 只看该作者
语言听精彩的...

使用特权

评论回复
18
yzfv123| | 2015-8-5 17:36 | 只看该作者
记得有一次实训课,搞了个智能小车,bug把我们一个小组搞了48小时没合眼。

使用特权

评论回复
19
lvyunhua| | 2015-8-5 21:53 | 只看该作者
被太多代码虐了。

使用特权

评论回复
20
sl3340| | 2015-8-6 08:43 | 只看该作者
ruogurencheng 发表于 2015-8-5 14:37
哇哇哇哇哇,汇编写的呢,用汇编写程序的都是高手

我倒不这么认为,说不定若干年以后会有人说写C的都是高手。生产力决定生产关系。

使用特权

评论回复
发新帖 本帖赏金 10.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1104

主题

7317

帖子

150

粉丝