从 hlasm (370) 中在控制台上输出字符

问题描述 投票:0回答:2

为了好玩,我正在实现 Brainfuck 编译器,将 bf 翻译为例如x86 组件。目前我正在从事 bf 到大型机的组装工作。方言是“HLASM”,主机是 IBM 的一台 370。

到目前为止,它的大部分工作仅向操作员的控制台发出一个字符失败:我只得到空格,并且看起来添加了隐式换行符(我不想要)。

有人能发现我的错误吗?

* get a character to display
         LLGC  R6,0(R7)
* get a pointer to the buffer which will contain the char to displa
         LA    R5,BUFFER
* store character in buffer
         STC   R6,0(R5)
* get a pointer to the memory area describing the data to display
         LA    R1,MSGAREA
* invoke display char
         SVC   35

MSGAREA  EQU   *
         DC    AL2(5)
         DC    XL2'00'
BUFFER   DC    C'!'
mainframe
2个回答
2
投票

我建议写信给

SYSOUT
DD
,让您可以灵活地运行批处理(在
SYSOUT
中分配
JCL
)或交互运行(将
SYSOUT
分配给终端会话,我认为这是默认为
TSO
)。

[entry logic, initialization and so forth]
         OPEN  (SYSOUT,OUTPUT)
         
         PUT   SYSOUT,RECORD
         
         CLOSE SYSOUT
[exit logic]         
         
RECORD   DC    CL80' '   
SYSOUT   DCB   DDNAME=SYSOUT,                                          X
               DSORG=PS,                                               X
               MACRF=PM,                                               X
               RECFM=FB,                                               X
               LRECL=80

如果您愿意将程序绑定到专门在 TSO 中运行,您可能还想查看终端 I/O 的 TPUT、TGET 和 TPG 宏。如果您习惯于在 Unix 中进行流式 I/O,那么终端 I/O 在 3270 环境中有点奇怪。

DCB
记录在here
OPEN
记录在here
PUT
记录在here
CLOSE
记录在这里


0
投票

@mike - 文档位于:https://www.ibm.com/docs/en/zos/3.1.0?topic=descriptions-write-bpx1wrt-bpx4wrt-write-file-socket。附录中是一些代码示例 - 它与“write()”C 运行时函数没有任何不同。

© www.soinside.com 2019 - 2024. All rights reserved.