You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

367 lines
3.9 KiB

extrn .begin,.chl,.swt
extrn csave,cret,.move
PUBLIC vdaini_
vdaini_: lxi d,.2
call csave
LXI H,8-.2
DAD SP
MOV E,M
INX H
MOV D,M
LXI H,16384
CALL .or
SHLD hregbc_
LXI H,10-.2
DAD SP
MOV E,M
INX H
MOV D,M
XCHG
SHLD hregde_
LXI H,12-.2
DAD SP
MOV E,M
INX H
MOV D,M
XCHG
SHLD hreghl_
CALL diagnose_
LDA hrega_
MOV L,A
MVI H,0
RET
.2 EQU 0
PUBLIC bitlook_
bitlook_: lxi d,.3
call csave
LXI H,-32768
XCHG
LXI H,2-.3
DAD SP
MOV M,E
INX H
MOV M,D
LXI H,0
XCHG
LXI H,0-.3
DAD SP
MOV M,E
INX H
MOV M,D
JMP .5
.4:
LXI H,0-.3
DAD SP
PUSH H
MOV A,M
INX H
MOV H,M
MOV L,A
INX H
XCHG
POP H
MOV M,E
INX H
MOV M,D
.5:
LXI H,0-.3
DAD SP
MOV E,M
INX H
MOV D,M
LXI H,256
CALL .lt
JZ .6
LXI H,0-.3
DAD SP
MOV E,M
INX H
MOV D,M
PUSH D
LXI H,.1+0
PUSH H
CALL printf_
POP D
POP D
LXI H,0
XCHG
LXI H,-2-.3
DAD SP
MOV M,E
INX H
MOV M,D
JMP .8
.7:
LXI H,-2-.3
DAD SP
PUSH H
MOV A,M
INX H
MOV H,M
MOV L,A
INX H
XCHG
POP H
MOV M,E
INX H
MOV M,D
.8:
LXI H,-2-.3
DAD SP
MOV E,M
INX H
MOV D,M
LXI H,8
CALL .lt
JZ .9
LXI H,2-.3
DAD SP
PUSH H
MOV A,M
INX H
MOV H,M
MOV L,A
INX H
XCHG
POP H
MOV M,E
INX H
MOV M,D
XCHG
DCX H
MOV E,M
MVI D,0
PUSH D
LXI H,.1+16
PUSH H
CALL printf_
POP D
POP D
JMP .7
.9:
LXI H,.1+24
PUSH H
CALL printf_
POP D
JMP .4
.6:
RET
.3 EQU -6
.1:
DB 97,115,99,105,105,32,61,32,48,120,37,48,50,120,32
DB 0,48,120,37,48,50,120,32,0,10,0
PUBLIC vdaqry_
vdaqry_: lxi d,.11
call csave
LXI H,8-.11
DAD SP
MOV E,M
INX H
MOV D,M
LXI H,16640
CALL .or
SHLD hregbc_
LXI H,10-.11
DAD SP
MOV E,M
INX H
MOV D,M
XCHG
SHLD hreghl_
CALL diagnose_
LDA hrega_
MOV L,A
MVI H,0
RET
.11 EQU 0
PUBLIC flip_
flip_: lxi d,.12
call csave
LXI H,-32768
PUSH H
LXI H,64
PUSH H
CALL vdaqry_
POP D
POP D
XCHG
LXI H,-3-.12
DAD SP
MOV M,E
INX H
MOV M,D
LXI H,-32768
XCHG
LXI H,2-.12
DAD SP
MOV M,E
INX H
MOV M,D
LXI H,0
XCHG
LXI H,-1-.12
DAD SP
MOV M,E
INX H
MOV M,D
JMP .14
.13:
LXI H,-1-.12
DAD SP
PUSH H
MOV A,M
INX H
MOV H,M
MOV L,A
INX H
XCHG
POP H
MOV M,E
INX H
MOV M,D
.14:
LXI H,-1-.12
DAD SP
MOV E,M
INX H
MOV D,M
LXI H,2048
CALL .lt
JZ .15
LXI H,2-.12
DAD SP
MOV E,M
INX H
MOV D,M
XCHG
MOV E,M
LXI H,1-.12
DAD SP
MOV M,E
LXI H,1-.12
DAD SP
MOV E,M
MVI D,0
LXI H,255
CALL .xr
XCHG
LXI H,1-.12
DAD SP
MOV M,E
LXI H,1-.12
DAD SP
MOV E,M
PUSH D
LXI H,4-.12
DAD SP
MOV E,M
INX H
MOV D,M
XCHG
POP D
MOV M,E
LXI H,2-.12
DAD SP
PUSH H
MOV A,M
INX H
MOV H,M
MOV L,A
INX H
XCHG
POP H
MOV M,E
INX H
MOV M,D
JMP .13
.15:
LXI H,-32768
PUSH H
LXI H,0
PUSH H
LXI H,64
PUSH H
CALL vdaini_
POP D
POP D
POP D
RET
.12 EQU -7
PUBLIC main_
main_: lxi d,.16
call csave
LXI H,1
XCHG
LXI H,2-.16
DAD SP
MOV M,E
INX H
MOV M,D
.17:
LXI H,1
XCHG
LXI H,2-.16
DAD SP
MOV A,M
INX H
MOV H,M
MOV L,A
CALL .eq
JZ .18
LXI H,1
SHLD dregbc_
CALL bdoscall_
LDA drega_
MOV L,A
MVI H,0
JMP .19
.21:
CALL flip_
JMP .20
.22:
LXI H,0
XCHG
LXI H,2-.16
DAD SP
MOV M,E
INX H
MOV M,D
JMP .20
.23:
LXI H,7
PUSH H
LXI H,.10+0
PUSH H
CALL printf_
POP D
POP D
JMP .20
.19:
CALL .swt
DW 2
DW 3,.22
DW 102,.21
DW .23
.20:
JMP .17
.18:
CALL flip_
RET
.16 EQU -2
.10:
DB 37,99,0
extrn printf_
extrn bdoscall_
extrn dregbc_
extrn drega_
extrn diagnose_
extrn hreghl_
extrn hregde_
extrn hregbc_
extrn hrega_
extrn .or
extrn .xr
extrn .eq
extrn .lt
END